Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef TAO_VALUE_TYPECODE_H
00017 #define TAO_VALUE_TYPECODE_H
00018
00019 #include "ace/pre.h"
00020
00021 #include "tao/AnyTypeCode/TypeCode.h"
00022
00023 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00024 # pragma once
00025 #endif
00026
00027 #include "tao/AnyTypeCode/TypeCode_Base_Attributes.h"
00028 #include "tao/AnyTypeCode/ValueModifierC.h"
00029 #include "tao/AnyTypeCode/VisibilityC.h"
00030
00031 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00032
00033 namespace TAO
00034 {
00035 namespace TypeCode
00036 {
00037 template<typename StringType, typename TypeCodeType> struct Value_Field;
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 template <typename StringType,
00049 typename TypeCodeType,
00050 class FieldArrayType,
00051 class RefCountPolicy>
00052 class Value
00053 : public CORBA::TypeCode,
00054 private RefCountPolicy
00055 {
00056 public:
00057
00058
00059 Value (CORBA::TCKind kind,
00060 char const * id,
00061 char const * name,
00062 CORBA::ValueModifier modifier,
00063 TypeCodeType const & concrete_base,
00064 FieldArrayType const & fields,
00065 CORBA::ULong nfields);
00066
00067
00068 Value (CORBA::TCKind kind,
00069 char const * id);
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 virtual bool tao_marshal (TAO_OutputCDR & cdr,
00081 CORBA::ULong offset) const;
00082 virtual void tao_duplicate (void);
00083 virtual void tao_release (void);
00084
00085
00086 protected:
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 virtual CORBA::Boolean equal_i (CORBA::TypeCode_ptr tc) const;
00098 virtual CORBA::Boolean equivalent_i (CORBA::TypeCode_ptr tc) const;
00099 virtual CORBA::TypeCode_ptr get_compact_typecode_i (void) const;
00100 virtual char const * id_i (void) const;
00101 virtual char const * name_i (void) const;
00102 virtual CORBA::ULong member_count_i (void) const;
00103 virtual char const * member_name_i (CORBA::ULong index) const;
00104 virtual CORBA::TypeCode_ptr member_type_i (CORBA::ULong index) const;
00105 virtual CORBA::Visibility member_visibility_i (CORBA::ULong index) const;
00106 virtual CORBA::ValueModifier type_modifier_i (void) const;
00107 virtual CORBA::TypeCode_ptr concrete_base_type_i (void) const;
00108
00109
00110 protected:
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 Base_Attributes<StringType> base_attributes_;
00127
00128
00129
00130 CORBA::ValueModifier type_modifier_;
00131
00132
00133
00134 TypeCodeType concrete_base_;
00135
00136
00137 CORBA::ULong nfields_;
00138
00139
00140
00141 FieldArrayType fields_;
00142
00143
00144
00145 };
00146
00147 }
00148 }
00149
00150 TAO_END_VERSIONED_NAMESPACE_DECL
00151
00152 #ifdef __ACE_INLINE__
00153 # include "tao/AnyTypeCode/Value_TypeCode.inl"
00154 #endif
00155
00156 #ifdef ACE_TEMPLATES_REQUIRE_SOURCE
00157 # include "tao/AnyTypeCode/Value_TypeCode.cpp"
00158 #endif
00159
00160 #ifdef ACE_TEMPLATES_REQUIRE_PRAGMA
00161 # pragma implementation ("Value_TypeCode.cpp")
00162 #endif
00163
00164
00165 #include "ace/post.h"
00166
00167 #endif