summaryrefslogtreecommitdiffabout
path: root/include/sitecing/sitecing_parser.h
Side-by-side diff
Diffstat (limited to 'include/sitecing/sitecing_parser.h') (more/less context) (show whitespace changes)
-rw-r--r--include/sitecing/sitecing_parser.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/sitecing/sitecing_parser.h b/include/sitecing/sitecing_parser.h
index 22d716f..a8474f3 100644
--- a/include/sitecing/sitecing_parser.h
+++ b/include/sitecing/sitecing_parser.h
@@ -198,129 +198,137 @@ class sitecing_parser : public sitecing_parserFlexLexer {
/**
* The processing flags.
*/
int flags;
/**
* Output being built.
*/
string output;
/**
* The type for compound modes.
*/
string _type;
/**
* The last id encountered.
*/
string _lastid;
/**
* The name for compound modes.
*/
string _name;
/**
* The argument declaration. Obviously for member functions.
*/
string _args;
/**
* @param flags.
* @see flags
*/
modus_operandi(int f = 0)
: modus(modus_code), flags(f) { }
/**
* Change the processing mode.
*/
void modify(modus_t m);
/**
* See if we're eating up whitespaces.
*/
bool devour_whitespace() { return flags&flag_devour_whitespace; }
/**
* See if we're eating up the comments.
*/
bool devour_comments() { return flags&flag_devour_comments; }
};
/**
* The modes stack type.
*/
typedef list<modus_operandi> modi_operandi;
/**
* The modes stack.
*/
modi_operandi modi;
/**
* Input file name.
*/
string input_file;
/**
* Base class name.
*/
string base_class;
/**
* Base class header.
*/
string base_header;
/**
* Component's basename.
* @todo TODO: wish I could remember the details -- document me.
*/
string component_basename;
/**
* The skeleton file name.
*/
string skeleton;
/**
* The component class name.
*/
string class_name;
/**
* Output basename.
* @todo TODO: wish I could remember the details -- document me.
*/
string output_basename;
/**
* Verbatim declaration part.
*/
string decl;
/**
* Verbatim implementation part.
*/
string impl;
/**
* The reference to the component factory object.
*/
component_factory& factory;
+ /**
+ * Pragma map type.
+ */
+ typedef map<string,string> pragmas_t;
+ /**
+ * Pragma's found in the component.
+ */
+ pragmas_t pragmas;
/**
* @param f the component factory.
*/
sitecing_parser(component_factory& f);
/**
* Preprocess file.
* @param in input file name.
*/
void preprocess(const string& in);
virtual void LexerOutput(const char *buf,int size);
virtual int yylex();
/**
* Retrieve reference to the to of the modes stack.
* @return the reference in question.
*/
modus_operandi& M() {
return modi.front();
}
/**
* Anchor the output with the #line, if we're not in the text output mode.
*/
void soft_anchor();
/**
* Anchor the output with the #line directive, changing to the appropriate output mode if needed.
*/
void anchor();
};
#endif /* __SITECING_SITECING_PARSER_H */