@@ -39,25 +39,40 @@ class GalleyBase
3939
4040};
4141
42- class GalleyVector : public GalleyBase
42+ class GalleyVectorBase : public GalleyBase
4343{
4444 protected:
4545 StampBase &stamp;
4646 public:
47- GalleyVector (StampBase & stamp_arg) : stamp(stamp_arg) {};
47+ GalleyVectorBase (StampBase & stamp_arg) : stamp(stamp_arg) {};
4848 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-
5249 int minSize () override ;
5350 int maxSize () override {return -1 ;}; /* Sereies always takes as much data as it can take */
5451};
5552
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
5772{
5873 StampBaseV<T>& v_stamp;
5974 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) {};
6176 std::vector<T> ExtractValues (Blob &blob);
6277};
6378
@@ -76,19 +91,54 @@ GalleyVectorV<T>::ExtractValues(Blob &blob)
7691}
7792
7893
79- class GalleySet : public GalleyBase
94+ class GalleySetBase : public GalleyBase
8095{
8196 protected:
8297 std::vector<std::reference_wrapper<StampBase>> stamps;
8398 public:
84- GalleySet (std::vector<std::reference_wrapper<StampBase>> arg) : stamps(arg) {};
99+ GalleySetBase (std::vector<std::reference_wrapper<StampBase>> arg) : stamps(arg) {};
85100 std::vector<Blob> extract_internal (Blob &blob);
86- std::vector<std::string> ExtractStr (Blob &blob);
87- std::vector<std::vector<char >> ExtractBin (Blob &blob);
88101
89102 int minSize () override ;
90103 int maxSize () override ;
91104};
92105
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+
93143
94144#endif /* GALLEY_H */
0 commit comments