Started register elements for the parser.
authorandre ebersold <andre.ebersold@siemens.com>
Tue, 18 Jun 2024 19:52:04 +0000 (21:52 +0200)
committerandre ebersold <andre.ebersold@siemens.com>
Tue, 18 Jun 2024 19:52:04 +0000 (21:52 +0200)
reqif.cpp
src/xml/reqif/CMakeLists.txt
src/xml/reqif/reqif_elements_parser.cpp
src/xml/reqif/reqif_elements_registration.cpp [new file with mode: 0644]

index c4d0fa09d84df75a17029918d1ee8aca52a968ca..0747d22e23c14f2167beab3669e320813bfcc8ba 100644 (file)
--- a/reqif.cpp
+++ b/reqif.cpp
@@ -22,8 +22,9 @@
 //#include <project.h>
 
 #include <properties/property_file.h>
-
-//#include <antcc/antcc.h>
+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 "<<fn<<std::endl;
     parse(fn);
 
index 85c3f6ec48a4d804692b8cadc35b2606fd6f1a43..814d1042329bbc2de3dc658c5db9ac32a296e4bf 100644 (file)
@@ -18,10 +18,9 @@ INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR})
 ADD_LIBRARY(reqif_parser STATIC 
        document.cpp
        ../element_factory.cpp
-               #                ant_elements_parser.cpp 
-               #                ant_elements_parser_root.cpp 
-reqif_elements_parser.cpp
-reqif_elements_parser_root.cpp
+        reqif_elements_parser.cpp
+        reqif_elements_parser_root.cpp
+       reqif_elements_registration.cpp
                )
 
 TARGET_LINK_LIBRARIES(reqif_parser  ${EXPAT_LIBRARY})
index af33855dc4b853170c8bf409948098221721c3fd..5b555c4f046c05b4624ceaf7c2ab06a977e7e834 100644 (file)
@@ -828,7 +828,7 @@ COMPLEX_PARSER(TypeParser,
     } else if (name == "SPEC-RELATION-TYPE" &&  ! ns.empty())
     {
       return true;
-    } else if (name == "SPECIFICAITON-TYPE" &&  ! ns.empty())
+    } else if (name == "SPECIFICATION-TYPE" &&  ! ns.empty())
     {
       s.m_parser = SHARED_PTR<DescriptionParser>(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 (file)
index 0000000..6da3c34
--- /dev/null
@@ -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<fileop_##cls> _##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)
+}
+
+
+}