diff --git a/src/ifcexpressparser/README.txt b/src/ifcexpressparser/README.txt index d4c4176084..ede43994d3 100644 --- a/src/ifcexpressparser/README.txt +++ b/src/ifcexpressparser/README.txt @@ -4,6 +4,8 @@ the IFC schema and will most likely fail on any other Express schema. The code can be invoked in the following way and results in two header files and a single implementation file named according to the schema name in the -Express file. A python 3 interpreter with the pyparsing library is required. +Express file. A python 3 interpreter with the pyparsing [1] library is required. $ python bootstrap.py express.bnf > express_parser.py && python express_parser.py IFC2X3_TC1.exp + +[1] http://pyparsing.wikispaces.com/Download+and+Installation diff --git a/src/ifcexpressparser/templates.py b/src/ifcexpressparser/templates.py index 2cd9722cd9..0ae336fe72 100644 --- a/src/ifcexpressparser/templates.py +++ b/src/ifcexpressparser/templates.py @@ -23,7 +23,6 @@ header = """ #include #include -#include #include @@ -31,6 +30,11 @@ header = """ #include "../ifcparse/IfcException.h" #include "../ifcparse/%(schema_name)senum.h" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4100) +#endif + #define IfcSchema %(schema_name)s namespace %(schema_name)s { @@ -47,6 +51,10 @@ void InitStringMap(); IfcUtil::IfcBaseClass* SchemaEntity(IfcAbstractEntity* e = 0); } +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif """ @@ -107,6 +115,8 @@ implementation= """ #include "../ifcparse/IfcWrite.h" #include "../ifcparse/IfcWritableEntity.h" +#include + using namespace %(schema_name)s; using namespace IfcParse; using namespace IfcWrite; @@ -261,49 +271,49 @@ std::pair Type::GetEnumerationIndex(Enum t, const std::string& } std::pair Type::GetInverseAttribute(Enum t, const std::string& a) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; - while (true) { + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; + for(;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - jt = it->second.find(a); - if (jt != it->second.end()) { - return jt->second; - } - } + jt = it->second.find(a); + if (jt != it->second.end()) { + return jt->second; + } + } if ((t = Parent(t)) == -1) break; } throw IfcException("Attribute not found"); } std::set Type::GetInverseAttributeNames(Enum t) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; - std::set return_value; + std::set return_value; - while (true) { + for (;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - for (jt = it->second.begin(); jt != it->second.end(); ++jt) { - return_value.insert(jt->first); - } - } + for (jt = it->second.begin(); jt != it->second.end(); ++jt) { + return_value.insert(jt->first); + } + } if ((t = Parent(t)) == -1) break; } - - return return_value; + + return return_value; } void Type::PopulateDerivedFields(IfcWrite::IfcWritableEntity* e) { std::map >::const_iterator i = derived_map.find(e->type()); - if (i != derived_map.end()) { - for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { - e->setArgumentDerived(*it); - } - } + if (i != derived_map.end()) { + for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { + e->setArgumentDerived(*it); + } + } } """ diff --git a/src/ifcparse/Ifc2x3-latebound.cpp b/src/ifcparse/Ifc2x3-latebound.cpp index 31daf4e1eb..fcc21020e0 100644 --- a/src/ifcparse/Ifc2x3-latebound.cpp +++ b/src/ifcparse/Ifc2x3-latebound.cpp @@ -4247,48 +4247,48 @@ std::pair Type::GetEnumerationIndex(Enum t, const std::string& } std::pair Type::GetInverseAttribute(Enum t, const std::string& a) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; - for (;;) { + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; + for(;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - jt = it->second.find(a); - if (jt != it->second.end()) { - return jt->second; - } - } + jt = it->second.find(a); + if (jt != it->second.end()) { + return jt->second; + } + } if ((t = Parent(t)) == -1) break; } throw IfcException("Attribute not found"); } std::set Type::GetInverseAttributeNames(Enum t) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; - std::set return_value; + std::set return_value; - for (;;) { + for (;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - for (jt = it->second.begin(); jt != it->second.end(); ++jt) { - return_value.insert(jt->first); - } - } + for (jt = it->second.begin(); jt != it->second.end(); ++jt) { + return_value.insert(jt->first); + } + } if ((t = Parent(t)) == -1) break; } - - return return_value; + + return return_value; } void Type::PopulateDerivedFields(IfcWrite::IfcWritableEntity* e) { std::map >::const_iterator i = derived_map.find(e->type()); - if (i != derived_map.end()) { - for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { - e->setArgumentDerived(*it); - } - } + if (i != derived_map.end()) { + for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { + e->setArgumentDerived(*it); + } + } } #endif diff --git a/src/ifcparse/Ifc2x3.cpp b/src/ifcparse/Ifc2x3.cpp index 5406ae5c6b..51f6f7941d 100644 --- a/src/ifcparse/Ifc2x3.cpp +++ b/src/ifcparse/Ifc2x3.cpp @@ -31,6 +31,8 @@ #include "../ifcparse/IfcWrite.h" #include "../ifcparse/IfcWritableEntity.h" +#include + using namespace Ifc2x3; using namespace IfcParse; using namespace IfcWrite; diff --git a/src/ifcparse/Ifc2x3.h b/src/ifcparse/Ifc2x3.h index 963ae54e08..6e4a09500c 100644 --- a/src/ifcparse/Ifc2x3.h +++ b/src/ifcparse/Ifc2x3.h @@ -29,7 +29,6 @@ #include #include -#include #include @@ -37,6 +36,11 @@ #include "../ifcparse/IfcException.h" #include "../ifcparse/Ifc2x3enum.h" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4100) +#endif + #define IfcSchema Ifc2x3 namespace Ifc2x3 { @@ -41583,4 +41587,8 @@ void InitStringMap(); IfcUtil::IfcBaseClass* SchemaEntity(IfcAbstractEntity* e = 0); } +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif diff --git a/src/ifcparse/Ifc4-latebound.cpp b/src/ifcparse/Ifc4-latebound.cpp index 4cb4bb0364..e136fba57c 100644 --- a/src/ifcparse/Ifc4-latebound.cpp +++ b/src/ifcparse/Ifc4-latebound.cpp @@ -4941,48 +4941,48 @@ std::pair Type::GetEnumerationIndex(Enum t, const std::string& } std::pair Type::GetInverseAttribute(Enum t, const std::string& a) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; - while (true) { + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; + for(;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - jt = it->second.find(a); - if (jt != it->second.end()) { - return jt->second; - } - } + jt = it->second.find(a); + if (jt != it->second.end()) { + return jt->second; + } + } if ((t = Parent(t)) == -1) break; } throw IfcException("Attribute not found"); } std::set Type::GetInverseAttributeNames(Enum t) { - if (inverse_map.empty()) ::InitInverseMap(); - inverse_map_t::const_iterator it; - inverse_map_t::mapped_type::const_iterator jt; + if (inverse_map.empty()) ::InitInverseMap(); + inverse_map_t::const_iterator it; + inverse_map_t::mapped_type::const_iterator jt; - std::set return_value; + std::set return_value; - while (true) { + for (;;) { it = inverse_map.find(t); if (it != inverse_map.end()) { - for (jt = it->second.begin(); jt != it->second.end(); ++jt) { - return_value.insert(jt->first); - } - } + for (jt = it->second.begin(); jt != it->second.end(); ++jt) { + return_value.insert(jt->first); + } + } if ((t = Parent(t)) == -1) break; } - - return return_value; + + return return_value; } void Type::PopulateDerivedFields(IfcWrite::IfcWritableEntity* e) { std::map >::const_iterator i = derived_map.find(e->type()); - if (i != derived_map.end()) { - for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { - e->setArgumentDerived(*it); - } - } + if (i != derived_map.end()) { + for (std::set::const_iterator it = i->second.begin(); it != i->second.end(); ++it) { + e->setArgumentDerived(*it); + } + } } #endif diff --git a/src/ifcparse/Ifc4.cpp b/src/ifcparse/Ifc4.cpp index d599ac25b8..aa49def74b 100644 --- a/src/ifcparse/Ifc4.cpp +++ b/src/ifcparse/Ifc4.cpp @@ -31,6 +31,8 @@ #include "../ifcparse/IfcWrite.h" #include "../ifcparse/IfcWritableEntity.h" +#include + using namespace Ifc4; using namespace IfcParse; using namespace IfcWrite; diff --git a/src/ifcparse/Ifc4.h b/src/ifcparse/Ifc4.h index 4f01c4f55c..23fc195b8a 100644 --- a/src/ifcparse/Ifc4.h +++ b/src/ifcparse/Ifc4.h @@ -29,7 +29,6 @@ #include #include -#include #include @@ -37,6 +36,11 @@ #include "../ifcparse/IfcException.h" #include "../ifcparse/Ifc4enum.h" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4100) +#endif + #define IfcSchema Ifc4 namespace Ifc4 { @@ -55147,4 +55151,8 @@ void InitStringMap(); IfcUtil::IfcBaseClass* SchemaEntity(IfcAbstractEntity* e = 0); } +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif