summaryrefslogtreecommitdiff
path: root/cpp/src/slice2rb
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2015-02-18 10:29:49 -0330
committerMatthew Newhook <matthew@zeroc.com>2015-02-18 10:29:49 -0330
commitb55ce15878456e3d2f0656bcd6abd5a55c6774b1 (patch)
treee7e771a3d90ae7295f20bf0622b72c72cc3a85e0 /cpp/src/slice2rb
parentFixed ObjC build (diff)
downloadice-b55ce15878456e3d2f0656bcd6abd5a55c6774b1.tar.bz2
ice-b55ce15878456e3d2f0656bcd6abd5a55c6774b1.tar.xz
ice-b55ce15878456e3d2f0656bcd6abd5a55c6774b1.zip
Changes for brew, python PyPI packaging and ruby gem packaging.
Diffstat (limited to 'cpp/src/slice2rb')
-rw-r--r--cpp/src/slice2rb/Main.cpp315
1 files changed, 1 insertions, 314 deletions
diff --git a/cpp/src/slice2rb/Main.cpp b/cpp/src/slice2rb/Main.cpp
index 11714d2263e..337e01044c2 100644
--- a/cpp/src/slice2rb/Main.cpp
+++ b/cpp/src/slice2rb/Main.cpp
@@ -7,332 +7,19 @@
//
// **********************************************************************
-#include <IceUtil/DisableWarnings.h>
-#include <IceUtil/Options.h>
-#include <IceUtil/CtrlCHandler.h>
-#include <IceUtil/Mutex.h>
-#include <IceUtil/MutexPtrLock.h>
-#include <Slice/Preprocessor.h>
-#include <Slice/FileTracker.h>
#include <Slice/RubyUtil.h>
#include <Slice/Util.h>
-#include <fstream>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef _WIN32
-# include <direct.h>
-#else
-# include <unistd.h>
-#endif
-
-#include <string.h>
-
using namespace std;
using namespace Slice;
using namespace Slice::Ruby;
-namespace
-{
-
-IceUtil::Mutex* globalMutex = 0;
-bool interrupted = false;
-
-class Init
-{
-public:
-
- Init()
- {
- globalMutex = new IceUtil::Mutex;
- }
-
- ~Init()
- {
- delete globalMutex;
- globalMutex = 0;
- }
-};
-
-Init init;
-
-}
-
-void
-interruptedCallback(int /*signal*/)
-{
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(globalMutex);
-
- interrupted = true;
-}
-
-void
-usage(const char* n)
-{
- getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
- getErrorStream() <<
- "Options:\n"
- "-h, --help Show this message.\n"
- "-v, --version Display the Ice version.\n"
- "-DNAME Define NAME as 1.\n"
- "-DNAME=DEF Define NAME as DEF.\n"
- "-UNAME Remove any definition for NAME.\n"
- "-IDIR Put DIR in the include file search path.\n"
- "-E Print preprocessor output on stdout.\n"
- "--output-dir DIR Create files in the directory DIR.\n"
- "--depend Generate Makefile dependencies.\n"
- "-d, --debug Print debug messages.\n"
- "--ice Permit `Ice' prefix (for building Ice source code only).\n"
- "--underscore Permit underscores in Slice identifiers.\n"
- "--all Generate code for Slice definitions in included files.\n"
- "--checksum Generate checksums for Slice definitions.\n"
- ;
-}
-
-int
-compile(int argc, char* argv[])
-{
- IceUtilInternal::Options opts;
- opts.addOpt("h", "help");
- opts.addOpt("v", "version");
- opts.addOpt("D", "", IceUtilInternal::Options::NeedArg, "", IceUtilInternal::Options::Repeat);
- opts.addOpt("U", "", IceUtilInternal::Options::NeedArg, "", IceUtilInternal::Options::Repeat);
- opts.addOpt("I", "", IceUtilInternal::Options::NeedArg, "", IceUtilInternal::Options::Repeat);
- opts.addOpt("E");
- opts.addOpt("", "output-dir", IceUtilInternal::Options::NeedArg);
- opts.addOpt("", "depend");
- opts.addOpt("d", "debug");
- opts.addOpt("", "ice");
- opts.addOpt("", "underscore");
- opts.addOpt("", "all");
- opts.addOpt("", "checksum");
-
- vector<string> args;
- try
- {
- args = opts.parse(argc, const_cast<const char**>(argv));
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- getErrorStream() << argv[0] << ": error: " << e.reason << endl;
- usage(argv[0]);
- return EXIT_FAILURE;
- }
-
- if(opts.isSet("help"))
- {
- usage(argv[0]);
- return EXIT_SUCCESS;
- }
-
- if(opts.isSet("version"))
- {
- getErrorStream() << ICE_STRING_VERSION << endl;
- return EXIT_SUCCESS;
- }
-
- vector<string> cppArgs;
- vector<string> optargs = opts.argVec("D");
- for(vector<string>::const_iterator i = optargs.begin(); i != optargs.end(); ++i)
- {
- cppArgs.push_back("-D" + *i);
- }
-
- optargs = opts.argVec("U");
- for(vector<string>::const_iterator i = optargs.begin(); i != optargs.end(); ++i)
- {
- cppArgs.push_back("-U" + *i);
- }
-
- vector<string> includePaths = opts.argVec("I");
- for(vector<string>::const_iterator i = includePaths.begin(); i != includePaths.end(); ++i)
- {
- cppArgs.push_back("-I" + Preprocessor::normalizeIncludePath(*i));
- }
-
- bool preprocess = opts.isSet("E");
-
- string output = opts.optArg("output-dir");
-
- bool depend = opts.isSet("depend");
-
- bool debug = opts.isSet("debug");
-
- bool ice = opts.isSet("ice");
-
- bool underscore = opts.isSet("underscore");
-
- bool all = opts.isSet("all");
-
- bool checksum = opts.isSet("checksum");
-
- if(args.empty())
- {
- getErrorStream() << argv[0] << ": error: no input file" << endl;
- usage(argv[0]);
- return EXIT_FAILURE;
- }
-
- int status = EXIT_SUCCESS;
-
- IceUtil::CtrlCHandler ctrlCHandler;
- ctrlCHandler.setCallback(interruptedCallback);
-
- for(vector<string>::const_iterator i = args.begin(); i != args.end(); ++i)
- {
- //
- // Ignore duplicates.
- //
- vector<string>::iterator p = find(args.begin(), args.end(), *i);
- if(p != i)
- {
- continue;
- }
-
- if(depend)
- {
- PreprocessorPtr icecpp = Preprocessor::create(argv[0], *i, cppArgs);
- FILE* cppHandle = icecpp->preprocess(false, "-D__SLICE2RB__");
-
- if(cppHandle == 0)
- {
- return EXIT_FAILURE;
- }
-
- UnitPtr u = Unit::createUnit(false, false, ice, underscore);
- int parseStatus = u->parse(*i, cppHandle, debug);
- u->destroy();
-
- if(parseStatus == EXIT_FAILURE)
- {
- return EXIT_FAILURE;
- }
-
- if(!icecpp->printMakefileDependencies(Preprocessor::Ruby, includePaths,
- "-D__SLICE2RB__"))
- {
- return EXIT_FAILURE;
- }
-
- if(!icecpp->close())
- {
- return EXIT_FAILURE;
- }
- }
- else
- {
- PreprocessorPtr icecpp = Preprocessor::create(argv[0], *i, cppArgs);
- FILE* cppHandle = icecpp->preprocess(false, "-D__SLICE2RB__");
-
- if(cppHandle == 0)
- {
- return EXIT_FAILURE;
- }
-
- if(preprocess)
- {
- char buf[4096];
- while(fgets(buf, static_cast<int>(sizeof(buf)), cppHandle) != NULL)
- {
- if(fputs(buf, stdout) == EOF)
- {
- return EXIT_FAILURE;
- }
- }
- if(!icecpp->close())
- {
- return EXIT_FAILURE;
- }
- }
- else
- {
- UnitPtr u = Unit::createUnit(false, all, ice, underscore);
- int parseStatus = u->parse(*i, cppHandle, debug);
-
- if(!icecpp->close())
- {
- u->destroy();
- return EXIT_FAILURE;
- }
-
- if(parseStatus == EXIT_FAILURE)
- {
- status = EXIT_FAILURE;
- }
- else
- {
- string base = icecpp->getBaseName();
- string::size_type pos = base.find_last_of("/\\");
- if(pos != string::npos)
- {
- base.erase(0, pos + 1);
- }
-
- string file = base + ".rb";
- if(!output.empty())
- {
- file = output + '/' + file;
- }
-
- try
- {
- IceUtilInternal::Output out;
- out.open(file.c_str());
- if(!out)
- {
- ostringstream os;
- os << "cannot open`" << file << "': " << strerror(errno);
- throw FileException(__FILE__, __LINE__, os.str());
- }
- FileTracker::instance()->addFile(file);
-
- printHeader(out);
- printGeneratedHeader(out, base + ".ice", "#");
-
- //
- // Generate the Ruby mapping.
- //
- generate(u, all, checksum, includePaths, out);
-
- out.close();
- }
- catch(const Slice::FileException& ex)
- {
- // If a file could not be created, then cleanup
- // any created files.
- FileTracker::instance()->cleanup();
- u->destroy();
- getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
- return EXIT_FAILURE;
- }
- }
-
- u->destroy();
- }
- }
-
- {
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(globalMutex);
-
- if(interrupted)
- {
- FileTracker::instance()->cleanup();
- return EXIT_FAILURE;
- }
- }
- }
-
- return status;
-}
-
int
main(int argc, char* argv[])
{
try
{
- return compile(argc, argv);
+ return Slice::Ruby::compile(argc, argv);
}
catch(const std::exception& ex)
{