#include #include #include #include #include "gats/types.h" #include "gats/gatsstream.h" using namespace Bu; class Options : public OptParser { public: Options( int argc, char *argv[] ) : bCompile( true ) { addHelpBanner("Gats Compiler\nUsage: gatsc [options] [input]\n"); addOption( sInput, 'i', "input", "Specify input file."); addOption( sOutput, 'o', "output", "Specify output file."); addOption( bCompile, 'd', "decompile", "Convert binary gats to text gats."); addHelpOption('h', "help", "This Help"); setNonOption( slot( this, &Options::setInput ) ); setOverride("decompile", false ); parse( argc, argv ); } int setInput( StrArray aParam ) { sInput = aParam[0]; return 0; } bool bCompile; String sInput; String sOutput; }; int main( int argc, char *argv[] ) { Options opt( argc, argv ); if( opt.sInput.isEmpty() ) { sio << "You must specify an input." << sio.nl << sio.nl; return 1; } if( opt.sOutput.isEmpty() ) { opt.sOutput.set( opt.sInput.begin(), opt.sInput.find('.') ); opt.sOutput += ".gats"; } if( opt.bCompile ) { File fIn( opt.sInput, File::Read ); File fOut( opt.sOutput, File::WriteNew ); Gats::GatsStream gs( fOut ); Gats::Object *pObj = Gats::Object::strToGats( fIn.readAll() ); gs.writeObject( pObj ); delete pObj; } return 0; }