LTKCPP-- LLRP Toolkit C Plus Plus Library
ltkcpp_base.h
Go to the documentation of this file.
1 
2 /*
3  *****************************************************************************
4  * *
5  * IMPINJ CONFIDENTIAL AND PROPRIETARY *
6  * *
7  * This source code is the sole property of Impinj, Inc. Reproduction or *
8  * utilization of this source code in whole or in part is forbidden without *
9  * the prior written consent of Impinj, Inc. *
10  * *
11  * (c) Copyright Impinj, Inc. 2007,2008. All rights reserved. *
12  * *
13  *****************************************************************************/
14 
37 namespace LLRP
38 {
39 
40 /*
41  * Forward declarations of structs and classes
42  */
43 
44 //enum EResultCode;
45 class CErrorDetails;
46 class CVendorDescriptor;
47 class CNamespaceDescriptor;
48 class CTypeDescriptor;
49 class CFieldDescriptor;
50 struct SEnumTableEntry;
51 class CTypeRegistry;
52 class CElement;
53 class CMessage;
54 class CParameter;
55 class CDecoder;
56 class CDecoderStream;
57 class CEncoder;
58 class CEncoderStream;
59 
60 
61 /*
62  * Simple array (vector) types. There is an array type
63  * for each of {u,s}{8,16,32,64}v and u1v and utf8v.
64  *
65  * The member variables are:
66  * m_nValue The number of array elements
67  * m_pValue Pointer to the first element
68  *
69  * The interfaces:
70  * llrp_XXv_t(void) Default constructor, just sets the
71  * member fields to zero.
72  * llrp_XXv_t(llrp_XXv_t & rOther)
73  * Constructor that clones an existing object.
74  * ~llrp_XXv_t(void) Destructor, just deletes m_pValue in case
75  * there is something allocated to it.
76  * operator= Assignment operator. Used to copy an
77  * existing instance. It's careful
78  * to delete m_pValue before overwriting it.
79  *
80  * Private subroutines
81  * copy() Makes a copy, supports operator=
82  * reset() Clears the variable much like the
83  * destructor does.
84  */
85 
94 {
95  public:
97  llrp_u16_t m_nValue;
99  llrp_u8_t * m_pValue;
100 
102  llrp_u8v_t(void);
103 
105  llrp_u8v_t (
106  unsigned int nValue);
107 
109  llrp_u8v_t (
110  const llrp_u8v_t & rOther);
111 
113  ~llrp_u8v_t(void);
114 
116  llrp_u8v_t &
117  operator= (
118  const llrp_u8v_t & rValue);
119 
120  private:
121  void
122  copy (
123  const llrp_u8v_t & rOther);
124 
125  void
126  reset (void);
127 };
128 
137 {
138  public:
140  llrp_u16_t m_nValue;
142  llrp_s8_t * m_pValue;
143 
145  llrp_s8v_t(void);
146 
148  llrp_s8v_t (
149  unsigned int nValue);
150 
152  llrp_s8v_t (
153  const llrp_s8v_t & rOther);
154 
156  ~llrp_s8v_t(void);
157 
159  llrp_s8v_t &
160  operator= (
161  const llrp_s8v_t & rValue);
162 
163  private:
164  void
165  copy (
166  const llrp_s8v_t & rOther);
167 
168  void
169  reset (void);
170 };
171 
180 {
181  public:
183  llrp_u16_t m_nValue;
185  llrp_u16_t * m_pValue;
186 
188  llrp_u16v_t(void);
189 
191  llrp_u16v_t (
192  unsigned int nValue);
193 
195  llrp_u16v_t (
196  const llrp_u16v_t & rOther);
197 
199  ~llrp_u16v_t(void);
200 
202  llrp_u16v_t &
203  operator= (
204  const llrp_u16v_t & rValue);
205 
206  private:
207  void
208  copy (
209  const llrp_u16v_t & rOther);
210 
211  void
212  reset (void);
213 };
214 
223 {
224  public:
226  llrp_u16_t m_nValue;
228  llrp_s16_t * m_pValue;
229 
231  llrp_s16v_t(void);
232 
234  llrp_s16v_t (
235  unsigned int nValue);
236 
238  llrp_s16v_t (
239  const llrp_s16v_t & rOther);
240 
242  ~llrp_s16v_t(void);
243 
245  llrp_s16v_t &
246  operator= (
247  const llrp_s16v_t & rValue);
248 
249  private:
250  void
251  copy (
252  const llrp_s16v_t & rOther);
253 
254  void
255  reset (void);
256 };
257 
266 {
267  public:
269  llrp_u16_t m_nValue;
271  llrp_u32_t * m_pValue;
272 
274  llrp_u32v_t(void);
275 
277  llrp_u32v_t (
278  unsigned int nValue);
279 
281  llrp_u32v_t (
282  const llrp_u32v_t & rOther);
283 
285  ~llrp_u32v_t(void);
286 
288  llrp_u32v_t &
289  operator= (
290  const llrp_u32v_t & rValue);
291 
292  private:
293  void
294  copy (
295  const llrp_u32v_t & rOther);
296 
297  void
298  reset (void);
299 };
300 
309 {
310  public:
312  llrp_u16_t m_nValue;
314  llrp_s32_t * m_pValue;
315 
317  llrp_s32v_t(void);
318 
320  llrp_s32v_t (
321  unsigned int nValue);
322 
324  llrp_s32v_t (
325  const llrp_s32v_t & rOther);
326 
328  ~llrp_s32v_t(void);
329 
331  llrp_s32v_t &
332  operator= (
333  const llrp_s32v_t & rValue);
334 
335  private:
336  void
337  copy (
338  const llrp_s32v_t & rOther);
339 
340  void
341  reset (void);
342 };
343 
352 {
353  public:
355  llrp_u16_t m_nValue;
357  llrp_u64_t * m_pValue;
358 
360  llrp_u64v_t(void);
361 
363  llrp_u64v_t (
364  unsigned int nValue);
365 
367  llrp_u64v_t (
368  const llrp_u64v_t & rOther);
369 
371  ~llrp_u64v_t(void);
372 
374  llrp_u64v_t &
375  operator= (
376  const llrp_u64v_t & rValue);
377 
378  private:
379  void
380  copy (
381  const llrp_u64v_t & rOther);
382 
383  void
384  reset (void);
385 };
386 
395 {
396  public:
398  llrp_u16_t m_nValue;
400  llrp_s64_t * m_pValue;
401 
403  llrp_s64v_t(void);
404 
406  llrp_s64v_t (
407  unsigned int nValue);
408 
410  llrp_s64v_t (
411  const llrp_s64v_t & rOther);
412 
414  ~llrp_s64v_t(void);
415 
417  llrp_s64v_t &
418  operator= (
419  const llrp_s64v_t & rValue);
420 
421  private:
422  void
423  copy (
424  const llrp_s64v_t & rOther);
425 
426  void
427  reset (void);
428 };
429 
438 {
439  public:
441  llrp_u16_t m_nBit;
443  llrp_u8_t * m_pValue;
444 
446  llrp_u1v_t(void);
447 
449  llrp_u1v_t (
450  unsigned int nBit);
451 
453  llrp_u1v_t (
454  const llrp_u1v_t & rOther);
455 
457  ~llrp_u1v_t(void);
458 
460  llrp_u1v_t &
461  operator= (
462  const llrp_u1v_t & rValue);
463 
464  private:
465  void
466  copy (
467  const llrp_u1v_t & rOther);
468 
469  void
470  reset (void);
471 };
472 
481 {
482  public:
484  llrp_u16_t m_nValue;
486  llrp_utf8_t * m_pValue;
487 
489  llrp_utf8v_t(void);
490 
492  llrp_utf8v_t (
493  unsigned int nValue);
494 
496  llrp_utf8v_t (
497  const llrp_utf8v_t & rOther);
498 
500  ~llrp_utf8v_t(void);
501 
503  llrp_utf8v_t &
504  operator= (
505  const llrp_utf8v_t & rValue);
506 
507  private:
508  void
509  copy (
510  const llrp_utf8v_t & rOther);
511 
512  void
513  reset (void);
514 };
515 
524 {
525  public:
527  llrp_u16_t m_nValue;
529  llrp_byte_t * m_pValue;
530 
532  llrp_bytesToEnd_t(void);
533 
536  unsigned int nValue);
537 
540  const llrp_bytesToEnd_t & rOther);
541 
543  ~llrp_bytesToEnd_t(void);
544 
547  operator= (
548  const llrp_bytesToEnd_t & rValue);
549 
550  private:
551  void
552  copy (
553  const llrp_bytesToEnd_t & rOther);
554 
555  void
556  reset (void);
557 };
558 
567 {
568  public:
570  llrp_u8_t m_aValue[12];
571 };
572 
573 
584 {
585  RC_OK = 0,
586  RC_MiscError = 100,
620 };
621 
632 {
633  public:
637  const char * m_pWhatStr;
642 
643  int m_OtherDetail;
644 
646  CErrorDetails (void);
647 
649  void
650  clear (void);
651 
656  void
658  const CTypeDescriptor * pRefType);
659 
664  void
666  const CParameter * pParameter);
667 
672  void
674  EResultCode eResultCode,
675  const char * pWhatStr);
676 };
677 
686 {
687  public:
689  const char * m_pName;
690 
692  llrp_u32_t m_VendorID;
693 };
694 
701 {
702  public:
704  const char * m_pPrefix;
705 
707  const char * m_pURI;
708 
711  const char * m_pSchemaLocation;
712 };
713 
714 
715 
756 {
757  public:
759  llrp_bool_t m_bIsMessage;
760 
762  char * m_pName;
763 
767 
770 
772  llrp_u32_t m_TypeNum;
773 
777 
780 
782  CElement *
783  (*m_pfConstruct)(void);
784 
786  void
788  CDecoderStream * pDecoderStream,
789  CElement * pTargetElement);
790 
791  public:
793  inline CElement *
794  constructElement(void) const
795  {
796  return (*m_pfConstruct)();
797  }
798 };
799 
808 {
809  public:
811  enum FieldType {
812  FT_U8, FT_S8, FT_U8V, FT_S8V,
813  FT_U16, FT_S16, FT_U16V, FT_S16V,
814  FT_U32, FT_S32, FT_U32V, FT_S32V,
815  FT_U64, FT_S64, FT_U64V, FT_S64V,
816 
817  FT_U1, FT_U1V, FT_U2, FT_U96,
818  FT_UTF8V,
819 
820  FT_E1, FT_E2, FT_E8, FT_E16, FT_E32,
821  FT_E8V,
822 
823  FT_BYTESTOEND,
824  };
825 
827  enum FieldFormat {
828  FMT_NORMAL,
829  FMT_DEC,
830  FMT_HEX,
831  FMT_UTF8,
832  FMT_DATETIME,
833  };
834 
840  char * m_pName;
842  const SEnumTableEntry * m_pEnumTable;
843 };
844 
845 /*
846  * ltkcpp_hdrfd.c
847  */
848 extern CFieldDescriptor g_fdMessageHeader_Type;
849 extern CFieldDescriptor g_fdMessageHeader_Length;
850 extern CFieldDescriptor g_fdMessageHeader_MessageID;
851 extern CFieldDescriptor g_fdMessageHeader_VendorPEN;
852 extern CFieldDescriptor g_fdMessageHeader_Subtype;
853 extern CFieldDescriptor g_fdParameterHeader_TVType;
854 extern CFieldDescriptor g_fdParameterHeader_TLVType;
855 extern CFieldDescriptor g_fdParameterHeader_TLVLength;
856 extern CFieldDescriptor g_fdParameterHeader_VendorPEN;
857 extern CFieldDescriptor g_fdParameterHeader_Subtype;
858 
859 
860 /*
861  * SEnumTableEntry
862  *
863  * @brief Simple table of enumerations. Table is terminated
864  * by an entry with pName==NULL.
865  */
866 struct SEnumTableEntry
867 {
868  /* String name, (e.g. "Immediate") */
869  char * pName;
870  int Value;
871 };
872 
886 {
887  public:
893  std::list<const CTypeDescriptor *> m_listCustomMessageTypeDescriptors;
895  std::list<const CTypeDescriptor *> m_listCustomParameterTypeDescriptors;
896 
897  CTypeRegistry(void);
898  ~CTypeRegistry(void);
899 
902  enroll (
903  const CTypeDescriptor * pTypeDescriptor);
904 
906  const CTypeDescriptor *
907  lookupMessage (
908  unsigned int MessageTypeNum) const;
909 
911  const CTypeDescriptor *
913  unsigned int ParameterTypeNum) const;
914 
916  const CTypeDescriptor *
918  unsigned int VendorID,
919  unsigned int MessageSubTypeNum) const;
920 
922  const CTypeDescriptor *
924  unsigned int VendorID,
925  unsigned int ParameterSubTypeNum) const;
926 
927  /* look up the type descriptor*/
928  const CTypeDescriptor *
929  lookupByName (
930  char * pName) const;
931 
932 };
933 
934 
935 
936 typedef std::list<CParameter *> tListOfParameters;
937 
968 class CElement
969 {
970  public:
973 
976 
978  tListOfParameters m_listAllSubParameters;
979 
980  public:
981  CElement(void);
982 
983  virtual
984  ~CElement(void);
985 
993  void
995  CParameter * pParameter);
996 
1005  void
1007  CParameter * pParameter);
1008 
1016  void
1018  tListOfParameters * pParameterList);
1019 
1021  int
1022  walk (
1023  int (*pFunc)(
1024  const CElement * pElement,
1025  void * pArg),
1026  void * pArg,
1027  int iDepth,
1028  int nMaxDepth) const;
1029 
1030 
1037  EResultCode
1038  toXMLString (
1039  char * pBuffer,
1040  int nBuffer);
1041 
1042 
1051  virtual void
1052  decodeFields (
1053  CDecoderStream * pDecoderStream) = 0;
1054 
1065  virtual void
1067  CErrorDetails * pError) = 0;
1068 
1074  virtual void
1075  encode (
1076  CEncoderStream * pEncoderStream) const = 0;
1077 };
1078 
1079 
1088 class CMessage : public CElement
1089 {
1090  public:
1091  CMessage(void);
1092 
1096  inline void
1098  llrp_u32_t MessageID)
1099  {
1100  m_MessageID = MessageID;
1101  }
1102 
1106  inline llrp_u32_t
1107  getMessageID (void) const
1108  {
1109  return m_MessageID;
1110  }
1111 
1112  protected:
1113  llrp_u32_t m_MessageID;
1114 
1115 };
1116 
1125 class CParameter : public CElement
1126 {
1127  public:
1135  virtual llrp_bool_t
1136  isAllowedIn (
1137  const CTypeDescriptor * pEnclosingTypeDescriptor) const;
1138 
1146  llrp_bool_t
1148  const CTypeDescriptor * pEnclosingTypeDescriptor);
1149 };
1150 
1206 {
1207  public:
1210 
1211  CDecoder (void);
1212 
1214  CDecoder (
1215  const CTypeRegistry * pTypeRegistry);
1216 
1217  virtual
1218  ~CDecoder (void) = 0;
1219 
1221  virtual CMessage *
1222  decodeMessage (void) = 0;
1223 
1224  protected:
1225  const CTypeRegistry * m_pRegistry;
1226 };
1227 
1236 {
1237  public:
1238  virtual
1239  ~CDecoderStream(void) = 0;
1240 
1241  /*
1242  * 8-bit types
1243  */
1244 
1246  virtual llrp_u8_t
1247  get_u8 (
1248  const CFieldDescriptor * pFieldDesc) = 0;
1249 
1251  virtual llrp_s8_t
1252  get_s8 (
1253  const CFieldDescriptor * pFieldDesc) = 0;
1254 
1256  virtual llrp_u8v_t
1257  get_u8v (
1258  const CFieldDescriptor * pFieldDesc) = 0;
1259 
1261  virtual llrp_s8v_t
1262  get_s8v (
1263  const CFieldDescriptor * pFieldDesc) = 0;
1264 
1265  /*
1266  * 16-bit types
1267  */
1268 
1270  virtual llrp_u16_t
1271  get_u16 (
1272  const CFieldDescriptor * pFieldDesc) = 0;
1273 
1275  virtual llrp_s16_t
1276  get_s16 (
1277  const CFieldDescriptor * pFieldDesc) = 0;
1278 
1280  virtual llrp_u16v_t
1281  get_u16v (
1282  const CFieldDescriptor * pFieldDesc) = 0;
1283 
1285  virtual llrp_s16v_t
1286  get_s16v (
1287  const CFieldDescriptor * pFieldDesc) = 0;
1288 
1289  /*
1290  * 32-bit types
1291  */
1292 
1294  virtual llrp_u32_t
1295  get_u32 (
1296  const CFieldDescriptor * pFieldDesc) = 0;
1297 
1299  virtual llrp_s32_t
1300  get_s32 (
1301  const CFieldDescriptor * pFieldDesc) = 0;
1302 
1304  virtual llrp_u32v_t
1305  get_u32v (
1306  const CFieldDescriptor * pFieldDesc) = 0;
1307 
1309  virtual llrp_s32v_t
1310  get_s32v (
1311  const CFieldDescriptor * pFieldDesc) = 0;
1312 
1313  /*
1314  * 64-bit types
1315  */
1316 
1318  virtual llrp_u64_t
1319  get_u64 (
1320  const CFieldDescriptor * pFieldDesc) = 0;
1321 
1323  virtual llrp_s64_t
1324  get_s64 (
1325  const CFieldDescriptor * pFieldDesc) = 0;
1326 
1328  virtual llrp_u64v_t
1329  get_u64v (
1330  const CFieldDescriptor * pFieldDesc) = 0;
1331 
1333  virtual llrp_s64v_t
1334  get_s64v (
1335  const CFieldDescriptor * pFieldDesc) = 0;
1336 
1337  /*
1338  * Special types
1339  */
1340 
1342  virtual llrp_u1_t
1343  get_u1 (
1344  const CFieldDescriptor * pFieldDesc) = 0;
1345 
1347  virtual llrp_u1v_t
1348  get_u1v (
1349  const CFieldDescriptor * pFieldDesc) = 0;
1350 
1352  virtual llrp_u2_t
1353  get_u2 (
1354  const CFieldDescriptor * pFieldDesc) = 0;
1355 
1357  virtual llrp_u96_t
1358  get_u96 (
1359  const CFieldDescriptor * pFieldDesc) = 0;
1360 
1362  virtual llrp_utf8v_t
1363  get_utf8v (
1364  const CFieldDescriptor * pFieldDesc) = 0;
1365 
1367  virtual llrp_bytesToEnd_t
1368  get_bytesToEnd (
1369  const CFieldDescriptor * pFieldDesc) = 0;
1370 
1371  /*
1372  * Enumerated types of various sizes
1373  */
1374 
1376  virtual int
1377  get_e1 (
1378  const CFieldDescriptor * pFieldDesc) = 0;
1379 
1381  virtual int
1382  get_e2 (
1383  const CFieldDescriptor * pFieldDesc) = 0;
1384 
1386  virtual int
1387  get_e8 (
1388  const CFieldDescriptor * pFieldDesc) = 0;
1389 
1391  virtual int
1392  get_e16 (
1393  const CFieldDescriptor * pFieldDesc) = 0;
1394 
1396  virtual int
1397  get_e32 (
1398  const CFieldDescriptor * pFieldDesc) = 0;
1399 
1401  virtual llrp_u8v_t
1402  get_e8v (
1403  const CFieldDescriptor * pFieldDesc) = 0;
1404 
1405  /*
1406  * Reserved means some number of bits
1407  */
1408  /* @brief skips a number of reserved bits and discards during the encode/decode process */
1409  virtual void
1410  get_reserved (
1411  unsigned int nBits) = 0;
1412 };
1413 
1422 {
1423  public:
1426 
1428  CEncoder (void);
1429 
1431  virtual
1432  ~CEncoder (void) = 0;
1433 
1435  virtual void
1436  encodeElement (
1437  const CElement * pElement) = 0;
1438 };
1439 
1448 {
1449  public:
1450  virtual
1451  ~CEncoderStream(void) = 0;
1452 
1457  virtual void
1459  const CParameter * pParameter,
1460  const CTypeDescriptor * pRefType) = 0;
1461 
1466  virtual void
1468  const CParameter * pParameter,
1469  const CTypeDescriptor * pRefType) = 0;
1470 
1475  virtual void
1477  const tListOfParameters * pParameterList,
1478  const CTypeDescriptor * pRefType) = 0;
1479 
1484  virtual void
1486  const tListOfParameters * pParameterList,
1487  const CTypeDescriptor * pRefType) = 0;
1488 
1489  /*
1490  * 8-bit types
1491  */
1492 
1497  virtual void
1498  put_u8 (
1499  llrp_u8_t Value,
1500  const CFieldDescriptor * pFieldDesc) = 0;
1501 
1506  virtual void
1507  put_s8 (
1508  llrp_s8_t Value,
1509  const CFieldDescriptor * pFieldDesc) = 0;
1510 
1515  virtual void
1516  put_u8v (
1517  llrp_u8v_t Value,
1518  const CFieldDescriptor * pFieldDesc) = 0;
1519 
1524  virtual void
1525  put_s8v (
1526  llrp_s8v_t Value,
1527  const CFieldDescriptor * pFieldDesc) = 0;
1528 
1529  /*
1530  * 16-bit types
1531  */
1532 
1537  virtual void
1538  put_u16 (
1539  llrp_u16_t Value,
1540  const CFieldDescriptor * pFieldDesc) = 0;
1541 
1546  virtual void
1547  put_s16 (
1548  llrp_s16_t Value,
1549  const CFieldDescriptor * pFieldDesc) = 0;
1550 
1555  virtual void
1556  put_u16v (
1557  llrp_u16v_t Value,
1558  const CFieldDescriptor * pFieldDesc) = 0;
1559 
1564  virtual void
1565  put_s16v (
1566  llrp_s16v_t Value,
1567  const CFieldDescriptor * pFieldDesc) = 0;
1568 
1569  /*
1570  * 32-bit types
1571  */
1572 
1577  virtual void
1578  put_u32 (
1579  llrp_u32_t Value,
1580  const CFieldDescriptor * pFieldDesc) = 0;
1581 
1586  virtual void
1587  put_s32 (
1588  llrp_s32_t Value,
1589  const CFieldDescriptor * pFieldDesc) = 0;
1590 
1595  virtual void
1596  put_u32v (
1597  llrp_u32v_t Value,
1598  const CFieldDescriptor * pFieldDesc) = 0;
1599 
1604  virtual void
1605  put_s32v (
1606  llrp_s32v_t Value,
1607  const CFieldDescriptor * pFieldDesc) = 0;
1608 
1609  /*
1610  * 64-bit types
1611  */
1612 
1617  virtual void
1618  put_u64 (
1619  llrp_u64_t Value,
1620  const CFieldDescriptor * pFieldDesc) = 0;
1621 
1626  virtual void
1627  put_s64 (
1628  llrp_s64_t Value,
1629  const CFieldDescriptor * pFieldDesc) = 0;
1630 
1635  virtual void
1636  put_u64v (
1637  llrp_u64v_t Value,
1638  const CFieldDescriptor * pFieldDesc) = 0;
1639 
1644  virtual void
1645  put_s64v (
1646  llrp_s64v_t Value,
1647  const CFieldDescriptor * pFieldDesc) = 0;
1648 
1649  /*
1650  * Special types
1651  */
1652 
1657  virtual void
1658  put_u1 (
1659  llrp_u1_t Value,
1660  const CFieldDescriptor * pFieldDesc) = 0;
1661 
1666  virtual void
1667  put_u1v (
1668  llrp_u1v_t Value,
1669  const CFieldDescriptor * pFieldDesc) = 0;
1670 
1675  virtual void
1676  put_u2 (
1677  llrp_u2_t Value,
1678  const CFieldDescriptor * pFieldDesc) = 0;
1679 
1684  virtual void
1685  put_u96 (
1686  llrp_u96_t Value,
1687  const CFieldDescriptor * pFieldDesc) = 0;
1688 
1693  virtual void
1694  put_utf8v (
1695  llrp_utf8v_t Value,
1696  const CFieldDescriptor * pFieldDesc) = 0;
1697 
1702  virtual void
1703  put_bytesToEnd (
1704  llrp_bytesToEnd_t Value,
1705  const CFieldDescriptor * pFieldDesc) = 0;
1706 
1707  /*
1708  * Enumerated types of various sizes
1709  */
1710 
1715  virtual void
1716  put_e1 (
1717  int eValue,
1718  const CFieldDescriptor * pFieldDesc) = 0;
1719 
1724  virtual void
1725  put_e2 (
1726  int eValue,
1727  const CFieldDescriptor * pFieldDesc) = 0;
1728 
1733  virtual void
1734  put_e8 (
1735  int eValue,
1736  const CFieldDescriptor * pFieldDesc) = 0;
1737 
1742  virtual void
1743  put_e16 (
1744  int eValue,
1745  const CFieldDescriptor * pFieldDesc) = 0;
1746 
1751  virtual void
1752  put_e32 (
1753  int eValue,
1754  const CFieldDescriptor * pFieldDesc) = 0;
1755 
1760  virtual void
1761  put_e8v (
1762  llrp_u8v_t Value,
1763  const CFieldDescriptor * pFieldDesc) = 0;
1764 
1765  /*
1766  * Reserved types are some number of bits
1767  */
1768 
1769  /* @brief skips a number of reserved bits and discards during the encode/decode process */
1770  virtual void
1771  put_reserved (
1772  unsigned int nBits) = 0;
1773 };
1774 
1775 
1776 /*
1777 ** @brief Encodes a CElement into an XML string
1778 **
1779 ** @param[in] pElement The CElement to encode to XML
1780 ** @param[out] pBuffer The pointer to the buffer in which to place the XML result
1781 ** @param[in] nBuffer The size of the buffer available to hold the XML
1782 **
1783 ** @return EResultCode Result code from the operation
1784 */
1785 extern EResultCode
1786 toXMLString (
1787  const CElement * pElement,
1788  char * pBuffer,
1789  int nBuffer);
1790 
1791 }; /* namespace LLRP */
llrp_bytesToEnd_t & operator=(const llrp_bytesToEnd_t &rValue)
Assignement operator. Used to copy an existing instance.
virtual llrp_s16v_t get_s16v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u16v_t into the specified field descriptor.
const CTypeDescriptor * lookupMessage(unsigned int MessageTypeNum) const
Lookup a standard message type descriptor. NULL=>not found.
llrp_u16v_t & operator=(const llrp_u16v_t &rValue)
Assignement operator. Used to copy an existing instance.
EResultCode enroll(const CTypeDescriptor *pTypeDescriptor)
Add a type descriptor to the registry.
const char * m_pName
Short name for the vendor, e.g. "Acme".
Definition: ltkcpp_base.h:689
virtual void put_u16v(llrp_u16v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u16v_t into the encode stream.
This is the base class for all parameter and message types.
Definition: ltkcpp_base.h:968
char * m_pName
String name of field (e.g. "ROSpecID")
Definition: ltkcpp_base.h:840
const CTypeDescriptor * m_pType
The type descriptor desribing this element.
Definition: ltkcpp_base.h:972
llrp_s64_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:400
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:140
Class for LLRP basic type bytesToEnd (vector of unsigned bytes)
Definition: ltkcpp_base.h:523
virtual void put_s32v(llrp_s32v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s32v_t into the encode stream.
llrp_u8_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:443
~llrp_s16v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
Class for LLRP basic type s8v (List of signed 8-bit values)
Definition: ltkcpp_base.h:136
virtual llrp_u2_t get_u2(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u2_t into the specified field descriptor.
virtual llrp_u32v_t get_u32v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u32v_t into the specified field descriptor.
const CTypeDescriptor * m_apStdMessageTypeDescriptors[1024u]
Standard messages subscripted by type number.
Definition: ltkcpp_base.h:889
FieldType
Describes the basic field type.
Definition: ltkcpp_base.h:811
Class for LLRP basic type u16v (List of unsigned 16-bit values)
Definition: ltkcpp_base.h:179
void clearSubParameterList(tListOfParameters *pParameterList)
Clear a list of subparameters. For each entry apply removeSubParameter().
FieldFormat m_eFieldFormat
A code for how the field should be formatted.
Definition: ltkcpp_base.h:838
virtual void put_e16(int eValue, const CFieldDescriptor *pFieldDesc)=0
Encodes a 16-bit enumerated type into the encode stream.
CErrorDetails m_ErrorDetails
The error details from the last decode operation.
Definition: ltkcpp_base.h:1209
virtual llrp_u64v_t get_u64v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u64v_t into the specified field descriptor.
const CFieldDescriptor * m_pRefField
If non-NULL this is the field descriptors for the errored field.
Definition: ltkcpp_base.h:641
virtual void put_bytesToEnd(llrp_bytesToEnd_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an put_bytesToEnd into the encode stream.
llrp_s32_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:314
llrp_u8_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:99
virtual int get_e16(const CFieldDescriptor *pFieldDesc)=0
Decodes a 16 bit enumerated field into the specified field descriptor.
const CTypeDescriptor * m_apStdParameterTypeDescriptors[1024u]
Standard parameters subscripted by type number.
Definition: ltkcpp_base.h:891
llrp_s32v_t(void)
Default Constructer. Sets members fields to zero.
void unexpectedParameter(const CParameter *pParameter)
Convenience function used by the toolkit to set CErrorDetails when it encounters an unexpected parame...
virtual void put_s8v(llrp_s8v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u8_t (unsigned 8-bit number) into the encode stream.
virtual void put_u64v(llrp_u64v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u64v_t into the encode stream.
const CTypeDescriptor * m_pRefType
If non-NULL this is the type descriptors for the errored type.
Definition: ltkcpp_base.h:639
virtual CMessage * decodeMessage(void)=0
Decodes a message into the return value CMessage.
const CTypeDescriptor * lookupParameter(unsigned int ParameterTypeNum) const
Lookup a standard parameter type descriptor. NULL=>not found.
EResultCode m_eResultCode
Result code from operation.
Definition: ltkcpp_base.h:635
Class for LLRP basic type u96 (96-bit value)
Definition: ltkcpp_base.h:566
virtual llrp_u16_t get_u16(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u16_t (unsigned 16-bit number) into the specified field descriptor.
virtual void put_u2(llrp_u2_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u2_t (unsigned 2-bit number) into the encode stream.
virtual llrp_u32_t get_u32(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u32_t (unsigned 32-bit number) into the specified field descriptor.
virtual void put_s16(llrp_s16_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s16_t (signed 16-bit number) into the encode stream.
virtual int get_e1(const CFieldDescriptor *pFieldDesc)=0
Decodes a 1 bit enumerated field into the specified field descriptor.
virtual void put_u1v(llrp_u1v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u1v_t (unsigned 1-bit number) into the encode stream.
llrp_s8v_t(void)
Default Constructer. Sets members fields to zero.
virtual llrp_u1v_t get_u1v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u1v_t into the specified field descriptor.
virtual void put_u32(llrp_u32_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u32_t (unsigned 32-bit number) into the encode stream.
llrp_u32_t m_TypeNum
Type number or, for custom, subtype number.
Definition: ltkcpp_base.h:772
const char * m_pWhatStr
Descriptive printable error string.
Definition: ltkcpp_base.h:637
EResultCode toXMLString(char *pBuffer, int nBuffer)
A wrapper around LLRP::toXMLString()
llrp_utf8v_t & operator=(const llrp_utf8v_t &rValue)
Assignement operator. Used to copy an existing instance.
Class for LLRP basic type s32v (vector of signed 32-bit values)
Definition: ltkcpp_base.h:308
EResultCode
Error result codes for LTK operations.
Definition: ltkcpp_base.h:583
virtual int get_e2(const CFieldDescriptor *pFieldDesc)=0
Decodes a 2 bit enumerated field into the specified field descriptor.
virtual void encode(CEncoderStream *pEncoderStream) const =0
Encode fields and subparameters.
virtual void decodeFields(CDecoderStream *pDecoderStream)=0
Virtual function provided by each specific element type to decode fields (simple values). Leaves pDecoderStream at first subparameter.
llrp_u16v_t(void)
Default Constructer. Sets members fields to zero.
virtual void put_u64(llrp_u64_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u64_t (unsigned 64-bit number) into the encode stream.
FieldFormat
Describes the fields display format.
Definition: ltkcpp_base.h:827
const CFieldDescriptor *const *const m_ppFieldDescriptorTable
Table of pointers to the field descriptors.
Definition: ltkcpp_base.h:779
virtual llrp_s64v_t get_s64v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_s64v_t into the specified field descriptor.
Class for LLRP basic type s64v (vector of signed 64-bit values)
Definition: ltkcpp_base.h:394
int walk(int(*pFunc)(const CElement *pElement, void *pArg), void *pArg, int iDepth, int nMaxDepth) const
Recursive tree walk. The callback is invoked for each element.
llrp_s16v_t & operator=(const llrp_s16v_t &rValue)
Assignement operator. Used to copy an existing instance.
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:398
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:484
virtual void put_e8(int eValue, const CFieldDescriptor *pFieldDesc)=0
Encodes an 8-bit enumerated type into the encode stream.
virtual void put_s64(llrp_s64_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s64_t (signed 64-bit number) into the encode stream.
virtual void put_u32v(llrp_u32v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u32v_t into the encode stream.
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:355
llrp_s64v_t & operator=(const llrp_s64v_t &rValue)
Assignement operator. Used to copy an existing instance.
llrp_s16_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:228
A collection of pointers to CTypeDescriptors.
Definition: ltkcpp_base.h:885
std::list< const CTypeDescriptor * > m_listCustomParameterTypeDescriptors
List of custom parameters types.
Definition: ltkcpp_base.h:895
llrp_utf8v_t(void)
Default Constructer. Sets members fields to zero.
virtual llrp_s8_t get_s8(const CFieldDescriptor *pFieldDesc)=0
Decodes a llrp_s8_t (signed 8-bit number) into the specified field descriptor.
Describes the namespae information for converting LLRP messages to LTK-XML.
Definition: ltkcpp_base.h:700
virtual void putRequiredSubParameter(const CParameter *pParameter, const CTypeDescriptor *pRefType)=0
Encodes the requiredSubParameter into the encode stream.
~llrp_s32v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
llrp_u32v_t & operator=(const llrp_u32v_t &rValue)
Assignement operator. Used to copy an existing instance.
CErrorDetails(void)
Default Constructor.
llrp_u8v_t & operator=(const llrp_u8v_t &rValue)
Assignement operator. Used to copy an existing instance.
~llrp_u32v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
~llrp_u8v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
void resultCodeAndWhatStr(EResultCode eResultCode, const char *pWhatStr)
Convenience function used by the toolkit to set CErrorDetails result code and pWhatStr.
~llrp_utf8v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
virtual ~CEncoder(void)=0
destructor
virtual void encodeElement(const CElement *pElement)=0
encodes the tree formed by pElement
virtual void put_s64v(llrp_s64v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s64v_t into the encode stream.
const char * m_pPrefix
Short name for the namespace, e.g. "acmeNS".
Definition: ltkcpp_base.h:704
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:312
llrp_u32v_t(void)
Default Constructer. Sets members fields to zero.
virtual void put_u96(llrp_u96_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u96_t (unsigned 96-bit number) into the encode stream.
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:183
virtual llrp_u64_t get_u64(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u64_t (unsigned 64-bit number) into the specified field descriptor.
llrp_u64_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:357
void removeSubParameterFromAllList(CParameter *pParameter)
Delete a subparameter from m_listAllSubParameters. Called by the accessor functions setXXX (to remove...
llrp_s32v_t & operator=(const llrp_s32v_t &rValue)
Assignement operator. Used to copy an existing instance.
FieldType m_eFieldType
A code for the field type.
Definition: ltkcpp_base.h:836
virtual void put_u16(llrp_u16_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u16_t (unsigned 16-bit number) into the encode stream.
~llrp_u16v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
llrp_u64v_t & operator=(const llrp_u64v_t &rValue)
Assignement operator. Used to copy an existing instance.
CElement * m_pParent
Element that encloses this one, NULL if this is top-level element.
Definition: ltkcpp_base.h:975
Class for LLRP basic type s16v (List of signed 16-bit values)
Definition: ltkcpp_base.h:222
virtual llrp_s32v_t get_s32v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_s32v_t into the specified field descriptor.
virtual void putRequiredSubParameterList(const tListOfParameters *pParameterList, const CTypeDescriptor *pRefType)=0
Encodes the requiredSubParameterList into the encode stream.
virtual llrp_u8_t get_u8(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u8_t (unsigned 8-bit number) into the specified field descriptor. ...
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:226
virtual llrp_bool_t isAllowedIn(const CTypeDescriptor *pEnclosingTypeDescriptor) const
Validate whether the element is allowed as a base type in the enclosing element.
const CVendorDescriptor * m_pVendorDescriptor
NULL=>standard LLRP, !NULL=>Vendor (PEN) of custom message or parameter.
Definition: ltkcpp_base.h:766
virtual void put_u8(llrp_u8_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u8_t (unsigned 8-bit number) into the encode stream.
virtual void put_e2(int eValue, const CFieldDescriptor *pFieldDesc)=0
Encodes a 2-bit enumerated type into the encode stream.
virtual int get_e8(const CFieldDescriptor *pFieldDesc)=0
Decodes a 8 bit enumerated field into the specified field descriptor.
Class for LLRP basic type utf8v (vector of utf-8 encoded characters)
Definition: ltkcpp_base.h:480
llrp_u16_t m_nBit
The number of arrray elements.
Definition: ltkcpp_base.h:441
Class for LLRP basic type u1v (vector of unsigned 1-bit values)
Definition: ltkcpp_base.h:437
const SEnumTableEntry * m_pEnumTable
NULL or ptr to table base for enumerated fields.
Definition: ltkcpp_base.h:842
void clear(void)
Clears the contents of a CErrorDetails.
Class that encodes internal LTK CElements into messages.
Definition: ltkcpp_base.h:1447
CEncoder(void)
Constructor.
llrp_s16v_t(void)
Default Constructer. Sets members fields to zero.
virtual void putOptionalSubParameter(const CParameter *pParameter, const CTypeDescriptor *pRefType)=0
Encodes the optionalSubParameter into the encode stream.
Describes the vendor information for vendor extension classes.
Definition: ltkcpp_base.h:685
llrp_u32_t m_VendorID
Vendor PEN of a custom message or parameter.
Definition: ltkcpp_base.h:692
virtual llrp_u8v_t get_e8v(const CFieldDescriptor *pFieldDesc)=0
Decodes an enumerated u8v field into the specified field descriptor.
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:269
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:527
const CTypeDescriptor * m_pResponseType
For messages (bIsMessage==TRUE), this is the type descriptor for the corresponding response...
Definition: ltkcpp_base.h:776
llrp_s64v_t(void)
Default Constructer. Sets members fields to zero.
virtual void put_s32(llrp_s32_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s32_t (signed 32-bit number) into the encode stream.
virtual llrp_u1_t get_u1(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u1_t (unsigned 1 bit number) into the specified field descriptor. ...
virtual int get_e32(const CFieldDescriptor *pFieldDesc)=0
Decodes a 32 bit enumerated field into the specified field descriptor.
llrp_u1v_t & operator=(const llrp_u1v_t &rValue)
Assignement operator. Used to copy an existing instance.
virtual llrp_bytesToEnd_t get_bytesToEnd(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_bytesToEnd_t into the specified field descriptor.
virtual void put_s8(llrp_s8_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_s8_t (signed 8-bit number) into the encode stream.
~llrp_s8v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
~llrp_s64v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
Class to return error details in LTKCPP operations.
Definition: ltkcpp_base.h:631
~llrp_u64v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
LTK LLRP Decoder class.
Definition: ltkcpp_base.h:1205
llrp_u32_t getMessageID(void) const
Gets the current LLRP Message ID for the Message.
Definition: ltkcpp_base.h:1107
virtual void assimilateSubParameters(CErrorDetails *pError)=0
Assimilates the decoded sub-parameters into m_listAllSubParameters.
char * m_pName
String name of parameter/message type (e.g. "ROSpec")
Definition: ltkcpp_base.h:762
void missingParameter(const CTypeDescriptor *pRefType)
Convenience function used by the toolkit to set CErrorDetails when it encounters an missing parameter...
llrp_u1v_t(void)
Default Constructer. Sets members fields to zero.
virtual llrp_utf8v_t get_utf8v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_utf8v_t into the specified field descriptor.
void(* m_pfDecodeFields)(CDecoderStream *pDecoderStream, CElement *pTargetElement)
Decoder, sometimes used when we want to decode w/o an instance.
Definition: ltkcpp_base.h:787
llrp_u16_t m_nValue
The number of arrray elements.
Definition: ltkcpp_base.h:97
const char * m_pURI
URI for the namespace, this is the true namespace name.
Definition: ltkcpp_base.h:707
CElement *(* m_pfConstruct)(void)
Function to make an instance of the parameter or message.
Definition: ltkcpp_base.h:783
virtual void put_e1(int eValue, const CFieldDescriptor *pFieldDesc)=0
Encodes a 1-bit enumerated type into the encode stream.
void addSubParameterToAllList(CParameter *pParameter)
Add a subparameter to m_listAllSubParameters. Called by the accessor functions setXXX and addXXX...
virtual void put_e8v(llrp_u8v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an enumerated u8v type into the encode stream.
std::list< const CTypeDescriptor * > m_listCustomMessageTypeDescriptors
List of custom message types.
Definition: ltkcpp_base.h:893
const CNamespaceDescriptor * m_pNamespaceDescriptor
Namespace of message or parameter, for XML.
Definition: ltkcpp_base.h:769
LTK LLRP Encoder class.
Definition: ltkcpp_base.h:1421
llrp_u16_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:185
virtual void put_e32(int eValue, const CFieldDescriptor *pFieldDesc)=0
Encodes a32-bit enumerated type into the encode stream.
llrp_u8_t m_aValue[12]
Simple array of basic type llrp_u8_t.
Definition: ltkcpp_base.h:570
~llrp_bytesToEnd_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
llrp_s8v_t & operator=(const llrp_s8v_t &rValue)
Assignement operator. Used to copy an existing instance.
Base Class for All LLRP LTK Parameters.
Definition: ltkcpp_base.h:1125
llrp_byte_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:529
Base Class for All LLRP LTK Messages.
Definition: ltkcpp_base.h:1088
Class for LLRP basic type u8v (List of unsigned 8-bit values)
Definition: ltkcpp_base.h:93
Describes a single field inside an LTKCPP message or parameters.
Definition: ltkcpp_base.h:807
virtual llrp_s16_t get_s16(const CFieldDescriptor *pFieldDesc)=0
Decodes a llrp_s16_t (signed 16-bit number) into the specified field descriptor.
virtual void put_u8v(llrp_u8v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u8v_t into the encode stream.
virtual llrp_s32_t get_s32(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_s32_t (signed 32-bit number) into the specified field descriptor. ...
virtual llrp_s8v_t get_s8v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_s8v_t into the specified field descriptor.
const CTypeDescriptor * lookupCustomParameter(unsigned int VendorID, unsigned int ParameterSubTypeNum) const
Lookup a custom parameter type descriptor. NULL=>not found.
virtual void put_s16v(llrp_s16v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an put_s16v into the encode stream.
virtual llrp_u8v_t get_u8v(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u8v_t into the specified field descriptor.
virtual llrp_u16v_t get_u16v(const CFieldDescriptor *pFieldDesc)=0
Decodes a llrp_u16v_t into the specified field descriptor.
Class for LLRP basic type u32v (vector of unsigned 32-bit values)
Definition: ltkcpp_base.h:265
llrp_u32_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:271
llrp_u8v_t(void)
Default Constructer. Sets members fields to zero.
llrp_s8_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:142
virtual llrp_s64_t get_s64(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_s64_t (signed 64-bit number) into the specified field descriptor. ...
const CTypeDescriptor * lookupCustomMessage(unsigned int VendorID, unsigned int MessageSubTypeNum) const
Lookup a custom message type descriptor. NULL=>not found.
void setMessageID(llrp_u32_t MessageID)
Sets the LLRP Message ID for the Message.
Definition: ltkcpp_base.h:1097
CErrorDetails m_ErrorDetails
internal storage of encoding errors
Definition: ltkcpp_base.h:1425
Class for LLRP basic type u64v (vector of unsigned 64-bit values)
Definition: ltkcpp_base.h:351
tListOfParameters m_listAllSubParameters
List of all sub elements.
Definition: ltkcpp_base.h:978
~llrp_u1v_t(void)
Destructor. Deletes m_pValue in cases where it is allocated.
llrp_bool_t isAllowedExtension(const CTypeDescriptor *pEnclosingTypeDescriptor)
Validate whether the element is allowed as an extension in the enclosing element. ...
virtual void put_utf8v(llrp_utf8v_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an put_utf8v (utf8 character string) into the encode stream.
const char * m_pSchemaLocation
URI for the XSD (schema) for custom parameters and messages defined within the namespace.
Definition: ltkcpp_base.h:711
virtual llrp_u96_t get_u96(const CFieldDescriptor *pFieldDesc)=0
Decodes an llrp_u96_t into the specified field descriptor.
virtual void put_u1(llrp_u1_t Value, const CFieldDescriptor *pFieldDesc)=0
Encodes an llrp_u64_t (unsigned 64-bit number) into the encode stream.
llrp_utf8_t * m_pValue
Pointer to the first array element.
Definition: ltkcpp_base.h:486
Class that decodes messages into internal LTK CElements.
Definition: ltkcpp_base.h:1235
llrp_bool_t m_bIsMessage
TRUE for a message type, FALSE for a parameter type.
Definition: ltkcpp_base.h:759
CElement * constructElement(void) const
Convenience function.
Definition: ltkcpp_base.h:794
llrp_bytesToEnd_t(void)
Default Constructer. Sets members fields to zero.
virtual void putOptionalSubParameterList(const tListOfParameters *pParameterList, const CTypeDescriptor *pRefType)=0
Encodes the optionalSubParameterList into the encode stream.
llrp_u64v_t(void)
Default Constructer. Sets members fields to zero.
Describes a message or parameter type.
Definition: ltkcpp_base.h:755