IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9920


Ignore:
Timestamp:
Nov 8, 2006, 6:06:16 PM (20 years ago)
Author:
jhoblitt
Message:

remove passing around of a metadata nesting level param as this information is implicit in the size of the array of scopes that's also being passed around

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/types/psMetadataConfig.c

    r9919 r9920  
    1010*  @author Eric Van Alst, MHPCC
    1111*
    12 *  @version $Revision: 1.116 $ $Name: not supported by cvs2svn $
    13 *  @date $Date: 2006-11-09 03:50:08 $
     12*  @version $Revision: 1.117 $ $Name: not supported by cvs2svn $
     13*  @date $Date: 2006-11-09 04:06:16 $
    1414*
    1515*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    6262static psMetadata* setMetadataItem(psMetadata* template, char* linePtr)
    6363;
    64 static psBool parseLine(psS32* level,   psArray* levelArray, char*  linePtr,
     64static psBool parseLine(psArray* levelArray, char*  linePtr,
    6565                        psS32 lineCount, psBool overwrite);
    66 static psBool parseMetadataItem(char* keyName, psS32* level, psArray* levelArray,
     66static psBool parseMetadataItem(char* keyName, psArray* levelArray,
    6767                                char* linePtr, psS32 lineCount, psMetadataFlags flags);
    6868static psString formatMetadataItem(psMetadataItem *item);
    6969static psArray *p_psMetadataKeyArray(psMetadata *md);
    7070static bool parseGeneric(char* keyName,
    71                          psS32* level,
    7271                         psArray* levelArray,
    7372                         char* linePtr,
     
    7574                         psMetadataFlags flags);
    7675static bool parseType(char* keyName,
    77                       psS32* level,
    7876                      psArray* levelArray,
    7977                      char* linePtr,
     
    8179                      psMetadataFlags flags);
    8280static bool parseMetadataEnd(char* keyName,
    83                              psS32* level,
    8481                             psArray* levelArray,
    8582                             char* linePtr,
     
    687684
    688685psBool parseMetadataItem(char* keyName,
    689                          psS32* level,
    690686                         psArray* levelArray,
    691687                         char* linePtr,
     
    719715    // Get the metadata item type
    720716    strType = getToken(&linePtr, " ", &status,true);
     717
     718    long level = psArrayLength(levelArray) - 1;
    721719
    722720    // Check for no type
     
    793791        } else {
    794792            // Search through user types
    795             typeArray = ((p_psParseLevelInfo*)(levelArray->data[*level]))->typeArray;
    796             templateArray = ((p_psParseLevelInfo*)(levelArray->data[*level]))->templateArray;
     793            typeArray = ((p_psParseLevelInfo*)(levelArray->data[level]))->typeArray;
     794            templateArray = ((p_psParseLevelInfo*)(levelArray->data[level]))->templateArray;
    797795            for(psS32 k = 0; k < typeArray->n; k++) {
    798796                if(strcmp(strType,(char*)typeArray->data[k]) == 0) {
     
    800798                    if(tempMeta != NULL) {
    801799                        // Add metadata item
    802                         md = ((p_psParseLevelInfo*)(levelArray->data[*level]))->metadata;
     800                        md = ((p_psParseLevelInfo*)(levelArray->data[level]))->metadata;
    803801                        addStatus = psMetadataAdd(md,PS_LIST_TAIL,keyName,
    804802                                                  PS_DATA_METADATA | flags,"",tempMeta);
     
    876874    // Need to add item to metadata so get pointer to metadata
    877875    status = 0;
    878     md = ((p_psParseLevelInfo*)(levelArray->data[*level]))->metadata;
    879     nonUniqueKeys = ((p_psParseLevelInfo*)(levelArray->data[*level]))->nonUniqueKeyArray;
     876    md = ((p_psParseLevelInfo*)(levelArray->data[level]))->metadata;
     877    nonUniqueKeys = ((p_psParseLevelInfo*)(levelArray->data[level]))->nonUniqueKeyArray;
    880878    switch(mdType) {
    881879    case PS_DATA_STRING:
     
    10731071        psFree(nextLevelInfo);
    10741072        // Increment level counter
    1075         (*level)++;
    10761073        addStatus = true;
    10771074        break;
     
    10941091}
    10951092
    1096 psBool parseLine(psS32* level,
    1097                  psArray* levelArray,
     1093psBool parseLine(psArray* levelArray,
    10981094                 char* linePtr,
    10991095                 psS32 lineCount,
     
    11341130    // Check for special keyName values "TYPE", "END"
    11351131    if (strcmp(keyName, "END") == 0) {
    1136         if (!parseMetadataEnd(keyName, level, levelArray, linePtr, lineCount, flags)) {
     1132        if (!parseMetadataEnd(keyName, levelArray, linePtr, lineCount, flags)) {
    11371133            goto FAIL;
    11381134        }
    11391135    } else if (strcmp(keyName,"TYPE") == 0 ) {
    1140         if (!parseType(keyName, level, levelArray, linePtr, lineCount, flags)) {
     1136        if (!parseType(keyName, levelArray, linePtr, lineCount, flags)) {
    11411137            goto FAIL;
    11421138        }
    11431139    } else {
    1144         if (!parseGeneric(keyName, level, levelArray, linePtr, lineCount, flags)) {
     1140        if (!parseGeneric(keyName, levelArray, linePtr, lineCount, flags)) {
    11451141            goto FAIL;
    11461142        }
     
    11591155
    11601156static bool parseGeneric(char* keyName,
    1161                          psS32* level,
    11621157                         psArray* levelArray,
    11631158                         char* linePtr,
     
    11661161{
    11671162    PS_ASSERT_PTR_NON_NULL(keyName, false);
    1168     PS_ASSERT_PTR_NON_NULL(level, false);
    11691163    PS_ASSERT_PTR_NON_NULL(levelArray, false);
    11701164    PS_ASSERT_PTR_NON_NULL(linePtr, false);
    11711165
     1166    long level = psArrayLength(levelArray) - 1;
     1167
    11721168    // Check if key name present in array of non-unique key names
    1173     psS32 limit = ((p_psParseLevelInfo*)(levelArray->data[*level]))->nonUniqueKeyArray->n;
     1169    psS32 limit = ((p_psParseLevelInfo*)(levelArray->data[level]))->nonUniqueKeyArray->n;
    11741170    for (psS32 k = 0; k < limit; k++) {
    11751171        char *name = (char*)((p_psParseLevelInfo*)
    1176                              (levelArray->data[*level]))->nonUniqueKeyArray->data[k];
     1172                             (levelArray->data[level]))->nonUniqueKeyArray->data[k];
    11771173        if (strcmp(name, keyName) == 0) {
    11781174            flags = PS_META_DUPLICATE_OK;
     
    11811177
    11821178    // Parse metadataItem
    1183     if (!parseMetadataItem(keyName, level, levelArray, linePtr, lineCount, flags)) {
     1179    if (!parseMetadataItem(keyName, levelArray, linePtr, lineCount, flags)) {
    11841180        return false;
    11851181    }
     
    11891185
    11901186static bool parseType(char* keyName,
    1191                       psS32* level,
    11921187                      psArray* levelArray,
    11931188                      char* linePtr,
     
    11961191{
    11971192    PS_ASSERT_PTR_NON_NULL(keyName, false);
    1198     PS_ASSERT_PTR_NON_NULL(level, false);
    11991193    PS_ASSERT_PTR_NON_NULL(levelArray, false);
    12001194    PS_ASSERT_PTR_NON_NULL(linePtr, false);
     1195
     1196    long level = psArrayLength(levelArray) - 1;
    12011197
    12021198    // Get the type name
     
    12261222
    12271223    // Access type array
    1228     psArray *typeArray = ((p_psParseLevelInfo*)(levelArray->data[*level]))->typeArray;
     1224    psArray *typeArray = ((p_psParseLevelInfo*)(levelArray->data[level]))->typeArray;
    12291225
    12301226    // Check if type already exists in array
     
    12461242
    12471243    // Add template to array of templates
    1248     psArray *templateArray = ((p_psParseLevelInfo*)(levelArray->data[*level]))->templateArray;
     1244    psArray *templateArray = ((p_psParseLevelInfo*)(levelArray->data[level]))->templateArray;
    12491245    psArrayAdd(templateArray, 0, tempTemplate);
    12501246    psFree(tempTemplate);
     
    12541250
    12551251static bool parseMetadataEnd(char* keyName,
    1256                              psS32* level,
    12571252                             psArray* levelArray,
    12581253                             char* linePtr,
     
    12611256{
    12621257    PS_ASSERT_PTR_NON_NULL(keyName, false);
    1263     PS_ASSERT_PTR_NON_NULL(level, false);
    12641258    PS_ASSERT_PTR_NON_NULL(levelArray, false);
    12651259    PS_ASSERT_PTR_NON_NULL(linePtr, false);
    12661260
    1267     if ((*level) < 1) {
     1261    long level = psArrayLength(levelArray) - 1;
     1262
     1263    if ((level) < 1) {
    12681264        psError(PS_ERR_UNKNOWN, false, "can not END the top level metadata");
    12691265        return false;
    12701266    }
    12711267
    1272     p_psParseLevelInfo *upperLevelInfo = ((p_psParseLevelInfo*)(levelArray->data[*level-1]));
    1273     p_psParseLevelInfo *lowerLevelInfo = ((p_psParseLevelInfo*)(levelArray->data[*level]));
     1268    p_psParseLevelInfo *upperLevelInfo = ((p_psParseLevelInfo*)(levelArray->data[level - 1]));
     1269    p_psParseLevelInfo *lowerLevelInfo = ((p_psParseLevelInfo*)(levelArray->data[level]));
     1270
    12741271    // Check name in nonunique list
    12751272    for (psS32 k = 0; k < psArrayLength(upperLevelInfo->nonUniqueKeyArray); k++) {
     
    13011298    }
    13021299
     1300    // the END just moved us up one nesting level
    13031301    // Remove lower info level
    1304     if(!psArrayRemoveIndex(levelArray, *level)) {
     1302    if(!psArrayRemoveIndex(levelArray, level)) {
    13051303        psError(PS_ERR_UNKNOWN, false, "failed to remove array item");
    13061304        psFree(strValue);
    13071305        psFree(strComment);
    13081306    }
    1309 
    1310     // the END just moved us up one nesting level
    1311     (*level)--;
    13121307
    13131308    psFree(strValue);
     
    14411436    long lineCount = 0;
    14421437    char *line = NULL;
    1443     psS32 nestingLevel  = 0;
    14441438    psListIterator *iter = psListIteratorAlloc(doc, 0, false);
    14451439    while ((line = psListGetAndIncrement(iter))) {
    14461440        lineCount++; // indexed from 1
    14471441
    1448         if (!parseLine(&nestingLevel, parseLevelInfoArray, line, lineCount,
     1442        if (!parseLine(parseLevelInfoArray, line, lineCount,
    14491443                       overwrite)) {
    14501444            if (nFail != NULL) {
Note: See TracChangeset for help on using the changeset viewer.