NLLIGO::CPrimitiveConfigurations Class Reference

#include <primitive_configuration.h>


Detailed Description

Ligo primitive configuration description.

Author:
Cyril 'Hulud' Corvazier

Nevrax France

Date:
2001

Definition at line 49 of file primitive_configuration.h.

Public Member Functions

bool belong (const IPrimitive &primitive) const
bool read (xmlNodePtr configurationNode, const char *filename, const char *name, class CLigoConfig &config)

Data Fields

NLMISC::CRGBA Color
std::vector< CMatchGroupMatchPairs
std::string Name


Member Function Documentation

bool CPrimitiveConfigurations::belong const IPrimitive primitive  )  const
 

Definition at line 97 of file primitive_configuration.cpp.

References NLLIGO::IPrimitive::getPropertyByName(), MatchPairs, NLLIGO::CPrimitiveConfigurations::CMatchGroup::Pairs, NLMISC::strlwr(), uint, and value.

00098 {
00099         // For each match group
00100         uint group;
00101         const uint numGroup = MatchPairs.size();
00102         for (group=0; group<numGroup; group++)
00103         {
00104                 const CMatchGroup &matchGroup = MatchPairs[group];
00105 
00106                 // For each rules
00107                 uint rules;
00108                 const uint numRules = matchGroup.Pairs.size();
00109                 for (rules=0; rules<numRules; rules++)
00110                 {
00111                         const std::pair<std::string, std::string> &pairs = matchGroup.Pairs[rules];
00112                         string key = strlwr(pairs.second);
00113 
00114                         // Get the property
00115                         string value;
00116                         if (primitive.getPropertyByName (pairs.first.c_str(), value))
00117                         {
00118                                 if (strlwr(value) == key)
00119                                         continue;
00120                         }
00121 
00122                         // Get the property
00123                         const std::vector<string> *array = NULL;
00124                         if (primitive.getPropertyByName (pairs.first.c_str(), array) && array)
00125                         {
00126                                 uint i;
00127                                 for (i=0; i<array->size(); i++)
00128                                 {
00129                                         if (strlwr((*array)[i]) == key)
00130                                                 break;
00131                                 }
00132                                 if (i!=array->size())
00133                                         continue;
00134                         }
00135 
00136                         // Don't match
00137                         break;
00138                 }
00139 
00140                 // Match ?
00141                 if (rules == numRules)
00142                         return true;
00143         }
00144         return false;
00145 }

bool CPrimitiveConfigurations::read xmlNodePtr  configurationNode,
const char *  filename,
const char *  name,
class CLigoConfig config
 

Definition at line 39 of file primitive_configuration.cpp.

References NLLIGO::CLigoConfig::getPropertyString(), MatchPairs, NLLIGO::CPrimitiveConfigurations::CMatchGroup::Pairs, ReadColor(), and NLLIGO::CLigoConfig::syntaxError().

00040 {
00041         // The name
00042         Name = name;
00043 
00044         // Read the color
00045         ReadColor (Color, configurationNode);
00046 
00047         // Get the first matching pair
00048         MatchPairs.reserve (CIXml::countChildren (configurationNode, "MATCH_GROUP"));
00049         xmlNodePtr matchGroups = CIXml::getFirstChildNode (configurationNode, "MATCH_GROUP");
00050         if (matchGroups)
00051         {
00052                 do
00053                 {
00054                         // Add a pair
00055                         MatchPairs.push_back(CMatchGroup());
00056                         CMatchGroup &matchGroup = MatchPairs.back();
00057 
00058                         // Get the first matching pair
00059                         matchGroup.Pairs.reserve (CIXml::countChildren (matchGroups, "MATCH"));
00060                         xmlNodePtr match = CIXml::getFirstChildNode (matchGroups, "MATCH");
00061                         if (match)
00062                         {
00063                                 do
00064                                 {
00065                                         // Add the match
00066                                         matchGroup.Pairs.resize (matchGroup.Pairs.size()+1);
00067                                         std::pair<std::string, std::string> &pair = matchGroup.Pairs.back();
00068 
00069                                         // Get the match name
00070                                         std::string name;
00071                                         if (config.getPropertyString (name, filename, match, "NAME"))
00072                                         {
00073                                                 pair.first = name;
00074                                         }
00075                                         else
00076                                         {
00077                                                 config.syntaxError (filename, match, "Missing match name in configuration (%s)", name.c_str());
00078                                                 return false;
00079                                         }
00080 
00081                                         // Get the match value
00082                                         if (config.getPropertyString (name, filename, match, "VALUE"))
00083                                         {
00084                                                 pair.second = name;
00085                                         }
00086                                 }
00087                                 while ((match = CIXml::getNextChildNode (match, "MATCH")));
00088                         }
00089                 }
00090                 while ((matchGroups = CIXml::getNextChildNode (matchGroups, "MATCH_GROUP")));
00091         }
00092         return true;
00093 }


Field Documentation

NLMISC::CRGBA NLLIGO::CPrimitiveConfigurations::Color
 

Definition at line 57 of file primitive_configuration.h.

std::vector<CMatchGroup> NLLIGO::CPrimitiveConfigurations::MatchPairs
 

Definition at line 67 of file primitive_configuration.h.

Referenced by belong(), and read().

std::string NLLIGO::CPrimitiveConfigurations::Name
 

Definition at line 54 of file primitive_configuration.h.


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 12:48:42 2004 for NeL by doxygen 1.3.6