From 781cafd38ab394147c387afcd7f9c6f38dbb1656 Mon Sep 17 00:00:00 2001 From: andre ebersold Date: Tue, 18 Jun 2024 21:52:04 +0200 Subject: [PATCH] Started register elements for the parser. --- reqif.cpp | 6 ++- src/xml/reqif/CMakeLists.txt | 7 ++- src/xml/reqif/reqif_elements_parser.cpp | 2 +- src/xml/reqif/reqif_elements_registration.cpp | 51 +++++++++++++++++++ 4 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 src/xml/reqif/reqif_elements_registration.cpp diff --git a/reqif.cpp b/reqif.cpp index c4d0fa0..0747d22 100644 --- a/reqif.cpp +++ b/reqif.cpp @@ -22,8 +22,9 @@ //#include #include - -//#include +namespace reqif { +void register_basic_elements(); +} void parse(const std::string &file) { @@ -48,6 +49,7 @@ int main(int argc,char **argv) if (argc > 1) { std::string fn(argv[1]); + reqif::register_basic_elements(); std::cout<<" Try parsing "<(new DescriptionParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) diff --git a/src/xml/reqif/reqif_elements_registration.cpp b/src/xml/reqif/reqif_elements_registration.cpp new file mode 100644 index 0000000..6da3c34 --- /dev/null +++ b/src/xml/reqif/reqif_elements_registration.cpp @@ -0,0 +1,51 @@ + +#include "reqif/reqif_element.h" +#include "../element_factory.h" +namespace reqif +{ + +void register_basic_elements() +{ + +#define REGISTER(cls,name,tag) \ + reqif::ElementFactoryRegistration< cls > _##cls ## name(#tag); +#define REGISTER_FILEOP(cls,tag) \ + reqif::ElementFactoryRegistration _##cls(#tag); + + + REGISTER(Element,REQ_IF,REQ-IF) + REGISTER(Element,THE_HEADER,THE-HEADER) + REGISTER(Element,REQ_IF_HEADER,REQ-IF-HEADER) + REGISTER(Element,REQ_IF_TOOL_ID,REQ-IF-TOOL-ID) + REGISTER(Element,REQ_IF_VERSION,REQ-IF-VERSION) + REGISTER(Element,TITLE,TITLE) + REGISTER(Element,CORE_CONTENT,CORE-CONTENT) + REGISTER(Element,REQ_IF_CONTENT,REQ-IF-CONTENT) + + REGISTER(Element,DATATYPES,DATATYPES) + REGISTER(Element,DATATYPE_DEFINITION_STRING,DATATYPE-DEFINITION-STRING) + REGISTER(Element,DATATYPE_DEFINITION_DATE,DATATYPE-DEFINITION-DATE) + REGISTER(Element,DATATYPE_DEFINITION_REAL,DATATYPE-DEFINITION-REAL) + REGISTER(Element,DATATYPE_DEFINITION_INTEGER,DATATYPE-DEFINITION-INTEGER) + REGISTER(Element,DATATYPE_DEFINITION_XHTML,DATATYPE-DEFINITION-XHTML) + + REGISTER(Element,SPEC_TYPES,SPEC-TYPES) + REGISTER(Element,SPECIFICATION_TYPE,SPECIFICATION-TYPE) + REGISTER(Element,SPEC_OBJECT_TYPE,SPEC-OBJECT-TYPE) + REGISTER(Element,SPEC_RELATION_TYPE,SPEC-RELATION-TYPE) + + /* Under SPEC-OBJECT-TYPE */ + REGISTER(Element,SPEC_ATTRIBUTES,SPEC-ATTRIBUTES) + REGISTER(Element,ATTRIBUTE_DEFINITION_STRING,ATTRIBUTE-DEFINITION-STRING) + REGISTER(Element,ATTRIBUTE_DEFINITION_INTEGER,ATTRIBUTE-DEFINITION-INTEGER) + REGISTER(Element,ATTRIBUTE_DEFINITION_DATE,ATTRIBUTE-DEFINITION-DATE) + REGISTER(Element,ATTRIBUTE_DEFINITION_XHTML,ATTRIBUTE-DEFINITION-XHTML) + + /* Under XHTML we have HTML tags */ + REGISTER(Element,div,div) + REGISTER(Element,br,br) + REGISTER(Element,span,span) +} + + +} -- 2.30.2