1 #ifndef SZA_UTIL_REGPARSER_H
2 #define SZA_UTIL_REGPARSER_H
17 #include "carma/szaarrayutils/szaregs.h"
28 CoordRange coordRange_;
29 bool hasIndexCoordRange_;
30 CoordRange indexCoordRange_;
33 hasCoordRange_ =
false;
34 hasIndexCoordRange_ =
false;
45 RegParser(
bool archivedOnly_=
false);
55 std::vector<RegDescription> inputRegs(std::string regStr,
56 RegInputMode mode=REG_INPUT_RANGE,
59 bool splitIndices=
false);
65 std::vector<RegDescription> inputRegs(std::string regStr,
70 bool splitIndices=
false,
73 std::vector<RegDescription> inputRegsCarma(std::string regSpec,
78 bool splitIndices=
false,
93 std::vector<RegDescription> inputRegs(InputStream* stream,
98 bool splitIndices=
false,
101 std::vector<RegDescription> inputRegsCarma(std::string regSpec,
106 bool splitIndices=
false,
112 RegDescription inputReg(std::string regStr,
113 RegInputMode mode=REG_INPUT_RANGE,
117 RegDescription inputRegCarma(std::string regStr,
121 ArrayMap* arraymap=0);
126 RegDescription inputReg(InputStream* stream,
130 ArrayMap* arraymap=0);
135 inline RegValidity validity() {
142 static unsigned getSize(RegMapBlock* block, RegAspect aspect,
bool extend);
148 ArrayMapBase arrayMap_;
150 RegValidity validity_;
158 bool wordFollows(InputStream* stream);
163 RegAspect checkAspect(InputStream* stream,
bool throwIfNoMatch=
true);
164 static RegAspect checkAspect(std::string str,
bool throwIfNoMatch=
true);
165 static RegAspect checkAspect(
char* cstr,
bool throwIfNoMatch=
true);
170 RegInteg checkInteg(InputStream* stream,
bool throwIfNoMatch=
true);
171 static RegInteg checkInteg(std::string str,
bool throwIfNoMatch=
true);
172 static RegInteg checkInteg(
char* cstr,
bool throwIfNoMatch=
true);
177 CoordRange readIndexRanges(InputStream* stream);
182 Range<unsigned> readIndexRange(InputStream* stream);
188 void checkValidityOfMode(RegInputMode mode, ArrRegMap* aregmap,
189 RegMapBoard* brd, RegMapBlock* blk,
190 CoordRange& range,
unsigned size);
192 void parseFromStream(InputStream* stream,
char* regmap_name,
char* board_name,
char* block_name,
193 CoordRange& boardCoordRange,
194 CoordRange& coordRange,
199 void matchRegisters(ArrayMap* arrayMap,
200 char* regmap_name,
char* board_name,
char* block_name,
201 CoordRange& boardCoordRange,
202 CoordRange& coordRange,
208 std::vector<RegDescription>& regs);
212 void parseFromString(std::string regSpec,
213 std::vector<std::string>& regmapNames,
214 std::vector<std::string>& boardNames,
215 std::vector<std::string>& blockNames,
216 CoordRange& coordRange,
220 bool throwIfNoMatch=
true);
222 void matchRegisters(ArrayMap* arrayMap,
223 std::vector<std::string>& regmapNames,
224 std::vector<std::string>& boardNames,
225 std::vector<std::string>& blockNames,
226 CoordRange& coordRange,
232 std::vector<RegDescription>& regs);
236 static std::vector<std::string> parseIntoPeriodSeparatedStrings(std::string regSpec);
238 static std::vector<RegSpecItem> parseIntoPeriodSeparatedItems(std::string regSpec);
240 static CoordRange parseCoordRange(String& str);
241 static CoordRange parseCoordRangeCarma(String& str);
242 static CoordRange parseIndexCoordRangeCarma(String& str);
244 static RegSpecItem parseItem(std::string str);
245 static RegSpecItem parseItemCarma(std::string str);
247 static std::vector<std::string> getExpandedNames(RegSpecItem& items);
248 static std::vector<std::string> concatenateItem(std::vector<std::string>& inNames, RegSpecItem& item);
249 static std::vector<std::string> getBoardNames(std::vector<RegSpecItem>& items);
250 static std::vector<std::string> getBlockNames(std::vector<RegSpecItem>& items);
251 static std::vector<std::string> getRegmapNames(std::vector<RegSpecItem>& items);
261 #endif // End #ifndef SZA_UTIL_REGPARSER_H
Tagged: Mon Sep 27 21:37:46 UTC 2004.
Tagged: Wed May 12 09:30:13 PDT 2004.
Tagged: Fri Sep 17 15:51:07 PDT 2004.