#include <primitive.h>
Inheritance diagram for NLLIGO::IPrimitive:

Properties | |
| bool | addPropertyByName (const char *property_name, IProperty *result) |
| virtual IPrimitive * | copy () const=0 |
| uint | getNumProperty () const |
| virtual uint | getNumVector () const=0 |
| virtual CPrimVector * | getPrimVector ()=0 |
| virtual const CPrimVector * | getPrimVector () const=0 |
| bool | getProperty (uint index, std::string &property_name, IProperty *&result) |
| bool | getProperty (uint index, std::string &property_name, const IProperty *&result) const |
| bool | getPropertyByName (const char *property_name, NLMISC::CRGBA &result) const |
| bool | getPropertyByName (const char *property_name, const std::vector< std::string > *&result) const |
| bool | getPropertyByName (const char *property_name, std::string &result) const |
| bool | getPropertyByName (const char *property_name, std::vector< std::string > *&result) const |
| bool | getPropertyByName (const char *property_name, std::string *&result) const |
| bool | getPropertyByName (const char *property_name, IProperty *&result) const |
| bool | getPropertyByName (const char *property_name, const IProperty *&result) const |
| virtual bool | read (xmlNodePtr xmlNode, const char *filename, uint version, CLigoConfig &config) |
| void | removeProperties () |
| bool | removeProperty (uint index) |
| bool | removePropertyByName (const char *property_name) |
| virtual void | write (xmlNodePtr xmlNode, const char *filename) const |
| void | updateChildId (uint index) |
| uint | _ChildId |
| std::vector< IPrimitive * > | _Children |
| IPrimitive * | _Parent |
| std::map< std::string, IProperty * > | _Properties |
Hierarchy | |
| bool | getChild (IPrimitive *&result, uint childId) |
| bool | getChild (const IPrimitive *&result, uint childId) const |
| bool | getChildId (uint &childId, const IPrimitive *child) const |
| uint | getNumChildren () const |
| const IPrimitive * | getParent () const |
| IPrimitive * | getParent () |
| bool | insertChild (IPrimitive *primitive, uint index=AtTheEnd) |
| IPrimitive (const IPrimitive &node) | |
| IPrimitive () | |
| virtual void | operator= (const IPrimitive &node) |
| bool | removeChild (uint childId) |
| void | removeChildren () |
| virtual | ~IPrimitive () |
Public Types | |
| enum | { NotAnArray, AtTheEnd = 0xffffffff } |
Public Member Functions | |
| virtual std::string | getClassName ()=0 |
Data Fields | |
| bool | Expanded |
| std::string | Layer |
| std::string | Name |
|
|
Definition at line 165 of file primitive.h.
00166 {
00167 NotAnArray,
00168 AtTheEnd = 0xffffffff,
00169 };
|
|
|
Get a child primitive Definition at line 172 of file primitive.h.
00173 {
00174 _Parent = NULL;
00175 };
|
|
|
Get a child primitive Definition at line 1373 of file primitive.cpp. References removeChildren(), and removeProperties().
01374 {
01375 // Remove children
01376 removeChildren ();
01377
01378 // Erase properties
01379 removeProperties ();
01380 }
|
|
|
Get a child primitive Definition at line 976 of file primitive.cpp.
00977 {
00978 _Parent = NULL;
00979 IPrimitive::operator= (node);
00980 }
|
|
||||||||||||
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 1384 of file primitive.cpp. References _Properties. Referenced by NLLIGO::CPrimitives::convertAddPrimitive(), NLLIGO::CPrimitives::convertPrimitive(), and read().
01385 {
01386 bool inserted = _Properties.insert (std::map<std::string, IProperty*>::value_type (property_name, result)).second;
01387 if (inserted)
01388 {
01389 return true;
01390 }
01391 return false;
01392 }
|
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Implemented in NLLIGO::CPrimNode, NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. |
|
||||||||||||
|
Get a child primitive Definition at line 1303 of file primitive.cpp. References nlwarning, and uint.
|
|
||||||||||||
|
Get a child primitive Definition at line 1287 of file primitive.cpp. References nlwarning, and uint. Referenced by NLLIGO::CPrimitives::convertPrimitive(), NLSOUND::CBackgroundSoundManager::loadAudioFromPrimitives(), NLSOUND::CBackgroundSoundManager::loadEffectsFromPrimitives(), NLSOUND::CBackgroundSoundManager::loadSamplesFromPrimitives(), and NLSOUND::CBackgroundSoundManager::loadSoundsFromPrimitives().
|
|
||||||||||||
|
Get the id of the child, return 0xffffffff if not found Definition at line 1713 of file primitive.cpp. References _ChildId, and uint.
01714 {
01715 childId = child->_ChildId;
01716 return true;
01717 }
|
|
|
Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc. Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize(). |
|
|
Get the children primitive count Definition at line 183 of file primitive.h. References uint. Referenced by NLLIGO::CPrimitives::convertPrimitive(), NLSOUND::CBackgroundSoundManager::loadAudioFromPrimitives(), NLSOUND::CBackgroundSoundManager::loadEffectsFromPrimitives(), NLSOUND::CBackgroundSoundManager::loadSamplesFromPrimitives(), and NLSOUND::CBackgroundSoundManager::loadSoundsFromPrimitives().
00184 {
00185 return _Children.size ();
00186 }
|
|
|
Get a num properties Definition at line 1721 of file primitive.cpp. References _Properties, and uint.
01722 {
01723 return _Properties.size ();
01724 }
|
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Implemented in NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. Referenced by NLSOUND::CBackgroundSoundManager::loadSoundsFromPrimitives(). |
|
|
Get a child primitive Definition at line 199 of file primitive.h.
00200 {
00201 return _Parent;
00202 }
|
|
|
Get the parent primtive Definition at line 195 of file primitive.h. Referenced by NLLIGO::CLigoConfig::canBeChild(), and NLLIGO::CLigoConfig::getPrimitiveClass().
00196 {
00197 return _Parent;
00198 }
|
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Implemented in NLLIGO::CPrimNode, NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. |
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Implemented in NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. |
|
||||||||||||||||
|
Get a properties by its index This is method (iterate a list) is slower than getPropertyByName (look up in a map). Definition at line 1081 of file primitive.cpp. References _Properties, index, nlwarning, and uint.
01082 {
01083 // Look for the property
01084 std::map<std::string, IProperty*>::iterator ite = _Properties.begin ();
01085 while (ite != _Properties.end ())
01086 {
01087 if (index == 0)
01088 {
01089 property_name = ite->first;
01090 result = ite->second;
01091 return true;
01092 }
01093 index--;
01094 ite ++;
01095 }
01096 nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %d, size : %d).", index, _Properties.size ());
01097 return false;
01098 }
|
|
||||||||||||||||
|
Get a properties by its index This is method (iterate a list) is slower than getPropertyByName (look up in a map). Definition at line 1060 of file primitive.cpp. References _Properties, index, nlwarning, and uint.
01061 {
01062 // Look for the property
01063 std::map<std::string, IProperty*>::const_iterator ite = _Properties.begin ();
01064 while (ite != _Properties.end ())
01065 {
01066 if (index == 0)
01067 {
01068 property_name = ite->first;
01069 result = ite->second;
01070 return true;
01071 }
01072 index--;
01073 ite ++;
01074 }
01075 nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %d, size : %d).", index, _Properties.size ());
01076 return false;
01077 }
|
|
||||||||||||
|
Get a color property with its name. Return false if the property is not found or is not a string array property. Definition at line 1218 of file primitive.cpp. References NLLIGO::CPropertyColor::Color, getPropertyByName(), and nlwarning.
01219 {
01220 // Get the property
01221 IProperty *prop;
01222 if (getPropertyByName (property_name, prop))
01223 {
01224 const CPropertyColor *colorProp = dynamic_cast<const CPropertyColor *> (prop);
01225 if (colorProp)
01226 {
01227 result = colorProp->Color;
01228 return true;
01229 }
01230 else
01231 {
01232 nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a color.", property_name);
01233 }
01234 }
01235 return false;
01236 }
|
|
||||||||||||
|
Get a string array property with its name. Return false if the property is not found or is not a string array property. Definition at line 1196 of file primitive.cpp. References getPropertyByName(), nlwarning, and NLLIGO::CPropertyStringArray::StringArray.
01197 {
01198 // Get the property
01199 IProperty *prop;
01200 if (getPropertyByName (property_name, prop))
01201 {
01202 const CPropertyStringArray *strProp = dynamic_cast<const CPropertyStringArray *> (prop);
01203 if (strProp)
01204 {
01205 result = &(strProp->StringArray);
01206 return true;
01207 }
01208 else
01209 {
01210 nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name);
01211 }
01212 }
01213 return false;
01214 }
|
|
||||||||||||
|
Get a string property with its name. Return false if the property is not found or is not a string property. Definition at line 1152 of file primitive.cpp. References getPropertyByName(), nlwarning, and NLLIGO::CPropertyString::String.
01153 {
01154 // Get the property
01155 const IProperty *prop;
01156 if (getPropertyByName (property_name, prop))
01157 {
01158 const CPropertyString *strProp = dynamic_cast<const CPropertyString *> (prop);
01159 if (strProp)
01160 {
01161 result = strProp->String;
01162 return true;
01163 }
01164 else
01165 {
01166 nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name);
01167 }
01168 }
01169 return false;
01170 }
|
|
||||||||||||
|
Get a string array property with its name. Return false if the property is not found or is not a string array property. Definition at line 1174 of file primitive.cpp. References getPropertyByName(), nlwarning, and NLLIGO::CPropertyStringArray::StringArray.
01175 {
01176 // Get the property
01177 IProperty *prop;
01178 if (getPropertyByName (property_name, prop))
01179 {
01180 CPropertyStringArray *strProp = dynamic_cast<CPropertyStringArray *> (prop);
01181 if (strProp)
01182 {
01183 result = &(strProp->StringArray);
01184 return true;
01185 }
01186 else
01187 {
01188 nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name);
01189 }
01190 }
01191 return false;
01192 }
|
|
||||||||||||
|
Get a string property with its name. Return false if the property is not found or is not a string property. Definition at line 1130 of file primitive.cpp. References getPropertyByName(), nlwarning, and NLLIGO::CPropertyString::String.
01131 {
01132 // Get the property
01133 IProperty *prop;
01134 if (getPropertyByName (property_name, prop))
01135 {
01136 CPropertyString *strProp = dynamic_cast<CPropertyString *> (prop);
01137 if (strProp)
01138 {
01139 result = &(strProp->String);
01140 return true;
01141 }
01142 else
01143 {
01144 nlwarning ("NLLIGO::IPrimitive::getPropertyByName : property (%s) in not a string.", property_name);
01145 }
01146 }
01147 return false;
01148 }
|
|
||||||||||||
|
Get a property with its name Definition at line 1116 of file primitive.cpp. References _Properties.
01117 {
01118 // Look for the property
01119 std::map<std::string, IProperty*>::const_iterator ite = _Properties.find (property_name);
01120 if (ite != _Properties.end ())
01121 {
01122 result = ite->second;
01123 return true;
01124 }
01125 return false;
01126 }
|
|
||||||||||||
|
||||||||||||
|
Insert a child primitive before the index. The pointer will be deleted by the parent primitive using the ::delete operator. return false if the index is invalid Definition at line 1349 of file primitive.cpp. References _Parent, AtTheEnd, index, uint, and updateChildId(). Referenced by NLLIGO::CPrimitives::convertAddPrimitive(), NLLIGO::CPrimitives::convertPrimitive(), and read().
01350 {
01351 // At the end ?
01352 if (index == AtTheEnd)
01353 index = _Children.size ();
01354
01355 // Index valid ?
01356 if (index>_Children.size ())
01357 return false;
01358
01359 // Insert
01360 _Children.insert (_Children.begin () + index, primitive);
01361
01362 // Update child id
01363 updateChildId (index);
01364
01365 // Link to the parent
01366 primitive->_Parent = this;
01367
01368 return true;
01369 }
|
|
|
Get a child primitive Definition at line 994 of file primitive.cpp. References _ChildId, _Children, _Properties, Expanded, Layer, Name, nlverify, removeChildren(), removeProperties(), and uint.
00995 {
00996 // Clean dest
00997 removeChildren ();
00998 removeProperties ();
00999
01000 // copy deprecated param
01001 Layer = node.Layer;
01002 Name = node.Name;
01003
01004 // Copy the flags
01005 Expanded = node.Expanded;
01006 _ChildId = node._ChildId;
01007
01008 // Copy children
01009 _Children.resize (node._Children.size ());
01010 for (uint child = 0; child < node._Children.size (); child++)
01011 {
01012 // Copy the child
01013 _Children[child] = node._Children[child]->copy ();
01014
01015 // Set the parent
01016 _Children[child]->_Parent = this;
01017 }
01018
01019 // Copy properties
01020 std::map<std::string, IProperty*>::const_iterator ite = node._Properties.begin ();
01021 while (ite != node._Properties.end ())
01022 {
01023 // Get the property
01024 CPropertyString *propString = dynamic_cast<CPropertyString *>(ite->second);
01025 if (propString)
01026 {
01027 // New property
01028 CPropertyString *newProp = new CPropertyString ();
01029 *newProp = *propString;
01030 _Properties.insert (std::map<std::string, IProperty*>::value_type (ite->first, newProp));
01031 }
01032 else
01033 {
01034 CPropertyStringArray *propStringArray = dynamic_cast<CPropertyStringArray *>(ite->second);
01035 if (propStringArray)
01036 {
01037 // New property
01038 CPropertyStringArray *newProp = new CPropertyStringArray ();
01039 *newProp = *propStringArray;
01040 _Properties.insert (std::map<std::string, IProperty*>::value_type (ite->first, newProp));
01041 }
01042 else
01043 {
01044 CPropertyColor *propColor = dynamic_cast<CPropertyColor *>(ite->second);
01045 nlverify (propColor);
01046
01047 // New property
01048 CPropertyColor *newProp = new CPropertyColor ();
01049 *newProp = *propColor;
01050 _Properties.insert (std::map<std::string, IProperty*>::value_type (ite->first, newProp));
01051 }
01052 }
01053
01054 ite++;
01055 }
01056 }
|
|
||||||||||||||||||||
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Reimplemented in NLLIGO::CPrimNode, NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. Definition at line 1396 of file primitive.cpp. References _Properties, addPropertyByName(), NLMISC::clamp(), count, NLLIGO::IProperty::Default, Expanded, NLLIGO::GetContentString(), NLLIGO::CPrimitiveClass::CParameter::getDefaultValue(), NLLIGO::GetNodeString(), NLLIGO::CLigoConfig::getPrimitiveClass(), getPropertyByName(), NLLIGO::GetPropertyString(), insertChild(), NLLIGO::CPrimitiveClass::CInitParameters::Name, nlverify, NLLIGO::CPrimitiveClass::Parameters, sint32, NLLIGO::CPropertyString::String, NLLIGO::CPropertyStringArray::StringArray, NLLIGO::CPrimitiveClass::CParameter::Type, type, uint, uint8, and NLLIGO::XMLError().
01397 {
01398 // Erase old properties
01399 _Properties.clear ();
01400
01401 // Read the expanded flag
01402 string expanded;
01403 Expanded = true;
01404 if (CIXml::getPropertyString (expanded, xmlNode, "EXPANDED"))
01405 Expanded = (expanded != "false");
01406
01407 // Read the properties
01408 xmlNodePtr propNode;
01409 propNode = CIXml::getFirstChildNode (xmlNode, "PROPERTY");
01410 if (propNode)
01411 {
01412 do
01413 {
01414 // Read the name
01415 string name;
01416 if (GetNodeString (name, filename, propNode, "NAME"))
01417 {
01418 // Get the property type
01419 string type;
01420 if (GetPropertyString (type, filename, propNode, "TYPE"))
01421 {
01422 // The property
01423 IProperty *property = NULL;
01424
01425 // Check the type
01426 if (type == "string")
01427 {
01428 // Create a new property
01429 CPropertyString *propertyString = new CPropertyString;
01430 property = propertyString;
01431
01432 // Read it
01433 if (!GetNodeString (propertyString->String, filename, propNode, "STRING"))
01434 {
01435 return false;
01436 }
01437 }
01438 else if (type == "string_array")
01439 {
01440 // Create a new property
01441 CPropertyStringArray *propertyStringArray = new CPropertyStringArray;
01442 property = propertyStringArray;
01443
01444 // Read strings
01445 xmlNodePtr stringNode;
01446 propertyStringArray->StringArray.reserve (CIXml::countChildren (propNode, "STRING"));
01447 stringNode = CIXml::getFirstChildNode (propNode, "STRING");
01448 if (stringNode)
01449 {
01450 do
01451 {
01452 // Add the string
01453 string content;
01454 GetContentString (content, filename, stringNode);
01455 propertyStringArray->StringArray.push_back (content);
01456 }
01457 while ((stringNode = CIXml::getNextChildNode (stringNode, "STRING")));
01458 }
01459 }
01460 else if (type == "color")
01461 {
01462 // Create a new property
01463 CPropertyColor *propertyColor= new CPropertyColor;
01464 property = propertyColor;
01465
01466 // Read strings
01467 xmlNodePtr colorNode;
01468 colorNode = CIXml::getFirstChildNode (xmlNode, "COLOR");
01469 string R, G, B, A;
01470 if (GetPropertyString (R, filename, colorNode, "R") &&
01471 GetPropertyString (G, filename, colorNode, "G") &&
01472 GetPropertyString (B, filename, colorNode, "B") &&
01473 GetPropertyString (A, filename, colorNode, "A"))
01474 {
01475 sint32 sR=0, sG=0, sB=0, sA=255;
01476 sR = atoi (R.c_str ());
01477 clamp (sR, 0, 255);
01478 sG = atoi (G.c_str ());
01479 clamp (sG, 0, 255);
01480 sB = atoi (B.c_str ());
01481 clamp (sB, 0, 255);
01482 sA = atoi (A.c_str ());
01483 clamp (sR, 0, 255);
01484 propertyColor->Color.R = (uint8)sR;
01485 propertyColor->Color.G = (uint8)sG;
01486 propertyColor->Color.B = (uint8)sB;
01487 propertyColor->Color.A = (uint8)sA;
01488 }
01489 else
01490 return false;
01491 }
01492
01493 // Property found ?
01494 if (property == NULL)
01495 {
01496 XMLError (propNode, filename, "IPrimitive::read : Unknown property type (%s)", type.c_str ());
01497 return false;
01498 }
01499
01500 // Add it
01501 _Properties.insert (std::map<std::string, IProperty*>::value_type (name, property));
01502 }
01503 else
01504 {
01505 return false;
01506 }
01507 }
01508 else
01509 {
01510 return false;
01511 }
01512 }
01513 while ((propNode = CIXml::getNextChildNode (propNode, "PROPERTY")));
01514 }
01515
01516 // Get the primitive class
01517 const CPrimitiveClass *primitiveClass = config.getPrimitiveClass (*this);
01518 if (primitiveClass)
01519 {
01520 // For each properties
01521 uint count = primitiveClass->Parameters.size ();
01522 uint i;
01523 for (i=0; i<count; i++)
01524 {
01525 const CPrimitiveClass::CParameter ¶meter = primitiveClass->Parameters[i];
01526
01527 // Get the property
01528 IProperty *result;
01529 if (!getPropertyByName (parameter.Name.c_str(), result))
01530 {
01531 // Create the property
01532 if ((parameter.Type == CPrimitiveClass::CParameter::StringArray) || (parameter.Type == CPrimitiveClass::CParameter::ConstStringArray))
01533 result = new CPropertyStringArray();
01534 else
01535 result = new CPropertyString();
01536 nlverify (addPropertyByName (parameter.Name.c_str(), result));
01537 }
01538 }
01539
01540 // Set the default values
01541 for (i=0; i<count; i++)
01542 {
01543 const CPrimitiveClass::CParameter ¶meter = primitiveClass->Parameters[i];
01544
01545 CPropertyString *pString = NULL;
01546 CPropertyStringArray *pStringArray = NULL;
01547
01548 IProperty *result;
01549 nlverify (getPropertyByName (parameter.Name.c_str(), result));
01550 pString = dynamic_cast<CPropertyString*>(result);
01551 if (!pString)
01552 pStringArray = dynamic_cast<CPropertyStringArray*>(result);
01553
01554 // Property have default values ?
01555 if (pString)
01556 {
01557 // Empty string ?
01558 if (pString->String.empty())
01559 {
01560 // Set as default
01561 pString->Default = true;
01562 parameter.getDefaultValue (pString->String, *this, *primitiveClass);
01563 }
01564 }
01565 else if (pStringArray)
01566 {
01567 // Empty string array ?
01568 if (pStringArray->StringArray.empty())
01569 {
01570 // Set as default
01571 pStringArray->Default = true;
01572 parameter.getDefaultValue (pStringArray->StringArray, *this, *primitiveClass);
01573 }
01574 }
01575 }
01576 }
01577
01578 // Read children
01579 xmlNodePtr childNode;
01580 childNode = CIXml::getFirstChildNode (xmlNode, "CHILD");
01581 if (childNode)
01582 {
01583 do
01584 {
01585 // Get the property class
01586 string type;
01587 if (GetPropertyString (type, filename, childNode, "TYPE"))
01588 {
01589 // Primitive
01590 if (type=="node")
01591 type="CPrimNode";
01592 if (type=="point")
01593 type="CPrimPoint";
01594 if (type=="path")
01595 type="CPrimPath";
01596 if (type=="zone")
01597 type="CPrimZone";
01598 IPrimitive *primitive = static_cast<IPrimitive *> (CClassRegistry::create (type));
01599
01600 // Primitive type not found ?
01601 if (primitive == NULL)
01602 {
01603 XMLError (childNode, filename, "IPrimitive::read : Unknown primitive type (%s)", type.c_str ());
01604 return false;
01605 }
01606
01607 // Read it
01608 primitive->read (childNode, filename, version, config);
01609
01610 // Add it
01611 insertChild (primitive);
01612 }
01613 else
01614 {
01615 return false;
01616 }
01617 }
01618 while ((childNode = CIXml::getNextChildNode (childNode, "CHILD")));
01619 }
01620
01621 // Done
01622 return true;
01623 }
|
|
|
Remove a child primitive Definition at line 1319 of file primitive.cpp. References nlwarning, uint, and updateChildId().
01320 {
01321 if (childId < _Children.size ())
01322 {
01323 delete _Children[childId];
01324 _Children.erase (_Children.begin()+childId);
01325 updateChildId (childId);
01326 return true;
01327 }
01328 else
01329 {
01330 nlwarning ("NLLIGO::IPrimitive::removeChild : invalid index (index : %d, size %d).", childId, _Children.size ());
01331 }
01332 return false;
01333 }
|
|
|
Remove all children primitives Definition at line 1337 of file primitive.cpp. References uint. Referenced by NLLIGO::CPrimitives::convert(), operator=(), NLLIGO::CPrimitives::read(), and ~IPrimitive().
|
|
|
Remove all the properties Definition at line 1274 of file primitive.cpp. References _Properties. Referenced by NLLIGO::CPrimitives::convert(), operator=(), NLLIGO::CPrimitives::read(), and ~IPrimitive().
01275 {
01276 std::map<std::string, IProperty*>::iterator ite = _Properties.begin ();
01277 while (ite != _Properties.end ())
01278 {
01279 delete ite->second;
01280 ite++;
01281 }
01282 _Properties.clear ();
01283 }
|
|
|
Remove a property This is method (iterate a list) is slower than removePropertyByName (look up in a map). Definition at line 1240 of file primitive.cpp. References _Properties, index, nlwarning, and uint.
01241 {
01242 // Look for the property
01243 std::map<std::string, IProperty*>::iterator ite = _Properties.begin ();
01244 while (ite != _Properties.end ())
01245 {
01246 if (index == 0)
01247 {
01248 _Properties.erase (ite);
01249 return true;
01250 }
01251 index--;
01252 ite ++;
01253 }
01254 nlwarning ("NLLIGO::IPrimitive::removeProperty : invalid index (index : %d, size : %d).", index, _Properties.size ());
01255 return false;
01256 }
|
|
|
Remove a property by its name Definition at line 1260 of file primitive.cpp. References _Properties.
01261 {
01262 // Look for the property
01263 std::map<std::string, IProperty*>::iterator ite = _Properties.find (property_name);
01264 if (ite != _Properties.end ())
01265 {
01266 _Properties.erase (ite);
01267 return true;
01268 }
01269 return false;
01270 }
|
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 984 of file primitive.cpp. References count, index, and uint. Referenced by insertChild(), and removeChild().
|
|
||||||||||||
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Reimplemented in NLLIGO::CPrimPoint, NLLIGO::CPrimPath, and NLLIGO::CPrimZone. Definition at line 1627 of file primitive.cpp. References _Properties, NLMISC::CRGBA::A, NLMISC::CRGBA::B, NLLIGO::CPropertyColor::Color, Expanded, NLMISC::CRGBA::G, NLMISC::CRGBA::R, NLLIGO::CPropertyString::String, NLLIGO::CPropertyStringArray::StringArray, NLMISC::toString(), and uint.
01628 {
01629 // Save the expanded flag
01630 if (!Expanded)
01631 xmlSetProp (xmlNode, (const xmlChar*)"EXPANDED", (const xmlChar*)"false");
01632
01633 // Set the type
01634 xmlSetProp (xmlNode, (const xmlChar*)"TYPE", (const xmlChar*)(const_cast<IPrimitive*> (this)->getClassName ().c_str ()));
01635
01636 // Save the properties
01637 std::map<std::string, IProperty*>::const_iterator ite = _Properties.begin ();
01638 while (ite != _Properties.end ())
01639 {
01640 // Not a default property ?
01641 if (!ite->second->Default)
01642 {
01643 // Create new nodes
01644 xmlNodePtr propNode = xmlNewChild ( xmlNode, NULL, (const xmlChar*)"PROPERTY", NULL);
01645 xmlNodePtr nameNode = xmlNewChild ( propNode, NULL, (const xmlChar*)"NAME", NULL);
01646 xmlNodePtr textNode = xmlNewText ((const xmlChar *)(ite->first.c_str ()));
01647 xmlAddChild (nameNode, textNode);
01648
01649 // Type
01650 const CPropertyString *str = dynamic_cast<const CPropertyString *> (ite->second);
01651 if (str)
01652 {
01653 // Set the type
01654 xmlSetProp (propNode, (const xmlChar*)"TYPE", (const xmlChar*)"string");
01655
01656 // Create new nodes
01657 xmlNodePtr stringNode = xmlNewChild ( propNode, NULL, (const xmlChar*)"STRING", NULL);
01658 xmlNodePtr textNode = xmlNewText ((const xmlChar *)(str->String.c_str ()));
01659 xmlAddChild (stringNode, textNode);
01660 }
01661 else
01662 {
01663 // Should be an array
01664 const CPropertyStringArray *array = dynamic_cast<const CPropertyStringArray *> (ite->second);
01665 if (array)
01666 {
01667 // Set the type
01668 xmlSetProp (propNode, (const xmlChar*)"TYPE", (const xmlChar*)"string_array");
01669
01670 // For each strings in the array
01671 for (uint i=0; i<array->StringArray.size (); i++)
01672 {
01673 // Create new nodes
01674 xmlNodePtr stringNode = xmlNewChild ( propNode, NULL, (const xmlChar*)"STRING", NULL);
01675 xmlNodePtr textNode = xmlNewText ((const xmlChar *)(array->StringArray[i].c_str ()));
01676 xmlAddChild (stringNode, textNode);
01677 }
01678 }
01679 else
01680 {
01681 // Should be a color
01682 const CPropertyColor *color = safe_cast<const CPropertyColor *> (ite->second);
01683
01684 // Set the type
01685 xmlSetProp (propNode, (const xmlChar*)"TYPE", (const xmlChar*)"color");
01686
01687 // Create new nodes
01688 xmlNodePtr colorNode = xmlNewChild ( propNode, NULL, (const xmlChar*)"COLOR", NULL);
01689 xmlSetProp (colorNode, (const xmlChar*)"R", (const xmlChar*)toString (color->Color.R).c_str ());
01690 xmlSetProp (colorNode, (const xmlChar*)"G", (const xmlChar*)toString (color->Color.G).c_str ());
01691 xmlSetProp (colorNode, (const xmlChar*)"B", (const xmlChar*)toString (color->Color.B).c_str ());
01692 xmlSetProp (colorNode, (const xmlChar*)"A", (const xmlChar*)toString (color->Color.A).c_str ());
01693 }
01694 }
01695 }
01696
01697 ite++;
01698 }
01699
01700 // Save the children
01701 for (uint i=0; i<_Children.size (); i++)
01702 {
01703 // New node
01704 xmlNodePtr childNode = xmlNewChild ( xmlNode, NULL, (const xmlChar*)"CHILD", NULL);
01705
01706 // Write it
01707 _Children[i]->write (childNode, filename);
01708 }
01709 }
|
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 317 of file primitive.h. Referenced by getChildId(), and operator=(). |
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 323 of file primitive.h. Referenced by operator=(). |
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 320 of file primitive.h. Referenced by insertChild(). |
|
|
Add a property If the property already exist, the method does nothing and returns false. The pointer will be deleted by the primitive using the ::delete operator. Definition at line 326 of file primitive.h. Referenced by addPropertyByName(), getNumProperty(), getProperty(), getPropertyByName(), operator=(), read(), removeProperties(), removeProperty(), removePropertyByName(), and write(). |
|
|
Definition at line 163 of file primitive.h. Referenced by operator=(), read(), and write(). |
|
|
Definition at line 159 of file primitive.h. Referenced by NLLIGO::CPrimitives::convertPrimitive(), and operator=(). |
|
|
Definition at line 160 of file primitive.h. Referenced by NLLIGO::CPrimitives::convertAddPrimitive(), and operator=(). |
1.3.6