![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: attributesManager.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #pragma once 00013 00014 #include <mtl/lispEnv.h> 00015 #include <vrfGuiCore/vrfGuiCore.h> 00016 #include <vrfGuiCore/entityMapperKey.h> 00017 #include <vrfGuiCore/orderedKeyList.h> 00018 00019 #include <vector> 00020 #include <string> 00021 00022 namespace makVrf 00023 { 00024 class DT_DLL_VRFGUICORE DtAttributeValuePair 00025 { 00026 public: 00027 DtAttributeValuePair() : myBitPosition(0) {}; 00028 DtAttributeValuePair(const DtAttributeValuePair& orig) : 00029 myAttributeName(orig.myAttributeName), myAttributeValue(orig.myAttributeValue), myBitPosition(orig.myBitPosition) {}; 00030 00031 std::string myAttributeName; 00032 std::string myAttributeValue; 00033 int myBitPosition; 00034 }; 00035 00036 typedef std::vector<DtAttributeValuePair> DtAttributeValues; 00037 00038 class DT_DLL_VRFGUICORE DtAttributeValueInfo 00039 { 00040 public: 00041 DtAttributeValueInfo(); 00042 DtAttributeValueInfo(const DtAttributeValueInfo& info); 00043 virtual DtAttributeValueInfo& operator=(const DtAttributeValueInfo& info); 00044 00045 public: 00046 int myBitPosition; 00047 std::string myAttributeName; 00048 std::vector<std::string> myAttributeValues; 00049 }; 00050 00051 class DT_DLL_VRFGUICORE DtAttributeInfo : public DtEntityMapperKey 00052 { 00053 public: 00054 DtAttributeInfo(const DtEntityMapperKey& key); 00055 DtAttributeInfo(const DtAttributeInfo& orig) : DtEntityMapperKey(orig), 00056 myAttributeValues(orig.myAttributeValues) {}; 00057 00060 virtual void addAttributeItems(const DtlObjPtr& tailPtr); 00061 00065 virtual void valuesFromMask(unsigned int mask, DtAttributeValues& result) const; 00066 00067 virtual const std::vector<DtAttributeValueInfo>& attributeValues() const; 00068 00069 DtAttributeInfo* clone() const { return new DtAttributeInfo(*this); }; 00070 00071 protected: 00074 virtual void parseAttribute(const DtlObjPtr& attribute); 00075 00078 virtual void insertAttributeValue(const DtAttributeValueInfo& value); 00079 00080 protected: 00081 std::vector<DtAttributeValueInfo> myAttributeValues; 00082 }; 00083 00084 class DT_DLL_VRFGUICORE DtAttributesManager 00085 { 00086 public: 00087 DtAttributesManager(); 00088 virtual ~DtAttributesManager(); 00089 00090 virtual bool init(const std::string& file); 00091 00092 static DtlObjPtr parseAttribute(const DtlObjPtr& args, const DtlObjPtr& env); 00093 00095 virtual void parseAttribute(const DtlObjPtr& args); 00096 00097 virtual bool addAttributeInfo(DtAttributeInfo* info); 00098 00103 virtual void valuesFromMask(const DtEntityMapperKey& type, unsigned int mask, 00104 DtAttributeValues& result) const; 00105 00106 virtual DtAttributeInfo* attributeInfo(const DtEntityMapperKey& key) const; 00107 00108 protected: 00110 virtual char* attributeString() const = 0; 00111 00113 virtual DtAttributeInfo* createAttributeInfo(const DtEntityMapperKey& key) const; 00114 00115 protected: 00116 DtOrderedKeyList<DtAttributeInfo*> myAttributeInfo; 00117 }; 00118 }