diff options
Diffstat (limited to 'TAO/tao/CORBA.cpp')
-rw-r--r-- | TAO/tao/CORBA.cpp | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/TAO/tao/CORBA.cpp b/TAO/tao/CORBA.cpp deleted file mode 100644 index 46ccc7c2033..00000000000 --- a/TAO/tao/CORBA.cpp +++ /dev/null @@ -1,177 +0,0 @@ -// $Id$ - -#include "tao/corba.h" - -// String utility support; this can need to be integrated with the -// ORB's own memory allocation subsystem. - -CORBA::String -CORBA::string_copy (const CORBA::Char *str) -{ - if (!str) - return 0; - - CORBA::String retval = - CORBA::string_alloc (ACE_OS::strlen (str)); - - // clear the contents of the allocated string - ACE_OS::memset(retval, '\0', ACE_OS::strlen (str)); - - return ACE_OS::strcpy (retval, str); -} - -CORBA::String_var & -CORBA::String_var::operator= (char *p) -{ - if (this->ptr_ != p) - { - if (this->ptr_ != 0) - CORBA::string_free (this->ptr_); - this->ptr_ = p; - } - return *this; -} - -CORBA::String_var & -CORBA::String_var::operator= (const char *p) -{ - if (this->ptr_ != 0) - CORBA::string_free (this->ptr_); - - this->ptr_ = CORBA::string_dup (p); - return *this; -} - -CORBA::String_var & -CORBA::String_var::operator= (const CORBA::String_var& r) -{ - if (this != &r) - { - if (this->ptr_ != 0) - CORBA::string_free (this->ptr_); - this->ptr_ = CORBA::string_dup (r.ptr_); - } - return *this; -} - -// Wide Character string utility support; this can need to be -// integrated with the ORB's own memory allocation subsystem. - -CORBA::WString -CORBA::wstring_alloc (CORBA::ULong len) -{ - return new CORBA::WChar [(size_t) (len + 1)]; -} - -static -inline -CORBA::WChar * -wscpy (CORBA::WChar *dest, - const CORBA::WChar *src) -{ - CORBA::WChar *retval = dest; - - while ((*dest++ = *src++) != 0) - continue; - return retval; -} - -CORBA::WString -CORBA::wstring_copy (const CORBA::WChar *const str) -{ - if (*str) - return 0; - - CORBA::WString retval = CORBA::wstring_alloc (ACE_WString::wstrlen (str)); - return wscpy (retval, str); -} - -void -CORBA::wstring_free (CORBA::WChar *const str) -{ - delete [] str; -} - -// ORB initialisation, per OMG document 94-9-46. -// -// XXX in addition to the "built in" Internet ORB, there will be ORBs -// which are added separately, e.g. through a DLL listed in the -// registry. Registry will be used to assign orb names and to -// establish which is the default. - -CORBA::ORB_ptr -CORBA::ORB_init (int &argc, - char *const *argv, - const char * /* orb_name */, - CORBA::Environment &env) -{ - // Using ACE_Static_Object_Lock::instance() precludes ORB_init from - // being called within a static object CTOR. - ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX, guard, - *ACE_Static_Object_Lock::instance (), 0)); - - env.clear (); - - // @@ We need to make sure it's ok for the following 3 - // initialization routines to be called multiple times. Or better - // yet, ensure that we just call them the first time, e.g., by - // putting them in some type of TAO_Object_Manager, along with the - // Typecode_Constants... - - // Put these initializations here so that exceptions are enabled - // immediately. - TAO_Marshal::initialize (); - TAO_Exceptions::init_standard_exceptions (env); - TAO_IIOP_Interpreter::init_table (); - - if (env.exception () != 0) - return 0; - - // Verify some of the basic implementation requirements. This test - // gets optimized away by a decent compiler (or else the rest of the - // routine does). - // - // NOTE: we still "just" assume that native floating point is IEEE. - - if (sizeof (CORBA::Short) != 2 - || sizeof (CORBA::Long) != 4 - || sizeof (CORBA::LongLong) != 8 - || sizeof (CORBA::Float) != 4 - || sizeof (CORBA::Double) != 8 - || sizeof (CORBA::LongDouble) != 16 - || sizeof (CORBA::WChar) < 2 - || sizeof (void *) != ACE_SIZEOF_VOID_P) - { - ACE_DEBUG ((LM_DEBUG, "%s; ERROR: unexpected basic type size; " - "s:%d l:%d ll:%d f:%d d:%d ld:%d wc:%d v:%d\n", - sizeof (CORBA::Short), - sizeof (CORBA::Long), - sizeof (CORBA::LongLong), - sizeof (CORBA::Float), - sizeof (CORBA::Double), - sizeof (CORBA::LongDouble), - sizeof (CORBA::WChar), - sizeof (void *))); - - env.exception (new CORBA::INITIALIZE (CORBA::COMPLETED_NO)); - return 0; - } - - // Initialize the ORB Core instance. - int result = TAO_ORB_Core_instance ()->init (argc, (char **)argv); - - // check for errors and return 0 if error. - if (result == -1) - { - env.exception (new CORBA::BAD_PARAM (CORBA::COMPLETED_NO)); - return 0; - } - - return TAO_ORB_Core_instance()->orb (); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Unbounded_Sequence<CORBA::Octet>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Unbounded_Sequence<CORBA::Octet> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |