Exemplo n.º 1
0
CMreturn NFparseObjAliasFinalize(NFobject_p parent, NFobject_p object) {
    NFobjList_p list;

    if (object->Type != NFobjAlias) {
        CMmsgPrint(CMmsgAppError, "This shouldn't have happened in %s%d.\n", __FILE__, __LINE__);
        goto Abort;
    }
    switch (parent->Type) {
        case NFcompRegion:
            list = ((NFcompRegion_p) parent)->Aliases;
            break;
        case NFmodEquation:
            list = ((NFmodEquation_p) parent)->Aliases;
            break;
        case NFmodProcess:
            list = ((NFmodProcess_p) parent)->Aliases;
            break;
        default:
            CMmsgPrint(CMmsgAppError, "This shouldn't have happened in %s%d.\n", __FILE__, __LINE__);
            goto Abort;
    }
    if (NFobjListAddItem(list, object) == CMfailed) {
        CMmsgPrint(CMmsgAppError, "Error adding alias to %s in %s:%d\n", NFobjTypeName(object->Parent->Type), __FILE__,
                   __LINE__);
        goto Abort;
    }
    return (CMsucceeded);
    Abort:
    NFobjectFree(object);
    return (CMfailed);
}
Exemplo n.º 2
0
/****************************************************************************************************************
 * Entry start
*****************************************************************************************************************/
static void XMLCALL _NFentryStart (void *argPtr, const char *entry, const char **attr) {
	const char *name;
	const char *modelChildren     [] = { NFcompAggregateStr, NFcompContainerStr, NFcompInputStr, NFcompRegionStr, NFnumParameterStr, (char *) NULL };
	const char *containerChildren [] = { NFcompAggregateStr,
	                                     NFcompContainerStr,
			                             NFcompRegionStr,
			                             NFnumParameterStr,
			                             NFnumInitialStr,
			                             NFnumVariableStr,
			                             NFmodDerivativeStr, 
			                             NFmodEquationStr,
			                             NFmodInterfaceStr,
			                             NFmodProcessStr,
			                             NFmodRouteStr,
			                             NFobjOutputStr,
			                             (char *) NULL };
	const char *ioChildren        [] = { NFnumVariableStr, (char *) NULL };
	const char *regionChildren    [] = { NFobjAliasStr,    (char *) NULL };
	const char *aggregateChildren [] = { NFobjCategoryStr, (char *) NULL };
	const char *moduleChildren    [] = { NFobjAliasStr, NFnumParameterStr, (char *) NULL };
	NFdata_t   *data;
	NFobject_p object, parent;
	XML_Parser parser = (XML_Parser) argPtr;

	data = (NFdata_t *) XML_GetUserData (parser);

	if (data->Skip) {
		if (strcmp (data->SkipName,entry) == 0) data->SkipLevel++;
		return;
	}
	if (data->Stack + 1 >= data->StackSize) {
		data->Objects = (NFobject_p *) realloc (data->Objects, (data->StackSize + 1) * sizeof (NFobject_p));
		if (data->Objects == (NFobject_p *) NULL) {
			CMmsgPrint (CMmsgSysError, "Memory allocation error in %s:%d\n",__FILE__,__LINE__);
			goto Abort;
		}
		data->Objects [data->StackSize] = (NFobject_p) NULL;
		data->StackSize++;
	}

	if ((name = NFparseGetAttribute (attr, NFattrNameStr, (const char *) NULL)) == (char *) NULL) {
		CMmsgPrint (CMmsgWarning,"Skipping unnamed %s section in line: %d\n",entry, XML_GetCurrentLineNumber (parser));
		goto Skip;
	}
	if (data->Stack == 0) { // Document root level
		if (strcmp (entry,NFcompModelStr) == 0) {
			if (data->Objects [data->Stack] != (NFobject_p) NULL) {
				CMmsgPrint (CMmsgWarning, "Skipping second model [%s] section [%s] in line: %d\n",entry, name, XML_GetCurrentLineNumber (parser));
				goto Skip;
			}
			if ((data->Objects [data->Stack] = NFparseCompModelCreate (parser,name,attr)) == (NFobject_p) NULL) {
				CMmsgPrint (CMmsgAppError, "Model creation error in %s:%d\n",__FILE__,__LINE__);
				goto Abort;
			}
			data->Model = (NFcompModel_p) data->Objects [data->Stack];
		}
		else {
			CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in line: %d\n",entry, name, XML_GetCurrentLineNumber (parser));
			goto Skip;
		}
	}
	else {
		parent = data->Objects [data->Stack - 1];
		switch (parent->Type) {
		case NFcompAggregate:
			if (CMoptLookup (aggregateChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFcompContainer:
			if (CMoptLookup (containerChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFcompInput:
			if (CMoptLookup (ioChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFcompModel:
			if (CMoptLookup (modelChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFcompRegion: 
			if (CMoptLookup (regionChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFnumInitial:    CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFnumParameter:  CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFnumVariable:   CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFmodDerivative: CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFmodEquation:
			if (CMoptLookup (moduleChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFmodInterface:  CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFmodProcess:
			if (CMoptLookup (moduleChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFmodRoute:      CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFobjAlias:      CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFobjCategory:   CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		case NFobjOutput:
			if (CMoptLookup (ioChildren, entry, true) == CMfailed) {
				CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name);
				goto Skip;
			}
			break;
		case NFobjPlugin:   CMmsgPrint (CMmsgWarning,"Skipping [%s] section [%s] in %s [%s]\n",entry, name, NFobjTypeName (parent->Type), parent->Name); goto Skip;
		}
		if      (strcmp (entry, NFdimensionStr) == 0) {
			
		}
		else if (strcmp (entry, NFextentStr)    == 0) {
			
		}
		else {
			switch (NFobjTypeCode (entry)) {
				case NFcompAggregate: object = NFparseCompAggregateCreate (parser,parent,name,attr); break;
				case NFcompContainer: object = NFparseCompContainerCreate (parser,parent,name,attr); break;
				case NFcompInput:     object = NFparseCompInputCreate     (parser,parent,name,attr); break;
				case NFcompModel:     CMmsgPrint (CMmsgAppError, "This should never happen! %s:%d\n",__FILE__,__LINE__); goto Skip;
				case NFcompRegion:    object = NFparseCompRegionCreate    (parser,parent,name,attr); break;
				case NFnumInitial:    object = NFparseNumVariableCreate   (parser,parent,name,attr); break;
				case NFnumParameter:  object = NFparseNumParameterCreate  (parser,parent,name,attr); break;
				case NFnumVariable:   object = NFparseNumVariableCreate   (parser,parent,name,attr); break;
				case NFmodDerivative: object = NFparseModDerivativeCreate (parser,parent,name,attr); break;
				case NFmodEquation:   object = NFparseModEquationCreate   (parser,parent,name,attr); break;
				case NFmodInterface:  object = NFparseModInterfaceCreate  (parser,parent,name,attr); break;
				case NFmodProcess:    object = NFparseModProcessCreate    (parser,parent,name,attr); break;
				case NFmodRoute:      object = NFparseModRouteCreate      (parser,parent,name,attr); break;
				case NFobjAlias:      object = NFparseObjAliasCreate      (parser,parent,name,attr); break;
				case NFobjCategory:   object = NFparseObjCategoryCreate   (parser,parent,name,attr); break;
				case NFobjOutput:     object = NFparseObjOutputCreate     (parser,parent,name,attr); break;
				case NFobjPlugin:     CMmsgPrint (CMmsgAppError, "This should never happen! %s:%d\n",__FILE__,__LINE__); goto Skip;
			}
		if (object == (NFobject_p) NULL) goto Abort;
		data->Objects [data->Stack] = object;
		}
	}
	data->Stack++;
	return;

Abort:
	data->Abort     = true;
	
Skip:
	data->SkipName  = CMstrDuplicate (entry);
	data->Skip      = true;
	data->SkipLevel = 1;
	return;
}
Exemplo n.º 3
0
void NFobjectPrint(NFobject_p object) {

    CMmsgPrint(CMmsgInfo, "%s [%s] Begin\n", NFobjTypeName(object->Type), object->Name);
    CMmsgIndent(CMmsgInfo, true);
    if (object->Parent != (NFobject_p) NULL)
        CMmsgPrint(CMmsgInfo, "Parent: %s [%s]\n", NFobjTypeName(object->Parent->Type), object->Parent->Name,
                   object->Name);
    switch (object->Type) {
        case NFcompAggregate:
            _NFcompAggregatePrint(object);
            break;
        case NFcompContainer:
            _NFcompContainerPrint(object);
            break;
        case NFcompInput:
            _NFcompInputPrint(object);
            break;
        case NFcompModel:
            _NFcompModelPrint(object);
            break;
        case NFcompRegion:
            _NFcompRegionPrint(object);
            break;
        case NFmodDerivative:
            _NFmodDerivativePrint(object);
            break;
        case NFmodEquation:
            _NFmodEquationPrint(object);
            break;
        case NFmodInterface:
            _NFmodInterfacePrint(object);
            break;
        case NFmodProcess:
            _NFmodProcessPrint(object);
            break;
        case NFmodRoute:
            _NFmodRoutePrint(object);
            break;
        case NFnumInitial:
            _NFnumVariablePrint(object);
            break;
        case NFnumParameter:
            _NFnumParameterPrint(object);
            break;
        case NFnumVariable:
            _NFnumVariablePrint(object);
            break;
        case NFobjAlias:
            _NFobjAliasPrint(object);
            break;
        case NFobjCategory:
            _NFobjCategoryPrint(object);
            break;
        case NFobjOutput:
            _NFobjOutputPrint(object);
            break;
        case NFobjPlugin:
            _NFobjPluginPrint(object);
            break;
    }
    CMmsgIndent(CMmsgInfo, false);
    CMmsgPrint(CMmsgInfo, "%s [%s] End\n", NFobjTypeName(object->Type), object->Name);
}