diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2009-09-17 07:15:29 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2009-09-17 07:15:29 +0200 |
commit | f0510d2f90467de8e8f260b47d79a9baaf9bef17 (patch) | |
tree | 0b9929946f06a9cbe9b9e8f2a7600dae4e048f79 /examples/cxx/tree/performance/gen.cxx |
Start tracking XSD with git
Diffstat (limited to 'examples/cxx/tree/performance/gen.cxx')
-rw-r--r-- | examples/cxx/tree/performance/gen.cxx | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/cxx/tree/performance/gen.cxx b/examples/cxx/tree/performance/gen.cxx new file mode 100644 index 0000000..b6392c0 --- /dev/null +++ b/examples/cxx/tree/performance/gen.cxx @@ -0,0 +1,76 @@ +#include <fstream> +#include <sstream> +#include <iostream> + +using namespace std; + +static const char* enums[] = +{ + "romance", + "fiction", + "horror", + "history", + "philosophy" +}; + +int +main (int argc, char* argv[]) +{ + if (argc != 3) + { + cerr << "usage: " << argv[0] << " <count> <output-file>" << endl; + return 1; + } + + unsigned long n (0); + istringstream is (argv[1]); + is >> n; + + if (n == 0) + { + cerr << "record count argument should be a positive number" << endl; + return 1; + } + + ofstream ofs (argv[2]); + + if (!ofs.is_open ()) + { + cerr << "unable to open '" << argv[2] << "' in write mode" << endl; + return 1; + } + + ofs << "<t:root xmlns:t='test' " << + "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " << + "xsi:schemaLocation='test test.xsd'>"; + + unsigned short ch (1), en (0); + + for (unsigned long i (0); i < n; ++i) + { + ofs << "<record orange=\"" << i << "\""; + + if (i % 2 == 0) + ofs << " apple=\"true\""; + + ofs << ">" + << "<int>42</int>" + << "<double>42345.4232</double>" + << "<name>name123_45</name>"; + + if (i % 2 == 1) + ofs << "<string>one two three</string>"; + + ofs << "<choice" << ch << ">" << ch << " choice</choice" << ch << ">" + << "<enum>" << enums[en] << "</enum>" + << "</record>"; + + if (++ch > 4) + ch = 1; + + if (++en > 4) + en = 0; + } + + ofs << "</t:root>"; +} |