Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

Omniifr::ConstantDef_impl Class Reference

#include <ConstantDef.h>

Inheritance diagram for Omniifr::ConstantDef_impl:

Inheritance graph
[legend]
Collaboration diagram for Omniifr::ConstantDef_impl:

Collaboration graph
[legend]
List of all members.

Public Member Functions

TypeCode_ptr type ()
IDLType_ptr type_def ()
void type_def (IDLType_ptr v)
CORBA::Any * value ()
void value (const Any &v)
DefinitionKind def_kind ()
CORBA::Contained::Description * describe ()
 ConstantDef_impl ()
virtual ~ConstantDef_impl ()
void uncheckedDestroy ()
 Destroys this object, without first checking for dependencies.
void reincarnate (const PersistNode &node)
 Re-create the repository from information saved in the log file.
void output (ostream &os)
 Save this object's state to a stream.

Private Attributes

Dependency1< IDLType > _type_def
Any _value

Constructor & Destructor Documentation

Omniifr::ConstantDef_impl::ConstantDef_impl  )  [inline]
 

Definition at line 52 of file ConstantDef.h.

References _type_def, and _value.

00052 :_type_def(this),_value(/* tk_null */){}

virtual Omniifr::ConstantDef_impl::~ConstantDef_impl  )  [inline, virtual]
 

Definition at line 53 of file ConstantDef.h.

00053 {}


Member Function Documentation

DefinitionKind Omniifr::ConstantDef_impl::def_kind  )  [inline, virtual]
 

Implements Omniifr::IRObject_impl.

Definition at line 44 of file ConstantDef.h.

Referenced by describe().

00044 {return CORBA::dk_Constant;}

Contained::Description * Omniifr::ConstantDef_impl::describe  )  [virtual]
 

Implements Omniifr::Contained_impl.

Definition at line 115 of file ConstantDef.cc.

References _value, def_kind(), Omniifr::Contained_impl::definedInId(), Omniifr::Contained_impl::id(), Omniifr::Contained_impl::name(), type(), and Omniifr::Contained_impl::version().

00116 {
00117   ConstantDescription_var constantdesc =new ConstantDescription();
00118   constantdesc->name       =name();
00119   constantdesc->id         =id();
00120   constantdesc->version    =version();
00121   constantdesc->type       =type();
00122   constantdesc->value      =_value;
00123   constantdesc->defined_in =definedInId();
00124 
00125   CORBA::Contained::Description_var description =
00126     new CORBA::Contained::Description();
00127   description->kind  =   def_kind();
00128   description->value <<= constantdesc._retn();
00129 
00130   return description._retn();
00131 }

void Omniifr::ConstantDef_impl::output ostream &  os  )  [virtual]
 

Save this object's state to a stream.

Implements Omniifr::IRObject_impl.

Definition at line 148 of file ConstantDef.cc.

References _type_def, _value, Omniifr::Dependency1< T_IRObject >::in(), and Omniifr::Contained_impl::outputSelf().

00149 {
00150   outputSelf(os,"ConstantDef");
00151   PersistNode::outputIOR(os,_type_def.in(),"\n type_def=");
00152   cdrMemoryStream memstr(CORBA::ULong(0),CORBA::Boolean(1)/*clearMemory*/);
00153   _value>>=memstr;
00154   PersistNode::outputCdrMemoryStream(os,memstr,"\n value=");
00155   os<<" ;;\n";
00156 }

void Omniifr::ConstantDef_impl::reincarnate const PersistNode node  )  [virtual]
 

Re-create the repository from information saved in the log file.

Reimplemented from Omniifr::IRObject_impl.

Definition at line 139 of file ConstantDef.cc.

References _type_def, _value, and Omniifr::Dependency1< T_IRObject >::assign().

00140 {
00141   _type_def.assign(
00142     string_to_<IDLType>(node.attrString("type_def").c_str())
00143   );
00144   cdrMemoryStream memstr =node.attrCdrStream("value");
00145   _value<<=memstr;
00146 }

TypeCode_ptr Omniifr::ConstantDef_impl::type  ) 
 

Definition at line 34 of file ConstantDef.cc.

References _type_def, and Omniifr::Dependency1< T_IRObject >::in().

Referenced by describe(), and value().

00035 {
00036   return _type_def.in()->type();
00037 }

void Omniifr::ConstantDef_impl::type_def IDLType_ptr  v  ) 
 

Definition at line 44 of file ConstantDef.cc.

References _type_def, _value, Omniifr::Dependency1< T_IRObject >::assign(), and Omniifr::IRObject_impl::checkReadonly().

00045 {
00046   checkReadonly();
00047   TypeCode_var vTc  =v->type();
00048   TCKind       kind =vTc->kind();
00049   // Strip out aliases. <scoped_name>
00050   while(kind==tk_alias)
00051   {
00052     vTc=vTc->content_type();
00053     kind=vTc->kind();
00054   }
00055 
00056   switch(kind)
00057   {
00058     case tk_short:   // <integer_type>
00059     case tk_ushort: 
00060     case tk_long: 
00061     case tk_ulong: 
00062 #ifdef HAS_LongLong
00063     case tk_longlong: 
00064     case tk_ulonglong: 
00065 #endif
00066     case tk_char:    // <char_type>
00067     case tk_wchar:   // <wide_char_type>
00068     case tk_boolean: // <boolean_type>
00069     case tk_float:   // <floating_pt_type>
00070     case tk_double: 
00071 #ifdef HAS_LongDouble
00072     case tk_longdouble: 
00073 #endif
00074     case tk_string:  // <string_type>
00075     case tk_wstring: // <wide_string_type>
00076     case tk_fixed:   // <fixed_pt_const_type>
00077     case tk_octet:   // <octet_type>
00078       {
00079         TypeCode_var valueTc=_value.type();
00080         _type_def.assign(IDLType::_duplicate(v)); // May throw...
00081         // Erase _value here, unless its TypeCode matches 'v'.
00082         if(!vTc->equivalent(valueTc))
00083            _value=Any();
00084       }
00085       break;
00086 
00087     default:
00088       throw CORBA::BAD_PARAM(); // ?? Minor code
00089   }
00090 }

IDLType_ptr Omniifr::ConstantDef_impl::type_def  ) 
 

Definition at line 39 of file ConstantDef.cc.

References _type_def, and Omniifr::Dependency1< T_IRObject >::in().

00040 {
00041   return IDLType::_duplicate(_type_def.in());
00042 }

void Omniifr::ConstantDef_impl::uncheckedDestroy  )  [virtual]
 

Destroys this object, without first checking for dependencies.

Implements Omniifr::Contained_impl.

Definition at line 133 of file ConstantDef.cc.

References _type_def, and Omniifr::Dependency1< T_IRObject >::clear().

00134 {
00135   _type_def.clear();
00136   Contained_impl::uncheckedDestroy(); // superclass
00137 }

void Omniifr::ConstantDef_impl::value const Any &  v  ) 
 

Definition at line 97 of file ConstantDef.cc.

References _value, Omniifr::IRObject_impl::checkReadonly(), IFELSE_OMNIORB4, and type().

00098 {
00099   checkReadonly();
00100   CORBA::TypeCode_var thisTc =this->type();
00101   CORBA::TypeCode_var vTc    =v.type();
00102   if(thisTc->equivalent(vTc.in()))
00103   {
00104     _value=v;
00105   }
00106   else
00107   {
00108     throw CORBA::BAD_PARAM( // Mico throws NO_PERMISSION here.
00109       IFELSE_OMNIORB4(omni::BAD_PARAM_TargetIsInvalidContainer,4),
00110       CORBA::COMPLETED_NO
00111     );
00112   }
00113 }

CORBA::Any * Omniifr::ConstantDef_impl::value  ) 
 

Definition at line 92 of file ConstantDef.cc.

References _value.

00093 {
00094   return new CORBA::Any(_value);
00095 }


Member Data Documentation

Dependency1<IDLType> Omniifr::ConstantDef_impl::_type_def [private]
 

Definition at line 49 of file ConstantDef.h.

Referenced by ConstantDef_impl(), output(), reincarnate(), type(), type_def(), and uncheckedDestroy().

Any Omniifr::ConstantDef_impl::_value [private]
 

Definition at line 50 of file ConstantDef.h.

Referenced by ConstantDef_impl(), describe(), output(), reincarnate(), type_def(), and value().


The documentation for this class was generated from the following files:
Generated on Fri Mar 4 13:03:57 2005 for OmniIFR by  doxygen 1.4.1