// (c) Tuomas J. Lukka #include #include #include #include "Generator.hxx" std::ostringstream g_JAVASTREAM; std::ostringstream g_TRANSJAVASTREAM; /** The canonical static initialization order trick. */ static std::vector &generators() { static std::vector gens; return gens; } void registerGenerator(Generator *g) { generators().push_back(g); } int getTransId() { static int id = 0; return id++; } int main() { std::ifstream templ("src/jni/GLRen.template.java"); std::ifstream templtrans("src/jni/GLVobCoorder_Gen.template.java"); std::ofstream java("org/nongnu/libvob/gl/GLRen.java"); java << "//COMPUTER GENERATED DO NOT EDIT\n"; std::ofstream javatrans( "org/nongnu/libvob/impl/gl/GLVobCoorder_Gen.java"); javatrans << "//COMPUTER GENERATED DO NOT EDIT\n"; using namespace boost; using namespace boost::lambda; std::for_each(generators().begin(), generators().end(), bind(&Generator::generate, _1)); std::istreambuf_iterator in(templ); std::istreambuf_iterator eos; std::ostreambuf_iterator out(java); std::copy(in, eos, out); std::istreambuf_iterator tin(templtrans); std::ostreambuf_iterator tout(javatrans); std::copy(tin, eos, tout); java << g_JAVASTREAM.str()<<"\n\n"; java << "}\n"; javatrans << g_TRANSJAVASTREAM.str()<<"\n\n"; javatrans << "}\n"; std::ofstream jni("src/jni/TransFactory.gen.hxx"); jni << "//COMPUTER GENERATED DO NOT EDIT\n"; jni << "#include \n"; jni << "#include \n"; jni << "#define NTRANSFORMTYPES "<