#include <string>
#include <iostream>
#include <boost/variant.hpp>
namespace NsSemSDK
{
struct STreeConstructionRuleRegexp {
std::string m_strEntity;
};
struct STreeConstructionRuleString {
std::string m_strEntity;
};
struct STreeConstructionRuleIdentifier {
std::string m_strEntity;
};
typedef int STreeConstructionRuleNumber;
std::ostream& operator<<(std::ostream& stream,
const STreeConstructionRuleRegexp& val)
{
return stream << '\'' << val.m_strEntity << '\'';
}
std::ostream& operator<<(std::ostream& stream,
const STreeConstructionRuleString& val)
{
return stream << '"' << val.m_strEntity << '"';
}
std::ostream& operator<<(std::ostream& stream,
const STreeConstructionRuleIdentifier& val)
{
return stream << val.m_strEntity;
}
typedef boost::variant<
STreeConstructionRuleRegexp,
STreeConstructionRuleNumber
> STreeConstructionRuleOperand;
// STreeConstructionRuleString, STreeConstructionRuleIdentifier
}
using namespace NsSemSDK;
int main()
{
STreeConstructionRuleNumber num = 1024;
STreeConstructionRuleOperand operand = num;
std::cout << operand << std::endl;
}