cmt_pattern.h Source File

Main Page Class Hierarchy Compound List File List Compound Members File Members

# cmt_pattern.h

Go to the documentation of this file.

    00001 #ifndef __cmt_pattern_h__
    00002 #define __cmt_pattern_h__
    00003
    00004 #include "cmt_parser.h"
    00005 #include "cmt_system.h"
    00006
    00007 class Use;
    00008
    00009 class Template
    00010 {
    00011 public:
    00012         typedef cmt_vector<Template> TemplateVector;
    00013         cmt_string name;
    00014         cmt_string value;
    00015 };
    00016
    00017 class Pattern
    00018 {
    00019 public:
    00020   typedef cmt_vector<Pattern> PatternVector;
    00021
    00022   static void action (const CmtSystem::cmt_string_vector& words, Use* use);
    00023
    00024   static Pattern* find (const cmt_string& name);
    00025   static Pattern* find (const cmt_string& name, Use* use);
    00026   static void add (const cmt_string& name,
    00027                    const CmtSystem::cmt_string_vector& words,
    00028                    int start_index,
    00029                    bool global,
    00030                    Use* use);
    00031
    00032   static int pattern_number ();
    00033   static Pattern& pattern (int index);
    00034   static void clear_all ();
    00035   static PatternVector& patterns ();
    00036
    00037   static void apply_all_globals ();
    00038   static void apply_all_globals (Use* use);
    00039   static void show_all_names ();
    00040   static void show_all ();
    00041   static void show_all_applied_patterns ();
    00042   static void show (const cmt_string& name);
    00043
    00044 public:
    00045   Pattern ();
    00046   ~Pattern ();
    00047
    00048   void clear ();
    00049   void apply () const;
    00050   void apply (Use* constext_use) const;
    00051   void apply (Use* constext_use,
    00052               const Template::TemplateVector& templates) const;
    00053   void expand (Use* constext_use,
    00054                const Template::TemplateVector& templates,
    00055                cmt_string& line) const;
    00056
    00057   cmt_string name;
    00058   CmtSystem::cmt_string_vector words;
    00059   bool global;
    00060   Use* use;
    00061 };
    00062
    00063 class ApplyPattern
    00064 {
    00065 public:
    00066   typedef cmt_vector<ApplyPattern> ApplyPatternVector;
    00067
    00068   static void action (const CmtSystem::cmt_string_vector& words,
    00069                       Use* use);
    00070
    00071   static ApplyPattern* add (const cmt_string& name, Use* use);
    00072
    00073 public:
    00074   ApplyPattern ();
    00075   ~ApplyPattern ();
    00076
    00077   void show () const;
    00078   void apply_globals () const;
    00079   void apply () const;
    00080
    00081   cmt_string name;
    00082   Use* use;
    00083   cmt_vector<Template> replacements;
    00084 };
    00085
    00086 class IgnorePattern
    00087 {
    00088 public:
    00089   typedef cmt_vector<IgnorePattern> IgnorePatternVector;
    00090
    00091   static void action (const CmtSystem::cmt_string_vector& words, Use* use);
    00092
    00093   static IgnorePattern* find (const cmt_string& name, Use* use);
    00094   static void add (const cmt_string& name, Use* use);
    00095
    00096 public:
    00097   IgnorePattern ();
    00098   ~IgnorePattern ();
    00099
    00100   void show () const;
    00101
    00102   cmt_string name;
    00103   Use* use;
    00104 };
    00105
    00106 #endif