1 #include "XmedDataModel.hxx"
2 #include <Basics_Utils.hxx>
5 // =================================================================
6 // XmedDataObject implementation
7 // =================================================================
10 XmedDataObject::XmedDataObject() : DataObject() {
13 /*! This function specified the localization of the object in the
14 * hierarchical organization
16 string XmedDataObject::getPath() {
18 string(_fieldHandler.meshname) + pathsep +
19 _getTypedFieldLabel();
23 void XmedDataObject::setFieldHandler(MEDOP::FieldHandler fieldHandler) {
24 _fieldHandler = fieldHandler;
25 this->setLabel(string("it = ")+ToString(_fieldHandler.iteration));
27 MEDOP::FieldHandler * XmedDataObject::getFieldHandler() {
28 return &_fieldHandler;
31 const char * XmedDataObject::mapTypeOfFieldLabel[XmedDataObject::NB_TYPE_OF_FIELDS] =
32 {"ON_CELLS", "ON_NODES", "ON_GAUSS_PT", "ON_GAUSS_NE" };
34 * This function implements the convention for displaying a fieldname
35 * characterized by its spatial discretisation type.
37 string XmedDataObject::_getTypedFieldLabel() {
38 // A field name could identify several MEDCoupling fields, that
39 // differ by their spatial discretization on the mesh (values on
40 // cells, values on nodes, ...). This spatial discretization is
41 // specified by the TypeOfField that is an integer value in this
47 if ( _fieldHandler.type < 0 ||
48 _fieldHandler.type >= XmedDataObject::NB_TYPE_OF_FIELDS ) {
49 return string("UNKNOWN");
51 string label(_fieldHandler.fieldname);
52 label +=" ("+string(mapTypeOfFieldLabel[_fieldHandler.type])+")";
57 // =================================================================
58 // XmedDataModel implementation
59 // =================================================================
63 * This function creates a XmedDataObject instance of DataObject and
64 * add the newly created instance to the model.
66 DataObject * XmedDataModel::newDataObject() {
67 XmedDataObject * dataObject = new XmedDataObject();
68 this->addDataObject(dataObject);
73 // =================================================================
74 // XmedDataProcessor implementation
75 // =================================================================
77 void XmedDataProcessor::preprocess(QStringList itemNameIdList) {
78 int maxsize = itemNameIdList.size();
79 _resultingFieldHandlerList = new MEDOP::FieldHandlerList(maxsize);
80 _resultingFieldIdList = new MEDOP::FieldIdList(maxsize);
84 MEDOP::FieldHandlerList * XmedDataProcessor::getResultingFieldHandlerList() {
85 return _resultingFieldHandlerList._retn();
88 MEDOP::FieldIdList * XmedDataProcessor::getResultingFieldIdList() {
89 return _resultingFieldIdList._retn();
92 void XmedDataProcessor::processDataObject(DataObject * dataObject) {
93 XmedDataObject * xmedDataObject = (XmedDataObject *)dataObject;
94 MEDOP::FieldHandler fieldHandler = *(xmedDataObject->getFieldHandler());
95 int fieldId = fieldHandler.id;
97 int newsize = _objectIndex+1;
98 _resultingFieldHandlerList->length(newsize);
99 _resultingFieldIdList->length(newsize);
101 _resultingFieldHandlerList[_objectIndex] = fieldHandler;
102 _resultingFieldIdList[_objectIndex] = fieldId;
106 // Example (if needed) for creating the list of id from the lsite of handler
108 MEDOP::FieldIdList_var fieldIdList = new MEDOP::FieldIdList();
109 fieldIdList->length(fieldHandlerList->length());
110 for (int i=0; i<fieldHandlerList->length(); i++) {
111 MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[i];
112 fieldIdList[i] = fieldHandler.id;