diff options
| author | randomdan <randomdan@localhost> | 2014-06-03 16:16:41 +0000 |
|---|---|---|
| committer | randomdan <randomdan@localhost> | 2014-06-03 16:16:41 +0000 |
| commit | 66594db15d1bfcb8a02d3bad841fad1e29f03ecb (patch) | |
| tree | d746f2923aadc840bde85c9f9bbd6d456796ce88 /slicer/slicer | |
| parent | Split out ICE support from project jam file, add support for slicer (diff) | |
| download | slicer-66594db15d1bfcb8a02d3bad841fad1e29f03ecb.tar.bz2 slicer-66594db15d1bfcb8a02d3bad841fad1e29f03ecb.tar.xz slicer-66594db15d1bfcb8a02d3bad841fad1e29f03ecb.zip | |
Update tests to perform an end-to-end (albeit non-validating) slice, slicer, compile, link, load and run
Diffstat (limited to 'slicer/slicer')
| -rw-r--r-- | slicer/slicer/parser.cpp | 15 | ||||
| -rw-r--r-- | slicer/slicer/parser.h | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/slicer/slicer/parser.cpp b/slicer/slicer/parser.cpp index a67f483..fd1d9b1 100644 --- a/slicer/slicer/parser.cpp +++ b/slicer/slicer/parser.cpp @@ -5,6 +5,9 @@ #include <boost/algorithm/string/predicate.hpp> #include <Slice/CPlusPlusUtil.h> #include <boost/shared_ptr.hpp> +#include <boost/filesystem/convenience.hpp> + +namespace fs = boost::filesystem; namespace Slicer { Slicer::Slicer(FILE * c) : @@ -12,16 +15,20 @@ namespace Slicer { { } - void - Slicer::leadIn() + bool + Slicer::visitUnitStart(const Slice::UnitPtr & u) { + fs::path topLevelFile(u->topLevelFile()); + fprintf(cpp, "// Begin Slicer code\n\n"); + fprintf(cpp, "#include <%s>\n\n", fs::change_extension(topLevelFile.filename(), ".h").string().c_str()); fprintf(cpp, "#include <slicer/modelParts.h>\n\n"); fprintf(cpp, "namespace Slicer {\n"); + return true; } void - Slicer::leadOut() + Slicer::visitUnitEnd(const Slice::UnitPtr&) { fprintf(cpp, "}\n\n"); fprintf(cpp, "// End Slicer code\n\n"); @@ -258,9 +265,7 @@ namespace Slicer { } Slicer s(cppfile.get()); - s.leadIn(); u->visit(&s, false); - s.leadOut(); u->destroy(); } diff --git a/slicer/slicer/parser.h b/slicer/slicer/parser.h index c660cc6..90aa05a 100644 --- a/slicer/slicer/parser.h +++ b/slicer/slicer/parser.h @@ -14,9 +14,9 @@ namespace Slicer { static void Apply(const boost::filesystem::path & ice, const boost::filesystem::path & cpp); - void leadIn(); + virtual bool visitUnitStart(const Slice::UnitPtr&) override; - void leadOut(); + virtual void visitUnitEnd(const Slice::UnitPtr&) override; virtual bool visitModuleStart(const Slice::ModulePtr & m) override; |
