00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef TORC_BITSTREAM_DEVICEINFO_HPP
00020 #define TORC_BITSTREAM_DEVICEINFO_HPP
00021
00022 #include <boost/cstdint.hpp>
00023 #include <string>
00024 #include <vector>
00025
00026 namespace torc {
00027 namespace bitstream {
00028
00029 namespace bitstream { class bitstream_static_device_info; }
00030
00031
00032
00033
00034
00035 class ColumnDef {
00036 protected:
00037
00038 typedef boost::uint32_t uint32_t;
00039 typedef std::string string;
00040
00041
00042
00043 string mName;
00044
00045 uint32_t mWidth[8];
00046 public:
00047
00048
00049 ColumnDef(const string& inName = string(), uint32_t in0 = 0, uint32_t in1 = 0,
00050 uint32_t in2 = 0, uint32_t in3 = 0, uint32_t in4 = 0, uint32_t in5 = 0,
00051 uint32_t in6 = 0, uint32_t in7 = 0) : mName(inName) {
00052 int i = 0;
00053 mWidth[i++] = in0; mWidth[i++] = in1; mWidth[i++] = in2; mWidth[i++] = in3;
00054 mWidth[i++] = in4; mWidth[i++] = in5; mWidth[i++] = in6; mWidth[i++] = in7;
00055 }
00056
00057
00058 void clear(void) { for(int i = 0; i < 8; i++) mWidth[i] = 0; }
00059
00060
00061 uint32_t operator[] (int inIndex) const { return mWidth[inIndex]; }
00062
00063 const string& getName(void) const { return mName; }
00064 };
00065
00066
00067 class ColumnDefVector : public std::vector<ColumnDef> {};
00068
00069
00070 class ColumnTypeVector : public std::vector<boost::uint32_t> {};
00071
00072
00073
00074
00075 class DeviceInfo {
00076 protected:
00077
00078 typedef boost::uint32_t uint32_t;
00079 typedef boost::uint16_t uint16_t;
00080
00081
00082 uint32_t mTileCount;
00083
00084
00085 uint16_t mRowCount;
00086
00087 uint16_t mColCount;
00088
00089 ColumnTypeVector mColumnTypes;
00090 public:
00091
00092
00093 DeviceInfo(uint32_t inTileCount, uint16_t inRowCount, uint16_t inColCount,
00094 uint32_t* inColumns) : mTileCount(inTileCount), mRowCount(inRowCount),
00095 mColCount(inColCount) {
00096 while(true) {
00097 uint32_t type = *inColumns++;
00098 if(type == static_cast<uint32_t>(-1)) break;
00099 mColumnTypes.push_back(type);
00100 }
00101 }
00102
00103 DeviceInfo(uint32_t inTileCount, uint16_t inRowCount, uint16_t inColCount,
00104 const ColumnTypeVector& inColumnTypes) : mTileCount(inTileCount), mRowCount(inRowCount),
00105 mColCount(inColCount), mColumnTypes(inColumnTypes) {}
00106
00107 DeviceInfo(void) {}
00108
00109
00110 uint32_t getTileCount(void) const { return mTileCount; }
00111
00112 uint16_t getRowCount(void) const { return mRowCount; }
00113
00114 uint16_t getColCount(void) const { return mColCount; }
00115
00116 const ColumnTypeVector& getColumnTypes(void) const { return mColumnTypes; }
00117 };
00118
00119 }
00120 }
00121
00122 #endif // TORC_BITSTREAM_DEVICEINFO_HPP