summaryrefslogtreecommitdiff
path: root/TAO/tao/CORBA.i
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1998-03-22 06:16:20 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1998-03-22 06:16:20 +0000
commit3dcad1e906d4453b09891ee7bc55ae7932fe604f (patch)
tree013cd1db3d6a3ad7fc6a076ee28eddde0f43544e /TAO/tao/CORBA.i
parentaf1e2e53f6381dba517ad4d3d832083dcbff0e73 (diff)
downloadATCD-3dcad1e906d4453b09891ee7bc55ae7932fe604f.tar.gz
*** empty log message ***
Diffstat (limited to 'TAO/tao/CORBA.i')
-rw-r--r--TAO/tao/CORBA.i185
1 files changed, 185 insertions, 0 deletions
diff --git a/TAO/tao/CORBA.i b/TAO/tao/CORBA.i
new file mode 100644
index 00000000000..9850e0e9ed5
--- /dev/null
+++ b/TAO/tao/CORBA.i
@@ -0,0 +1,185 @@
+// This may look like C, but it's really -*- C++ -*-
+
+// String utility support. Since these are static methods we need to
+// explicitly export them from the DLL.
+
+ACE_INLINE TAO_Export CORBA::String
+CORBA::string_alloc (CORBA::ULong len)
+{
+ // Allocate 1 + strlen to accomodate the null terminating character.
+ return new CORBA::Char[size_t (len + 1)];
+}
+
+ACE_INLINE TAO_Export CORBA::String
+CORBA::string_dup (const CORBA::Char *str)
+{
+ return CORBA::string_copy (str);
+}
+
+ACE_INLINE TAO_Export void
+CORBA::string_free (CORBA::Char *str)
+{
+ delete [] str;
+}
+
+// ----------------------------------------------------------------------
+// String_var type
+// ----------------------------------------------------------------------
+
+ACE_INLINE
+CORBA::String_var::String_var (void)
+{
+ this->ptr_ = 0;
+}
+
+ACE_INLINE
+CORBA::String_var::~String_var (void)
+{
+ if (this->ptr_ != 0)
+ {
+ CORBA::string_free (this->ptr_);
+ this->ptr_ = 0;
+ }
+}
+
+ACE_INLINE
+CORBA::String_var::String_var (char *p)
+ : ptr_ (p)
+{
+ // NOTE: According to the CORBA spec this string must *not* be
+ // copied, but it is non-compliant to use it/release it in the
+ // calling code. argument is consumed. p should never be NULL
+}
+
+ACE_INLINE
+CORBA::String_var::String_var (const char *p)
+ : ptr_ (CORBA::string_dup ((char *) p))
+{
+}
+
+ACE_INLINE
+CORBA::String_var::String_var (const CORBA::String_var& r)
+{
+ this->ptr_ = CORBA::string_dup (r.ptr_);
+}
+
+ACE_INLINE CORBA::Char &
+CORBA::String_var::operator[] (CORBA::ULong index)
+{
+ // We need to verify bounds else raise some exception.
+ return this->ptr_[index];
+}
+
+ACE_INLINE CORBA::Char
+CORBA::String_var::operator[] (CORBA::ULong index) const
+{
+ // We need to verify bounds else raise some exception.
+ return this->ptr_[index];
+}
+
+ACE_INLINE
+CORBA::String_var::operator char *()
+{
+ return this->ptr_;
+}
+
+ACE_INLINE
+CORBA::String_var::operator const char *() const
+{
+ return this->ptr_;
+}
+
+ACE_INLINE const char *
+CORBA::String_var::in (void) const
+{
+ return this->ptr_;
+}
+
+ACE_INLINE char *&
+CORBA::String_var::inout (void)
+{
+ return this->ptr_;
+}
+
+ACE_INLINE char *&
+CORBA::String_var::out (void)
+{
+ CORBA::string_free (this->ptr_);
+ this->ptr_ = 0;
+ return this->ptr_;
+}
+
+ACE_INLINE char *
+CORBA::String_var::_retn (void)
+{
+ char *temp = this->ptr_;
+ this->ptr_ = 0;
+ return temp;
+}
+
+// ----------------------------------------------------
+// String_out type
+// ----------------------------------------------------
+
+ACE_INLINE
+CORBA::String_out::String_out (char *&s)
+ : ptr_ (s)
+{
+ this->ptr_ = 0;
+}
+
+ACE_INLINE
+CORBA::String_out::String_out (CORBA::String_var &s)
+ : ptr_ (s.out ())
+{
+}
+
+ACE_INLINE
+CORBA::String_out::String_out (CORBA::String_out &s)
+ : ptr_ (s.ptr_)
+{
+}
+
+ACE_INLINE CORBA::String_out &
+CORBA::String_out::operator= (CORBA::String_out &s)
+{
+ this->ptr_ = s.ptr_;
+ return *this;
+}
+
+ACE_INLINE CORBA::String_out &
+CORBA::String_out::operator= (char *s)
+{
+ this->ptr_ = s;
+ return *this;
+}
+
+ACE_INLINE CORBA::String_out &
+CORBA::String_out::operator= (const char *s)
+{
+ this->ptr_ = CORBA::string_dup (s);
+ return *this;
+}
+
+ACE_INLINE
+CORBA::String_out::operator char *&()
+{
+ return this->ptr_;
+}
+
+ACE_INLINE char *&
+CORBA::String_out::ptr (void)
+{
+ return this->ptr_;
+}
+
+// ----------------------------------------------------------------------
+// Wide strings
+// ----------------------------------------------------------------------
+
+ACE_INLINE TAO_Export CORBA::WString
+CORBA::wstring_dup (const WChar *const str)
+{
+ return CORBA::wstring_copy (str);
+}
+