summaryrefslogtreecommitdiff
path: root/slicer/tool/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/tool/parser.h')
-rw-r--r--slicer/tool/parser.h25
1 files changed, 19 insertions, 6 deletions
diff --git a/slicer/tool/parser.h b/slicer/tool/parser.h
index 295705d..517c0e3 100644
--- a/slicer/tool/parser.h
+++ b/slicer/tool/parser.h
@@ -6,18 +6,31 @@
#include <visibility.h>
namespace Slicer {
+ class SplitString : public std::vector<std::string> {
+ public:
+ SplitString(const std::string & in, const char *);
+ using std::vector<std::string>::vector;
+ };
+
+ struct CppName : public SplitString {
+ inline CppName(const std::string & in) : SplitString(in, ".") { }
+ };
+
class DLL_PUBLIC Slicer : public Slice::ParserVisitor {
public:
- typedef std::vector<std::string> Args;
+ struct Args : public SplitString {
+ inline Args(const std::string & in) : SplitString(in, ",") { }
+ using SplitString::SplitString;
+ };
+
class ConversionSpec {
public:
- explicit ConversionSpec(const Args &);
-
- std::string ExchangeType;
- std::string ConvertToModelFunc;
- std::string ConvertToExchangeFunc;
+ CppName ExchangeType;
+ CppName ConvertToModelFunc;
+ CppName ConvertToExchangeFunc;
Args Options;
};
+
using Conversions = std::vector<ConversionSpec>;
Slicer();