summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/IFR_Service/be_global.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/IFR_Service/be_global.cpp')
-rw-r--r--TAO/orbsvcs/IFR_Service/be_global.cpp245
1 files changed, 245 insertions, 0 deletions
diff --git a/TAO/orbsvcs/IFR_Service/be_global.cpp b/TAO/orbsvcs/IFR_Service/be_global.cpp
new file mode 100644
index 00000000000..023d4cb3c96
--- /dev/null
+++ b/TAO/orbsvcs/IFR_Service/be_global.cpp
@@ -0,0 +1,245 @@
+// $Id$
+
+// ============================================================================
+//
+//
+// = LIBRARY
+// TAO_IFR_BE_DLL
+//
+// = FILENAME
+// be_global.cpp
+//
+// = DESCRIPTION
+// Stores global data specific to the compiler back end.
+//
+// = AUTHOR
+// Jeff Parsons <parsons@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "be_global.h"
+#include "ast_generator.h"
+#include "global_extern.h"
+#include "idl_defines.h"
+
+ACE_RCSID (IFR_Service,
+ be_global,
+ "$Id$")
+
+TAO_IFR_BE_Export BE_GlobalData *be_global = 0;
+
+BE_GlobalData::BE_GlobalData (void)
+ : removing_ (false),
+ holding_scope_name_ (CORBA::string_dup ("TAO_IFR_holding_scope_module")),
+ filename_ (0),
+ enable_locking_ (false),
+ do_included_files_ (true)
+{
+ // At this point, the FE has been initialized. We can
+ // now instruct it that we want to preserve c++ keywords.
+ idl_global->preserve_cpp_keywords (true);
+}
+
+BE_GlobalData::~BE_GlobalData (void)
+{
+}
+
+bool
+BE_GlobalData::removing (void) const
+{
+ return this->removing_;
+}
+
+void
+BE_GlobalData::removing (bool value)
+{
+ this->removing_ = value;
+}
+
+CORBA::ORB_ptr
+BE_GlobalData::orb (void) const
+{
+ return this->orb_.in ();
+}
+
+void
+BE_GlobalData::orb (CORBA::ORB_ptr orb)
+{
+ this->orb_ = orb;
+}
+
+CORBA::Repository_ptr
+BE_GlobalData::repository (void) const
+{
+ return this->repository_.in ();
+}
+
+void
+BE_GlobalData::repository (CORBA::Repository_ptr repo)
+{
+ this->repository_ = repo;
+}
+
+CORBA::ModuleDef_ptr
+BE_GlobalData::holding_scope (void) const
+{
+ return this->holding_scope_.in ();
+}
+
+void
+BE_GlobalData::holding_scope (CORBA::ModuleDef_ptr scope)
+{
+ this->holding_scope_ = scope;
+}
+
+const char *
+BE_GlobalData::holding_scope_name (void) const
+{
+ return this->holding_scope_name_.in ();
+}
+
+ACE_Unbounded_Stack<CORBA::Container_ptr> &
+BE_GlobalData::ifr_scopes (void)
+{
+ return this->ifr_scopes_;
+}
+
+void
+BE_GlobalData::destroy (void)
+{
+}
+
+const char *
+BE_GlobalData::filename (void) const
+{
+ return this->filename_;
+}
+
+void
+BE_GlobalData::filename (char *fname)
+{
+ this->filename_ = fname;
+}
+
+bool
+BE_GlobalData::enable_locking (void) const
+{
+ return this->enable_locking_;
+}
+
+void
+BE_GlobalData::enable_locking (bool value)
+{
+ this->enable_locking_ = value;
+}
+
+bool
+BE_GlobalData::do_included_files (void) const
+{
+ return this->do_included_files_;
+}
+
+void
+BE_GlobalData::do_included_files (bool val)
+{
+ this->do_included_files_ = val;
+}
+
+ACE_CString
+BE_GlobalData::orb_args (void) const
+{
+ return this->orb_args_;
+}
+
+void
+BE_GlobalData::orb_args (const ACE_CString& args)
+{
+ this->orb_args_ = args;
+}
+
+ACE_CString
+BE_GlobalData::spawn_options (void)
+{
+ return this->orb_args_ + idl_global->idl_flags ();
+}
+
+void
+BE_GlobalData::parse_args (long &i, char **av)
+{
+ switch (av[i][1])
+ {
+ case 'L':
+ be_global->enable_locking (true);
+ break;
+ case 'r':
+ be_global->removing (true);
+ break;
+ case 'S':
+ // Suppress ...
+ if (av[i][2] == 'i')
+ {
+ // ... processing of included IDL files.
+ be_global->do_included_files (0);
+ }
+ else
+ {
+ ACE_ERROR ((
+ LM_ERROR,
+ ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
+ av[i]
+ ));
+
+ ACE_OS::exit (99);
+ }
+ break;
+ default:
+ ACE_ERROR ((
+ LM_ERROR,
+ ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
+ av[i]
+ ));
+
+ idl_global->set_compile_flags (idl_global->compile_flags ()
+ | IDL_CF_ONLY_USAGE);
+ break;
+ }
+}
+
+// Does nothing in this backend.
+void
+BE_GlobalData::prep_be_arg (char *)
+{
+}
+
+// Does nothing in this backend.
+void
+BE_GlobalData::arg_post_proc (void)
+{
+}
+
+void
+BE_GlobalData::usage (void) const
+{
+ ACE_DEBUG ((
+ LM_DEBUG,
+ ACE_TEXT (" -L\t\t\tEnable locking at the IDL file level\n")
+ ));
+ ACE_DEBUG ((
+ LM_DEBUG,
+ ACE_TEXT (" -r\t\t\tRemove contents of IDL file(s) from repository\n")
+ ));
+ ACE_DEBUG ((
+ LM_DEBUG,
+ ACE_TEXT (" -Si\t\t\tSuppress processing of included IDL files\n")
+ ));
+}
+
+AST_Generator *
+BE_GlobalData::generator_init (void)
+{
+ AST_Generator *gen = 0;
+ ACE_NEW_RETURN (gen,
+ AST_Generator,
+ 0);
+ return gen;
+}