mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-10-03 21:38:12 +00:00
Fix misalignment between enum and boost::variant. See #200
This commit is contained in:
@@ -308,6 +308,8 @@ public:
|
|||||||
int operator()(const double& /*i*/) const { return -1; }
|
int operator()(const double& /*i*/) const { return -1; }
|
||||||
int operator()(const std::string& /*i*/) const { return -1; }
|
int operator()(const std::string& /*i*/) const { return -1; }
|
||||||
int operator()(const boost::dynamic_bitset<>& /*i*/) const { return -1; }
|
int operator()(const boost::dynamic_bitset<>& /*i*/) const { return -1; }
|
||||||
|
int operator()(const IfcWriteArgument::empty_aggregate_t&) const { return 0; }
|
||||||
|
int operator()(const IfcWriteArgument::empty_aggregate_of_aggregate_t&) const { return 0; }
|
||||||
int operator()(const std::vector<int>& i) const { return (int)i.size(); }
|
int operator()(const std::vector<int>& i) const { return (int)i.size(); }
|
||||||
int operator()(const std::vector<double>& i) const { return (int)i.size(); }
|
int operator()(const std::vector<double>& i) const { return (int)i.size(); }
|
||||||
int operator()(const std::vector< std::vector<int> >& i) const { return (int)i.size(); }
|
int operator()(const std::vector< std::vector<int> >& i) const { return (int)i.size(); }
|
||||||
@@ -435,6 +437,8 @@ public:
|
|||||||
}
|
}
|
||||||
data << ")";
|
data << ")";
|
||||||
}
|
}
|
||||||
|
void operator()(const IfcWriteArgument::empty_aggregate_t&) const { data << "()"; }
|
||||||
|
void operator()(const IfcWriteArgument::empty_aggregate_of_aggregate_t&) const { data << "()"; }
|
||||||
operator std::string() { return data.str(); }
|
operator std::string() { return data.str(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ namespace IfcWrite {
|
|||||||
: data(data), enumeration_value(enumeration_value) {}
|
: data(data), enumeration_value(enumeration_value) {}
|
||||||
};
|
};
|
||||||
class Derived {};
|
class Derived {};
|
||||||
|
class empty_aggregate_t {};
|
||||||
|
class empty_aggregate_of_aggregate_t {};
|
||||||
private:
|
private:
|
||||||
boost::variant<
|
boost::variant<
|
||||||
// A null argument, it will always serialize to $
|
// A null argument, it will always serialize to $
|
||||||
@@ -85,6 +87,7 @@ namespace IfcWrite {
|
|||||||
IfcUtil::IfcBaseClass*,
|
IfcUtil::IfcBaseClass*,
|
||||||
|
|
||||||
// AGGREGATES:
|
// AGGREGATES:
|
||||||
|
empty_aggregate_t,
|
||||||
// An aggregate of integers, e.g. (1,2,3)
|
// An aggregate of integers, e.g. (1,2,3)
|
||||||
std::vector<int>,
|
std::vector<int>,
|
||||||
// An aggregate of floats, e.g. (12.3,4.)
|
// An aggregate of floats, e.g. (12.3,4.)
|
||||||
@@ -99,6 +102,7 @@ namespace IfcWrite {
|
|||||||
IfcEntityList::ptr,
|
IfcEntityList::ptr,
|
||||||
|
|
||||||
// AGGREGATES OF AGGREGATES:
|
// AGGREGATES OF AGGREGATES:
|
||||||
|
empty_aggregate_of_aggregate_t,
|
||||||
// An aggregate of an aggregate of ints. E.g. ((1, 2), (3))
|
// An aggregate of an aggregate of ints. E.g. ((1, 2), (3))
|
||||||
std::vector< std::vector<int> >,
|
std::vector< std::vector<int> >,
|
||||||
// An aggregate of an aggregate of floats. E.g. ((1., 2.3), (4.))
|
// An aggregate of an aggregate of floats. E.g. ((1., 2.3), (4.))
|
||||||
|
|||||||
Reference in New Issue
Block a user