diff options
author | gokhale <asgokhale@users.noreply.github.com> | 1997-08-10 14:26:42 +0000 |
---|---|---|
committer | gokhale <asgokhale@users.noreply.github.com> | 1997-08-10 14:26:42 +0000 |
commit | 80c1e04971df82da8c86b0e3ec5da4c33c8e9244 (patch) | |
tree | e610063c5af218d4030bb5ca8b8bd450cb9c8949 /TAO/tao/any.i | |
parent | 77c27dd455853fa54768f27ab2f9cb59d24c7dce (diff) | |
download | ATCD-80c1e04971df82da8c86b0e3ec5da4c33c8e9244.tar.gz |
CORBA_ to CORBA:: transformation. All files changed.
Diffstat (limited to 'TAO/tao/any.i')
-rw-r--r-- | TAO/tao/any.i | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/TAO/tao/any.i b/TAO/tao/any.i index 6bd4c901add..f326a2c0a20 100644 --- a/TAO/tao/any.i +++ b/TAO/tao/any.i @@ -15,3 +15,151 @@ CORBA_Any::operator delete (void *p) { ::operator delete (p); } + +// insertion operators + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::Short s) +{ + replace (CORBA::_tc_short, new CORBA::Short (s), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::UShort s) +{ + replace (CORBA::_tc_ushort, new CORBA::UShort (s), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::Long l) +{ + replace (CORBA::_tc_long, new CORBA::Long (l), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::ULong l) +{ + replace (CORBA::_tc_ulong, new CORBA::ULong (l), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::Float f) +{ + replace (CORBA::_tc_float, new CORBA::Float (f), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (CORBA::Double d) +{ + replace (CORBA::_tc_double, new CORBA::Double (d), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (const CORBA_Any& a) +{ + replace (CORBA::_tc_any, new CORBA_Any (a), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (const char* s) +{ + replace (CORBA::_tc_string, CORBA::string_dup (s), CORBA::B_TRUE); +} + +// implementing the special types +ACE_INLINE +CORBA_Any::from_boolean::from_boolean (CORBA::Boolean b) + : val_ (b) +{ +} + +ACE_INLINE +CORBA_Any::to_boolean::to_boolean (CORBA::Boolean &b) + : ref_ (b) +{ +} + +ACE_INLINE +CORBA_Any::from_octet::from_octet (CORBA::Octet o) + : val_ (o) +{ +} + +ACE_INLINE +CORBA_Any::to_octet::to_octet (CORBA::Octet &o) + : ref_ (o) +{ +} + +ACE_INLINE +CORBA_Any::from_char::from_char (CORBA::Char c) + : val_ (c) +{ +} + +ACE_INLINE +CORBA_Any::to_char::to_char (CORBA::Char &c) + : ref_ (c) +{ +} + +ACE_INLINE +CORBA_Any::from_string::from_string (char *s, CORBA::ULong b, CORBA::Boolean nocopy) + : val_ (s), + bound_ (b), + nocopy_ (nocopy) +{ +} + +ACE_INLINE +CORBA_Any::to_string::to_string (char *&s, CORBA::ULong b) + : ref_ (s), + bound_ (b) +{ +} + +// insertion from special types + +ACE_INLINE void +CORBA_Any::operator<<= (from_boolean b) +{ + replace (CORBA::_tc_boolean, new CORBA::Boolean (b.val_), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (from_octet o) +{ + replace (CORBA::_tc_octet, new CORBA::Octet (o.val_), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (from_char c) +{ + replace (CORBA::_tc_char, new CORBA::Char (c.val_), CORBA::B_TRUE); +} + +ACE_INLINE void +CORBA_Any::operator<<= (from_string s) +{ + if (s.nocopy_) + replace (CORBA::_tc_string, s.val_, CORBA::B_TRUE); + else + replace (CORBA::_tc_string, CORBA::string_dup (s.val_), CORBA::B_TRUE); +} + +// extraction: these are safe and hence we have to check that the typecode of +// the Any is equal to the one we are trying to extract into + +ACE_INLINE CORBA::Boolean +CORBA_Any::operator>>= (CORBA::Short &s) const +{ + CORBA::Environment env; + + if (type_->equal (CORBA::_tc_short, env)) + { + s = *(CORBA::Short *) value_; + return CORBA::B_TRUE; + } + else + return CORBA::B_FALSE; +} |