Beispiel #1
0
CMreturn NFparseCompContainerFinalize(NFobject_p parent, NFobject_p object) {
    ;
    NFcompModel_p model;

    if (object->Type != NFcompContainer) {
        CMmsgPrint(CMmsgAppError, "This shouldn't have happened in %s:%d!\n", __FILE__, __LINE__);
        return (CMfailed);
        goto Abort;
    }
    switch (parent->Type) {
        case NFcompContainer:
            if (NFobjListAddItem(((NFcompContainer_p) parent)->Components, object) != CMsucceeded) {
                CMmsgPrint(CMmsgAppError, "Error adding component to model in %s:%d\n", __FILE__, __LINE__);
                goto Abort;
            }
        case NFcompModel:
            model = (NFcompModel_p) NFobjectRoot(parent);
            if (NFobjListAddItem(model->Components, object) != CMsucceeded) {
                CMmsgPrint(CMmsgAppError, "Error adding component to model in %s:%d\n", __FILE__, __LINE__);
                goto Abort;
            }
            break;
        default:
            CMmsgPrint(CMmsgAppError, "This shouldn't have happened in %s:%d!\n", __FILE__, __LINE__);
            goto Abort;
    }
    return (CMsucceeded);
    Abort:
    NFobjectFree(object);
    return (CMfailed);
}
Beispiel #2
0
CMreturn NFparseModInterfaceFinalize(NFobject_p parent, NFobject_p object) {
    NFmodInterface_p interface = (NFmodInterface_p) object;

    if ((object->Type != NFmodInterface) || (parent->Type != NFcompContainer)) {
        CMmsgPrint(CMmsgAppError, "Wrong object in %s:%d\n", __FILE__, __LINE__);
        goto Abort;
    }
    if (NFobjListAddItem(((NFcompContainer_p) parent)->Modules, object) != CMsucceeded) {
        CMmsgPrint(CMmsgAppError, "Error adding interface to container in %s:%d\n", __FILE__, __LINE__);
        goto Abort;
    }
    if (NFobjListAddItem(((NFcompContainer_p) parent)->Variables, (NFobject_p) ((NFmodInterface_p) object)->Variable) !=
            CMsucceeded) {
        CMmsgPrint(CMmsgAppError, "Error adding variable to container in %s:%d\n", __FILE__, __LINE__);
        goto Abort;
    }
    if ((interface->Coupler = NFcouplerGet(interface->Component, (NFcomponent_p) (interface->Parent),
                                           interface->CouplerType)) == (NFcoupler_p) NULL) {
        CMmsgPrint(CMmsgAppError, "Interface error in %s:%d\n", __FILE__, __LINE__);
        goto Abort;
    }
    return (CMsucceeded);
Abort:
    NFobjectFree(object);
    return (CMfailed);
}
Beispiel #3
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);
}
Beispiel #4
0
CMreturn NFparseModProcessFinalize (NFobject_p parent, NFobject_p object) {
	size_t i, j;
	NFmodProcess_p module = (NFmodProcess_p) object;

	if ((object->Type != NFmodProcess) || (parent->Type != NFcompContainer)) {
		CMmsgPrint (CMmsgUsrError, "This shouldn't have happend in %s:%d.\n",__FILE__,__LINE__);
		goto Abort;
	}
	if (NFobjListAddItem (((NFcompContainer_p) parent)->Modules, object) != CMsucceeded) {
		CMmsgPrint (CMmsgAppError, "Error adding process module to container in %s:%d\n",__FILE__,__LINE__);
		goto Abort;
	}
	for (i = 0;i < module->Context->ParameterNum; ++i) {
	
	}
	for (i = 0;i < module->Context->VariableNum;  ++i) {
		if ((module->Context->Variables [i].Role == NFinput) ||
			(module->Context->Variables [i].Role == NFmodified)) {
			for (j = 0; j < module->Aliases->Num; ++j) {
				if ((((NFobjAlias_p) module->Aliases->List [j])->AliasType == NFaliasVariable) &&
					(strcmp (module->Context->Variables [i].Name, (((NFobjAlias_p) module->Aliases->List [j])->Alias)) == 0))
					break;
			}
			if (j == module->Aliases->Num) {
				CMmsgPrint (CMmsgAppError,"Process [%s] variable [%s] is not found!\n", module->Name, module->Context->Variables [i].Name);
				goto Abort;
			}
		}
		else {
			
		}
	}

	module->Execute    (module->Context->UserData);
	module->Finalize   (module->Context->UserData);

	return (CMsucceeded);
Abort:
	NFobjectFree (object);
	return (CMfailed);
}