Skip to content

Commit 23d2dab

Browse files
authored
Fix custom namespace for cpp (#44)
- Update generated cpp files created by cimgen - Fix custom namespace in cpp reader (e.g. entsoe in CGMES2, eu in CGMES3)) - Fix custom namespace in cpp writer (e.g. "entsoe" in CGMES2, "eu" in CGMES3; using new generated functions getClassNamespaceUrl and getAttr> - Add function isAssignableFrom to fix parsing objects with changing types (e.g. first as Equipment, than as PowerTransformer) - Add writeFile and writeCim to CIMWriter (write to just one file/stream, regardless of profiles) - Fix custom namespace in cpp reader (e.g. entsoe in CGMES2, eu in CGMES3) - Fix custom namespace in cpp writer (e.g. "entsoe" in CGMES2, "eu" in CGMES3; using new generated functions getClassNamespaceUrl and getAttributeNamespaceUrl) - Fix isClassMatchingProfile in cpp writer (class is also matching if it contains attributes for the profile) - Fix parsing objects with changing types (e.g. first as Equipment, than as PowerTransformer) - Optimize reader performance (change Task::resolve() to const, don't erase tasks in resolveRDFRelations) - Add unit tests - Add installation of Boost to github workflows - Add running of unit tests to build-src workflows - Add installation of Boost to Dockerfile for packaging with cpack in release workflow - Fix unit tests in github workflows - Add missing documentation of parameter objList in CIMWriter.hpp
2 parents 5ff7b68 + df65950 commit 23d2dab

3,412 files changed

Lines changed: 173623 additions & 71867 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/Dockerfile.dev

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ RUN dnf -y install \
1212
graphviz \
1313
python3-pip \
1414
rpmdevtools \
15-
libxml2-devel
15+
libxml2-devel \
16+
boost-devel

.github/workflows/build-doc.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ jobs:
1818
steps:
1919
- name: Checkout Repository
2020
uses: actions/checkout@v4
21+
- name: Install Boost
22+
shell: bash
23+
run: sudo apt-get install libboost-filesystem-dev libboost-system-dev libboost-test-dev
2124
- name: Install Doxygen
2225
shell: bash
2326
run: sudo apt-get install doxygen
@@ -26,18 +29,18 @@ jobs:
2629
run: sudo apt-get install graphviz
2730
- name: Create Build Environment
2831
shell: bash
29-
run: cmake -E make_directory ${{runner.workspace}}/libcimpp/build/${{matrix.schema}}
32+
run: cmake -E make_directory ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}
3033
- name: Configure CMake and compile
3134
shell: bash
32-
working-directory: ${{runner.workspace}}/libcimpp/build/${{matrix.schema}}/
35+
working-directory: ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}/
3336
run: |
34-
cmake ../.. -DUSE_CIM_VERSION=${{matrix.schema}}
37+
cmake .. -DUSE_CIM_VERSION=${{matrix.schema}}
3538
make -j4 doc
3639
- name: Upload Artifact
3740
uses: actions/upload-artifact@v4
3841
with:
3942
name: doc_${{matrix.schema}}
40-
path: ${{runner.workspace}}/libcimpp/build/${{matrix.schema}}/doc/html
43+
path: ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}/doc/html
4144

4245
build-gh-pages-artifact:
4346
name: Build and Upload Artifact github-pages

.github/workflows/build-src.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,18 @@ jobs:
1515
steps:
1616
- name: Checkout Repository
1717
uses: actions/checkout@v4
18+
- name: Install Boost
19+
shell: bash
20+
run: sudo apt-get install libboost-filesystem-dev libboost-system-dev libboost-test-dev
1821
- name: Create Build Environment
19-
run: cmake -E make_directory ${{runner.workspace}}/libcimpp/build/${{matrix.schema}}
22+
run: cmake -E make_directory ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}
2023
- name: Configure CMake and compile
2124
shell: bash
22-
working-directory: ${{runner.workspace}}/libcimpp/build/${{matrix.schema}}/
25+
working-directory: ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}/
2326
run: |
24-
cmake ../.. -DUSE_CIM_VERSION=${{matrix.schema}}
27+
cmake .. -DUSE_CIM_VERSION=${{matrix.schema}}
2528
make -j4
29+
- name: Run unit tests
30+
shell: bash
31+
working-directory: ${{runner.workspace}}/libcimpp/build_${{matrix.schema}}/
32+
run: ctest --output-on-failure

CGMES_2.4.13_18DEC2013/ACDCConverter.cpp

Lines changed: 130 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,85 @@ Generated from the CGMES files via cimgen: https://github.com/sogno-platform/cim
1313

1414
using namespace CIMPP;
1515

16+
static const CimClassDetails& getCimClassDetails()
17+
{
18+
static const CimClassDetails ClassDetails = CimClassDetails(
19+
ACDCConverter(),
20+
"http://iec.ch/TC57/2013/CIM-schema-cim16#",
21+
{
22+
CGMESProfile::EQ,
23+
CGMESProfile::SV,
24+
CGMESProfile::SSH,
25+
},
26+
CGMESProfile::EQ
27+
);
28+
return ClassDetails;
29+
}
30+
31+
static const std::map<std::string, AttrDetails>& getClassAttrDetailsMap()
32+
{
33+
static const std::map<std::string, AttrDetails> ClassAttrDetailsMap =
34+
{
35+
{ "ACDCConverter.DCTerminals", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
36+
{ "ACDCConverter.PccTerminal", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
37+
{ "ACDCConverter.baseS", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
38+
{ "ACDCConverter.idc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SV, } } },
39+
{ "ACDCConverter.idleLoss", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
40+
{ "ACDCConverter.maxUdc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
41+
{ "ACDCConverter.minUdc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
42+
{ "ACDCConverter.nomUdc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
43+
{ "ACDCConverter.numberOfValves", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
44+
{ "ACDCConverter.p", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SSH, } } },
45+
{ "ACDCConverter.poleLossP", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SV, } } },
46+
{ "ACDCConverter.q", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SSH, } } },
47+
{ "ACDCConverter.ratedUdc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
48+
{ "ACDCConverter.resistiveLoss", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
49+
{ "ACDCConverter.switchingLoss", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
50+
{ "ACDCConverter.targetPpcc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SSH, } } },
51+
{ "ACDCConverter.targetUdc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SSH, } } },
52+
{ "ACDCConverter.uc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SV, } } },
53+
{ "ACDCConverter.udc", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::SV, } } },
54+
{ "ACDCConverter.valveU0", { "http://iec.ch/TC57/2013/CIM-schema-cim16#", { CGMESProfile::EQ, } } },
55+
};
56+
return ClassAttrDetailsMap;
57+
}
58+
1659
ACDCConverter::ACDCConverter() : PccTerminal(nullptr) {}
1760
ACDCConverter::~ACDCConverter() {}
1861

19-
static const std::list<CGMESProfile> PossibleProfilesForClass =
20-
{
21-
CGMESProfile::EQ,
22-
CGMESProfile::SV,
23-
CGMESProfile::SSH,
24-
};
25-
26-
static const std::map<std::string, std::list<CGMESProfile>> PossibleProfilesForAttributes =
27-
{
28-
{ "cim:ACDCConverter.DCTerminals", { CGMESProfile::EQ, } },
29-
{ "cim:ACDCConverter.PccTerminal", { CGMESProfile::EQ, } },
30-
{ "cim:ACDCConverter.baseS", { CGMESProfile::EQ, } },
31-
{ "cim:ACDCConverter.idc", { CGMESProfile::SV, } },
32-
{ "cim:ACDCConverter.idleLoss", { CGMESProfile::EQ, } },
33-
{ "cim:ACDCConverter.maxUdc", { CGMESProfile::EQ, } },
34-
{ "cim:ACDCConverter.minUdc", { CGMESProfile::EQ, } },
35-
{ "cim:ACDCConverter.nomUdc", { CGMESProfile::EQ, } },
36-
{ "cim:ACDCConverter.numberOfValves", { CGMESProfile::EQ, } },
37-
{ "cim:ACDCConverter.p", { CGMESProfile::SSH, } },
38-
{ "cim:ACDCConverter.poleLossP", { CGMESProfile::SV, } },
39-
{ "cim:ACDCConverter.q", { CGMESProfile::SSH, } },
40-
{ "cim:ACDCConverter.ratedUdc", { CGMESProfile::EQ, } },
41-
{ "cim:ACDCConverter.resistiveLoss", { CGMESProfile::EQ, } },
42-
{ "cim:ACDCConverter.switchingLoss", { CGMESProfile::EQ, } },
43-
{ "cim:ACDCConverter.targetPpcc", { CGMESProfile::SSH, } },
44-
{ "cim:ACDCConverter.targetUdc", { CGMESProfile::SSH, } },
45-
{ "cim:ACDCConverter.uc", { CGMESProfile::SV, } },
46-
{ "cim:ACDCConverter.udc", { CGMESProfile::SV, } },
47-
{ "cim:ACDCConverter.valveU0", { CGMESProfile::EQ, } },
48-
};
49-
50-
std::list<CGMESProfile>
51-
ACDCConverter::getPossibleProfilesForClass() const
52-
{
53-
return PossibleProfilesForClass;
54-
}
55-
56-
std::map<std::string, std::list<CGMESProfile>>
57-
ACDCConverter::getPossibleProfilesForAttributes() const
58-
{
59-
auto map = PossibleProfilesForAttributes;
60-
auto&& parent_map = ConductingEquipment::getPossibleProfilesForAttributes();
61-
map.insert(parent_map.begin(), parent_map.end());
62-
return map;
62+
const std::list<std::string>& ACDCConverter::getAttributeNames() const
63+
{
64+
return getCimClassDetails().AttrNamesList;
65+
}
66+
67+
const std::string& ACDCConverter::getClassNamespaceUrl() const
68+
{
69+
return getCimClassDetails().ClassNamespace;
70+
}
71+
72+
const std::string& ACDCConverter::getAttributeNamespaceUrl(const std::string& attrName) const
73+
{
74+
return getCimClassDetails().getAttributeNamespaceUrl(attrName);
75+
}
76+
77+
const std::list<CGMESProfile>& ACDCConverter::getPossibleProfiles() const
78+
{
79+
return getCimClassDetails().PossibleProfiles;
80+
}
81+
82+
const CGMESProfile& ACDCConverter::getRecommendedProfile() const
83+
{
84+
return getCimClassDetails().RecommendedProfile;
85+
}
86+
87+
const std::list<CGMESProfile>& ACDCConverter::getPossibleAttributeProfiles(const std::string& attrName) const
88+
{
89+
return getCimClassDetails().getPossibleAttributeProfiles(attrName);
90+
}
91+
92+
const std::list<CGMESProfile>& ACDCConverter::getPossibleProfilesIncludingAttributes() const
93+
{
94+
return getCimClassDetails().PossibleProfilesIncludingAttributes;
6395
}
6496

6597
bool assign_ACDCConverterDCTerminal_DCConductingEquipment(BaseClass*, BaseClass*);
@@ -641,76 +673,90 @@ const char* ACDCConverter::debugString() const
641673

642674
void ACDCConverter::addConstructToMap(std::unordered_map<std::string, BaseClass* (*)()>& factory_map)
643675
{
644-
factory_map.emplace("cim:ACDCConverter", &ACDCConverter_factory);
676+
factory_map.emplace("ACDCConverter", &ACDCConverter_factory);
645677
}
646678

647679
void ACDCConverter::addPrimitiveAssignFnsToMap(std::unordered_map<std::string, assign_function>& assign_map)
648680
{
649-
assign_map.emplace("cim:ACDCConverter.baseS", &assign_ACDCConverter_baseS);
650-
assign_map.emplace("cim:ACDCConverter.idc", &assign_ACDCConverter_idc);
651-
assign_map.emplace("cim:ACDCConverter.idleLoss", &assign_ACDCConverter_idleLoss);
652-
assign_map.emplace("cim:ACDCConverter.maxUdc", &assign_ACDCConverter_maxUdc);
653-
assign_map.emplace("cim:ACDCConverter.minUdc", &assign_ACDCConverter_minUdc);
654-
assign_map.emplace("cim:ACDCConverter.nomUdc", &assign_ACDCConverter_nomUdc);
655-
assign_map.emplace("cim:ACDCConverter.numberOfValves", &assign_ACDCConverter_numberOfValves);
656-
assign_map.emplace("cim:ACDCConverter.p", &assign_ACDCConverter_p);
657-
assign_map.emplace("cim:ACDCConverter.poleLossP", &assign_ACDCConverter_poleLossP);
658-
assign_map.emplace("cim:ACDCConverter.q", &assign_ACDCConverter_q);
659-
assign_map.emplace("cim:ACDCConverter.ratedUdc", &assign_ACDCConverter_ratedUdc);
660-
assign_map.emplace("cim:ACDCConverter.resistiveLoss", &assign_ACDCConverter_resistiveLoss);
661-
assign_map.emplace("cim:ACDCConverter.switchingLoss", &assign_ACDCConverter_switchingLoss);
662-
assign_map.emplace("cim:ACDCConverter.targetPpcc", &assign_ACDCConverter_targetPpcc);
663-
assign_map.emplace("cim:ACDCConverter.targetUdc", &assign_ACDCConverter_targetUdc);
664-
assign_map.emplace("cim:ACDCConverter.uc", &assign_ACDCConverter_uc);
665-
assign_map.emplace("cim:ACDCConverter.udc", &assign_ACDCConverter_udc);
666-
assign_map.emplace("cim:ACDCConverter.valveU0", &assign_ACDCConverter_valveU0);
681+
assign_map.emplace("ACDCConverter.baseS", &assign_ACDCConverter_baseS);
682+
assign_map.emplace("ACDCConverter.idc", &assign_ACDCConverter_idc);
683+
assign_map.emplace("ACDCConverter.idleLoss", &assign_ACDCConverter_idleLoss);
684+
assign_map.emplace("ACDCConverter.maxUdc", &assign_ACDCConverter_maxUdc);
685+
assign_map.emplace("ACDCConverter.minUdc", &assign_ACDCConverter_minUdc);
686+
assign_map.emplace("ACDCConverter.nomUdc", &assign_ACDCConverter_nomUdc);
687+
assign_map.emplace("ACDCConverter.numberOfValves", &assign_ACDCConverter_numberOfValves);
688+
assign_map.emplace("ACDCConverter.p", &assign_ACDCConverter_p);
689+
assign_map.emplace("ACDCConverter.poleLossP", &assign_ACDCConverter_poleLossP);
690+
assign_map.emplace("ACDCConverter.q", &assign_ACDCConverter_q);
691+
assign_map.emplace("ACDCConverter.ratedUdc", &assign_ACDCConverter_ratedUdc);
692+
assign_map.emplace("ACDCConverter.resistiveLoss", &assign_ACDCConverter_resistiveLoss);
693+
assign_map.emplace("ACDCConverter.switchingLoss", &assign_ACDCConverter_switchingLoss);
694+
assign_map.emplace("ACDCConverter.targetPpcc", &assign_ACDCConverter_targetPpcc);
695+
assign_map.emplace("ACDCConverter.targetUdc", &assign_ACDCConverter_targetUdc);
696+
assign_map.emplace("ACDCConverter.uc", &assign_ACDCConverter_uc);
697+
assign_map.emplace("ACDCConverter.udc", &assign_ACDCConverter_udc);
698+
assign_map.emplace("ACDCConverter.valveU0", &assign_ACDCConverter_valveU0);
667699
}
668700

669701
void ACDCConverter::addClassAssignFnsToMap(std::unordered_map<std::string, class_assign_function>& assign_map)
670702
{
671-
assign_map.emplace("cim:ACDCConverter.DCTerminals", &assign_ACDCConverter_DCTerminals);
672-
assign_map.emplace("cim:ACDCConverter.PccTerminal", &assign_ACDCConverter_PccTerminal);
703+
assign_map.emplace("ACDCConverter.DCTerminals", &assign_ACDCConverter_DCTerminals);
704+
assign_map.emplace("ACDCConverter.PccTerminal", &assign_ACDCConverter_PccTerminal);
673705
}
674706

675707
void ACDCConverter::addPrimitiveGetFnsToMap(std::map<std::string, get_function>& get_map) const
676708
{
677709
ConductingEquipment::addPrimitiveGetFnsToMap(get_map);
678-
get_map.emplace("cim:ACDCConverter.baseS", &get_ACDCConverter_baseS);
679-
get_map.emplace("cim:ACDCConverter.idc", &get_ACDCConverter_idc);
680-
get_map.emplace("cim:ACDCConverter.idleLoss", &get_ACDCConverter_idleLoss);
681-
get_map.emplace("cim:ACDCConverter.maxUdc", &get_ACDCConverter_maxUdc);
682-
get_map.emplace("cim:ACDCConverter.minUdc", &get_ACDCConverter_minUdc);
683-
get_map.emplace("cim:ACDCConverter.nomUdc", &get_ACDCConverter_nomUdc);
684-
get_map.emplace("cim:ACDCConverter.numberOfValves", &get_ACDCConverter_numberOfValves);
685-
get_map.emplace("cim:ACDCConverter.p", &get_ACDCConverter_p);
686-
get_map.emplace("cim:ACDCConverter.poleLossP", &get_ACDCConverter_poleLossP);
687-
get_map.emplace("cim:ACDCConverter.q", &get_ACDCConverter_q);
688-
get_map.emplace("cim:ACDCConverter.ratedUdc", &get_ACDCConverter_ratedUdc);
689-
get_map.emplace("cim:ACDCConverter.resistiveLoss", &get_ACDCConverter_resistiveLoss);
690-
get_map.emplace("cim:ACDCConverter.switchingLoss", &get_ACDCConverter_switchingLoss);
691-
get_map.emplace("cim:ACDCConverter.targetPpcc", &get_ACDCConverter_targetPpcc);
692-
get_map.emplace("cim:ACDCConverter.targetUdc", &get_ACDCConverter_targetUdc);
693-
get_map.emplace("cim:ACDCConverter.uc", &get_ACDCConverter_uc);
694-
get_map.emplace("cim:ACDCConverter.udc", &get_ACDCConverter_udc);
695-
get_map.emplace("cim:ACDCConverter.valveU0", &get_ACDCConverter_valveU0);
710+
get_map.emplace("ACDCConverter.baseS", &get_ACDCConverter_baseS);
711+
get_map.emplace("ACDCConverter.idc", &get_ACDCConverter_idc);
712+
get_map.emplace("ACDCConverter.idleLoss", &get_ACDCConverter_idleLoss);
713+
get_map.emplace("ACDCConverter.maxUdc", &get_ACDCConverter_maxUdc);
714+
get_map.emplace("ACDCConverter.minUdc", &get_ACDCConverter_minUdc);
715+
get_map.emplace("ACDCConverter.nomUdc", &get_ACDCConverter_nomUdc);
716+
get_map.emplace("ACDCConverter.numberOfValves", &get_ACDCConverter_numberOfValves);
717+
get_map.emplace("ACDCConverter.p", &get_ACDCConverter_p);
718+
get_map.emplace("ACDCConverter.poleLossP", &get_ACDCConverter_poleLossP);
719+
get_map.emplace("ACDCConverter.q", &get_ACDCConverter_q);
720+
get_map.emplace("ACDCConverter.ratedUdc", &get_ACDCConverter_ratedUdc);
721+
get_map.emplace("ACDCConverter.resistiveLoss", &get_ACDCConverter_resistiveLoss);
722+
get_map.emplace("ACDCConverter.switchingLoss", &get_ACDCConverter_switchingLoss);
723+
get_map.emplace("ACDCConverter.targetPpcc", &get_ACDCConverter_targetPpcc);
724+
get_map.emplace("ACDCConverter.targetUdc", &get_ACDCConverter_targetUdc);
725+
get_map.emplace("ACDCConverter.uc", &get_ACDCConverter_uc);
726+
get_map.emplace("ACDCConverter.udc", &get_ACDCConverter_udc);
727+
get_map.emplace("ACDCConverter.valveU0", &get_ACDCConverter_valveU0);
696728
}
697729

698730
void ACDCConverter::addClassGetFnsToMap(std::map<std::string, class_get_function>& get_map) const
699731
{
700732
ConductingEquipment::addClassGetFnsToMap(get_map);
701-
get_map.emplace("cim:ACDCConverter.PccTerminal", &get_ACDCConverter_PccTerminal);
733+
get_map.emplace("ACDCConverter.PccTerminal", &get_ACDCConverter_PccTerminal);
702734
}
703735

704736
void ACDCConverter::addEnumGetFnsToMap(std::map<std::string, get_function>& get_map) const
705737
{
706738
ConductingEquipment::addEnumGetFnsToMap(get_map);
707739
}
708740

741+
bool ACDCConverter::isAssignableFrom(BaseClass* otherObject) const
742+
{
743+
return std::string(debugString()) == "ACDCConverter" &&
744+
dynamic_cast<ACDCConverter*>(otherObject) != nullptr;
745+
}
746+
709747
const BaseClassDefiner ACDCConverter::declare()
710748
{
711749
return BaseClassDefiner(ACDCConverter::addConstructToMap, ACDCConverter::addPrimitiveAssignFnsToMap, ACDCConverter::addClassAssignFnsToMap, ACDCConverter::debugName);
712750
}
713751

752+
std::map<std::string, AttrDetails> ACDCConverter::allAttrDetailsMap() const
753+
{
754+
auto map = getClassAttrDetailsMap();
755+
const auto& parent_map = ConductingEquipment::allAttrDetailsMap();
756+
map.insert(parent_map.begin(), parent_map.end());
757+
return map;
758+
}
759+
714760
namespace CIMPP
715761
{
716762
BaseClass* ACDCConverter_factory()

CGMES_2.4.13_18DEC2013/ACDCConverter.hpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Generated from the CGMES files via cimgen: https://github.com/sogno-platform/cim
1212
#include "ConductingEquipment.hpp"
1313
#include "BaseClassDefiner.hpp"
1414
#include "CGMESProfile.hpp"
15+
#include "CimClassDetails.hpp"
1516
#include "ActivePower.hpp"
1617
#include "ApparentPower.hpp"
1718
#include "CurrentFlow.hpp"
@@ -97,16 +98,28 @@ namespace CIMPP
9798
static const char debugName[];
9899
const char* debugString() const override;
99100

100-
std::list<CGMESProfile> getPossibleProfilesForClass() const override;
101-
std::map<std::string, std::list<CGMESProfile>> getPossibleProfilesForAttributes() const override;
101+
const std::list<std::string>& getAttributeNames() const override;
102+
103+
const std::string& getClassNamespaceUrl() const override;
104+
const std::string& getAttributeNamespaceUrl(const std::string& attrName) const override;
105+
106+
const std::list<CGMESProfile>& getPossibleProfiles() const override;
107+
const CGMESProfile& getRecommendedProfile() const override;
108+
const std::list<CGMESProfile>& getPossibleAttributeProfiles(const std::string& attrName) const override;
109+
const std::list<CGMESProfile>& getPossibleProfilesIncludingAttributes() const override;
102110

103111
static void addConstructToMap(std::unordered_map<std::string, BaseClass* (*)()>& factory_map);
104112
static void addPrimitiveAssignFnsToMap(std::unordered_map<std::string, assign_function>& assign_map);
105113
static void addClassAssignFnsToMap(std::unordered_map<std::string, class_assign_function>& assign_map);
106114
void addPrimitiveGetFnsToMap(std::map<std::string, get_function>& get_map) const override;
107115
void addClassGetFnsToMap(std::map<std::string, class_get_function>& get_map) const override;
108116
void addEnumGetFnsToMap(std::map<std::string, get_function>& get_map) const override;
117+
118+
bool isAssignableFrom(BaseClass* otherObject) const override;
109119
static const BaseClassDefiner declare();
120+
121+
protected:
122+
std::map<std::string, AttrDetails> allAttrDetailsMap() const override;
110123
};
111124

112125
BaseClass* ACDCConverter_factory();

0 commit comments

Comments
 (0)