torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Devices.cpp
Go to the documentation of this file.
1 // Torc - Copyright 2011-2013 University of Southern California. All Rights Reserved.
2 // $HeadURL$
3 // $Id$
4 
5 // This program is free software: you can redistribute it and/or modify it under the terms of the
6 // GNU General Public License as published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
11 // the GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License along with this program. If
14 // not, see <http://www.gnu.org/licenses/>.
15 
16 /// \file
17 /// \brief Source for the Devices class.
18 
19 #include "torc/common/Devices.hpp"
20 
21 
22 #if 0
23  #include <boost/assign/list_of.hpp>
24  #include <boost/assign/list_inserter.hpp>
25  #include <boost/bimap/bimap.hpp>
26  #include <boost/bimap/multiset_of.hpp>
27  #include <boost/bimap/list_of.hpp>
28 
29  using namespace boost::bimaps;
30  using namespace boost;
31 
32  // an alternate approach based on Boost bimaps, but much heavier on object code
33  void populate(void);
34  void populate(void) {
35  typedef bimap< multiset_of< EDevice >, list_of< std::string > > bm_type;
36  bm_type bm = assign::list_of< bm_type::relation >
37  (eXCV50, "xcv50") (eXCV100, "xcv100") (eXCV150, "xcv150") (eXCV200, "xcv200")
38  (eXCV300, "xcv300") (eXCV400, "xcv400") (eXCV600, "xcv600") (eXCV800, "xcv800")
39  (eXCV1000, "xcv1000");
40  }
41 #endif
42 
43 
44 namespace torc {
45 namespace common {
46 
47  /// \brief Helper class to initialize device map and list information.
49  protected:
50  // friends
51  /// \brief Only the Devices class has access to our internals.
52  friend class Devices;
53  // typedefs
54  /// \brief Imported name.
56  // members
57  /// \brief The map from device name to device enumeration.
59  /// \brief The list of devices for a particular family.
61  /// \brief The list of devices for all families.
63  /// \brief Convenience storage for the last inserted device name.
64  static string sDevice;
65  // constructors
66  /// \brief Protected constructor.
67  DeviceFamilyHelper(DeviceNameMap& inDeviceMap, DeviceVector& inDeviceVector,
68  DeviceVector& inCombinedDeviceVector) : mDeviceMap(inDeviceMap),
69  mDeviceVector(inDeviceVector), mCombinedDeviceVector(inCombinedDeviceVector) {}
70  // operators
71  /// \brief Convenience operator to retain the last device name inserted.
72  DeviceFamilyHelper& operator<< (const string& rhs) { sDevice = rhs; return *this; }
73  /// \brief Operator to propagate an enumeration and the previously inserted device name to
74  /// the device map and lists.
76  mDeviceMap[sDevice] = rhs;
77  mDeviceVector.push_back(sDevice);
78  mCombinedDeviceVector[rhs] = sDevice;
79  return *this;
80  }
81  };
82 
83  std::string DeviceFamilyHelper::sDevice;
84  Devices Devices::sDevices;
85 
86  Devices::Devices(void) {
87  // preinitialize the device vector size
88  mDeviceNames.resize(eDeviceCount);
89  // Virtex
90  DeviceFamilyHelper virtexHelper(mDeviceNameMap, mVirtexDevices, mDeviceNames);
91  virtexHelper
92  // Virtex
93  << "xcv50" << eXCV50 << "xcv100" << eXCV100 << "xcv150" << eXCV150
94  << "xcv200" << eXCV200 << "xcv300" << eXCV300 << "xcv400" << eXCV400
95  << "xcv600" << eXCV600 << "xcv800" << eXCV800 << "xcv1000" << eXCV1000;
96  // VirtexE
97  DeviceFamilyHelper virtexEHelper(mDeviceNameMap, mVirtexEDevices, mDeviceNames);
98  virtexEHelper
99  // VirtexE
100  << "xcv50e" << eXCV50E << "xcv100e" << eXCV100E << "xcv200e" << eXCV200E
101  << "xcv300e" << eXCV300E << "xcv400e" << eXCV400E << "xcv405e" << eXCV405E
102  << "xcv600e" << eXCV600E << "xcv812e" << eXCV812E << "xcv1000e" << eXCV1000E
103  << "xcv1600e" << eXCV1600E << "xcv2000e" << eXCV2000E << "xcv2600e" << eXCV2600E
104  << "xcv3200e" << eXCV3200E;
105  // Virtex2
106  DeviceFamilyHelper virtex2Helper(mDeviceNameMap, mVirtex2Devices, mDeviceNames);
107  virtex2Helper
108  // Virtex2
109  << "xc2v40" << eXC2V40 << "xc2v80" << eXC2V80 << "xc2v250" << eXC2V250
110  << "xc2v500" << eXC2V500 << "xc2v1000" << eXC2V1000 << "xc2v1500" << eXC2V1500
111  << "xc2v2000" << eXC2V2000 << "xc2v3000" << eXC2V3000 << "xc2v4000" << eXC2V4000
112  << "xc2v6000" << eXC2V6000 << "xc2v8000" << eXC2V8000;
113  // Virtex2P
114  DeviceFamilyHelper virtex2PHelper(mDeviceNameMap, mVirtex2PDevices, mDeviceNames);
115  virtex2PHelper
116  // Virtex2P
117  << "xc2vp2" << eXC2VP2 << "xc2vp4" << eXC2VP4 << "xc2vp7" << eXC2VP7
118  << "xc2vp20" << eXC2VP20 << "xc2vp30" << eXC2VP30 << "xc2vp40" << eXC2VP40
119  << "xc2vp50" << eXC2VP50 << "xc2vp70" << eXC2VP70 << "xc2vp100" << eXC2VP100
120  // Virtex2P X
121  << "xc2vpx20" << eXC2VPX20 << "xc2vpx70" << eXC2VPX70;
122  // Virtex4
123  DeviceFamilyHelper virtex4Helper(mDeviceNameMap, mVirtex4Devices, mDeviceNames);
124  virtex4Helper
125  // Virtex4 FX
126  << "xc4vfx12" << eXC4VFX12 << "xc4vfx20" << eXC4VFX20 << "xc4vfx40" << eXC4VFX40
127  << "xc4vfx60" << eXC4VFX60 << "xc4vfx100" << eXC4VFX100 << "xc4vfx140" << eXC4VFX140
128  // Virtex4 LX
129  << "xc4vlx15" << eXC4VLX15 << "xc4vlx25" << eXC4VLX25 << "xc4vlx40" << eXC4VLX40
130  << "xc4vlx60" << eXC4VLX60 << "xc4vlx80" << eXC4VLX80 << "xc4vlx100" << eXC4VLX100
131  << "xc4vlx160" << eXC4VLX160 << "xc4vlx200" << eXC4VLX200
132  // Virtex4 SX
133  << "xc4vsx25" << eXC4VSX25 << "xc4vsx35" << eXC4VSX35 << "xc4vsx55" << eXC4VSX55;
134  // Virtex5
135  DeviceFamilyHelper virtex5Helper(mDeviceNameMap, mVirtex5Devices, mDeviceNames);
136  virtex5Helper
137  // Virtex5 FXT
138  << "xc5vfx30t" << eXC5VFX30T << "xc5vfx70t" << eXC5VFX70T
139  << "xc5vfx100t" << eXC5VFX100T << "xc5vfx130t" << eXC5VFX130T
140  << "xc5vfx200t" << eXC5VFX200T
141  // Virtex5 LX
142  << "xc5vlx30" << eXC5VLX30 << "xc5vlx50" << eXC5VLX50 << "xc5vlx85" << eXC5VLX85
143  << "xc5vlx110" << eXC5VLX110 << "xc5vlx155" << eXC5VLX155 << "xc5vlx220" << eXC5VLX220
144  << "xc5vlx330" << eXC5VLX330
145  // Virtex5 LXT
146  << "xc5vlx20t" << eXC5VLX20T << "xc5vlx30t" << eXC5VLX30T << "xc5vlx50t" << eXC5VLX50T
147  << "xc5vlx85t" << eXC5VLX85T << "xc5vlx110t" << eXC5VLX110T
148  << "xc5vlx155t" << eXC5VLX155T << "xc5vlx220t" << eXC5VLX220T
149  << "xc5vlx330t" << eXC5VLX330T
150  // Virtex5 SXT
151  << "xc5vsx35t" << eXC5VSX35T << "xc5vsx50t" << eXC5VSX50T << "xc5vsx95t" << eXC5VSX95T
152  << "xc5vsx240t" << eXC5VSX240T
153  // Virtex5 TXT
154  << "xc5vtx150t" << eXC5VTX150T << "xc5vtx240t" << eXC5VTX240T;
155  // Virtex6
156  DeviceFamilyHelper virtex6Helper(mDeviceNameMap, mVirtex6Devices, mDeviceNames);
157  virtex6Helper
158  // Virtex6 CXT
159  << "xc6vcx75t" << eXC6VCX75T << "xc6vcx130t" << eXC6VCX130T
160  << "xc6vcx195t" << eXC6VCX195T << "xc6vcx240t" << eXC6VCX240T
161  // Virtex6 HXT
162  << "xc6vhx250t" << eXC6VHX250T << "xc6vhx255t" << eXC6VHX255T
163  << "xc6vhx380t" << eXC6VHX380T << "xc6vhx565t" << eXC6VHX565T
164  // Virtex6 LXT
165  << "xc6vlx75t" << eXC6VLX75T << "xc6vlx130t" << eXC6VLX130T
166  << "xc6vlx195t" << eXC6VLX195T << "xc6vlx240t" << eXC6VLX240T
167  << "xc6vlx365t" << eXC6VLX365T << "xc6vlx550t" << eXC6VLX550T
168  << "xc6vlx760" << eXC6VLX760
169  // Virtex6 SXT
170  << "xc6vsx315t" << eXC6VSX315T << "xc6vsx475t" << eXC6VSX475T;
171  // Artix7
172  DeviceFamilyHelper artix7Helper(mDeviceNameMap, mArtix7Devices, mDeviceNames);
173  artix7Helper
174  // Artix7 T
175  << "xc7a100t" << eXC7A100T << "xc7a200t" << eXC7A200T;
176  // Kintex7
177  DeviceFamilyHelper kintex7Helper(mDeviceNameMap, mKintex7Devices, mDeviceNames);
178  kintex7Helper
179  // Kintex7 T
180  << "xc7k70t" << eXC7K70T << "xc7k160t" << eXC7K160T << "xc7k325t" << eXC7K325T
181  << "xc7k355t" << eXC7K355T << "xc7k410t" << eXC7K410T << "xc7k420t" << eXC7K420T
182  << "xc7k480t" << eXC7K480T;
183  // Virtex7
184  DeviceFamilyHelper virtex7Helper(mDeviceNameMap, mVirtex7Devices, mDeviceNames);
185  virtex7Helper
186  // Virtex7 T
187  << "xc7v585t" << eXC7V585T << "xc7v2000t" << eXC7V2000T
188  // Virtex7 HT
189  << "xc7vh580t" << eXC7VH580T << "xc7vh870t" << eXC7VH870T
190  // Virtex7 XT
191  << "xc7vx330t" << eXC7VX330T << "xc7vx415t" << eXC7VX415T << "xc7vx485t" << eXC7VX485T
192  << "xc7vx550t" << eXC7VX550T << "xc7vx690t" << eXC7VX690T << "xc7vx980t" << eXC7VX980T
193  << "xc7vx1140t" << eXC7VX1140T;
194  // Zynq7000
195  DeviceFamilyHelper zynq7000Helper(mDeviceNameMap, mZynq7000Devices, mDeviceNames);
196  zynq7000Helper
197  // Zynq7000
198  << "xc7z010" << eXC7Z010 << "xc7z020" << eXC7Z020 << "xc7z030" << eXC7Z030
199  << "xc7z045" << eXC7Z045;
200  // Spartan3E
201  DeviceFamilyHelper spartan3EHelper(mDeviceNameMap, mSpartan3EDevices, mDeviceNames);
202  spartan3EHelper
203  // Spartan3E
204  << "xc3s100e" << eXC3S100E << "xc3s250e" << eXC3S250E << "xc3s500e" << eXC3S500E
205  << "xc3s1200e" << eXC3S1200E << "xc3s1600e" << eXC3S1600E;
206  // Spartan6
207  DeviceFamilyHelper spartan6Helper(mDeviceNameMap, mSpartan6Devices, mDeviceNames);
208  spartan6Helper
209  // Spartan6 LX
210  << "xc6slx4" << eXC6SLX4 << "xc6slx9" << eXC6SLX9 << "xc6slx16" << eXC6SLX16
211  << "xc6slx25" << eXC6SLX25 << "xc6slx45" << eXC6SLX45 << "xc6slx75" << eXC6SLX75
212  << "xc6slx100" << eXC6SLX100 << "xc6slx150" << eXC6SLX150
213  // Spartan6 LXT
214  << "xc6slx25t" << eXC6SLX25T << "xc6slx45t" << eXC6SLX45T << "xc6slx75t" << eXC6SLX75T
215  << "xc6slx100t" << eXC6SLX100T << "xc6slx150t" << eXC6SLX150T;
216 
217  // add all of the devices that are currently supported
218  addToSupportedDevices(mVirtexDevices);
219  addToSupportedDevices(mVirtexEDevices);
220  addToSupportedDevices(mVirtex2Devices);
221  addToSupportedDevices(mVirtex2PDevices);
222  addToSupportedDevices(mVirtex4Devices);
223  addToSupportedDevices(mVirtex5Devices);
224  addToSupportedDevices(mVirtex6Devices);
225  addToSupportedDevices(mVirtex7Devices);
226  addToSupportedDevices(mKintex7Devices);
227  addToSupportedDevices(mArtix7Devices);
228  addToSupportedDevices(mZynq7000Devices);
229  addToSupportedDevices(mSpartan3EDevices);
230  addToSupportedDevices(mSpartan6Devices);
231 
232  // add a subset of devices suitable for basic unit tests
233  mUnitTestDevices.push_back(mVirtexDevices.front());
234  mUnitTestDevices.push_back(mVirtexEDevices.front());
235  mUnitTestDevices.push_back(mVirtex2Devices.front());
236  mUnitTestDevices.push_back(mVirtex2PDevices.front());
237  mUnitTestDevices.push_back(mVirtex4Devices.front());
238  mUnitTestDevices.push_back(mVirtex5Devices.front());
239  mUnitTestDevices.push_back(mVirtex6Devices.front());
240  mUnitTestDevices.push_back(mVirtex7Devices.front());
241  mUnitTestDevices.push_back(mKintex7Devices.front());
242  mUnitTestDevices.push_back(mArtix7Devices.front());
243  mUnitTestDevices.push_back(mZynq7000Devices.front());
244  mUnitTestDevices.push_back(mSpartan3EDevices.front());
245  mUnitTestDevices.push_back(mSpartan6Devices.front());
246  }
247 
248  /*
249  The list of 7-Series devices supported by ISE has changed frequently from 13.4 to 14.5.
250  Reconstruct the output of partgen by pasting the following hex data as input to:
251 
252  xxd -r -g 4 -c 24 | tar xvz
253 
254  The following files will be generated:
255 
256  artix-13.4 artix-14.1 artix-14.2 artix-14.3 artix-14.4 artix-14.5
257  kintex-13.4 kintex-14.1 kintex-14.2 kintex-14.3 kintex-14.4 kintex-14.5
258  virtex-13.4 virtex-14.1 virtex-14.2 virtex-14.3 virtex-14.4 virtex-14.5
259  zynq-13.4 zynq-14.1 zynq-14.2 zynq-14.3 zynq-14.4 zynq-14.5
260 
261  0000000: 1f8b0800 82b7b351 0003ed9d 5d6fe246 1486731b 7ec55cee .......Q....]o.F..s.~.\.
262  0000018: 4a05e67b a0aa2a45 bbe96ad5 561b3552 55f566c5 12036e28 J..{..*E..j.V.5RU.f...n(
263  0000030: a4c69bb2 f9f5b53d fe2480ed c28ce3f8 bc178189 ed33c6f8 .......=.$...........3..
264  0000048: 3ce73073 6c4f3cdf ddf6091b f00b63c2 8124e7c1 2b518230 <.0slO<.......c..$..+Q.0
265  0000060: fd4a55f4 ff404452 71412811 5c312624 bdc08461 cc2f1036 .JU..@DRqA(.\1&$...a./.6
266  0000078: b74b99be 6efc8987 d0c56ae3 3beecaf1 0ead57b6 bca5facd .K..n.....j.;.....W.....
267  0000090: 593a938d 83c23300 f5d1cdc4 f33f382b f4693052 db3bf466 Y:....3......?8+.i0R.;.f
268  00000a8: e9ae247f db7bb77e f8e6b9f3 858fde4c df22321e 8b3ec584 ..$..{.~.......L."2..>..
269  00000c0: a03fdc60 85ed77e8 e36a3a40 e86ab944 d15a1be4 391bc77b .?.`..w..j:@.j.D.Z..9..{
270  00000d8: 74ee06bd 9b5f6f6f aedfa17e 1f7d7a74 3ccfbd73 57f3783b t...._oo...~.}zt<..sW.x;
271  00000f0: 3473974e ef87a1b3 7d587bfe d05faf97 9be1365a 340cf767 4s.N....}X{.._....6Z4..g
272  0000108: f8f1f6fa f3fbdb61 f83a9c84 27aa1ade 4dfc49fc 7e3099de .......a.:..'...M.I.~0..
273  0000120: fd88fe75 fd055aae a7936562 cefd3b32 f7e0adff 72a6fe66 ...u..Z...eb..;2....r..f
274  0000138: f8d3cd87 abcfdab8 fe1b74f0 75bbafa3 7dfdf4e2 8e7a57d1 ..........t.u...}....zW.
275  0000150: 82de76aa 26a3cbcb e0435dbf bffdfef2 b2cf50a0 3e8dfe12 ..v.&....C].......P.>...
276  0000168: fdfe971e 8a35ddcc 19e559f3 614e994c 9b337f4e 858c4c12 .....5....Y.aN.L.3.N..L.
277  0000180: 717e9b0c fbffd7e8 6c3ee723 becfa830 6194e0f3 599dcfa5 q~......l>.#...0a...Y...
278  0000198: da7b3868 9d4e665f 8a56bf14 adcee684 2447b9ce 11a966d6 .{8h.Nf_.V......$G....f.
279  00001b0: a2ff4f34 fff98098 eba38cff 84b290ff 5c704e14 0bf94f95 ..O4............\pN...O.
280  00001c8: 94c07f1b 4af91f9c 0139fedf 0c88d8ce 4af84f4d f23fd81f ....J....9......J.OM.?..
281  00001e0: 3bfccf75 5495ff6d c555d2de e8b5db4f 2fd0a94a f94fcdf5 ;..uT..m.U.....O/..J.O..
282  00001f8: 518bff4a e9fc1f03 ff6d28c7 7f5ae03f 1d95e6ff 86f94f6d Q..J.....m(..Z.?......Om
283  0000210: f19f02ff 81ff1d55 ca7f66ae 8f12fe63 a578c27f 8a198bf2 .......U..f....c.x......
284  0000228: 7f05f9bf 15e5f8cf 0afce7b8 69fe335b fc671de5 7ff8fda7 ............i.3[.g......
285  0000240: fedfdcf8 6fe0ff69 fe4719d6 bfff9500 ffb7a19c fff3a2ff ....o..i.G..............
286  0000258: 8f1b767f 4bc3bfbc fef0ef2b 72ffccff 85b973ac 96ff4bfd ..v.K......+r.....s...K.
287  0000270: fb8f10f0 7f1bcaf9 bf28f8bf 18353cfc 276cf9bf e8b2ffdf .........(...5<.'l......
288  0000288: bb2bdf31 3c015c36 fe13f87d 3afe13ce 0507fe4f 0403ffb7 .+.1<.\6...}:......O....
289  00002a0: a1d6ccff ea1335f6 ccb86166 0678b7a7 5eda55ef 67bd2874 ......5...af.x..^.U.g.(t
290  00002b8: d07b55cf 3f0b0e99 8ebfdc13 798299d9 21ab8c8a 53766e8c .{U.?.......y...!...Svn.
291  00002d0: f1c14e66 d1d2a813 51a79370 3b126dc7 c94947ae dace715a ..Nf....Q..p;.m..IG...qZ
292  00002e8: a713bd73 b96632bb 7bcf47a7 db69dac7 8f29e1bf c909e03a ...s.f2.{.G..i...).....:
293  0000300: fc579c6a fe43fe67 45ad99ff 35c8ff9d 1960e03f f0bf83fc .W.j.C.gE...5....`.?....
294  0000318: 3737015c 83ffc1af 1e16f19f 03ffada8 35f3bf46 f94f81ff 77.\............5..F.O..
295  0000330: c0ff8ef3 dfdc0470 2dfe73ac f90fe33f 56d49af9 5fa3fc67 .......p-.s....?V..._..g
296  0000348: c07fe07f c7f9dfe4 f87f7efe 5fc1f88f 45b565fe df28fe61 ..........~._...E.e..(.a
297  0000360: f81ff0df 4dfce7f8 6fae00a4 0eff3989 e77f29f0 df86da52 ....M...o.....9...)....R
298  0000378: ff6194ff 02f80ffc ef26ff1f 5dafe9fa 1f4a83f7 69fd0f93 .a.......&..]....J..i...
299  0000390: 11ff158c ff58516b ea7ff489 1a63396e 98a9ffd9 ed291700 .....XQk.....c9n.....)..
300  00003a8: 7ed78b42 343c6e59 9dfb2b68 18a8425b 49a22d05 49cf6996 ~..B4<nY..+h..B[I.-.I.i.
301  00003c0: 881815da 631aef23 1f9dd972 b8cfbb3d 15da0ceb 9e45ad0b ....c..#...r...=.....E..
302  00003d8: cb8e7c06 71ea4748 0fb31c9f f885951f 0c59ede0 8c77c2ca ..|.q.GH.........Y...w..
303  00003f0: 917d786e 73b4df26 21fc88d1 0fcf6c2f f5b68576 603bb445 .}xns..&!.....l/...v`;.E
304  0000408: 04ae6b2a 39c814d7 de744c45 d65e6853 4d63b133 4ae27f83 ..k*9....tLE.^hSMc.3J...
305  0000420: f55f54e6 afffe67a fc4fc1fd 9faca835 f55f06e3 ff4efd57 ._T....z.O.....5._...N.W
306  0000438: c5f8bfa0 e363a44b 91b69886 814340ce 50e8a9d0 3e7bceb0 .....c.K.....C@.P...>{..
307  0000450: 10c702ec f3ef26df 1e33b2d3 a6af350f 598c54e5 c374e8b0 ......&..3....5.Y.T..t..
308  0000468: 9c3b9729 b6d95973 9be272b6 b35c7631 f7c9e27f 63f57f54 .;.)..Ys..r..\v1....c..T
309  0000480: c86cfc17 135dff21 e1fe2f56 d49afa3f a3f19f42 fc87f88f .l...].!../V...?...B....
310  0000498: 20febf80 f86f2cde 7733be97 298bff8d d57f528e f3f59f5c ....o,.w3..).....R....\
311  00004b0: c77f98ff b5a2d6d4 7f1a8dff 0cc6ff2b 5a86580e b1fcc5c4 ...............+Z.X.....
312  00004c8: f2d71890 2d2b8bff cdcdff73 4ab2fa5f a2afff93 50ff6b45 ....-+.....sJ.._....P.kE
313  00004e0: 6da9ff35 1afe61fa bfaae517 17fe774d 411650f7 684132a0 m..5..a.......wMA.P.hA2.
314  00004f8: dbdd4c06 b2f8df58 fd7721fe 73aaebff a482f86f 436da9ff ..L....X.w!.s......oCm..
315  0000510: 361aff05 c4ff8a96 21feeffd 0621fe43 fc6fa79e beadfe31 6.......!....!.C.o.....1
316  0000528: fcf8c7d2 fbff8637 fb49ebff 7918ffa9 e470ff6f 2b325eff .......7.I..y....p.o+2^.
317  0000540: dff40704 1d95f67f a38fff2b 7ffe13ce f27f4171 e4ff0cea ...........+......Aq....
318  0000558: 7faca835 f5bfe189 aa73f2f0 9d99cadf dd3e7a61 d2ff67f0 ...5.....s.......>za..g.
319  0000570: 364c309e 30c10773 bc348d98 2ee73c77 8562d8d4 17653e61 6L0.0..s.4....<w.b...e>a
320  0000588: 7adae6ac c2e655af 107dc2fc f0f366ab 5ad3575b 367d0283 z.....U..}....f.Z.W[6}..
321  00005a0: 4e52c27f 838fff2b e53f9634 e33f8ef3 3fb8fed3 8a5a53ff NR.....+.?.4.?..?....ZS.
322  00005b8: 6988ffd4 0cff01f8 a05628e1 bfc1c7ff d5caffb9 223aff87 i........V(.........":..
323  00005d0: f17f2b6a 4dfd9f21 fe33e3f9 3fa502c2 01e8852a e17f83e3 ..+jM..!.3..?......*....
324  00005e8: bf01ff71 56ff25a8 e63f8cff 5a515bea bf0ce19f 03fe01ff ...qV.%..?..ZQ[.........
325  0000600: 5d56c27f 838fff2c e7bfcac6 7fb87efe b7e490ff 5b515bea ]V.....,......~.....[Q[.
326  0000618: 7f0cf15f 00ff4fe3 7f682dc8 dff6d45d ecae996b befcdb22 ..._..O..h-....]...k..."
327  0000630: 82402010 08040281 4020d0ab d37f4e1a 67e600a0 0000 .@ .....@ ....N.g.....
328  */
329 
330 } // namespace common
331 } // namespace torc
Helper class to initialize device map and list information.
Definition: Devices.cpp:48
std::string string
Imported name.
Definition: Devices.cpp:55
DeviceNameMap & mDeviceMap
The map from device name to device enumeration.
Definition: Devices.cpp:58
EDevice
Enumeration of all supported devices.
Definition: Devices.hpp:32
Encapsulation of filesystem paths that are used by the library.
Definition: Devices.hpp:125
std::ostream & operator<<(std::ostream &os, const DDB &ddb)
std::string string
std::map< std::string, enum EDevice > DeviceNameMap
Map of device names.
Definition: Devices.hpp:122
DeviceVector & mCombinedDeviceVector
The list of devices for all families.
Definition: Devices.cpp:62
DeviceFamilyHelper(DeviceNameMap &inDeviceMap, DeviceVector &inDeviceVector, DeviceVector &inCombinedDeviceVector)
Protected constructor.
Definition: Devices.cpp:67
Header for the Devices class.
DeviceVector & mDeviceVector
The list of devices for a particular family.
Definition: Devices.cpp:60
static string sDevice
Convenience storage for the last inserted device name.
Definition: Devices.cpp:64
std::vector< std::string > DeviceVector
Vector of device names.
Definition: Devices.hpp:119