static long ParseTagInteger(char *buffer, TagPtr *tag);␊ |
static long ParseTagData(char *buffer, TagPtr *tag);␊ |
static long ParseTagDate(char *buffer, TagPtr *tag);␊ |
static long ParseTagBoolean(char *buffer, TagPtr *tag, long type);␊ |
static long GetNextTag(char *buffer, char **tag, long *start);␊ |
static long FixDataMatchingTag(char *buffer, char *tag);␊ |
static TagPtr NewTag(void);␊ |
|
return 0;␊ |
}␊ |
␊ |
//==========================================================================␊ |
// XMLGetProperty␊ |
␊ |
TagPtr␊ |
XMLGetKey( TagPtr dict, int id )␊ |
{␊ |
TagPtr tagList, tag;␊ |
␊ |
if (dict->type != kTagTypeDict) return 0;␊ |
␊ |
tag = 0;␊ |
int element = 0;␊ |
tagList = dict->tag;␊ |
while (tagList && element != id)␊ |
{␊ |
tag = tagList;␊ |
tagList = tag->tagNext;␊ |
␊ |
if ((tag->type != kTagTypeKey) || (tag->string == 0)) continue;␊ |
element++;␊ |
if(id == element) return tag;␊ |
}␊ |
return 0;␊ |
}␊ |
␊ |
TagPtr XMLGetValueForKey(TagPtr key)␊ |
{␊ |
if (!key ||␊ |
key->type != kTagTypeKey) return 0;␊ |
␊ |
return key->tag;␊ |
}␊ |
␊ |
␊ |
// XMLGetTag(int index)␊ |
␊ |
// XMLTagCount( TagPtr dict )␊ |
|
␉␉␉&& (dict->type != kTagTypeArray)␉// If we are an array, any element is valid␊ |
␉␉␉) continue;␊ |
␉␉␊ |
␉␉if(tag->type == kTagTypeKey) printf("Located key %s\n", tag->string);␊ |
␉␉//if(tag->type == kTagTypeKey) printf("Located key %s\n", tag->string);␊ |
␊ |
␉␉count++;␊ |
}␊ |
|
//==========================================================================␊ |
// ParseTagBoolean␊ |
␊ |
static long␊ |
long␊ |
ParseTagBoolean( char * buffer, TagPtr * tag, long type )␊ |
{␊ |
TagPtr tmpTag;␊ |
|
␉if(dict->type == kTagTypeInteger) return (int)(dict->string);␊ |
␉return 0;␊ |
}␊ |
␊ |
bool XMLAddTagToDictionary(TagPtr dict, char* key, TagPtr value)␊ |
{␊ |
if (!dict || dict->type != kTagTypeDict) return false;␊ |
␊ |
TagPtr tmpTag;␊ |
char* string;␊ |
␊ |
tmpTag = NewTag();␊ |
if (tmpTag == 0)␊ |
{␊ |
return false;␊ |
}␊ |
␊ |
string = NewSymbol(key);␊ |
if (string == 0)␊ |
{␊ |
XMLFreeTag(tmpTag);␊ |
return false;␊ |
}␊ |
␊ |
tmpTag->type = kTagTypeKey;␊ |
tmpTag->string = string;␊ |
tmpTag->tag = value;␊ |
␉tmpTag->offset = 0;␊ |
tmpTag->tagNext = 0;␊ |
␊ |
TagPtr tagList = dict->tag;␊ |
if(!tagList)␊ |
{␊ |
// First tag␊ |
dict->tag = tmpTag;␊ |
return true;␊ |
}␊ |
while(tagList && tagList->tagNext) tagList = tagList->tagNext;␊ |
if(tagList)␊ |
{␊ |
tagList->tagNext = tmpTag;␊ |
return true;␊ |
}␊ |
return false;␊ |
} |