diff --git a/configmodel.c b/configmodel.c index 8ce6f85..e5a9944 100644 --- a/configmodel.c +++ b/configmodel.c @@ -18,24 +18,11 @@ struct Section ULONG insertPos; // we want to add new entries at end, but before any blanks }; -enum VariableType -{ - TypeBool=0, - TypeInteger=1, - TypeString=2, -}; - struct Variable { - enum VariableType type; CONST_STRPTR key; CONST_STRPTR normalizedKey; - struct - { - CONST_STRPTR stringValue; - BOOL boolValue; - LONG longValue; - } value; + CONST_STRPTR stringValue; }; struct Line @@ -301,18 +288,12 @@ VOID SectionAddLine(SECTIONPTR abstractSection, LINEPTR abstractLine, BOOL addBe if(!LineIsEmpty(abstractLine) ) { section->insertPos = SizeOfArray(section->lines); - printf("xx (%s) insertpos = %lu\n", SectionCanonicalName(abstractSection), section->insertPos); - LineDump(abstractLine); - printf("xx\n"); } } else { LineArrayInsert(section->lines, abstractLine, section->insertPos); section->insertPos += 1; - printf("yy (%s) insertpos = %lu\n", SectionCanonicalName(abstractSection), section->insertPos); - LineDump(abstractLine); - printf("yy\n"); } } } @@ -501,12 +482,11 @@ VARIABLEPTR VariableCreate(CONST_STRPTR key, CONST_STRPTR rawValue) CopyMem(key, (STRPTR)result->normalizedKey, length); downcaseString((STRPTR)result->normalizedKey); } - result->type = TypeString; if( rawValue != NULL ) { ULONG length = strlen(rawValue); - result->value.stringValue = AllocVec(length+1, MEMF_CLEAR); - CopyMem(rawValue, (STRPTR)result->value.stringValue, length); + result->stringValue = AllocVec(length+1, MEMF_CLEAR); + CopyMem(rawValue, (STRPTR)result->stringValue, length); } return result; } @@ -516,7 +496,7 @@ CONST_STRPTR VariableGetRawValue(VARIABLEPTR abstractVariable) struct Variable* variable = (struct Variable*)abstractVariable; if( variable != NULL ) { - return variable->value.stringValue; + return variable->stringValue; } return NULL; } @@ -547,9 +527,9 @@ VOID VariableFree(VARIABLEPTR abstractVariable) { FreeVec((STRPTR)variable->normalizedKey); } - if( variable->type == TypeString && variable->value.stringValue != NULL ) + if( variable->stringValue != NULL ) { - FreeVec((STRPTR)variable->value.stringValue); + FreeVec((STRPTR)variable->stringValue); } FreeVec(variable); @@ -560,11 +540,11 @@ CONST_STRPTR VariableSerialize(VARIABLEPTR abstractVariable) { STRPTR result = NULL; struct Variable* variable = (struct Variable*)abstractVariable; - if( variable != NULL && variable->normalizedKey != NULL && variable->value.stringValue != NULL ) + if( variable != NULL && variable->normalizedKey != NULL && variable->stringValue != NULL ) { - ULONG size = 1 + strlen(variable->normalizedKey) + 3 + strlen(variable->value.stringValue) + 1 + 1; + ULONG size = 1 + strlen(variable->normalizedKey) + 3 + strlen(variable->stringValue) + 1 + 1; result = AllocVec(size, MEMF_CLEAR); - sprintf(result, "\t%s = %s\n", variable->normalizedKey, variable->value.stringValue); + sprintf(result, "\t%s = %s\n", variable->normalizedKey, variable->stringValue); } return (CONST_STRPTR)result; } diff --git a/sectionstore.c b/sectionstore.c index bee31a0..150bd11 100644 --- a/sectionstore.c +++ b/sectionstore.c @@ -19,8 +19,8 @@ STATIC SECTIONPTR parseSection(LINEPTR line, PATTERNPTR sectionPatternProgram); STATIC VARIABLEPTR parseVariable(LINEPTR line, PATTERNPTR variablePatternProgram); STATIC BOOL parseBlank(LINEPTR line, PATTERNPTR blankPatternProgram); -STATIC BOOL parseBoolValue(CONST_STRPTR value, BOOL* outBool); -STATIC BOOL parseIntegerValue(CONST_STRPTR value, LONG* outInt, PATTERNPTR integerProgram); +//STATIC BOOL parseBoolValue(CONST_STRPTR value, BOOL* outBool); +//STATIC BOOL parseIntegerValue(CONST_STRPTR value, LONG* outInt, PATTERNPTR integerProgram); struct SectionStore { @@ -275,34 +275,40 @@ STATIC SECTIONPTR parseSection(LINEPTR line, PATTERNPTR sectionPatternProgram) return result; } -STATIC BOOL parseBoolValue(CONST_STRPTR value, BOOL* outBool) -{ - BOOL result = FALSE; - if( strcmp(value, "yes") == 0 || strcmp(value, "true") == 0 || strcmp(value, "on") == 0 ) { - *outBool = TRUE; - result = TRUE; - } - if( strcmp(value, "no") == 0 || strcmp(value, "false") == 0 || strcmp(value, "off") == 0 ) { - *outBool = FALSE; - result = TRUE; - } - return result; -} - -STATIC BOOL parseIntegerValue(CONST_STRPTR value, LONG* outInt, PATTERNPTR integerProgram) -{ - BOOL result = FALSE; - StringArray matches = NULL; +// TODO I ended up not using these and just having all variable be strings. +// The calling code can decide how to parse the strings into ints or bools or whatever +// It just seemed like a step too far in complexity to have to decide for each +// variable what type it was and then keep track of that when we set, or collect values - if( matches = PatternRun(value, integerProgram) ) - { - StringArrayFree(matches, TRUE); - *outInt = atol(value); - result = TRUE; - } - return result; -} +// STATIC BOOL parseBoolValue(CONST_STRPTR value, BOOL* outBool) +// { +// BOOL result = FALSE; +// if( strcmp(value, "yes") == 0 || strcmp(value, "true") == 0 || strcmp(value, "on") == 0 ) { +// *outBool = TRUE; +// result = TRUE; +// } +// if( strcmp(value, "no") == 0 || strcmp(value, "false") == 0 || strcmp(value, "off") == 0 ) { +// *outBool = FALSE; +// result = TRUE; +// } +// return result; +// } +// +// +// STATIC BOOL parseIntegerValue(CONST_STRPTR value, LONG* outInt, PATTERNPTR integerProgram) +// { +// BOOL result = FALSE; +// StringArray matches = NULL; +// +// if( matches = PatternRun(value, integerProgram) ) +// { +// StringArrayFree(matches, TRUE); +// *outInt = atol(value); +// result = TRUE; +// } +// return result; +// } STATIC BOOL parseBlank(LINEPTR line, PATTERNPTR blankPatternProgram)