llkeywords.h

Go to the documentation of this file.
00001 
00032 #ifndef LL_LLKEYWORDS_H
00033 #define LL_LLKEYWORDS_H
00034 
00035 
00036 #include "llstring.h"
00037 #include "v3color.h"
00038 #include <map>
00039 #include <list>
00040 #include <deque>
00041 
00042 class LLTextSegment;
00043 
00044 
00045 class LLKeywordToken
00046 {
00047 public:
00048         enum TOKEN_TYPE { WORD, LINE, TWO_SIDED_DELIMITER, ONE_SIDED_DELIMITER };
00049 
00050         LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip ) 
00051                 :
00052                 mType( type ),
00053                 mToken( token ),
00054                 mColor( color ),
00055                 mToolTip( tool_tip )
00056         {
00057         }
00058 
00059         S32                                     getLength()                             { return mToken.size(); }
00060         BOOL                            isHead(const llwchar* s);
00061         const LLColor3&         getColor()                              { return mColor; }
00062         TOKEN_TYPE                      getType()                               { return mType; }
00063         const LLWString&        getToolTip()                    { return mToolTip; }
00064 
00065 #ifdef _DEBUG
00066         void            dump();
00067 #endif
00068 
00069 private:
00070         TOKEN_TYPE      mType;
00071 public:
00072         LLWString       mToken;
00073         LLColor3        mColor;
00074 private:
00075         LLWString       mToolTip;
00076 };
00077 
00078 class LLKeywords
00079 {
00080 public:
00081         LLKeywords();
00082         ~LLKeywords();
00083 
00084         BOOL            loadFromFile(const LLString& filename);
00085         BOOL            isLoaded()      { return mLoaded; }
00086 
00087         void            findSegments(std::vector<LLTextSegment *> *seg_list, const LLWString& text );
00088 
00089 #ifdef _DEBUG
00090         void            dump();
00091 #endif
00092 
00093         // Add the token as described
00094         void addToken(LLKeywordToken::TOKEN_TYPE type,
00095                                         const LLString& key,
00096                                         const LLColor3& color,
00097                                         const LLString& tool_tip = LLString::null);
00098 
00099 private:
00100         LLColor3        readColor(const LLString& s);
00101         void            insertSegment(std::vector<LLTextSegment *> *seg_list, LLTextSegment* new_segment, S32 text_len);
00102 
00103 private:
00104         BOOL                                             mLoaded;
00105 public:
00106         typedef std::map<LLWString, LLKeywordToken*> word_token_map_t;
00107         word_token_map_t mWordTokenMap;
00108 private:
00109         typedef std::deque<LLKeywordToken*> token_list_t;
00110         token_list_t mLineTokenList;
00111         token_list_t mDelimiterTokenList;
00112 };
00113 
00114 #endif  // LL_LLKEYWORDS_H

Generated on Thu Jul 1 06:08:48 2010 for Second Life Viewer by  doxygen 1.4.7