#include <TAO_ETCL_Constraint.h>
Definition at line 41 of file TAO_ETCL_Constraint.h.
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | void | ) |
Definition at line 7 of file TAO_ETCL_Constraint.inl.
: any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | CORBA::ULong | uinteger | ) | [explicit] |
Definition at line 20 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (uinteger), any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | CORBA::Long | integer | ) | [explicit] |
Definition at line 28 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (integer), any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | CORBA::Boolean | boolean | ) | [explicit] |
Definition at line 36 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (boolean), any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | CORBA::Double | doub | ) | [explicit] |
Definition at line 44 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (doub), any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | const char * | str | ) | [explicit] |
Definition at line 52 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (str), any_ (0) { }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | CORBA::Any * | any | ) | [explicit] |
Definition at line 29 of file TAO_ETCL_Constraint.cpp.
: any_ (0) { CORBA::Any& any_ref = *any; CORBA::TypeCode_var type = any_ref.type (); CORBA::TCKind corba_type = CORBA::tk_null; try { corba_type = type->kind (); } catch (const CORBA::Exception&) { // @@ Seth: Don't know what else to do. Make sure we can tell // when this constructor fails. return; } this->type_ = TAO_ETCL_Literal_Constraint::comparable_type (type.in ()); switch (this->type_) { case ACE_ETCL_SIGNED: this->op_.integer_ = 0; if (corba_type == CORBA::tk_short) { CORBA::Short sh; any_ref >>= sh; this->op_.integer_ = (CORBA::Long) sh; } else { any_ref >>= this->op_.integer_; } break; case ACE_ETCL_UNSIGNED: this->op_.uinteger_ = 0; if (corba_type == CORBA::tk_ushort) { CORBA::UShort sh; any_ref >>= sh; this->op_.uinteger_ = (CORBA::ULong) sh; } else if (corba_type == CORBA::tk_enum) { TAO::Any_Impl *impl = any->impl (); if (impl->encoded ()) { TAO::Unknown_IDL_Type *unk = dynamic_cast<TAO::Unknown_IDL_Type *> (impl); if (unk == 0) { throw CORBA::INTERNAL (); } // We don't want unk's rd_ptr to move, in case we are shared by // another Any, so we use this to copy the state, not the buffer. TAO_InputCDR for_reading (unk->_tao_get_cdr ()); for_reading.read_ulong (this->op_.uinteger_); } else { TAO_OutputCDR out; impl->marshal_value (out); TAO_InputCDR in (out); in.read_ulong (this->op_.uinteger_); } } else { any_ref >>= this->op_.uinteger_; } break; case ACE_ETCL_DOUBLE: if (corba_type == CORBA::tk_float) { CORBA::Float fl; (*any) >>= fl; this->op_.double_ = (CORBA::Double) fl; } else { (*any) >>= this->op_.double_; } break; case ACE_ETCL_BOOLEAN: { CORBA::Any::to_boolean tmp (this->op_.bool_); (*any) >>= tmp; } break; case ACE_ETCL_STRING: { const char* s; any_ref >>= s; this->op_.str_ = CORBA::string_dup (s); } break; case ACE_ETCL_COMPONENT: this->any_ = any->impl (); this->any_->_add_ref (); break; } }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | const TAO_ETCL_Literal_Constraint & | lit | ) |
Copy constructors.
Definition at line 21 of file TAO_ETCL_Constraint.cpp.
: ETCL_Literal_Constraint (), any_ (0) { this->copy (lit); }
TAO_ETCL_Literal_Constraint::TAO_ETCL_Literal_Constraint | ( | const ETCL_Literal_Constraint * | lit | ) |
Definition at line 13 of file TAO_ETCL_Constraint.inl.
: ETCL_Literal_Constraint (*lit), any_ (0) {}
TAO_ETCL_Literal_Constraint::~TAO_ETCL_Literal_Constraint | ( | void | ) | [virtual] |
Destructor.
Definition at line 142 of file TAO_ETCL_Constraint.cpp.
Literal_Type TAO_ETCL_Literal_Constraint::comparable_type | ( | CORBA::TypeCode_ptr | type | ) | [static] |
Determine the comparable Expression Type from the CORBA type.
Definition at line 239 of file TAO_ETCL_Constraint.cpp.
{ // Convert a CORBA::TCKind into a Literal_Type Literal_Type return_value = ACE_ETCL_UNKNOWN; CORBA::TCKind kind = CORBA::tk_null; try { kind = type->kind (); CORBA::TypeCode_var tmp = CORBA::TypeCode::_duplicate (type); while (kind == CORBA::tk_alias) { tmp = tmp->content_type (); kind = tmp->kind (); } } catch (const CORBA::Exception&) { return return_value; } // Since this is a top level try block, no need to check again. switch (kind) { case CORBA::tk_ushort: case CORBA::tk_ulong: case CORBA::tk_enum: case CORBA::tk_ulonglong: return_value = ACE_ETCL_UNSIGNED; break; case CORBA::tk_short: case CORBA::tk_long: case CORBA::tk_longlong: return_value = ACE_ETCL_SIGNED; break; case CORBA::tk_boolean: return_value = ACE_ETCL_BOOLEAN; break; case CORBA::tk_float: case CORBA::tk_double: return_value = ACE_ETCL_DOUBLE; break; case CORBA::tk_string: return_value = ACE_ETCL_STRING; break; default: return_value = ACE_ETCL_COMPONENT; break; } return return_value; }
void TAO_ETCL_Literal_Constraint::copy | ( | const TAO_ETCL_Literal_Constraint & | co | ) | [private] |
Private copy method.
Definition at line 452 of file TAO_ETCL_Constraint.cpp.
{ if (this->type_ == ACE_ETCL_COMPONENT && this->any_ != 0) { this->any_->_remove_ref (); this->any_ = 0; } switch (lit.type_) { case ACE_ETCL_COMPONENT: this->type_ = ACE_ETCL_COMPONENT; this->any_ = lit.any_; this->any_->_add_ref (); break; default: this->ETCL_Literal_Constraint::copy (lit); break; } }
TAO_ETCL_Literal_Constraint::operator ACE_CDR::Boolean | ( | void | ) | const |
Reimplemented from ETCL_Literal_Constraint.
TAO_ETCL_Literal_Constraint::operator ACE_CDR::Double | ( | void | ) | const |
Reimplemented from ETCL_Literal_Constraint.
TAO_ETCL_Literal_Constraint::operator ACE_CDR::Long | ( | void | ) | const |
Reimplemented from ETCL_Literal_Constraint.
TAO_ETCL_Literal_Constraint::operator ACE_CDR::ULong | ( | void | ) | const |
Reimplemented from ETCL_Literal_Constraint.
TAO_ETCL_Literal_Constraint::operator const char * | ( | void | ) | const |
Reimplemented from ETCL_Literal_Constraint.
Definition at line 215 of file TAO_ETCL_Constraint.cpp.
{ switch (this->type_) { case ACE_ETCL_COMPONENT: { const char *retval = 0; CORBA::Any tmp; tmp.replace (this->any_); this->any_->_add_ref (); tmp >>= retval; return retval; } default: return this->ETCL_Literal_Constraint::operator const char * (); } }
TAO_ETCL_Literal_Constraint::operator TAO::Any_Impl * | ( | void | ) | const |
Definition at line 233 of file TAO_ETCL_Constraint.cpp.
{ return (this->type_ == ACE_ETCL_COMPONENT) ? this->any_ : 0; }
TAO_ETCL_Literal_Constraint TAO_ETCL_Literal_Constraint::operator* | ( | const TAO_ETCL_Literal_Constraint & | rhs | ) |
Definition at line 351 of file TAO_ETCL_Constraint.cpp.
{ Literal_Type widest_type = this->widest_type (rhs); switch (widest_type) { case ACE_ETCL_DOUBLE: { CORBA::Double result = (CORBA::Double) *this * (CORBA::Double) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Double) result); } case ACE_ETCL_INTEGER: case ACE_ETCL_SIGNED: { CORBA::Long result = (CORBA::Long) *this * (CORBA::Long) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Long) result); } case ACE_ETCL_UNSIGNED: { CORBA::ULong result = (CORBA::ULong) *this * (CORBA::ULong) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::ULong) result); } default: return TAO_ETCL_Literal_Constraint ((CORBA::Long) 0); } }
TAO_ETCL_Literal_Constraint TAO_ETCL_Literal_Constraint::operator+ | ( | const TAO_ETCL_Literal_Constraint & | rhs | ) |
Definition at line 295 of file TAO_ETCL_Constraint.cpp.
{ Literal_Type widest_type = this->widest_type (rhs); switch (widest_type) { case ACE_ETCL_DOUBLE: { CORBA::Double result = (CORBA::Double) *this + (CORBA::Double) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Double) result); } case ACE_ETCL_INTEGER: case ACE_ETCL_SIGNED: { CORBA::Long result = (CORBA::Long) *this + (CORBA::Long) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Long) result); } case ACE_ETCL_UNSIGNED: { CORBA::ULong result = (CORBA::ULong) *this + (CORBA::ULong) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::ULong) result); } default: return TAO_ETCL_Literal_Constraint ((CORBA::Long) 0); } }
TAO_ETCL_Literal_Constraint TAO_ETCL_Literal_Constraint::operator- | ( | void | ) |
Reimplemented from ETCL_Literal_Constraint.
Definition at line 416 of file TAO_ETCL_Constraint.cpp.
{ switch (this->type_) { case ACE_ETCL_DOUBLE: return TAO_ETCL_Literal_Constraint (- this->op_.double_); case ACE_ETCL_INTEGER: case ACE_ETCL_SIGNED: return TAO_ETCL_Literal_Constraint (- this->op_.integer_); case ACE_ETCL_UNSIGNED: return TAO_ETCL_Literal_Constraint (- (CORBA::Long) this->op_.uinteger_); default: return TAO_ETCL_Literal_Constraint ((CORBA::Long) 0); } }
TAO_ETCL_Literal_Constraint TAO_ETCL_Literal_Constraint::operator- | ( | const TAO_ETCL_Literal_Constraint & | rhs | ) |
Definition at line 323 of file TAO_ETCL_Constraint.cpp.
{ Literal_Type widest_type = this->widest_type (rhs); switch (widest_type) { case ACE_ETCL_DOUBLE: { CORBA::Double result = (CORBA::Double) *this - (CORBA::Double) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Double) result); } case ACE_ETCL_INTEGER: case ACE_ETCL_SIGNED: { CORBA::Long result = (CORBA::Long) *this - (CORBA::Long) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Long) result); } case ACE_ETCL_UNSIGNED: { CORBA::ULong result = (CORBA::ULong) *this - (CORBA::ULong) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::ULong) result); } default: return TAO_ETCL_Literal_Constraint ((CORBA::Long) 0); } }
TAO_ETCL_Literal_Constraint TAO_ETCL_Literal_Constraint::operator/ | ( | const TAO_ETCL_Literal_Constraint & | rhs | ) |
Definition at line 379 of file TAO_ETCL_Constraint.cpp.
{ Literal_Type widest_type = this->widest_type (rhs); switch (widest_type) { case ACE_ETCL_DOUBLE: { if ((ACE_CDR::Double) rhs == 0.0) return TAO_ETCL_Literal_Constraint ((ACE_CDR::Double) 0.0); CORBA::Double result = (CORBA::Double) *this / (CORBA::Double) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Double) result); } case ACE_ETCL_INTEGER: case ACE_ETCL_SIGNED: { if ((ACE_CDR::Long) rhs == 0) return TAO_ETCL_Literal_Constraint ((ACE_CDR::Long) 0); CORBA::Long result = (CORBA::Long) *this / (CORBA::Long) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::Long) result); } case ACE_ETCL_UNSIGNED: { if ((ACE_CDR::ULong) rhs == 0) return TAO_ETCL_Literal_Constraint ((ACE_CDR::ULong) 0); CORBA::ULong result = (CORBA::ULong) *this / (CORBA::ULong) rhs; return TAO_ETCL_Literal_Constraint ((CORBA::ULong) result); } default: return TAO_ETCL_Literal_Constraint ((CORBA::Long) 0); } }
void TAO_ETCL_Literal_Constraint::operator= | ( | const TAO_ETCL_Literal_Constraint & | co | ) |
Literal_Type TAO_ETCL_Literal_Constraint::widest_type | ( | const ETCL_Literal_Constraint & | rhs | ) | [virtual] |
Ensure both operands are of the same simple numeric type.
Reimplemented from ETCL_Literal_Constraint.
Definition at line 433 of file TAO_ETCL_Constraint.cpp.
{ Literal_Type rhs_type = rhs.expr_type (); Literal_Type return_value = rhs_type; if (rhs_type == ACE_ETCL_COMPONENT) { const TAO_ETCL_Literal_Constraint& actual = dynamic_cast<const TAO_ETCL_Literal_Constraint&> (rhs); CORBA::TypeCode_var tc = actual.any_->type (); rhs_type = TAO_ETCL_Literal_Constraint::comparable_type (tc.in ()); return return_value; } return this->ETCL_Literal_Constraint::widest_type (rhs); }
TAO::Any_Impl* TAO_ETCL_Literal_Constraint::any_ [private] |
Possible literal type not covered by the base class.
Definition at line 107 of file TAO_ETCL_Constraint.h.