static void _store_definition (Token name, Token *dclstr, Token *argv, typeID *argt, NormPtr body, recID r, typeID rett, Token cname, bool b, int ff, bool poly, bool have_this, NormPtr alias) { funcd *f = (funcd*) malloc (sizeof * f); f->is_destructor = b; f->name = name; f->cname = cname; f->dclstr = intdup (dclstr); f->argv = intdup (argv); f->argt = argtdup (argt); f->body = body; f->alias = alias; f->object = r; f->next = 0; f->ret_type = rett; f->polymorph = poly; f->have_this = have_this; f->in_abstract = bt_macro; f->virt = 0; f->done = 0; if (definition [ff].last) definition [ff].last->next = f; else definition [ff].first = f; definition [ff].last = f; }
int TestParse::parseCSVprofile(int units, std::string file) { verbose = 1; char *params[55]; int pnr = 0; // Numbers are column numbers params[pnr++] = strdup("numberField"); params[pnr++] = intdup(0); params[pnr++] = strdup("dateField"); params[pnr++] = intdup(1); params[pnr++] = strdup("starttimeField"); params[pnr++] = intdup(2); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(3); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(4); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(5); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(6); // Numbers are indexes of possible options params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(units); params[pnr++] = NULL; return parse_csv_file(file.c_str(), params, pnr - 1, "csv"); }
int main(int argc, char *argv[]) { int *i; int j, val; int max = 0; int log_level = 0; cp_heap *heap; if (argc > 1) max = atoi(argv[1]); if (max == 0) max = 10; heap = cp_heap_create(cp_hash_compare_int); srand(time(NULL)); for (j = 0; j < max; j++) { val = rand(); cp_heap_push(heap, intdup(&val)); } while ((i = cp_heap_pop(heap))) { printf("%d\n", *i); max--; if (max == 50) cp_heap_contract(heap); free(i); } cp_heap_contract(heap); cp_heap_destroy(heap); return 0; }
typeID typeof_designator (typeID t, Token d[]) { exprret E; Token x = internal_identifier1 (); Token expr [100]; sintprintf (expr, x, ISTR (d), -1); expr [intlen (expr) - 1] = -1; open_local_scope (); enter_local_obj (x, t); parse_expression_string (intdup (expr), &E); close_local_scope (); if (!E.ok) return typeID_void; if (E.newExpr [0] == x) intcpy (d, E.newExpr + 1), intcatc (d, '='); free (E.newExpr); return E.type; }
int main(void) { int *n = (int[11]) { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; sort(n); } int* sort(int *n) { int len; do { len++; } while (*n++); int *copy = intdup(n, len); }
void TestParse::testParseNewFormat() { struct dive *dive; QDir dir; QStringList filter; QString firstLine; QStringList files; /* * Set the directory location and file filter for H3 CSV files. */ dir = QString::fromLatin1(SUBSURFACE_SOURCE "/dives"); filter << "TestDiveSeabearH3*.csv"; filter << "TestDiveSeabearT1*.csv"; files = dir.entryList(filter, QDir::Files); /* * Parse all files found matching the filter. */ for (int i = 0; i < files.size(); ++i) { QString delta; QStringList currColumns; QStringList headers; QString file = QString::fromLatin1(SUBSURFACE_SOURCE "/dives/").append(files.at(i)); QFile f(file); /* * Parse the sample interval if available from CSV * header. */ f.open(QFile::ReadOnly); while ((firstLine = f.readLine().trimmed()).length() > 0 && !f.atEnd()) { if (firstLine.contains("//Log interval: ")) delta = firstLine.remove(QString::fromLatin1("//Log interval: ")).trimmed().remove(QString::fromLatin1(" s")); } firstLine = f.readLine().trimmed(); /* * Parse the field configuration from the CSV header. */ currColumns = firstLine.split(';'); Q_FOREACH (QString columnText, currColumns) { if (columnText == "Time") { headers.append("Sample time"); } else if (columnText == "Depth") { headers.append("Sample depth"); } else if (columnText == "Temperature") { headers.append("Sample temperature"); } else if (columnText == "NDT") { headers.append("Sample NDL"); } else if (columnText == "TTS") { headers.append("Sample TTS"); } else if (columnText == "pO2_1") { headers.append("Sample sensor1 pO₂"); } else if (columnText == "pO2_2") { headers.append("Sample sensor2 pO₂"); } else if (columnText == "pO2_3") { headers.append("Sample sensor3 pO₂"); } else if (columnText == "Ceiling") { headers.append("Sample ceiling"); } else if (columnText == "Tank pressure") { headers.append("Sample pressure"); } else { // We do not know about this value qDebug() << "Seabear import found an un-handled field: " << columnText; headers.append(""); } f.close(); } /* * Validate the parsing routine returns success. */ char *params[40]; int pnr = 0; params[pnr++] = strdup("timeField"); params[pnr++] = intdup(headers.indexOf(tr("Sample time"))); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(headers.indexOf(tr("Sample depth"))); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(headers.indexOf(tr("Sample temperature"))); params[pnr++] = strdup("po2Field"); params[pnr++] = intdup(headers.indexOf(tr("Sample pO₂"))); params[pnr++] = strdup("o2sensor1Field"); params[pnr++] = intdup(headers.indexOf(tr("Sample sensor1 pO₂"))); params[pnr++] = strdup("o2sensor2Field"); params[pnr++] = intdup(headers.indexOf(tr("Sample sensor2 pO₂"))); params[pnr++] = strdup("o2sensor3Field"); params[pnr++] = intdup(headers.indexOf(tr("Sample sensor3 pO₂"))); params[pnr++] = strdup("cnsField"); params[pnr++] = intdup(headers.indexOf(tr("Sample CNS"))); params[pnr++] = strdup("ndlField"); params[pnr++] = intdup(headers.indexOf(tr("Sample NDL"))); params[pnr++] = strdup("ttsField"); params[pnr++] = intdup(headers.indexOf(tr("Sample TTS"))); params[pnr++] = strdup("stopdepthField"); params[pnr++] = intdup(headers.indexOf(tr("Sample stopdepth"))); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(headers.indexOf(tr("Sample pressure"))); params[pnr++] = strdup("setpointFiend"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("delta"); params[pnr++] = strdup(delta.toUtf8().data()); params[pnr++] = NULL; QCOMPARE(parse_seabear_csv_file(file.toUtf8().data(), params, pnr - 1, "csv"), 0); /* * Set artificial but static dive times so the result * can be compared to saved one. */ dive = dive_table.dives[dive_table.nr - 1]; dive->when = 1255152761 + 7200 * i; dive->dc.when = 1255152761 + 7200 * i; } fprintf(stderr, "number of dives %d \n", dive_table.nr); }
void TestParse::testParseCSV() { // some basic file parsing tests // // CSV import should work verbose = 1; char *params[55]; int pnr = 0; params[pnr++] = strdup(strdup("numberField")); params[pnr++] = intdup(0); params[pnr++] = strdup("dateField"); params[pnr++] = intdup(1); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(2); params[pnr++] = strdup("durationField"); params[pnr++] = intdup(3); params[pnr++] = strdup("locationField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("gpsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("maxDepthField"); params[pnr++] = intdup(4); params[pnr++] = strdup("meanDepthField"); params[pnr++] = intdup(5); params[pnr++] = strdup("divemasterField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("buddyField"); params[pnr++] = intdup(6); params[pnr++] = strdup("suitField"); params[pnr++] = intdup(7); params[pnr++] = strdup("notesField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("weightField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("tagsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(0); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(1); params[pnr++] = strdup("durationfmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("cylindersizeField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("startpressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("endpressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("heField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("airtempField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("watertempField"); params[pnr++] = intdup(-1); params[pnr++] = NULL; QCOMPARE(parse_manual_file(SUBSURFACE_SOURCE "/dives/test41.csv", params, pnr - 1), 0); fprintf(stderr, "number of dives %d \n", dive_table.nr); }
void TestParse::testParseHUDC() { char *params[37]; int pnr = 0; params[pnr++] = strdup("timeField"); params[pnr++] = intdup(0); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(1); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(5); params[pnr++] = strdup("po2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor1Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor3Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("cnsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ndlField"); params[pnr++] = intdup(2); params[pnr++] = strdup("ttsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("stopdepthField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("setpointFiend"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("hw"); params[pnr++] = strdup("\"DC text\""); params[pnr++] = NULL; QCOMPARE(parse_csv_file(SUBSURFACE_SOURCE "/dives/TestDiveSeabearHUDC.csv", params, pnr - 1, "csv"), 0); /* * CSV import uses time and date stamps relative to current * time, thus we need to use a static (random) timestamp */ struct dive *dive = dive_table.dives[dive_table.nr - 1]; dive->when = 1255152761; dive->dc.when = 1255152761; }
int TestParse::parseCSV(int units, std::string file) { // some basic file parsing tests // // CSV import should work verbose = 1; char *params[55]; int pnr = 0; params[pnr++] = strdup("numberField"); params[pnr++] = intdup(0); params[pnr++] = strdup("dateField"); params[pnr++] = intdup(1); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(2); params[pnr++] = strdup("durationField"); params[pnr++] = intdup(3); params[pnr++] = strdup("locationField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("gpsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("maxDepthField"); params[pnr++] = intdup(4); params[pnr++] = strdup("meanDepthField"); params[pnr++] = intdup(5); params[pnr++] = strdup("divemasterField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("buddyField"); params[pnr++] = intdup(6); params[pnr++] = strdup("suitField"); params[pnr++] = intdup(7); params[pnr++] = strdup("notesField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("weightField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("tagsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(0); params[pnr++] = strdup("units"); params[pnr++] = intdup(units); params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(1); params[pnr++] = strdup("durationfmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("cylindersizeField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("startpressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("endpressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("heField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("airtempField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("watertempField"); params[pnr++] = intdup(-1); params[pnr++] = NULL; return parse_manual_file(file.c_str(), params, pnr - 1); }
void TestParse::parseDL7() { char *params[51]; int pnr = 0; params[pnr++] = strdup("dateField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(0); params[pnr++] = strdup("starttimeField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("numberField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(1); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(2); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("po2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor1Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor3Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("cnsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ndlField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ttsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("stopdepthField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("setpointField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(3); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("hw"); params[pnr++] = strdup("DL7"); params[pnr++] = 0; clear_dive_file_data(); QCOMPARE(parse_csv_file(SUBSURFACE_TEST_DATA "/dives/DL7.zxu", params, pnr - 1, "DL7"), 0); QCOMPARE(dive_table.nr, 3); QCOMPARE(save_dives("./testdl7out.ssrf"), 0); FILE_COMPARE("./testdl7out.ssrf", SUBSURFACE_TEST_DATA "/dives/DL7.xml"); clear_dive_file_data(); }
int TestParse::parseCSVmanual(int units, std::string file) { verbose = 1; char *params[55]; int pnr = 0; // Numbers are column numbers params[pnr++] = strdup("numberField"); params[pnr++] = intdup(0); params[pnr++] = strdup("dateField"); params[pnr++] = intdup(1); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(2); params[pnr++] = strdup("durationField"); params[pnr++] = intdup(3); params[pnr++] = strdup("maxDepthField"); params[pnr++] = intdup(4); params[pnr++] = strdup("meanDepthField"); params[pnr++] = intdup(5); params[pnr++] = strdup("airtempField"); params[pnr++] = intdup(6); params[pnr++] = strdup("watertempField"); params[pnr++] = intdup(7); params[pnr++] = strdup("cylindersizeField"); params[pnr++] = intdup(8); params[pnr++] = strdup("startpressureField"); params[pnr++] = intdup(9); params[pnr++] = strdup("endpressureField"); params[pnr++] = intdup(10); params[pnr++] = strdup("o2Field"); params[pnr++] = intdup(11); params[pnr++] = strdup("heField"); params[pnr++] = intdup(12); params[pnr++] = strdup("locationField"); params[pnr++] = intdup(13); params[pnr++] = strdup("gpsField"); params[pnr++] = intdup(14); params[pnr++] = strdup("divemasterField"); params[pnr++] = intdup(15); params[pnr++] = strdup("buddyField"); params[pnr++] = intdup(16); params[pnr++] = strdup("suitField"); params[pnr++] = intdup(17); params[pnr++] = strdup("notesField"); params[pnr++] = intdup(20); params[pnr++] = strdup("weightField"); params[pnr++] = intdup(21); params[pnr++] = strdup("tagsField"); params[pnr++] = intdup(22); // Numbers are indexes of possible options params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(0); params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("durationfmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(units); params[pnr++] = NULL; return parse_manual_file(file.c_str(), params, pnr - 1); }