summaryrefslogtreecommitdiffabout
path: root/include/sitecing
authorMichael Krelin <hacker@klever.net>2005-03-30 21:58:44 (UTC)
committer Michael Krelin <hacker@klever.net>2005-03-30 21:58:44 (UTC)
commit5c757590c7561f6d85b3f9011aa0695c4111b379 (patch) (side-by-side diff)
treee0bf20ca58b3e7bd9cc4eda54db5674ba1d71db0 /include/sitecing
parent3ddbfeafde93d1aab16a710498d86eef4e787406 (diff)
downloadsitecing-5c757590c7561f6d85b3f9011aa0695c4111b379.zip
sitecing-5c757590c7561f6d85b3f9011aa0695c4111b379.tar.gz
sitecing-5c757590c7561f6d85b3f9011aa0695c4111b379.tar.bz2
1. fixed a bug just introduced, preventing the last skeleton-generated file
from being written. 2. introduced pragma directive and pragma main=class 3. minor changes of no importance
Diffstat (limited to 'include/sitecing') (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/sitecing_enflesher.h9
-rw-r--r--include/sitecing/sitecing_parser.h8
2 files changed, 17 insertions, 0 deletions
diff --git a/include/sitecing/sitecing_enflesher.h b/include/sitecing/sitecing_enflesher.h
index 8bc43a0..db15bc3 100644
--- a/include/sitecing/sitecing_enflesher.h
+++ b/include/sitecing/sitecing_enflesher.h
@@ -27,53 +27,62 @@ class sitecing_enflesher : public sitecing_enflesherFlexLexer {
public:
/**
* It is time to anchor output with the #line directive.
*/
bool anchor_time;
/**
* The file currently being written is supposed to have #line
* directives all around the place.
*/
bool anchoraged;
/**
* The reference to the parser object containg the parsed source.
*/
sitecing_parser& parser;
/**
* The output stream.
*/
ofstream outs;
/**
* the outs stream destination file.
* @see outs
*/
string outs_filename;
/**
* @param p The parser object containing preparsed data.
*/
sitecing_enflesher(sitecing_parser& p)
: parser(p), anchor_time(true) { }
/**
* Do the job.
*/
void enflesh();
virtual void LexerOutput(const char *buf,int size);
virtual int yylex();
/**
* Put a #line anchor into output.
*/
void anchor();
/**
* Close previously opened output stream, rename to the 'correct'
* destination filename, if needed, and open new file.
* @see outs
* @see outs_filename
+ * @see outs_close
*/
void outs_open(const string& nfile);
+ /**
+ * Close previously opened output stream, and rename to the 'correct'
+ * destination filename, if needed.
+ * @see outs_open
+ * @see outs
+ * @see outs_filename
+ */
+ void outs_close();
};
#endif /* __SITECING_SITECING_ENFLESHER_H */
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
@@ -246,81 +246,89 @@ class sitecing_parser : public sitecing_parserFlexLexer {
*/
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 */