1 ///////////////////////////////////////////////////////////////////////////////
2 // Copyright (c) 2000-2014 Ericsson Telecom AB
3 // All rights reserved. This program and the accompanying materials
4 // are made available under the terms of the Eclipse Public License v1.0
5 // which accompanies this distribution, and is available at
6 // http://www.eclipse.org/legal/epl-v10.html
7 ///////////////////////////////////////////////////////////////////////////////
13 // =================================
15 // =================================
17 EnumItem::EnumItem(Identifier
*p_name
, Value
*p_value
)
18 : Node(), Location(), name(p_name
), value(p_value
)
20 if (!p_name
) FATAL_ERROR("NULL parameter: Common::EnumItem::EnumItem()");
23 EnumItem::EnumItem(const EnumItem
& p
)
24 : Node(p
), Location(p
)
27 value
=p
.value
?p
.value
->clone():0;
36 EnumItem
*EnumItem::clone() const
38 return new EnumItem(*this);
41 void EnumItem::set_fullname(const string
& p_fullname
)
43 Node::set_fullname(p_fullname
);
44 if(value
) value
->set_fullname(p_fullname
);
47 void EnumItem::set_my_scope(Scope
*p_scope
)
49 if(value
) value
->set_my_scope(p_scope
);
52 void EnumItem::set_value(Value
*p_value
)
54 if(!p_value
) FATAL_ERROR("NULL parameter: Common::EnumItem::set_value()");
55 if(value
) FATAL_ERROR("Common::EnumItem::set_value()");
59 void EnumItem::set_text(const string
& p_text
)
64 string
EnumItem::get_name_hacked(Type
*p_type
) const
66 if (p_type
->is_asn1()) {
67 string
hack_asnname(Identifier::name_2_asn(p_type
->get_genname_own()));
68 hack_asnname
+= "-enum-";
69 hack_asnname
+= name
->get_asnname();
70 return Identifier::asn_2_name(hack_asnname
);
72 string
hack_ttcnname(Identifier::name_2_ttcn(p_type
->get_genname_own()));
73 hack_ttcnname
+= "_enum_";
74 hack_ttcnname
+= name
->get_ttcnname();
75 return Identifier::ttcn_2_name(hack_ttcnname
);
79 void EnumItem::dump(unsigned level
) const
83 DEBUG(level
, "with value:");
88 // =================================
90 // =================================
92 EnumItems::EnumItems(const EnumItems
& p
)
93 : Node(p
), my_scope(0)
95 for (size_t i
= 0; i
< p
.eis_v
.size(); i
++) add_ei(p
.eis_v
[i
]->clone());
98 EnumItems::~EnumItems()
100 for(size_t i
= 0; i
< eis_v
.size(); i
++) delete eis_v
[i
];
105 void EnumItems::release_eis()
111 EnumItems
* EnumItems::clone() const
113 return new EnumItems(*this);
116 void EnumItems::set_fullname(const string
& p_fullname
)
118 Node::set_fullname(p_fullname
);
119 for (size_t i
= 0; i
< eis_v
.size(); i
++) {
120 EnumItem
*ei
= eis_v
[i
];
121 ei
->set_fullname(p_fullname
+ "." + ei
->get_name().get_dispname());
125 void EnumItems::set_my_scope(Scope
*p_scope
)
128 for(size_t i
= 0; i
< eis_v
.size(); i
++)
129 eis_v
[i
]->set_my_scope(p_scope
);
132 void EnumItems::add_ei(EnumItem
*p_ei
)
135 FATAL_ERROR("NULL parameter: Common::EnumItems::add_ei()");
137 const Identifier
& id
= p_ei
->get_name();
138 const string
& name
= id
.get_name();
139 if (!eis_m
.has_key(name
)) eis_m
.add(name
, p_ei
);
140 p_ei
->set_fullname(get_fullname()+"."+id
.get_dispname());
141 p_ei
->set_my_scope(my_scope
);
144 void EnumItems::dump(unsigned level
) const
146 for (size_t i
= 0; i
< eis_v
.size(); i
++) eis_v
[i
]->dump(level
);
This page took 0.035568 seconds and 5 git commands to generate.