00001 #ifndef OMG_DDS_XTYPES_FWD_HPP_ 00002 #define OMG_DDS_XTYPES_FWD_HPP_ 00003 00004 00005 /* Copyright 2010, Object Management Group, Inc. 00006 * Copyright 2010, PrismTech, Corp. 00007 * Copyright 2010, Real-Time Innovations, Inc. 00008 * All rights reserved. 00009 * 00010 * Licensed under the Apache License, Version 2.0 (the "License"); 00011 * you may not use this file except in compliance with the License. 00012 * You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, software 00017 * distributed under the License is distributed on an "AS IS" BASIS, 00018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00019 * See the License for the specific language governing permissions and 00020 * limitations under the License. 00021 */ 00022 #include <map> 00023 #include <vector> 00024 #include <dds/core/corefwd.hpp> 00025 #include <dds/core/macros.hpp> 00026 #include <tdds/xtypes/tdds_xtypes_fwd.hpp> 00027 #include <dds/pub/pubfwd.hpp> 00028 #include <dds/sub/subfwd.hpp> 00029 00030 00031 #ifdef OMG_DDS_EXTENSIBLE_AND_DYNAMIC_TOPIC_TYPE_SUPPORT 00032 00033 namespace dds { namespace type { 00034 00035 namespace builtin { namespace detail { 00036 class KeyedBytes; 00037 class KeyedString; 00038 } } 00039 00040 namespace dynamic { namespace detail { 00041 class AnnotationDescription; 00042 class DynamicData; 00043 class DynamicDataFactory; 00044 class DynamicType; 00045 class DynamicTypeFactory; 00046 class DynamicTypeMember; 00047 class MemberDescriptor; 00048 class TypeDescriptor; 00049 } } 00050 namespace typeobject { namespace detail { 00051 class AliasType; 00052 class AnnotationMember; 00053 class AnnotationMemberValue; 00054 class AnnotationType; 00055 class AnnotationUsage; 00056 class AnnotationUsageMember; 00057 class ArrayType; 00058 class Bit; 00059 class BitSetType; 00060 class EnumeratedConstant; 00061 class EnumerationType; 00062 class MapType; 00063 class MemberProperty; 00064 class Module; 00065 class SequenceType; 00066 class StringType; 00067 class StructureMember; 00068 class StructureType; 00069 class TypeLibrary; 00070 class TypeLibraryElement; 00071 class TypeObject; 00072 class TypeProperty; 00073 class UnionMember; 00074 class UnionType; 00075 00076 } } } } 00077 00078 00079 namespace dds { 00080 namespace type { 00081 // enum TypeKind; 00082 00083 // --- Bound: --- // 00085 typedef unsigned long Bound; 00086 00087 typedef std::vector<Bound> BoundSeq; 00088 00089 const Bound UNBOUNDED_COLLECTION = 0; 00090 00091 // --- Member ID: --- // 00093 typedef unsigned long MemberId; 00094 00095 // --- Union case label sequence: --- // 00097 typedef std::vector<int32_t> UnionCaseLabelSeq; 00098 00099 // --- Built-in Types: --- // 00100 namespace builtin { 00101 // --- Bytes: --- // 00102 class BytesDataReader; 00103 class BytesDataWriter; 00104 00105 // --- String: --- // 00106 typedef dds::sub::DataReader<std::string> StringDataReader; 00107 typedef dds::pub::DataWriter<std::string> StringDataWriter; 00108 00109 // --- Keyed bytes: --- // 00110 typedef tdds::type::builtin::KeyedBytes<dds::type::builtin::detail::KeyedBytes> 00111 KeyedBytes; 00112 00113 class OMG_DDS_API KeyedBytesDataReader; 00114 class OMG_DDS_API KeyedBytesDataWriter; 00115 00116 // --- Keyed string: --- // 00117 typedef tdds::type::builtin::KeyedString<dds::type::builtin::detail::KeyedString> 00118 KeyedString; 00119 00120 class OMG_DDS_API KeyedStringDataReader; 00121 class OMG_DDS_API KeyedStringDataWriter; 00122 } 00123 00124 // --- Dynamic Language Binding: --- // 00125 namespace dynamic { 00126 // --- Annotation descriptor: --- // 00127 typedef tdds::type::dynamic::AnnotationDescriptor<dds::type::dynamic::detail::AnnotationDescription> 00128 AnnotationDescriptor; 00129 00130 typedef std::vector<AnnotationDescriptor> AnnotationDescriptorSeq; 00131 00132 // --- Dynamic data: --- // 00133 typedef tdds::type::dynamic::DynamicData<dds::type::dynamic::detail::DynamicData> 00134 DynamicData; 00135 00136 // --- Dynamic data factory: --- // 00137 typedef tdds::type::dynamic::DynamicDataFactory<dds::type::dynamic::detail::DynamicDataFactory> 00138 DynamicDataFactory; 00139 00140 // --- Dynamic type: --- // 00141 typedef tdds::type::dynamic::DynamicType<dds::type::dynamic::detail::DynamicType> 00142 DynamicType; 00143 00144 // --- Dynamic type factory: --- // 00145 typedef tdds::type::dynamic::DynamicTypeFactory<dds::type::dynamic::detail::DynamicTypeFactory> 00146 DynamicTypeFactory; 00147 00148 // --- Dynamic type member: --- // 00149 typedef tdds::type::dynamic::DynamicTypeMember<dds::type::dynamic::detail::DynamicTypeMember> 00150 DynamicTypeMember; 00151 00152 typedef std::map<std::string, DynamicTypeMember> 00153 DynamicTypeMembersByName; 00154 00155 typedef std::map<dds::type::MemberId, DynamicTypeMember> 00156 DynamicTypeMembersById; 00157 00158 // --- Include path sequence: --- // 00159 typedef std::vector<std::string> IncludePathSeq; 00160 00161 // --- Member descriptor: --- // 00162 typedef tdds::type::dynamic::MemberDescriptor<dds::type::dynamic::detail::MemberDescriptor> 00163 MemberDescriptor; 00164 00165 // --- Parameters: --- // 00166 typedef std::map<std::string, std::string> Parameters; 00167 00168 // --- Type descriptor: --- // 00169 typedef tdds::type::dynamic::TypeDescriptor<dds::type::dynamic::detail::TypeDescriptor> 00170 TypeDescriptor; 00171 } 00172 00173 // --- Type Object Type Representation: --- // 00174 namespace typeobject { 00175 // --- Alias type: --- // 00176 typedef tdds::type::typeobject::AliasType<dds::type::typeobject::detail::AliasType> 00177 AliasType; 00178 00179 // --- Annotation member: --- // 00180 typedef tdds::type::typeobject::AnnotationMember<dds::type::typeobject::detail::AnnotationMember> 00181 AnnotationMember; 00182 00183 typedef std::vector<AnnotationMember> AnnotationMemberSeq; 00184 00185 // --- Annotation member value: --- // 00186 typedef tdds::type::typeobject::AnnotationMemberValue<dds::type::typeobject::detail::AnnotationMemberValue> 00187 AnnotationMemberValue; 00188 00189 // --- Annotation type: --- // 00190 typedef tdds::type::typeobject::AnnotationType<dds::type::typeobject::detail::AnnotationType> 00191 AnnotationType; 00192 00193 // --- Annotation usage: --- // 00194 typedef tdds::type::typeobject::AnnotationUsage<dds::type::typeobject::detail::AnnotationUsage> 00195 AnnotationUsage; 00196 00197 typedef std::vector<AnnotationUsage> AnnotationUsageSeq; 00198 00199 // --- Annotation usage member: --- // 00200 typedef tdds::type::typeobject::AnnotationUsageMember<dds::type::typeobject::detail::AnnotationUsageMember> 00201 AnnotationUsageMember; 00202 00203 typedef std::vector<AnnotationUsageMember> AnnotationUsageMemberSeq; 00204 00205 // --- Array type: --- // 00206 typedef tdds::type::typeobject::ArrayType<dds::type::typeobject::detail::ArrayType> 00207 ArrayType; 00208 00209 // --- Bit: --- // 00210 typedef tdds::type::typeobject::Bit<dds::type::typeobject::detail::Bit> Bit; 00211 00212 typedef std::vector<Bit> BitSeq; 00213 00214 // --- Bit set type: --- // 00215 typedef tdds::type::typeobject::BitSetType<dds::type::typeobject::detail::BitSetType> 00216 BitSetType; 00217 00218 // --- Enumerated constant: --- // 00219 typedef tdds::type::typeobject::EnumeratedConstant<dds::type::typeobject::detail::EnumeratedConstant> 00220 EnumeratedConstant; 00221 00222 typedef std::vector<EnumeratedConstant> EnumeratedConstantSeq; 00223 00224 // --- Enumeration type: --- // 00225 typedef tdds::type::typeobject::EnumerationType< dds::type::typeobject::detail::EnumerationType> 00226 EnumerationType; 00227 00228 // --- Map type: --- // 00229 typedef tdds::type::typeobject::MapType<dds::type::typeobject::detail::MapType> 00230 MapType; 00231 00232 // --- Member property: --- // 00233 typedef tdds::type::typeobject::MemberProperty<dds::type::typeobject::detail::MemberProperty> 00234 MemberProperty; 00235 00236 // --- Module: --- // 00237 typedef tdds::type::typeobject::Module<dds::type::typeobject::detail::Module> 00238 Module; 00239 00240 // --- Sequence type: --- // 00241 typedef tdds::type::typeobject::SequenceType<dds::type::typeobject::detail::SequenceType> 00242 SequenceType; 00243 00244 // --- String type: --- // 00245 typedef tdds::type::typeobject::StringType<dds::type::typeobject::detail::StringType> 00246 StringType; 00247 00248 // --- Structure member: --- // 00249 typedef tdds::type::typeobject::StructureMember<dds::type::typeobject::detail::StructureMember> 00250 StructureMember; 00251 00252 typedef std::vector<StructureMember> StructureMemberSeq; 00253 00254 // --- Structure type: --- // 00255 typedef tdds::type::typeobject::StructureType<dds::type::typeobject::detail::StructureType> 00256 StructureType; 00257 00258 // --- Type ID --- // 00259 typedef long TypeId; 00260 00261 // --- Type library: --- // 00262 typedef tdds::type::typeobject::TypeLibrary<dds::type::typeobject::detail::TypeLibrary> 00263 TypeLibrary; 00264 00265 // --- Type library element: --- // 00266 typedef tdds::type::typeobject::TypeLibraryElement<dds::type::typeobject::detail::TypeLibraryElement> 00267 TypeLibraryElement; 00268 00269 typedef std::vector<TypeLibraryElement> TypeLibraryElementSeq; 00270 00271 // --- Type library: --- // 00272 typedef tdds::type::typeobject::TypeObject<dds::type::typeobject::detail::TypeObject> 00273 TypeObject; 00274 00275 // --- Type property: --- // 00276 typedef tdds::type::typeobject::TypeProperty<dds::type::typeobject::detail::TypeProperty> 00277 TypeProperty; 00278 00279 // --- Union member: --- // 00280 typedef tdds::type::typeobject::UnionMember<dds::type::typeobject::detail::UnionMember> 00281 UnionMember; 00282 00283 typedef std::vector<UnionMember> UnionMemberSeq; 00284 00285 // --- Union type: --- // 00286 typedef tdds::type::typeobject::UnionType<dds::type::typeobject::detail::UnionType> 00287 UnionType; 00288 00289 } 00290 } 00291 } 00292 00293 #endif // OMG_DDS_EXTENSIBLE_AND_DYNAMIC_TOPIC_TYPE_SUPPORT 00294 00295 00296 #endif // !defined(OMG_DDS_XTYPES_FWD_HPP_)
1.7.1