Esempio n. 1
0
bool
DataObject_hasFCData(DataObject* dataObject, FunctionalConstraint fc)
{
	ModelNode* modelNode = dataObject->firstChild;

	while (modelNode != NULL) {

		if (modelNode->modelType == DataAttributeModelType) {
			DataAttribute* dataAttribute = (DataAttribute*) modelNode;

			if (dataAttribute->fc == fc)
				return true;
		}
		else if (modelNode->modelType == DataObjectModelType) {
			DataObject* dataObject = (DataObject*) modelNode;

			if (DataObject_hasFCData(dataObject, fc))
				return true;
		}

		modelNode = modelNode->sibling;
	}

	return false;
}
Esempio n. 2
0
static MmsTypeSpecification*
createFCNamedVariableFromDataObject(DataObject* dataObject, FunctionalConstraint fc)
{
	/* Determine size of components TODO determine minimum count */
	int elementCount = 0;
	int i = 0;

	MmsTypeSpecification* namedVariable = calloc(1, sizeof(MmsTypeSpecification));
	namedVariable->name = dataObject->name;
	namedVariable->type = MMS_STRUCTURE;

	if (dataObject->dataAttributes != NULL) {
		elementCount += ArrayList_listSize((void**) (dataObject->dataAttributes));
	}

	if (dataObject->subDataObjects != NULL) {
		elementCount += ArrayList_listSize((void**) (dataObject->subDataObjects));
	}

	/* Allocate memory for components */
	namedVariable->typeSpec.structure.elements =
			calloc(elementCount, sizeof(MmsTypeSpecification*));

	elementCount = 0;

	/* Create components from data attributes */
	if (dataObject->dataAttributes != NULL) {
		i = 0;
		while (dataObject->dataAttributes[i] != NULL) {
			if (dataObject->dataAttributes[i]->fc == fc) {
				namedVariable->typeSpec.structure.elements[elementCount] =
						createNamedVariableFromDataAttribute(dataObject->dataAttributes[i]);
				elementCount++;
			}
			i++;
		}
	}

	/* Create components from sub data objects */
	if (dataObject->subDataObjects != NULL) {
		i = 0;
		while (dataObject->subDataObjects[i] != NULL) {
			if (DataObject_hasFCData(dataObject->subDataObjects[i], fc)) {
				namedVariable->typeSpec.structure.elements[elementCount]
				   = createFCNamedVariableFromDataObject(dataObject->subDataObjects[i], fc);
				elementCount++;
			}
			i++;
		}
	}

	namedVariable->typeSpec.structure.elementCount = elementCount;
	return namedVariable;
}
Esempio n. 3
0
bool
LogicalNode_hasFCData(LogicalNode* node, FunctionalConstraint fc)
{
	DataObject* dataObject = (DataObject*) node->firstChild;

	while (dataObject != NULL) {
		if (DataObject_hasFCData(dataObject, fc))
			return true;

		dataObject = (DataObject*) dataObject->sibling;
	}

	return false;
}
Esempio n. 4
0
static MmsTypeSpecification*
createFCNamedVariable(LogicalNode* logicalNode, FunctionalConstraint fc)
{
	int dataObjectCount = 0;
	int i = 0;

	MmsTypeSpecification* namedVariable = calloc(1, sizeof(MmsTypeSpecification));
	namedVariable->name = FunctionalConstrained_toString(fc);
	namedVariable->type = MMS_STRUCTURE;

	while (logicalNode->dataObjects[i] != NULL) {
		if (DataObject_hasFCData(logicalNode->dataObjects[i], fc)) {
			dataObjectCount++;
		}
		i++;
	}

	namedVariable->typeSpec.structure.elementCount = dataObjectCount;
	namedVariable->typeSpec.structure.elements =
			calloc(dataObjectCount, sizeof(MmsTypeSpecification*));

	i = 0;
	dataObjectCount = 0;
	while (logicalNode->dataObjects[i] != NULL) {
		if (DataObject_hasFCData(logicalNode->dataObjects[i], fc)) {

			namedVariable->typeSpec.structure.elements[dataObjectCount] =
					createFCNamedVariableFromDataObject(logicalNode->dataObjects[i], fc);

			dataObjectCount++;
		}
		i++;
	}

	return namedVariable;
}