1 : //==============================================================================
2 : // File <$/src/cpp/dev/idlc/struct.cpp>
3 : // This file is part of YaOrb : Yet Another Object Request Broker,
4 : // Copyright (c) 2000-2003, Marc Alff.
5 : //
6 : // This program is free software; you can redistribute it and/or
7 : // modify it under the terms of the GNU General Public License
8 : // as published by the Free Software Foundation; either version 2
9 : // of the License, or (at your option) any later version.
10 : //
11 : // This program is distributed in the hope that it will be useful,
12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : // GNU General Public License for more details.
15 : //
16 : // You should have received a copy of the GNU General Public License
17 : // along with this program; if not, write to the Free Software
18 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 : //
20 : //==============================================================================
21 :
22 : #include "src/cpp/prod/tool/DEVELOPMENT.h"
23 : #include "src/cpp/prod/tool/Assert.h"
24 :
25 : #include "src/cpp/dev/idlc/struct.h"
26 :
27 : // Struct
28 :
29 364 : Struct::Struct(const String& name)
30 364 : : Symbol(name, structSymbol), _items()
31 : {
32 0 : }
33 :
34 364 : Struct::~Struct()
35 : {
36 : _items.clear() ; // NOT clearAndDestroy : done by sym_tab.
37 0 : }
38 :
39 1755 : void Struct::addMember(Member *m)
40 : {
41 : ASSERT(m != NULL) ;
42 1755 : const String& name = m->GetName() ;
43 1755 : if (findMemberByName(name) != NULL)
44 : {
45 0 : NON_DEV("Error message") ;
46 : }
47 : else
48 : {
49 : _items.addTail(m) ;
50 : }
51 : }
52 :
53 86 : const MemberList& Struct::GetMembers(void) const
54 : {
55 : return _items ;
56 : }
57 :
58 1755 : Member* Struct::findMemberByName(const String& name) const
59 : {
60 : Member *item = NULL ;
61 :
62 : MemberListIt it(_items) ;
63 8709 : while (it.GetNext())
64 : {
65 : item = it.GetItem() ;
66 5199 : if (item->GetName() == name)
67 : {
68 : return item ;
69 : }
70 : }
71 :
72 : return NULL ;
73 63 : }
74 63 :
|