@@ -39,25 +39,40 @@ class GalleyBase
39
39
40
40
};
41
41
42
- class GalleyVector :public GalleyBase
42
+ class GalleyVectorBase :public GalleyBase
43
43
{
44
44
protected:
45
45
StampBase &stamp;
46
46
public:
47
- GalleyVector (StampBase & stamp_arg) : stamp(stamp_arg) {};
47
+ GalleyVectorBase (StampBase & stamp_arg) : stamp(stamp_arg) {};
48
48
std::vector<Blob>extract_internal (Blob &blob);
49
- std::vector<std::string>ExtractStr (Blob &blob);
50
- std::vector<std::vector<char >>ExtractBin (Blob &blob);
51
-
52
49
int minSize ()override ;
53
50
int maxSize ()override {return -1 ;};/* Sereies always takes as much data as it can take*/
54
51
};
55
52
56
- template <class T >class GalleyVectorV :public GalleyVector
53
+
54
+ class GalleyVectorStr :public GalleyVectorBase
55
+ {
56
+ StampBaseStr & s_stamp;
57
+ public:
58
+ GalleyVectorStr (StampBaseStr & stamp_arg): GalleyVectorBase(stamp_arg), s_stamp(stamp_arg) {};
59
+ std::vector<std::string>ExtractStr (Blob &blob);
60
+ };
61
+
62
+ class GalleyVectorBin :public GalleyVectorBase
63
+ {
64
+ StampBaseBin & b_stamp;
65
+ public:
66
+ GalleyVectorBin (StampBaseBin & stamp_arg): GalleyVectorBase(stamp_arg), b_stamp(stamp_arg) {};
67
+ std::vector<std::vector<char >>ExtractBin (Blob &blob);
68
+ };
69
+
70
+
71
+ template <class T >class GalleyVectorV :public GalleyVectorBase
57
72
{
58
73
StampBaseV<T>& v_stamp;
59
74
public:
60
- GalleyVectorV (StampBaseV<T> & stamp_arg):GalleyVector (stamp_arg), v_stamp(stamp_arg) {};
75
+ GalleyVectorV (StampBaseV<T> & stamp_arg):GalleyVectorBase (stamp_arg), v_stamp(stamp_arg) {};
61
76
std::vector<T>ExtractValues (Blob &blob);
62
77
};
63
78
@@ -76,19 +91,54 @@ GalleyVectorV<T>::ExtractValues(Blob &blob)
76
91
}
77
92
78
93
79
- class GalleySet :public GalleyBase
94
+ class GalleySetBase :public GalleyBase
80
95
{
81
96
protected:
82
97
std::vector<std::reference_wrapper<StampBase>> stamps;
83
98
public:
84
- GalleySet (std::vector<std::reference_wrapper<StampBase>> arg) : stamps(arg) {};
99
+ GalleySetBase (std::vector<std::reference_wrapper<StampBase>> arg) : stamps(arg) {};
85
100
std::vector<Blob>extract_internal (Blob &blob);
86
- std::vector<std::string>ExtractStr (Blob &blob);
87
- std::vector<std::vector<char >>ExtractBin (Blob &blob);
88
101
89
102
int minSize ()override ;
90
103
int maxSize ()override ;
91
104
};
92
105
106
+ class GalleySetBin :public GalleySetBase
107
+ {
108
+ std::vector<std::reference_wrapper<StampBaseBin>> b_stamps;
109
+ public:
110
+ GalleySetBin (std::vector<std::reference_wrapper<StampBaseBin>> arg) : GalleySetBase(cast_arg(arg)), b_stamps(arg) {};
111
+ std::vector<std::vector<char >>ExtractBin (Blob &blob);
112
+
113
+ std::vector<std::reference_wrapper<StampBase>>cast_arg (std::vector<std::reference_wrapper<StampBaseBin>> in)
114
+ {
115
+ std::vector<std::reference_wrapper<StampBase>> res;
116
+ for (StampBaseBin & s : in)
117
+ {
118
+ res.push_back (s);
119
+ }
120
+ return res;
121
+ };
122
+ };
123
+
124
+
125
+ class GalleySetStr :public GalleySetBase
126
+ {
127
+ std::vector<std::reference_wrapper<StampBaseStr>> s_stamps;
128
+ public:
129
+ GalleySetStr (std::vector<std::reference_wrapper<StampBaseStr>> arg) : GalleySetBase(cast_arg(arg)), s_stamps(arg) {};
130
+ std::vector<std::string>ExtractStr (Blob &blob);
131
+
132
+ std::vector<std::reference_wrapper<StampBase>>cast_arg (std::vector<std::reference_wrapper<StampBaseStr>> in)
133
+ {
134
+ std::vector<std::reference_wrapper<StampBase>> res;
135
+ for (StampBaseStr & s : in)
136
+ {
137
+ res.push_back (s);
138
+ }
139
+ return res;
140
+ };
141
+ };
142
+
93
143
94
144
#endif /* GALLEY_H*/