1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef ARY_IDL_I_SERVICE_HXX 25 #define ARY_IDL_I_SERVICE_HXX 26 27 // BASE CLASSES 28 #include <ary/idl/i_ce.hxx> 29 30 // USED SERVICES 31 #include <ary/idl/i_comrela.hxx> 32 #include <ary/stdconstiter.hxx> 33 #include <ary/idl/ik_service.hxx> 34 35 36 37 38 namespace ary 39 { 40 namespace info 41 { 42 class CodeInformation; 43 } 44 namespace idl 45 { 46 namespace ifc_service 47 { 48 struct attr; 49 } 50 51 52 /** Represents an IDL service. 53 */ 54 class Service : public CodeEntity 55 { 56 public: 57 enum E_ClassId { class_id = 2003 }; // See reposy.cxx 58 59 // LIFECYCLE 60 Service( 61 const String & i_sName, 62 Ce_id i_nOwner ); 63 ~Service(); 64 65 // INQUIRY 66 void Get_SupportedInterfaces( 67 Dyn_StdConstIterator<CommentedRelation> & 68 o_rResult ) const; 69 void Get_IncludedServices( 70 Dyn_StdConstIterator<CommentedRelation> & 71 o_rResult ) const; 72 73 // ACCESS 74 void Add_Property( 75 Ce_id i_nProperty ); 76 void AddRef_IncludedService( 77 Type_id i_nService, 78 DYN doc::OldIdlDocu * 79 pass_dpDocu ); 80 void AddRef_SupportedInterface( 81 Type_id i_nInterface, 82 DYN doc::OldIdlDocu * 83 pass_dpDocu ); 84 private: 85 // Interface csv::ConstProcessorClient: 86 virtual void do_Accept( 87 csv::ProcessorIfc & io_processor ) const; 88 // Interface ary::Object: 89 virtual ClassId get_AryClass() const; 90 91 // Interface CodeEntity 92 virtual const String & inq_LocalName() const; 93 virtual Ce_id inq_NameRoom() const; 94 virtual Ce_id inq_Owner() const; 95 virtual E_SightLevel inq_SightLevel() const; 96 97 // Locals 98 typedef std::vector< CommentedRelation > RelationList; 99 typedef std::vector<Ce_id> PropertyList; 100 friend struct ifc_service::attr; 101 102 // DATA 103 String sName; 104 Ce_id nOwner; 105 106 RelationList aIncludedServices; 107 RelationList aSupportedInterfaces; 108 PropertyList aProperties; 109 }; 110 111 112 113 114 // IMPLEMENTATION 115 inline void 116 Service::Add_Property( Ce_id i_nProperty ) 117 { aProperties.push_back(i_nProperty); } 118 119 inline void 120 Service::AddRef_IncludedService( Type_id i_nService, 121 DYN doc::OldIdlDocu * pass_dpDocu ) 122 { aIncludedServices.push_back( CommentedRelation(i_nService, pass_dpDocu) ); } 123 124 inline void 125 Service::AddRef_SupportedInterface( Type_id i_nInterface, 126 DYN doc::OldIdlDocu * pass_dpDocu ) 127 { aSupportedInterfaces.push_back( CommentedRelation(i_nInterface, pass_dpDocu) ); } 128 129 130 131 132 133 } // namespace idl 134 } // namespace ary 135 #endif 136