summaryrefslogtreecommitdiffabout
path: root/include
authorMichael Krelin <hacker@klever.net>2005-03-30 15:50:28 (UTC)
committer Michael Krelin <hacker@klever.net>2005-03-30 15:50:28 (UTC)
commit3ddbfeafde93d1aab16a710498d86eef4e787406 (patch) (side-by-side diff)
treed53ef21cf3b2bddfeb957c98344d0be8759ed555 /include
parent642dc685bd0a3f1526e22827a4539aa0e06aeff7 (diff)
downloadsitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.zip
sitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.tar.gz
sitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.tar.bz2
1. preprocessor doesn't touch unchanged files anymore
2. doublechedk on whether file is up to date when making 3. changed the way preprocessor targets depend on the timestamp file 4. a bugfix in strip_suffix/strip_prefix
Diffstat (limited to 'include') (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/sitecing_enflesher.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/sitecing/sitecing_enflesher.h b/include/sitecing/sitecing_enflesher.h
index 512a358..8bc43a0 100644
--- a/include/sitecing/sitecing_enflesher.h
+++ b/include/sitecing/sitecing_enflesher.h
@@ -1,66 +1,79 @@
#ifndef __SITECING_SITECING_ENFLESHER_H
#define __SITECING_SITECING_ENFLESHER_H
#include <fstream>
#include <string>
using namespace std;
/**
* @file
* @brief The preprocessed source builder.
*/
#ifndef sitecing_enflesher_flexlexer_once
#define sitecing_enflesher_flexlexer_once
#undef yyFlexLexer
#define yyFlexLexer sitecing_enflesherFlexLexer
#include <FlexLexer.h>
#undef yyFlexLexerOnce
#endif
class sitecing_parser;
/**
* The enfleshing of the skeleton file according to the in-memory parsed
* component source.
*/
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
+ */
+ void outs_open(const string& nfile);
};
#endif /* __SITECING_SITECING_ENFLESHER_H */