{
if (name == "THE-HEADER" && ! ns.empty())
{
- s.m_parser = SHARED_PTR<ReqifHeaderParser>(new ReqifHeaderParser(m_Project
+ s.m_parser = SHARED_PTR<TheHeaderParser>(new TheHeaderParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
- } else if (name == "TOOL-EXTENSION" && ! ns.empty())
+ } else if (name == "TOOL-EXTENSIONS" && ! ns.empty())
{
s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
, NULL)
})
// Target Parser Implementation
-COMPLEX_PARSER(ReqifHeaderParser,
+COMPLEX_PARSER(TheHeaderParser,
{
if (name == "REQ-IF-HEADER" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<ReqifHeaderParser>(new ReqifHeaderParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TARGET("ReqifHEaderParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "REQ-IF-HEADER" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TARGET("ReqifHeaderParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ std::cout<<"REQ-IF-HEADER Attributes : "<<name<<" "<<val<<std::endl;
+ return l_ok;
+ })
+
+
+// Target Parser Implementation
+COMPLEX_PARSER(ReqifHeaderParser,
+ {
+ if (name == "CREATION-TIME" && ! ns.empty())
{
s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
- } else if (name == "exec" && ns.empty())
+ return true;
+ }
+ else if (name == "REQ-IF-TOOL-ID" && !ns.empty())
{
s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
+ return true;
}
- else
+ else if (name == "REQ-IF-VERSION" && !ns.empty())
{
s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
+ return true;
}
- return true;
+ else if (name == "SOURCE-TOOL-ID" && !ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ else if (name == "TITLE" && !ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ else
+ {
+ ANTCC_PARSER_ERROR("ReqifHeaderParser::startElement unsupported Element %s",name.c_str());
+ }
+ return false;
}
,
{
+ std::string result;
ANTCC_PARSER_DEBUG_TARGET("ReqifHEaderParser end %s size=%u"
,name.c_str()
,m_context.size());
- return true;
+ if (name == "CREATION-TIME" && ! ns.empty()) {
+ s.m_parser->post(result);
+ std::cout<<"CREATION TIME : "<<result<<std::endl;
+ return true;
+ }
+ else if (name == "REQ-IF-TOOL-ID" && !ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"TOOL ID : "<<result<<std::endl;
+ return true;
+ }
+ else if (name == "REQ-IF-VERSION" && !ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"REQ-IF-VERSION : "<<result<<std::endl;
+ return true;
+ }
+ else if (name == "SOURCE-TOOL-ID" && !ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"SOURCE-TOOL : "<<result<<std::endl;
+ return true;
+ }
+ else if (name == "TITLE" && !ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"TITLE : "<<result<<std::endl;
+ return true;
+ }
+ return false;
}
,
{
ANTCC_PARSER_DEBUG_TARGET("ReqifHeaderParser Attribute: %s-> %s"
,name.c_str()
,val.c_str());
+ std::cout<<"REQ-IF-HEADER Attributes : "<<name<<" "<<val<<std::endl;
return l_ok;
})
return true;
} else if (name == "SPEC-RELATIONS" && ! ns.empty())
{
+ s.m_parser = SHARED_PTR<SpecRelationsParser>(new SpecRelationsParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
return true;
} else if (name == "SPECIFICATIONS" && ! ns.empty())
{
+ s.m_parser = SHARED_PTR<SpecificationsParser>(new SpecificationsParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
return true;
} else if (name == "SPEC-RELATION-GROUPS" && ! ns.empty())
{
// Spec Object Type Parser Implementation
COMPLEX_PARSER(SpecObjectTypeParser,
{
- s.m_parser = SHARED_PTR<SpecAttributesParser>(new SpecAttributesParser(m_Project
+ // Not sure that I need sub element for the Type parser
+ if (name == "SPEC-ATTRIBUTES" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<SpecAttributesParser>(new SpecAttributesParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
- return true;
+ return true;
+ } else 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;
+ }
+ return false;
}
,
// Not sure that I need sub element for the Type parser
if (name == "SPEC-OBJECT" && ! ns.empty())
{
+ std::cout<<"SpecObjects Start "<<name<<" "<<std::endl;
s.m_parser = SHARED_PTR<SpecObjectParser>(new SpecObjectParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser end %s size=%u"
,name.c_str()
,m_context.size());
- return true;
+ if (name == "SPEC-OBJECT" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
}
,
{
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
return true;
- } else if (name == "TYPE" && ! ns.empty())
+ } else if (name =="TYPE" && ! ns.empty())
{
s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
ANTCC_PARSER_DEBUG_TASK("SpecObjectParser end %s size=%u"
,name.c_str()
,m_context.size());
- return true;
+ if (name == "ALTERNATIVE-ID" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "VALUES" && ! ns.empty())
+ {
+ return true;
+ } else if (name =="TYPE" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
}
,
{
ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser Attribute: %s-> %s"
,name.c_str()
,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ std::cout<<"SpecObject "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ std::cout<<"SpecObject "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
return l_ok;
})
if ( name == "DEFINITION"
&& ! ns.empty())
{
- s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+ s.m_parser = SHARED_PTR<AttributeDefinitionRefParser>(new AttributeDefinitionRefParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
return true;
}
,
{
+ std::string result;
ANTCC_PARSER_DEBUG_TASK("AttributeValueParser end %s size=%u"
,name.c_str()
,m_context.size());
- return true;
+ if ( name == "DEFINITION"
+ && ! ns.empty())
+ {
+ ::reqif::Element *el = s.m_parser->post();
+ return true;
+ } else if ( name == "THE-VALUE"
+ && ! ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"AttributeValue tag THE-VALUE := "<<result<<std::endl;
+ return true;
+ }
+ return false;
}
,
{
,name.c_str()
,val.c_str());
if (name == "THE-VALUE") {
+ std::cout<<"AttributeValue attr "<<name<<" :="<<val<<std::endl;
l_ok = true;
}
return l_ok;
// Spec Object Type Parser Implementation
COMPLEX_PARSER(SpecAttributesParser,
{
- s.m_parser = SHARED_PTR<AttributeDefinitionParser>(new AttributeDefinitionParser(m_Project
+ if ( ( name == "ATTRIBUTE-DEFINITION-STRING"
+ || name =="ATTRIBUTE-DEFINITION-BOOLEAN"
+ || name =="ATTRIBUTE-DEFINITION-INTEGER"
+ || name =="ATTRIBUTE-DEFINITION-REAL"
+ || name =="ATTRIBUTE-DEFINITION-ENUMERATATION"
+ || name =="ATTRIBUTE-DEFINITION-DATE"
+ || name =="ATTRIBUTE-DEFINITION-XHTML"
+ ) && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<AttributeDefinitionParser>(new AttributeDefinitionParser(m_Project
, ::reqif::ElementFactory::get().orderElement(name.c_str())
));
- return true;
-
+ return true;
+ }
+ ANTCC_PARSER_ERROR("SpecAttributesParser:startElement unsupported Element %s",name.c_str());
+ return false;
}
,
{
// Macrodef Parser Implementation
COMPLEX_PARSER(AttributeDefinitionParser,
{
- if (name == "TYPE" && ns.empty())
+ if (name == "TYPE" && ! ns.empty())
{
- ANTCC_PARSER_DEBUG("TypeParser ignore %s size=%u"
+ ANTCC_PARSER_DEBUG("AttributeDefinitionParser ignore %s size=%u"
,name.c_str()
,m_context.size());
- s.m_parser = SHARED_PTR<TypeParser>(new TypeParser(m_Project
- , ::reqif::ElementFactory::get().orderElement("TYPE")
+ s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
));
return true;
}
}
,
{
+ std::string result;
ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionParser end %s size=%u"
,name.c_str()
,m_context.size());
- return true;
+ if (name == "TYPE" && ! ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"AttributeDefinition TYPE : "<<result<<std::endl;
+ return true;
+ }
+ return false;
}
,
{
ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionParser Attribute: %s-> %s"
,name.c_str()
,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
return l_ok;
})
+/*
+ <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-DATE-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-REAL-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-STRING-REF" type="REQIF:LOCAL-REF"/>
+ <xsd:element name="ATTRIBUTE-DEFINITION-XHTML-REF" type="REQIF:LOCAL-REF"/>
+*/
+COMPLEX_PARSER(AttributeDefinitionRefParser,
+ {
+ ANTCC_PARSER_DEBUG("AttributeDefinitionRefParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if ( (name == "ATTRIBUTE-DEFINITION-BOOLEAN-REF"
+ || name == "ATTRIBUTE-DEFINITION-DATE-REF"
+ || name == "ATTRIBUTE-DEFINITION-ENUMERATION-REF"
+ || name == "ATTRIBUTE-DEFINITION-INTEGER-REF"
+ || name == "ATTRIBUTE-DEFINITION-REAL-REF"
+ || name == "ATTRIBUTE-DEFINITION-STRING-REF"
+ || name == "ATTRIBUTE-DEFINITION-XHTML-REF"
+ ) && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DatatypeRefParser>(new DatatypeRefParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement("ATTRIBUTE-DEFINITION-REF")
+ ));
+ return true;
+ }
+
+ return false;
+
+ }
+ ,
+ {
+ std::string result;
+ ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionRefParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if ( ( name == "ATTRIBUTE-DEFINITION-BOOLEAN-REF"
+ || name == "ATTRIBUTE-DEFINITION-DATE-REF"
+ || name == "ATTRIBUTE-DEFINITION-ENUMERATION-REF"
+ || name == "ATTRIBUTE-DEFINITION-INTEGER-REF"
+ || name == "ATTRIBUTE-DEFINITION-REAL-REF"
+ || name == "ATTRIBUTE-DEFINITION-STRING-REF"
+ || name == "ATTRIBUTE-DEFINITION-XHTML-REF"
+ ) && ! ns.empty())
+ {
+ s.m_parser->post(result);
+ std::cout<<"AttributeDefinitionRef : "<<result<<std::endl;
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
+ return l_ok;
+ })
+
+
+
+// SpecRelations Implementation
+COMPLEX_PARSER(SpecRelationsParser,
+ {
+ if (name == "SPEC-RELATION" && ! ns.empty())
+ {
+ ANTCC_PARSER_DEBUG("SpecRelatsionsParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ s.m_parser = SHARED_PTR<SpecRelationParser>(new SpecRelationParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPEC-RELATION" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
+ return l_ok;
+ })
+
+
+// SpecRelations Implementation
+COMPLEX_PARSER(SpecRelationParser,
+ {
+ if (name == "TARGET" && ! ns.empty())
+ {
+ ANTCC_PARSER_DEBUG("SpecRelatsionParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ s.m_parser = SHARED_PTR<ObjectParser>(new ObjectParser(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 == "SOURCE" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<ObjectParser>(new ObjectParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ } else if (name == "TYPE" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "TARGET" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "VALUES" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "SOURCE" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "TYPE" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
+ return l_ok;
+ })
+
+
+/* Specifications */
+COMPLEX_PARSER(SpecificationsParser,
+ {
+ ANTCC_PARSER_DEBUG("SpecificationsParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPECIFICATION" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<SpecificationParser>(new SpecificationParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecificationsParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPECIFICATION" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecificationsParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ l_ok = false;
+ return l_ok;
+ })
+
+
+COMPLEX_PARSER(SpecificationParser,
+ {
+ ANTCC_PARSER_DEBUG("SpecificationParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "ALTERNATIVE-ID" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<SpecRelationParser>(new SpecRelationParser(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 == "CHILDREN" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<ChildrenParser>(new ChildrenParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ } else if (name == "TYPE" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "ALTERNATIVE-ID" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "VALUES" && ! ns.empty()) {
+ return true;
+ } else if (name == "CHILDREN" && ! ns.empty()) {
+ return true;
+ } else if (name == "TYPE" && ! ns.empty()) {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
+ return l_ok;
+ })
+
+
+COMPLEX_PARSER(ChildrenParser,
+ {
+ ANTCC_PARSER_DEBUG("ChildrenParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPEC-HIERARCHY" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<SpecHierarchyParser>(new SpecHierarchyParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("ChildrenParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPEC-HIERARCHY" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("ChildrenParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ l_ok = false;
+ return l_ok;
+ })
+
+
+
+
+COMPLEX_PARSER(SpecHierarchyParser,
+ {
+ ANTCC_PARSER_DEBUG("SpecHierachyParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "OBJECT" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<ObjectParser>(new ObjectParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ } else if (name == "ALTERNATIVE-ID" && ! ns.empty()) {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+
+ }
+ else if (name == "CHILDREN" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<ChildrenParser>(new ChildrenParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ } else if (name == "EDITABLE-ATTS" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecHierarchyParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "OBJECT" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "CHILDREN" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "EDITABLE-ATTS" && ! ns.empty())
+ {
+ return true;
+ } else if (name == "ALTERNATIVE-ID" && ! ns.empty()) {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("SpecHierarchyParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ /*
+ <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+ <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+ <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="IS-TABLE-INTERNAL" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+ <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+ */
+ if (name == "IDENTIFIER")
+ {
+ l_ok = true;
+ } else if (name == "IS-EDITABLE") {
+ l_ok = true;
+ } else if (name == "DESC") {
+ l_ok = true;
+ } else if (name == "IS-TABLE-INTERNAL") {
+ l_ok = true;
+ } else if (name == "LAST-CHANGE") {
+ l_ok = true;
+ } else if (name == "LONG-NAME") {
+ std::cout<<"Attribute-Defintition "<<name<<" = "<<val<<std::endl;
+ l_ok = true;
+ }
+ return l_ok;
+ })
+
+
+COMPLEX_PARSER(ObjectParser,
+ {
+ ANTCC_PARSER_DEBUG("ObjectParser ignore %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPEC-OBJECT-REF" && ! ns.empty())
+ {
+ s.m_parser = SHARED_PTR<DescriptionParser>(new DescriptionParser(m_Project
+ , ::reqif::ElementFactory::get().orderElement(name.c_str())
+ ));
+ return true;
+ }
+ return false;
+
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("ObjectParser end %s size=%u"
+ ,name.c_str()
+ ,m_context.size());
+ if (name == "SPEC-OBJECT-REF" && ! ns.empty())
+ {
+ return true;
+ }
+ return false;
+ }
+ ,
+ {
+ ANTCC_PARSER_DEBUG_TASK("ObjectParser Attribute: %s-> %s"
+ ,name.c_str()
+ ,val.c_str());
+ return false;
+ })
+
+
// Description Parser Implementation
REGISTER(Element,REQ_IF_TOOL_ID,REQ-IF-TOOL-ID)
REGISTER(Element,REQ_IF_VERSION,REQ-IF-VERSION)
REGISTER(Element,TITLE,TITLE)
+ REGISTER(Element,CREATION_TIME,CREATION-TIME)
+ REGISTER(Element,SOURCE_TOOL_ID,SOURCE-TOOL-ID)
+
REGISTER(Element,CORE_CONTENT,CORE-CONTENT)
REGISTER(Element,REQ_IF_CONTENT,REQ-IF-CONTENT)
-
+ /*REQ-IF-CONTENT sub elements */
REGISTER(Element,DATATYPES,DATATYPES)
+ REGISTER(Element,SPEC_TYPES,SPEC-TYPES)
+ REGISTER(Element,SPEC_OBJECTS,SPEC-OBJECTS)
+ REGISTER(Element,SPEC_RELATIONS,SPEC-RELATIONS)
+ REGISTER(Element,SPECIFICATIONS,SPECIFICATIONS)
+ REGISTER(Element,SPEC_RELATION_GROUP,SPEC-RELATION-GROUP)
+
+ /* DATATYPES sub elements */
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)
+ /* SPEC-TYPES sub elements */
REGISTER(Element,SPECIFICATION_TYPE,SPECIFICATION-TYPE)
REGISTER(Element,SPEC_OBJECT_TYPE,SPEC-OBJECT-TYPE)
REGISTER(Element,SPEC_RELATION_TYPE,SPEC-RELATION-TYPE)
REGISTER(Element,ATTRIBUTE_DEFINITION_INTEGER,ATTRIBUTE-DEFINITION-INTEGER)
REGISTER(Element,ATTRIBUTE_DEFINITION_DATE,ATTRIBUTE-DEFINITION-DATE)
REGISTER(Element,ATTRIBUTE_DEFINITION_XHTML,ATTRIBUTE-DEFINITION-XHTML)
+
+
+ /* SPEC-OBJECTS sub element */
+ REGISTER(Element,SPEC_OBJECT,SPEC-OBJECT)
+ /* SPEC-OBJECT sub element */
+ REGISTER(Element,SPEC_OBJECT_VALUES,VALUES)
+ REGISTER(Element,TYPE,TYPE)
+
+ /* SPEC-RELATIONS sub element */
+ REGISTER(Element,SPEC_RELATION,SPEC-RELATION)
+
+ /* SPEC-RELATION sub element */
+ REGISTER(Element,SOURCE,SOURCE)
+ REGISTER(Element,TARGET,TARGET)
+ /* VALUES sub elements */
+ REGISTER(Element,ATTRIBUTE_VALUE_BOOLEAN,ATTRIBUTE-VALUE-BOOLEAN)
+ REGISTER(Element,ATTRIBUTE_VALUE_DATE,ATTRIBUTE-VALUE-DATE)
+ REGISTER(Element,ATTRIBUTE_VALUE_ENUMERATION,ATTRIBUTE-VALUE-ENUMERATION)
+ REGISTER(Element,ATTRIBUTE_VALUE_INTEGER,ATTRIBUTE-VALUE-INTEGER)
+ REGISTER(Element,ATTRIBUTE_VALUE_REAL,ATTRIBUTE-VALUE-REAL)
+ REGISTER(Element,ATTRIBUTE_VALUE_STRING,ATTRIBUTE-VALUE-STRING)
+ REGISTER(Element,ATTRIBUTE_VALUE_XHTML,ATTRIBUTE-VALUE-XHTML)
+ /* ATTRIBUTE-VALUE-xx sub element */
+ REGISTER(Element,DEFINITION,DEFINITION)
+ REGISTER(Element,THE_VALUE,THE-VALUE)
+ /* DEFINITION sub elements ATTRIBUTE-DEFINITION-xxxx-REF */
+ REGISTER(Element,ATTRIBUTE_DEFINITION_REF,ATTRIBUTE-DEFINITION-REF)
/* Under XHTML we have HTML tags */
REGISTER(Element,div,div)
REGISTER(Element,br,br)
REGISTER(Element,span,span)
+ /* SPECIFICATIONS sub elements */
+ REGISTER(Element,SPECIFICATION,SPECIFICATION)
+ /* SPECIFICATION sub elements */
+ REGISTER(Element,SPEC_HIERARCHY,SPEC-HIERARCHY)
+ /* - Type is already defind ! */
+
+ /* SPEC-HIERARCHY sub elements */
+ REGISTER(Element,CHILDREN,CHILDREN)
+ REGISTER(Element,OBJECT,OBJECT)
+
+ /* OBJECT Sub Elements */
+ REGISTER(Element,SPEC_OBJECT_REF,SPEC-OBJECT-REF)
}