From 6d3a5403c30f76229f799c5fb2d8d368e8da1830 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 29 Apr 2010 15:40:07 -0400 Subject: [PATCH] reworked argument handling slightly, added --extension --- Parser.cc | 2 +- Parser.h | 6 ++++++ imbecile.cc | 14 +++++++------- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Parser.cc b/Parser.cc index 18c08d2..af6124b 100644 --- a/Parser.cc +++ b/Parser.cc @@ -15,7 +15,7 @@ using namespace std; Parser::Parser() - : m_classname("Parser"), m_namespace("") + : m_classname("Parser"), m_namespace(""), m_extension("cc") { } diff --git a/Parser.h b/Parser.h index 27e07ca..76e605f 100644 --- a/Parser.h +++ b/Parser.h @@ -23,16 +23,22 @@ class Parser } void write(const std::string & fname); bool parseInputFile(char * buff, int size); + void setClassName(const std::string & cn) { m_classname = cn; } std::string getClassName() { return m_classname; } + void setNamespace(const std::string & ns) { m_namespace = ns; } std::string getNamespace() { return m_namespace; } + void setExtension(const std::string & e) { m_extension = e; } + std::string getExtension() { return m_extension; } + protected: std::vector< refptr< TokenDefinition > > m_tokens; std::vector< refptr< RuleDefinition > > m_rules; std::string m_classname; std::string m_namespace; + std::string m_extension; }; #endif diff --git a/imbecile.cc b/imbecile.cc index f624783..cb5178b 100644 --- a/imbecile.cc +++ b/imbecile.cc @@ -15,13 +15,13 @@ int main(int argc, char * argv[]) { int longind = 1; int opt; + Parser p; string outfile; - string classname = "Parser"; - string namespace_name = ""; static struct option longopts[] = { /* name, has_arg, flag, val */ { "classname", required_argument, NULL, 'c' }, + { "extension", required_argument, NULL, 'e' }, { "namespace", required_argument, NULL, 'n' }, { "outfile", required_argument, NULL, 'o' }, { NULL, 0, NULL, 0 } @@ -32,10 +32,13 @@ int main(int argc, char * argv[]) switch (opt) { case 'c': /* classname */ - classname = optarg; + p.setClassName(optarg); + break; + case 'e': /* extension */ + p.setExtension(optarg); break; case 'n': /* namespace */ - namespace_name = optarg; + p.setNamespace(optarg); break; case 'o': /* outfile */ outfile = optarg; @@ -67,9 +70,6 @@ int main(int argc, char * argv[]) if (outfile == "") outfile = buildOutputFilename(input_fname); - Parser p; - p.setClassName(classname); - p.setNamespace(namespace_name); p.parseInputFile(buff, size); p.write(outfile);