Parse Elements stops at SPEC-OBJECTS. To be continued so tha all elements will be...
authorandre ebersold <andre.ebersold@siemens.com>
Tue, 18 Jun 2024 13:48:29 +0000 (15:48 +0200)
committerandre ebersold <andre.ebersold@siemens.com>
Tue, 18 Jun 2024 13:48:29 +0000 (15:48 +0200)
setupenv.bat [new file with mode: 0644]
src/xml/reqif/parsers.h.inc
src/xml/reqif/reqif_elements_parser.cpp

diff --git a/setupenv.bat b/setupenv.bat
new file mode 100644 (file)
index 0000000..86856f5
--- /dev/null
@@ -0,0 +1,5 @@
+SET MSVCPATH="c:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"
+
+%MSVCPATH%
+
+set PATH=%PATH%;c:\Tools\wxWidgets\lib\vc14x_x64_dll
index edd6145f17fbc8b43b6a0ff6916c94a7315a240e..2ed22513c8ce8cf24c132d66679f497851d135c1 100644 (file)
@@ -50,7 +50,7 @@ SIMPLE_PARSER(SPEC-RELATION-TYPE,RelationTypeParser)
 
 COMPLEX_PARSER(SPEC-OBJECTS,SpecObjectsParser)
 COMPLEX_PARSER(SPEC-OBJECT,SpecObjectParser)
-COMPLEX_PARSER(VALUES,ValuesParser)
+COMPLEX_PARSER(VALUES,SpecObjectValuesParser)
 COMPLEX_PARSER(ATTRIBUTE-VALUE-DATE,AttributeValueParser)
 //COMPLEX_PARSER(ATTRIBUTE-VALUE-STRING,AttributeValueParser)
 //COMPLEX_PARSER(ATTRIBUTE-VALUE-XHTML,AttributeValueParser)
index eed7e4ad4431278ecd314f62e2ac1058b429d989..af33855dc4b853170c8bf409948098221721c3fd 100644 (file)
@@ -381,7 +381,7 @@ cls::cls(antcc::project *_project,::reqif::Element *_elt)    \
     );                      \
   if (_elt == NULL)                          \
   { \
-      ANTCC_PARSER_ERROR("%s(%0x)::%s is NULL unsuported!!!"  \
+      ANTCC_PARSER_ERROR("%s(%0x)::%s element is NULL unsuported!!!"  \
         ,#cls              \
         ,this              \
         ,#cls              \
@@ -466,7 +466,7 @@ cls::cls(antcc::project *_project,::reqif::Element *_elt)    \
     );                      \
   if (_elt == NULL)                          \
   { \
-      ANTCC_PARSER_ERROR("%s(%0x)::%s is NULL unsuported!!!"  \
+      ANTCC_PARSER_ERROR("%s(%0x)::%s is element NULL unsuported!!!"  \
         ,#cls              \
         ,this              \
         ,#cls              \
@@ -550,7 +550,7 @@ cls::cls(antcc::project *_project,::reqif::Element *_elt)    \
     );                      \
   if (_elt == NULL)                          \
   { \
-      ANTCC_PARSER_DEBUG("%s(%0x)::%s is NULL unsuported!!!"  \
+      ANTCC_PARSER_DEBUG("%s(%0x)::%s element is NULL unsuported!!!"  \
         ,#cls              \
         ,this              \
         ,#cls              \
@@ -576,40 +576,50 @@ bool cls::AttributeImpl(const std::string &ns,const std::string &name,const std:
 //Project Parser Impl
 ROOT_PARSER(ReqifParser,
 {
-if (name == "THE-HEADER" && ns.empty())
-{
+  if (name == "THE-HEADER" &&  ! ns.empty())
+  {
     s.m_parser = SHARED_PTR<ReqifHeaderParser>(new ReqifHeaderParser(m_Project
                        , ::reqif::ElementFactory::get().orderElement(name.c_str())
                  ));
-} else if (name == "TOOL-EXTENSION" && ns.empty())
-{
+  } else if (name == "TOOL-EXTENSION" && ! ns.empty())
+  {
     s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
                        , NULL)
                    );
-} else if (name == "CORE-CONTENT" && ns.empty())
-{
+  } else if (name == "CORE-CONTENT" && ! ns.empty())
+  {
     s.m_parser = SHARED_PTR<CoreContentParser>(new CoreContentParser(m_Project
                        , ::reqif::ElementFactory::get().orderElement(name.c_str())
                       )
                    );
-} else
-{
-  return false;
-}
-return true;
-
+  } else
+  {
+    if (! ns.empty() ) 
+    {
+       std::cout<<"ReqifParser name "<<name<<" With ns "<<ns<<std::endl;
+    }
+    return false;
+  }
+  return true;
 }
 ,
 { 
 ANTCC_PARSER_DEBUG_PROJECT("ReqifParser end  %s size=%u"
                 ,name.c_str()
                 ,m_context.size());
-  if (name == "THE-HEADER" && ns.empty())
+  if (name == "THE-HEADER" && ns.empty())
   {
     std::string m_result;
     s.m_parser->post(m_result);
+    return true;
+  } else if (name == "CORE-CONTENT" && ! ns.empty())
+  {
+    return true;
+  } else if (name == "TOOL-EXTENSIONS" && ! ns.empty())
+  {
+    return true;
   }
-  return true;
+  return false;
 }
 ,
 { 
@@ -623,7 +633,7 @@ return l_ok;
 // Target Parser Implementation
 COMPLEX_PARSER(ReqifHeaderParser, 
   { 
-    if (name == "REQ-IF-HEADER" && ns.empty())
+    if (name == "REQ-IF-HEADER" &&  ! ns.empty())
     {
       s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
                            , ::reqif::ElementFactory::get().orderElement(name.c_str())
@@ -662,6 +672,23 @@ COMPLEX_PARSER(ReqifHeaderParser,
 // DescriptionParser Implementation
 COMPLEX_PARSER(CoreContentParser, 
   { 
+    if (name == "REQ-IF-CONTENT" && ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<ReqifContentParser>(new ReqifContentParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+    } else if (name == "exec" && ns.empty())
+    {
+      s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+    }
+    else
+    {
+      s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+    }
     return true;
 
   }
@@ -670,6 +697,10 @@ COMPLEX_PARSER(CoreContentParser,
     ANTCC_PARSER_DEBUG_TASK("CoreContentParser end  %s size=%u"
                     ,name.c_str()
                     ,m_context.size());
+    if (name == "REQ-IF-CONTENT" && ! ns.empty())
+    {
+        return true;
+    }
     return true;
   }
   ,
@@ -684,7 +715,7 @@ COMPLEX_PARSER(CoreContentParser,
 // Exec Parser Implementation
 COMPLEX_PARSER(ReqifContentParser,
   { 
-    if (name == "DATATYPES" && ns.empty())
+    if (name == "DATATYPES" && !ns.empty())
     {
       ANTCC_PARSER_DEBUG("ReqifContentParser ignore  %s size=%u"
                     ,name.c_str()
@@ -692,16 +723,34 @@ COMPLEX_PARSER(ReqifContentParser,
       s.m_parser = SHARED_PTR<DatatypesParser>(new DatatypesParser(m_Project
                            , ::reqif::ElementFactory::get().orderElement(name.c_str())
                  ));
+      return true;
     }
-    else if (name == "SPEC-TYPES" && ns.empty())
-    {
-    } else
+    else if (name == "SPEC-TYPES" && ! ns.empty())
     {
       s.m_parser = SHARED_PTR<TypeParser>(new TypeParser(m_Project
                            , ::reqif::ElementFactory::get().orderElement(name.c_str())
                  ));
+      return true;
+    } else if (name == "SPEC-OBJECTS" && ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<SpecObjectsParser>(new SpecObjectsParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else if (name == "SPEC-RELATIONS" && ! ns.empty())
+    {
+      return true;
+    } else if (name == "SPECIFICATIONS" && ! ns.empty())
+    {
+      return true;
+    } else if (name == "SPEC-RELATION-GROUPS" && ! ns.empty())
+    {
+      return true;
+    } else
+    {
+        ANTCC_PARSER_ERROR("ReqifContentParser::startElement unsupported Element %s",name.c_str());
     }
-    return true;
+    return false;
 
   }
   ,
@@ -709,6 +758,9 @@ COMPLEX_PARSER(ReqifContentParser,
     ANTCC_PARSER_DEBUG_TASK("ReqifParser end  %s size=%u"
                     ,name.c_str()
                     ,m_context.size());
+    if (name == "DATATYPES" && !ns.empty())
+    {
+    }
     return true;
   }
   ,
@@ -722,10 +774,24 @@ COMPLEX_PARSER(ReqifContentParser,
 // Datypesarser Implementation
 COMPLEX_PARSER(DatatypesParser,
   { 
-    s.m_parser = SHARED_PTR<DatatypeParser>(new DatatypeParser(m_Project
+    if  ( (name == "DATATYPE-DEFINITION-STRING"
+           || !name.compare("DATATYPE-DEFINITION-XHTML") 
+           || !name.compare("DATATYPE-DEFINITION-DATE") 
+           || !name.compare( "DATATYPE-DEFINITION-REAL") 
+           || !name.compare("DATATYPE-DEFINITION-BOOLEAN")
+           || !name.compare("DATATYPE-DEFINITION-ENUMERATION")
+           || !name.compare("DATATYPE-DEFINITION-INTEGER") 
+                            ) && !ns.empty())
+    {
+      ANTCC_PARSER_DEBUG("ReqifContentParser ignore  %s size=%u"
+                    ,name.c_str()
+                    ,m_context.size());
+      s.m_parser = SHARED_PTR<DatatypeParser>(new DatatypeParser(m_Project
                            , ::reqif::ElementFactory::get().orderElement(name.c_str())
                  ));
-    return true;
+      return true;
+    } 
+    return false;
 
   }
   ,
@@ -747,12 +813,27 @@ COMPLEX_PARSER(DatatypesParser,
 COMPLEX_PARSER(TypeParser,
   { 
     // Not sure that I need sub element for the Type parser
-    if (name == "include" && ns.empty())
+    if (name == "RELATION-GROUP-TYPE" &&  ! ns.empty())
     {
       s.m_parser = SHARED_PTR<TypeParser>(new TypeParser(m_Project
                            , ::reqif::ElementFactory::get().orderElement(name.c_str())
                  ));
       return true;
+    } else if (name == "SPEC-OBJECT-TYPE" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<SpecObjectTypeParser>(new SpecObjectTypeParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else if (name == "SPEC-RELATION-TYPE" &&  ! ns.empty())
+    {
+      return true;
+    } else if (name == "SPECIFICAITON-TYPE" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
     }
     return  false;
 
@@ -797,6 +878,167 @@ COMPLEX_PARSER(SpecObjectTypeParser,
     return l_ok;
   })
 
+// Spec Objects Type Parser Implementation
+
+// Spec Objects Type Parser Implementation
+COMPLEX_PARSER(SpecObjectsParser,
+  { 
+    // Not sure that I need sub element for the Type parser
+    if (name == "SPEC-OBJECT" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<SpecObjectParser>(new SpecObjectParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else {
+        ANTCC_PARSER_ERROR("SpecObjectsParser:startElement unsupported Element %s",name.c_str());
+    }
+    return false;
+
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser end  %s size=%u"
+                    ,name.c_str()
+                    ,m_context.size());
+    return true;
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser Attribute:  %s-> %s"
+                    ,name.c_str()
+                    ,val.c_str());
+    return l_ok;
+  })
+
+
+
+
+
+COMPLEX_PARSER(SpecObjectParser,
+  { 
+    // Not sure that I need sub element for the Type parser
+    if (name == "ALTERNATIVE-ID" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<TypeParser>(new TypeParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else if (name == "VALUES" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<SpecObjectValuesParser>(new SpecObjectValuesParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else if (name == "TYPE" &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else {
+        ANTCC_PARSER_ERROR("SpecObjectParser:startElement unsupported Element %s",name.c_str());
+    }
+    return false;
+
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectParser end  %s size=%u"
+                    ,name.c_str()
+                    ,m_context.size());
+    return true;
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser Attribute:  %s-> %s"
+                    ,name.c_str()
+                    ,val.c_str());
+    return l_ok;
+  })
+
+/* SPEC OBJECT VALUES Parser */
+COMPLEX_PARSER(SpecObjectValuesParser,
+  { 
+    // Not sure that I need sub element for the Type parser
+    if ( (name == "ATTRIBUTE-VALUE-BOOLEAN" 
+         || name == "ATTRIBUTE-VALUE-DATE" 
+         || name == "ATTRIBUTE-VALUE-ENUMERATION" 
+         || name == "ATTRIBUTE-VALUE-INTEGER" 
+         || name == "ATTRIBUTE-VALUE-REAL" 
+         || name == "ATTRIBUTE-VALUE-XHTML" 
+         || name == "ATTRIBUTE-VALUE-STRING" ) 
+                   &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<AttributeValueParser>(new AttributeValueParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else {
+        ANTCC_PARSER_ERROR("SpecObjectValuesParser:startElement unsupported Element %s",name.c_str());
+    }
+    return false;
+
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectValuesParser end  %s size=%u"
+                    ,name.c_str()
+                    ,m_context.size());
+    return true;
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser Attribute:  %s-> %s"
+                    ,name.c_str()
+                    ,val.c_str());
+    return l_ok;
+  })
+
+// Attribute Value Parser Implementation
+COMPLEX_PARSER(AttributeValueParser,
+  { 
+    if ( name == "DEFINITION" 
+                   &&  ! ns.empty())
+    {
+      s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    }else if ( name == "THE-VALUE" 
+                   &&  ! ns.empty())
+    {
+        s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+                           , ::reqif::ElementFactory::get().orderElement(name.c_str())
+                 ));
+      return true;
+    } else {
+        ANTCC_PARSER_ERROR("AttributeValuesParser:startElement unsupported Element %s",name.c_str());
+    }
+    return false;
+
+  }
+  ,
+  {
+    ANTCC_PARSER_DEBUG_TASK("AttributeValueParser end  %s size=%u"
+                    ,name.c_str()
+                    ,m_context.size());
+    return true;
+  }
+  ,
+  {
+    l_ok = false;
+    ANTCC_PARSER_DEBUG_TASK("AttributeValueParser Attribute:  %s-> %s"
+                    ,name.c_str()
+                    ,val.c_str());
+    if (name == "THE-VALUE") {
+        l_ok = true;
+    }
+    return l_ok;
+  })
+
+
+
 // Spec Object Type Parser Implementation
 COMPLEX_PARSER(SpecAttributesParser,
   {