--- /dev/null
+
+#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)
+}
+
+
+}