d51422da1797f4b482f2a122123aed55cb60e0e5 kent Fri Apr 19 16:20:53 2013 -0700 Added -addBin option at Angie's request. diff --git src/lib/asParse.c src/lib/asParse.c index 6c867cb..867bd79 100644 --- src/lib/asParse.c +++ src/lib/asParse.c @@ -21,45 +21,53 @@ {t_uint, "uint", TRUE, FALSE, "int unsigned", "unsigned", "Unsigned", "Unsigned", "%u", "PositiveIntegerField"}, {t_short, "short", FALSE, FALSE, "smallint", "short", "Short", "Signed", "%d", "SmallIntegerField"}, {t_ushort, "ushort", TRUE, FALSE, "smallint unsigned", "unsigned short","Ushort", "Unsigned", "%u", "SmallPositiveIntegerField"}, {t_byte, "byte", FALSE, FALSE, "tinyint", "signed char", "Byte", "Signed", "%d", "SmallIntegerField"}, {t_ubyte, "ubyte", TRUE, FALSE, "tinyint unsigned", "unsigned char", "Ubyte", "Unsigned", "%u", "SmallPositiveIntegerField"}, {t_off, "bigint", FALSE, FALSE, "bigint", "long long", "LongLong", "LongLong", "%lld", "BigIntegerField"}, {t_string, "string", FALSE, TRUE, "varchar(255)", "char *", "String", "String", "%s", "CharField"}, {t_lstring, "lstring", FALSE, TRUE, "longblob", "char *", "String", "String", "%s", "TextField"}, {t_enum, "enum", FALSE, FALSE, "enum", "!error!", "Enum", "Enum", NULL, "CharField"}, {t_set, "set", FALSE, FALSE, "set", "unsigned", "Set", "Set", NULL, NULL}, {t_object, "object", FALSE, FALSE, "longblob", "!error!", "Object", "Object", NULL, "TextField"}, {t_object, "table", FALSE, FALSE, "longblob", "!error!", "Object", "Object", NULL, "TextField"}, {t_simple, "simple", FALSE, FALSE, "longblob", "!error!", "Simple", "Simple", NULL, "TextField"}, }; -static struct asTypeInfo *findLowType(struct tokenizer *tkz) -/* Return low type info. Squawk and die if s doesn't - * correspond to one. */ +struct asTypeInfo *asTypeFindLow(char *name) +/* Return asType for a low level type of given name. (Low level because may be decorated + * with array or pointer stuff at a higher level). Returns NULL if not found. */ { -char *s = tkz->string; int i; for (i=0; i<ArraySize(asTypes); ++i) { - if (sameWord(asTypes[i].name, s)) + if (sameWord(asTypes[i].name, name)) return &asTypes[i]; } -tokenizerErrAbort(tkz, "Unknown type '%s'", s); return NULL; } +static struct asTypeInfo *findLowType(struct tokenizer *tkz) +/* Return low type info. Squawk and die if s doesn't + * correspond to one. */ +{ +struct asTypeInfo *type = asTypeFindLow(tkz->string); +if (type == NULL) + tokenizerErrAbort(tkz, "Unknown type '%s'", tkz->string); +return type; +} + static void sqlSymDef(struct asColumn *col, struct dyString *dy) /* print symbolic column definition for sql */ { dyStringPrintf(dy, "%s(", col->lowType->sqlName); struct slName *val; for (val = col->values; val != NULL; val = val->next) { dyStringPrintf(dy, "\"%s\"", val->name); if (val->next != NULL) dyStringAppend(dy, ", "); } dyStringPrintf(dy, ")"); } struct dyString *asColumnToSqlType(struct asColumn *col)