.. _program_listing_file__tmp_ws_src_fastrtps_include_dds_core_xtypes_StructType.hpp: Program Listing for File StructType.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/fastrtps/include/dds/core/xtypes/StructType.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright 2010, Object Management Group, Inc. * Copyright 2010, PrismTech, Corp. * Copyright 2010, Real-Time Innovations, Inc. * Copyright 2019, Proyectos y Sistemas de Mantenimiento SL (eProsima). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OMG_DDS_CORE_XTYPES_STRUCT_TYPE_HPP_ #define OMG_DDS_CORE_XTYPES_STRUCT_TYPE_HPP_ #include #include #include namespace dds { namespace core { namespace xtypes { template class TStructForwardDeclaration : public TDynamicType { public: TStructForwardDeclaration( const std::string& name) { throw "Not implemented"; } }; template class TStructType : public TDynamicType { TStructType& parent_ts_; public: explicit TStructType( const std::string& name) { throw "Not implemented"; } TStructType( const std::string& name, const std::vector& members) { TDynamicType::impl()->name(name); } TStructType( const std::string& name, const TStructType& parent, const std::vector& members) { TDynamicType::impl()->name(name); parent_ts_ = parent; TDynamicType::impl()->members(members); } template TStructType( const std::string& name, const TStructType& parent, const MemberIter& begin, const MemberIter& end) { TDynamicType::impl()->name(name); parent_ts_ = parent; TDynamicType::impl()->members(begin, end); } TStructType( const std::string& name, const TStructType& parent, const std::vector& members, const Annotation& annotation) { TDynamicType::impl()->name(name); parent_ts_ = parent; TDynamicType::impl()->members(members); TDynamicType::impl()->annotation(annotation); } TStructType( const std::string& name, const TStructType& parent, const std::vector& members, const std::vector& annotations) { TDynamicType::impl()->name(name); parent_ts_ = parent; TDynamicType::impl()->members(members); TDynamicType::impl()->annotations(annotations); } template< typename AnnotationIter, typename MemberIter> TStructType( const std::string& name, const TStructType& parent, const MemberIter& member_begin, const MemberIter& member_end, const AnnotationIter& annotation_begin, const AnnotationIter& annotation_end) { TDynamicType::impl()->name(name); parent_ts_ = parent; TDynamicType::impl()->members(member_begin, member_end); TDynamicType::impl()->annotations(annotation_begin, annotation_end); } template operator TDynamicType() const { throw "Not implemented"; } TStructType parent() const { return parent_ts_; } const std::vector& members() const { return TDynamicType::impl()->members(); } const MemberType& member( uint32_t id) const { return TDynamicType::impl()->member(id); } const MemberType& member( const std::string& name) const { return TDynamicType::impl()->member(name); } const std::vector& annotations() const { return TDynamicType::impl()->annotations(); } TStructType add_member( const MemberType& member) const { TDynamicType::impl()->member(member); return *this; } TStructType remove_member( const MemberType& member) const { TDynamicType::impl()->remove_member(); return *this; } TStructType add_annotation( const Annotation& annotation) const { TDynamicType::impl()->annotation(annotation); return *this; } TStructType remove_annotation( const Annotation& annotation) const { TDynamicType::impl()->remove_annotation(annotation); return *this; } }; typedef TStructType StructType; } //namespace xtypes } //namespace core } //namespace dds #endif //OMG_DDS_CORE_XTYPES_STRUCT_TYPE_HPP_