static int chf_start_array(void * ctx) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; assert(filter); ++parser->depth; return CALLIF(filter->plug->fif->parse_start_array)(filter ); }
static int chf_boolean(void * ctx, int boolVal) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_boolean)(filter , boolVal); chf_value(parser, &result); return result; }
static int chf_null(void * ctx) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_null)(filter ); chf_value(parser, &result); return result; }
static int chf_double(void * ctx, double doubleVal) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_double)(filter , doubleVal); chf_value(parser, &result); return result; }
static int chf_integer(void * ctx, long integerVal) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_integer)(filter , integerVal); chf_value(parser, &result); return result; }
static int chf_end_array(void * ctx) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_end_array)(filter ); --parser->depth; chf_value(parser, &result); return result; }
static int chf_string(void * ctx, const unsigned char * stringVal, unsigned int stringLen) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; assert(filter); result = CALLIF(filter->plug->fif->parse_string)(filter , (const char *) stringVal, stringLen); chf_value(parser, &result); return result; }
bool MD5Parser::ParseAnimFile(std::ifstream& file){ std::string name; while (file >> name){ CALLIF(name, "MD5Version", Version); CALLIF(name, "commandline", CommandLine); CALLIF(name, "numJoints", NumJointsAnim); CALLIF(name, "numFrames", NumFramesAnim); CALLIF(name, "frameRate", FrameRateAnim); CALLIF(name, "numAnimatedComponents", NumAnimatedComponentsAnim); CALLIF(name, "hierarchy", HierarchyAnim); CALLIF(name, "bounds", BoundsAnim); CALLIF(name, "baseframe", BaseframeAnim); CALLIF(name, "frame", FrameAnim); return false; } return true; }
static int chf_start_map(void * ctx) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; if (!filter) { assert(parser->depth == 0); return parse_continue; /* Opening '{' */ } ++parser->depth; return CALLIF(filter->plug->fif->parse_start_map)(filter ); }
static int chf_end_map(void * ctx) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; parse_result result; if (!filter) { assert(parser->depth == 0); return parse_continue; /* Final closing '}' */ } assert(parser->depth > 0); result = CALLIF(filter->plug->fif->parse_end_map)(filter ); --parser->depth; chf_value(parser, &result); return result; }
bool MD5Parser::ParseMeshFile(std::ifstream& file){ std::string name; while (file >> name){ CALLIF(name, "MD5Version", Version); CALLIF(name, "commandline", CommandLine); CALLIF(name, "numJoints", NumJointsMesh); CALLIF(name, "numMeshes", NumMeshesMesh); CALLIF(name, "joints", JointsMesh); CALLIF(name, "mesh", MeshMesh); return false; } return true; }
static int chf_map_key(void * ctx, const unsigned char * key, unsigned int stringLen) { parseContext *parser = (parseContext *) ctx; chFilter *filter = parser->filter; const chFilterPlugin *plug; parse_result result; if (filter) { assert(parser->depth > 0); return CALLIF(filter->plug->fif->parse_map_key)(filter , (const char *) key, stringLen); } assert(parser->depth == 0); plug = dbFindFilter((const char *) key, stringLen); if (!plug) { errlogPrintf("dbChannelCreate: Channel filter '%.*s' not found\n", (int) stringLen, key); return parse_stop; } filter = freeListCalloc(chFilterFreeList); if (!filter) { errlogPrintf("dbChannelCreate: Out of memory\n"); return parse_stop; } filter->chan = parser->chan; filter->plug = plug; filter->puser = NULL; result = plug->fif->parse_start(filter); if (result == parse_continue) { parser->filter = filter; } else { freeListFree(chFilterFreeList, filter); } return result; }