1 // =================================
 2 // Copyright (c) 2020 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #include <sngcpp/symbols/EnumerationSymbol.hpp>
 7 #include <soulng/util/Unicode.hpp>
 8 
 9 namespace sngcpp { namespace symbols {
10 
11 using namespace soulng::unicode;
12 
13 EnumTypeSymbol::EnumTypeSymbol(const Span& span_const std::u32string& name_EnumKey enumKey_) : TypeSymbol(span_name_)enumKey(enumKey_)baseType(nullptr)
14 {
15 }
16 
17 std::std::unique_ptr<sngxml::dom::Element>EnumTypeSymbol::CreateElement()
18 {
19     std::unique_ptr<sngxml::dom::Element> enumTypeElement(new sngxml::dom::Element(U"enumType"));
20     enumTypeElement->SetAttribute(U"key"ToString(enumKey));
21     if (baseType)
22     {
23         enumTypeElement->SetAttribute(U"baseType"baseType->Id());
24     }
25     if (GetSpan().Valid())
26     {
27         enumTypeElement->SetAttribute(U"definitionFile"ToUtf32(fileName));
28         enumTypeElement->SetAttribute(U"definitionLine"ToUtf32(std::to_string(GetSpan().line)));
29         enumTypeElement->SetAttribute(U"definitionFileId"fileId);
30     }
31     return enumTypeElement;
32 }
33 
34 EnumeratorSymbol::EnumeratorSymbol(const Span& span_const std::u32string& name_const std::u32string& value_) : Symbol(span_name_)value(value_)
35 {
36 }
37 
38 std::std::unique_ptr<sngxml::dom::Element>EnumeratorSymbol::CreateElement()
39 {
40     std::unique_ptr<sngxml::dom::Element> enumeratorElement(new sngxml::dom::Element(U"enumerator"));
41     enumeratorElement->SetAttribute(U"value"value);
42     return enumeratorElement;
43 }
44 
45 } } // namespace sngcpp::symbols