00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * Mark Elendt 00008 * Side Effects Software Inc 00009 * 477 Richmond Street West 00010 * Toronto, Ontario 00011 * Canada M5V 3E7 00012 * 416-504-9876 00013 * 00014 * NAME: CMD_SymbolList.h ( CMD Library, C++) 00015 * 00016 * COMMENTS: Used by aliases and variables. The symbol list contains a 00017 * symbol and a value 00018 */ 00019 00020 #ifndef __CMD_SymbolList__ 00021 #define __CMD_SymbolList__ 00022 00023 #include "CMD_API.h" 00024 #include <UT/UT_Lock.h> 00025 #include <UT/UT_String.h> 00026 #include <UT/UT_LinkList.h> 00027 #include <UT/UT_StringArray.h> 00028 00029 class UT_SymbolTable; 00030 class CMD_Alias; 00031 class CMD_Manager; 00032 00033 class CMD_API CMD_SymbolEntry : public UT_LinkNode 00034 { 00035 public: 00036 CMD_SymbolEntry(const char *name, const char *value, 00037 bool export_var); 00038 virtual ~CMD_SymbolEntry(); 00039 00040 virtual void setValue(const char *value) = 0; 00041 00042 UT_String myName; 00043 UT_String myValue; 00044 }; 00045 00046 class CMD_API CMD_SymbolList : protected UT_LinkList 00047 { 00048 public: 00049 CMD_SymbolList(); 00050 virtual ~CMD_SymbolList(); 00051 00052 bool hasValue(const char *name) const; 00053 00054 bool getValue(const char *name, UT_String &value); 00055 bool getValue(const char *name, float &value); 00056 bool getValue(const char *name, int &value); 00057 00058 void setValue(const char *name, const char *value, 00059 bool export_var); 00060 00061 virtual int destroySymbol(const char *name); 00062 00063 int getSymbolNames(UT_StringArray &nameList); 00064 00065 protected: 00066 virtual int isValidSymbolName(const char *name) const; 00067 00068 virtual CMD_SymbolEntry * 00069 createEntry(const char *name, 00070 const char *value, 00071 bool export_var) = 0; 00072 00073 static void sortNames(UT_StringArray &names); 00074 00075 UT_Lock & getLock() const 00076 { return myLock; } 00077 00078 private: 00079 const UT_String *getRawValue(const char *name) const; 00080 CMD_SymbolEntry *getSymbolPtr(const char *name) const; 00081 00082 private: 00083 UT_SymbolTable *myTable; 00084 mutable UT_Lock myLock; 00085 }; 00086 00087 #endif 00088
1.5.9