s4g  0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
s4g_preprocessor.h
См. документацию.
1 
2 /*
3 Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
4 license MIT see in LICENSE or
5 https://s4g.su/
6 */
7 
30 #ifndef s4g_preprocessor_h
31 #define s4g_preprocessor_h
32 
33 #include <common/sxtypes.h>
34 #include <common/string.h>
35 #include <common/array.h>
36 #include <common/assotiativearray.h>
37 
40 {
41 public:
42 
44  bool isDefined(const String & def);
46  void define(const char * def, int len = 0, bool bTemp = false);
48  void undef(const String & def);
50  void addIncPath(const String & s);
51 
53  String process(const char * src, const char * file=0);
54 
56  void undefTemp();
57 
58  const char * getError();
59  bool isError();
60 
61 protected:
62  struct _define
63  {
64  Array<String> vArgs;
65  bool isMacro;
66  String sVal;
67  bool isUndef;
68  bool isTemp;
69  };
70  struct _include_path
71  {
72  String sPath;
73  };
74  struct _include
75  {
76  String sText;
77  String sPath;
78  };
79  AssotiativeArray<String, _define> m_mDefs;
80  Array<_include_path> m_vIncludes;
81  AssotiativeArray<String, _include> m_mIncludes;
82 
83  String m_sError;
84 
85 
86  bool isTrue(const String & expr);
87 
88 
89  typedef AssotiativeArray<String, bool> ReplList;
90 
91  String makeExpansion(const String & expr);
92  String makeExpansion(const String & expr, ReplList & rlist);
93 
94  String replArgs(const String & tok, const _define * pDef, const Array<String> & szArgs);
95 
96  String checkDefines(const String & expr);
97 
98  String stringify(const String & expr);
99 
100  String getInclude(const String & name, String * path = 0);
101 };
102 
104 
105 #endif
void define(const char *def, int len=0, bool bTemp=false)
Обьявляет новый дефайн
Definition: s4g_preprocessor.cpp:91
препроцессор
Definition: s4g_preprocessor.h:39
bool isDefined(const String &def)
Объявлен ли дефайн?
Definition: s4g_preprocessor.cpp:518
String process(const char *src, const char *file=0)
Запускает препроцессор для кода
Definition: s4g_preprocessor.cpp:212
void undef(const String &def)
Удаляет указанный дефайн
Definition: s4g_preprocessor.cpp:189
void undefTemp()
Уничтожает временные дефайны
Definition: s4g_preprocessor.cpp:201
void addIncPath(const String &s)
Добавляет путь поиска включаемых файлов
Definition: s4g_preprocessor.cpp:196