1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
/***************************************************************************
BasicCellProperties.cpp - Base of the cell properties
-------------------
begin : Wed Aug 8 2001
copyright : (C) 2001 TIMC (Emmanuel Promayon, Matthieu Chabanas)
email : Emmanuel.Promayon@imag.fr
Date : $Date: 2006/03/15 09:59:49 $
Version : $Revision: 1.9 $
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "BasicCellProperties.h"
//----------------------- Class member init -----------------------
void BasicCellProperties::resetUniqueIndex() {
BasicCellProperties::maxUniqueIndex = 0;
}
BasicCellProperties::BasicCellProperties(PhysicalModel * p, const StructureProperties::GeometricType t, xmlNodePtr node) : StructureProperties(p, t) {
//search the name attribute
xmlChar *pname = xmlGetProp(node, (const xmlChar*) "name");
if(pname)
setName((char*)pname);
//search the index attribute
xmlChar *pindex = xmlGetProp(node, (const xmlChar*) "index");
if (pindex)
index = atoi((char*)pindex);
else
index = maxUniqueIndex++;
//search the unknown attributes to fill the property fields map
xmlAttr * attrs = node->properties;
xmlNodePtr unknownAttrs = xmlNewNode(NULL, (xmlChar*)("unknownAttrs"));
while (attrs)
{
const xmlChar * pname = attrs->name;
xmlChar * pval = attrs->children->content;
if (pname && xmlStrcmp(pname, (xmlChar*)"name")
&& xmlStrcmp(pname, (xmlChar*)"x")
&& xmlStrcmp(pname, (xmlChar*)"y")
&& xmlStrcmp(pname, (xmlChar*)"z")
&& xmlStrcmp(pname, (xmlChar*)"type")
&& xmlStrcmp(pname, (xmlChar*)"index")){
xmlSetProp(unknownAttrs, pname, pval);
}
attrs = attrs->next;
}
//transform the unknown attributes to a property field map
domToFields(unknownAttrs);
}
// initializing the static class member
unsigned int BasicCellProperties::maxUniqueIndex = 0;
//----------------------- Constructors -----------------------
BasicCellProperties::BasicCellProperties(PhysicalModel *p, const StructureProperties::GeometricType t) : StructureProperties(p,t) {
index = maxUniqueIndex++;
}
BasicCellProperties::BasicCellProperties(PhysicalModel *p, const StructureProperties::GeometricType t, const unsigned int ind) : StructureProperties(p,t) {
index = ind;
if (ind>=maxUniqueIndex)
maxUniqueIndex = ind+1;
}
/// write the default xml properties (beginning)
void BasicCellProperties::beginXML(std::ostream & o) {
o << "<cellProperties index=\"" << index << "\" ";
// print the type
switch (getType()) {
case StructureProperties::TETRAHEDRON:
o << "type=\"TETRAHEDRON\" ";
break;
case StructureProperties::HEXAHEDRON:
o << "type=\"HEXAHEDRON\" ";
break;
case StructureProperties::WEDGE:
o << "type=\"WEDGE\" ";
break;
case StructureProperties::POLY_LINE:
o << "type=\"POLY_LINE\" ";
break;
case StructureProperties::POLY_VERTEX:
o << "type=\"POLY_VERTEX\" ";
break;
case StructureProperties::LINE:
o << "type=\"LINE\" ";
break;
case StructureProperties::TRIANGLE:
o << "type=\"TRIANGLE\" ";
break;
case StructureProperties::QUAD:
o << "type=\"QUAD\" ";
break;
default:
o << "type=\"???\" ";
break;
}
o << " ";
if (getName()!="")
o << "name=\"" << getName().c_str() << "\" ";
}
/// write the default xml properties (end)
void BasicCellProperties::endXML(std::ostream & o) {
o << "/>" << std::endl;
}
|