summaryrefslogtreecommitdiff
path: root/slicer/slicer
diff options
context:
space:
mode:
authorrandomdan <randomdan@localhost>2014-06-03 16:16:41 +0000
committerrandomdan <randomdan@localhost>2014-06-03 16:16:41 +0000
commit66594db15d1bfcb8a02d3bad841fad1e29f03ecb (patch)
treed746f2923aadc840bde85c9f9bbd6d456796ce88 /slicer/slicer
parentSplit out ICE support from project jam file, add support for slicer (diff)
downloadslicer-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.cpp15
-rw-r--r--slicer/slicer/parser.h4
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;