4 #include "carma/szaarrayutils/regmap.h"
5 #include "carma/szaarrayutils/hash.h"
6 #include "carma/szaarrayutils/netbuf.h"
7 #include "carma/szaarrayutils/input.h"
8 #include "carma/szaarrayutils/output.h"
18 typedef struct ArrayMap ArrayMap;
19 typedef struct ArrRegMap ArrRegMap;
20 typedef struct ArrRegMapReg ArrRegMapReg;
30 int find_ArrRegMapReg(ArrayMap* arraymap,
31 std::string regmap_name, std::string board_name, std::string block_name,
32 RegAspect facet,
unsigned index,
unsigned n,
35 int init_ArrRegMapReg(ArrayMap* arraymap,
36 unsigned regmap,
unsigned board,
unsigned block,
37 unsigned index,
unsigned nreg, RegAspect aspect,
40 RegValidity input_ArrRegMapReg(InputStream *stream,
int tell,
41 ArrayMap* arraymap, RegInputMode mode,
42 int extend, ArrRegMapReg *reg);
44 int output_ArrRegMapReg(OutputStream *stream, ArrayMap* arraymap,
45 RegOutputMode mode, ArrRegMapReg *reg);
47 void clr_ArrRegMapReg(ArrRegMapReg *reg);
53 char name[REG_NAME_LEN+1];
54 std::string* comment_;
75 ArrRegMap(ArrayMap* parent,
void* vregtemp,
unsigned iRegMap,
bool old=
false,
bool addPerBrdRegs=
true);
85 int byteOffsetInArcArrayMap() {
89 int byteOffsetInWholeArrayMap() {
95 int byteOffsetInArrayMap(
bool archivedOnly) {
96 return archivedOnly ? byteOffsetInArcArrayMap() :
97 byteOffsetInWholeArrayMap();
102 int byteOffsetInArcArrayMapOf(RegMapBlock* block,
sza::util::Coord* coord=0);
103 int byteOffsetInWholeArrayMapOf(RegMapBlock* block,
sza::util::Coord* coord=0);
107 int byteOffsetInArrayMapOf(
bool archivedOnly,
110 return archivedOnly ? byteOffsetInArcArrayMapOf(block, coord) :
111 byteOffsetInWholeArrayMapOf(block, coord);
116 int slotOffsetInArcArrayMap() {
120 int slotOffsetInWholeArrayMap() {
126 int slotOffsetInArrayMap(
bool archivedOnly) {
127 return archivedOnly ? slotOffsetInArcArrayMap() :
128 slotOffsetInWholeArrayMap();
133 int slotOffsetInArcArrayMapOf(RegMapBlock* block,
sza::util::Coord* coord=0);
134 int slotOffsetInWholeArrayMapOf(RegMapBlock* block,
sza::util::Coord* coord=0);
138 int slotOffsetInArrayMapOf(
bool archivedOnly,
141 return archivedOnly ? slotOffsetInArcArrayMapOf(block, coord) :
142 slotOffsetInWholeArrayMapOf(block, coord);
147 unsigned nByte() {
return regmap->nByte();};
148 unsigned nArcByte() {
return regmap->nArcByte();};
152 int nByte(
bool archivedOnly) {
153 return archivedOnly ? nArcByte() : nByte();
158 std::vector<RegMapBoard*> matchRegMapBoard(std::string regExpString);
159 std::vector<RegMapBoard*> matchRegMapBoard(std::string regExpString, sza::util::CoordRange& range);
160 std::vector<RegMapBoard*> matchRegMapBoard(std::vector<std::string>& boards);
168 std::vector<ArrRegMap*> regmaps;
174 std::map<std::string, ArrRegMap*> regmapMap_;
178 ArrayMap(
void* vtmp,
bool old=
false,
bool addPerBrdRegs=
true);
188 int byteOffsetInArcArrayMapOf(std::string regmap, std::string board,
192 int byteOffsetInWholeArrayMapOf(std::string regmap, std::string board,
198 int byteOffsetOf(
bool archivedOnly, std::string regmap, std::string board,
202 return archivedOnly ?
203 byteOffsetInArcArrayMapOf(regmap, board, block, coord) :
204 byteOffsetInWholeArrayMapOf(regmap, board, block, coord);
209 int byteOffsetInArcArrayMapOf(ArrRegMap* aregmap, RegMapBlock* block,
212 int byteOffsetInWholeArrayMapOf(ArrRegMap* aregmap, RegMapBlock* block,
217 int byteOffsetOf(
bool archivedOnly, ArrRegMap* aregmap, RegMapBlock* block,
220 return archivedOnly ? byteOffsetInArcArrayMapOf(aregmap, block, coord) :
221 byteOffsetInWholeArrayMapOf(aregmap, block, coord);
226 int slotOffsetInArcArrayMapOf(ArrRegMap* aregmap, RegMapBlock* block,
229 int slotOffsetInWholeArrayMapOf(ArrRegMap* aregmap, RegMapBlock* block,
234 int slotOffsetOf(
bool archivedOnly, ArrRegMap* aregmap, RegMapBlock* block,
236 return archivedOnly ? slotOffsetInArcArrayMapOf(aregmap, block, coord) :
237 slotOffsetInWholeArrayMapOf(aregmap, block, coord);
242 int slotOffsetInArcArrayMapOf(std::string regmap, std::string board,
245 int slotOffsetInWholeArrayMapOf(std::string regmap, std::string board,
251 int slotOffsetOf(
bool archivedOnly,
252 std::string regmap, std::string board, std::string block,
255 return archivedOnly ?
256 slotOffsetInArcArrayMapOf(regmap, board, block, coord) :
257 slotOffsetInWholeArrayMapOf(regmap, board, block, coord);
262 int nByte(
bool archivedOnly) {
263 return archivedOnly ? nArcByte_ : nByte_;
268 int nReg(
bool archivedOnly) {
269 return archivedOnly ? narchive : nreg;
274 RegMapBlock* findArrayMapBlock(std::string regmap_name, std::string board_name,
275 std::string block_name,
279 RegMap* findRegMap(std::string regmap_name);
283 ArrRegMap* findArrRegMap(RegMap* regmapPtr);
284 ArrRegMap* findArrRegMap(std::string regmapName);
288 std::vector<ArrRegMap*> matchArrRegMap(std::string regExpString);
289 std::vector<ArrRegMap*> matchArrRegMap(std::vector<std::string>& regmaps);
296 ArrayMap *alias_ArrayMap(ArrayMap *arrayMap);
300 ArrayMap *del_ArrayMap(ArrayMap *arrayMap);
304 int equiv_ArrayMap(ArrayMap *arrayMap1, ArrayMap *arrayMap2);
306 ArrRegMap* find_ArrRegMap(ArrayMap *arrayMap, std::string regMapName);
308 RegMapBlock* find_ArrayMapBlock(ArrayMap *arraymap, std::string regmap_name,
309 std::string board_name, std::string block_name);
A class for specifying a coordinate in a multi-dimensional space.