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 #include <precomp.h>
23 #include <ary/idl/i_service.hxx>
24 
25 
26 // NOT FULLY DECLARED SERVICES
27 #include <cosv/tpl/processor.hxx>
28 #include <ary/idl/ik_service.hxx>
29 #include <ary/doc/d_oldidldocu.hxx>
30 #include <sci_impl.hxx>
31 #include "i2s_calculator.hxx"
32 
33 
34 namespace ary
35 {
36 namespace idl
37 {
38 
Service(const String & i_sName,Ce_id i_nOwner)39 Service::Service( const String &      i_sName,
40                   Ce_id               i_nOwner )
41     :   sName(i_sName),
42         nOwner(i_nOwner),
43         aIncludedServices(),
44         aSupportedInterfaces(),
45         aProperties()
46 {
47 }
48 
~Service()49 Service::~Service()
50 {
51     for ( RelationList::iterator it = aIncludedServices.begin();
52           it != aIncludedServices.end();
53           ++it )
54     {
55         delete (*it).Info();
56     }
57 
58     for ( RelationList::iterator it = aSupportedInterfaces.begin();
59           it != aSupportedInterfaces.end();
60           ++it )
61     {
62         delete (*it).Info();
63     }
64 }
65 
66 void
Get_SupportedInterfaces(Dyn_StdConstIterator<CommentedRelation> & o_rResult) const67 Service::Get_SupportedInterfaces( Dyn_StdConstIterator<CommentedRelation> & o_rResult ) const
68 {
69     o_rResult = new SCI_Vector<CommentedRelation>(aSupportedInterfaces);
70 }
71 
72 void
Get_IncludedServices(Dyn_StdConstIterator<CommentedRelation> & o_rResult) const73 Service::Get_IncludedServices( Dyn_StdConstIterator<CommentedRelation> & o_rResult ) const
74 {
75     o_rResult = new SCI_Vector<CommentedRelation>(aIncludedServices);
76 }
77 
78 void
do_Accept(csv::ProcessorIfc & io_processor) const79 Service::do_Accept( csv::ProcessorIfc & io_processor ) const
80 {
81     csv::CheckedCall(io_processor, *this);
82 }
83 
84 ClassId
get_AryClass() const85 Service::get_AryClass() const
86 {
87     return class_id;
88 }
89 
90 const String &
inq_LocalName() const91 Service::inq_LocalName() const
92 {
93     return sName;
94 }
95 
96 Ce_id
inq_NameRoom() const97 Service::inq_NameRoom() const
98 {
99     return nOwner;
100 }
101 
102 Ce_id
inq_Owner() const103 Service::inq_Owner() const
104 {
105     return nOwner;
106 }
107 
108 E_SightLevel
inq_SightLevel() const109 Service::inq_SightLevel() const
110 {
111     return sl_File;
112 }
113 
114 
115 namespace ifc_service
116 {
117 
118 inline const Service &
service_cast(const CodeEntity & i_ce)119 service_cast( const CodeEntity &  i_ce )
120 {
121     csv_assert( i_ce.AryClass() == Service::class_id );
122 	return static_cast< const Service& >(i_ce);
123 }
124 
125 void
Get_IncludedServices(Dyn_StdConstIterator<CommentedRelation> & o_result,const CodeEntity & i_ce)126 attr::Get_IncludedServices( Dyn_StdConstIterator<CommentedRelation> & o_result,
127                             const CodeEntity &						  i_ce )
128 {
129     o_result = new SCI_Vector<CommentedRelation>( service_cast(i_ce).aIncludedServices );
130 }
131 
132 void
Get_ExportedInterfaces(Dyn_StdConstIterator<CommentedRelation> & o_result,const CodeEntity & i_ce)133 attr::Get_ExportedInterfaces( Dyn_StdConstIterator<CommentedRelation> & o_result,
134                               const CodeEntity &							i_ce )
135 {
136     o_result = new SCI_Vector<CommentedRelation>( service_cast(i_ce).aSupportedInterfaces );
137 }
138 
139 void
Get_Properties(Dyn_CeIterator & o_result,const CodeEntity & i_ce)140 attr::Get_Properties( Dyn_CeIterator &    o_result,
141                       const CodeEntity &  i_ce )
142 {
143     o_result = new SCI_Vector<Ce_id>( service_cast(i_ce).aProperties );
144 }
145 
146 void
Get_IncludingServices(Dyn_CeIterator & o_result,const CodeEntity & i_ce)147 xref::Get_IncludingServices( Dyn_CeIterator &    o_result,
148                              const CodeEntity &  i_ce )
149 {
150     o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(service_2s_IncludingServices));
151 }
152 
153 void
Get_InstantiatingSingletons(Dyn_CeIterator & o_result,const CodeEntity & i_ce)154 xref::Get_InstantiatingSingletons( Dyn_CeIterator &    o_result,
155                                    const CodeEntity &  i_ce )
156 {
157     o_result = new SCI_Vector<Ce_id>(i_ce.Secondaries().List(service_2s_InstantiatingSingletons));
158 }
159 
160 
161 } // namespace ifc_service
162 
163 
164 }   //  namespace   idl
165 }   //  namespace   ary
166