node *MDUNPACKboxdef( node *arg_node, info *arg_info ) { node *temp; node *keys; DBUG_ENTER("MDUNPACKboxdef"); temp = dequeuePopNextMatch(INFO_BOXDEQUEUE(arg_info), BOXDEF_NAME(arg_node)); if(temp != NULL) { BOXDEF_METADATA(arg_node) = METADATABOXDEF_KEYS(temp); METADATABOXDEF_KEYS(temp) = NULL; FREEdoFreeTree(temp); while((temp = dequeuePopNextMatch(INFO_BOXDEQUEUE(arg_info), BOXDEF_NAME(arg_node))) != NULL) { keys = BOXDEF_METADATA(arg_node); while(METADATAKEYLIST_NEXT(keys) != NULL) { keys = METADATAKEYLIST_NEXT(keys); } METADATAKEYLIST_NEXT(keys) = METADATABOXDEF_KEYS(temp); METADATABOXDEF_KEYS(temp) = NULL; FREEdoFreeTree(temp); } } DBUG_RETURN(arg_node); }
node *OSbinop (node *arg_node, info *arg_info) { DBUG_ENTER("OSbinop"); /* * Extremely important: * we must continue to traverse the abstract syntax tree !! */ BINOP_LEFT( arg_node) = TRAVdo( BINOP_LEFT( arg_node), arg_info); BINOP_RIGHT( arg_node) = TRAVdo( BINOP_RIGHT( arg_node), arg_info); if (BINOP_OP( arg_node) == BO_sub) { if ((NODE_TYPE( BINOP_LEFT( arg_node)) == N_var) && (NODE_TYPE( BINOP_RIGHT( arg_node)) == N_var) && STReq( VAR_NAME( BINOP_LEFT( arg_node)), VAR_NAME( BINOP_RIGHT( arg_node)))) { arg_node = FREEdoFreeTree( arg_node); arg_node = TBmakeNum( 0); } else if ((NODE_TYPE( BINOP_LEFT( arg_node)) == N_num) && (NODE_TYPE( BINOP_RIGHT( arg_node)) == N_num) && (NUM_VALUE( BINOP_LEFT( arg_node)) == NUM_VALUE( BINOP_RIGHT( arg_node)))) { arg_node = FREEdoFreeTree( arg_node); arg_node = TBmakeNum( 0); } } DBUG_RETURN( arg_node); }
node *MDUNPACKnetdef( node *arg_node, info *arg_info ) { node *temp; node *keys; node *childs; DBUG_ENTER("MDUNPACKnetdef"); temp = dequeuePopNextMatch(INFO_NETDEQUEUE(arg_info), NETDEF_NAME(arg_node)); if(temp != NULL) { NETDEF_METADATA(arg_node) = METADATANETDEF_KEYS(temp); METADATANETDEF_KEYS(temp) = NULL; INFO_CHILDS(arg_info) = METADATANETDEF_CHILDS(temp); METADATANETDEF_CHILDS(temp) = NULL; FREEdoFreeTree(temp); while((temp = dequeuePopNextMatch(INFO_NETDEQUEUE(arg_info), NETDEF_NAME(arg_node))) != NULL) { keys = NETDEF_METADATA(arg_node); if(keys != NULL) { while(METADATAKEYLIST_NEXT(keys) != NULL) { keys = METADATAKEYLIST_NEXT(keys); } METADATAKEYLIST_NEXT(keys) = METADATANETDEF_KEYS(temp); METADATANETDEF_KEYS(temp) = NULL; } childs = INFO_CHILDS(arg_info); if(childs != NULL) { while(METADATADEFS_NEXT(childs) != NULL) { childs = METADATADEFS_NEXT(childs); } METADATADEFS_NEXT(childs) = METADATANETDEF_CHILDS(temp); METADATANETDEF_CHILDS(temp) = NULL; } FREEdoFreeTree(temp); } } if(NETDEF_BODY(arg_node) != NULL) { NETDEF_BODY(arg_node) = TRAVdo(NETDEF_BODY(arg_node), arg_info); } DBUG_RETURN(arg_node); }
node *MDUNPACKmetadatadefs( node *arg_node, info *arg_info ) { node *temp; DBUG_ENTER("MDUNPACKmetadatadefs"); if(METADATADEFS_DEF(arg_node) != NULL) { METADATADEFS_DEF(arg_node) = TRAVdo(METADATADEFS_DEF(arg_node), arg_info); } if(METADATADEFS_NEXT(arg_node) != NULL) { METADATADEFS_NEXT(arg_node) = TRAVdo(METADATADEFS_NEXT(arg_node), arg_info); } if(METADATADEFS_DEF(arg_node) == NULL) { temp = METADATADEFS_NEXT(arg_node); METADATADEFS_NEXT(arg_node) = NULL; FREEdoFreeTree(arg_node); arg_node = temp; } DBUG_RETURN(arg_node); }
node *PPLOCat( node *arg_node, info *arg_info) { DBUG_ENTER("PPLOCat"); int loc; node *temp; node *top = NULL; node *ref; if(INFO_TOP(arg_info) != NULL) { top = INFO_TOP(arg_info); ref = TBmakeNetrefs(top, NULL); NODE_ERRCODE(ref) = STRcpy(NODE_ERRCODE(arg_node)); NETREFS_LOCATION(ref) = AT_LOCATION(arg_node); temp = TBmakeNetbody(NULL, ref); NODE_ERRCODE(temp) = STRcpy(NODE_ERRCODE(arg_node)); temp = TBmakeNetdef(STRcpy(NETDEF_NAME(top)), NULL, FALSE, FALSE, NULL, temp, NULL); NODE_ERRCODE(temp) = STRcpy(NODE_ERRCODE(arg_node)); top = temp; INFO_TOP(arg_info) = NULL; } loc = INFO_LOC(arg_info); INFO_LOC(arg_info) = AT_LOCATION(arg_node); AT_LEFT(arg_node) = TRAVdo(AT_LEFT(arg_node), arg_info); INFO_LOC(arg_info) = loc; temp = AT_LEFT(arg_node); AT_LEFT(arg_node) = NULL; FREEdoFreeTree(arg_node); arg_node = temp; INFO_TOP(arg_info) = top; DBUG_RETURN(arg_node); }
static dequeue_element_t *dequeueElementFree(dequeue_element_t *element) { dequeue_element_t *temp; temp = element->next; CTIwarnNode(CTI_ERRNO_DEAD_CODE, element->def, "Discarding unused metadata (name=\"%s\")", element->name); FREEdoFreeTree(element->def); MEMfree(element); return temp; }