ua_types_encoding_xml.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef UA_TYPES_ENCODING_XML_H_
  2. #define UA_TYPES_ENCODING_XML_H_
  3. #include "ua_xml.h"
  4. #include "ua_types.h"
  5. #define UA_TYPE_XML_ENCODING(TYPE) \
  6. UA_Int32 TYPE##_calcSizeXml(const void * p); \
  7. UA_Int32 TYPE##_encodeXml(const TYPE *src, UA_ByteString *dst, UA_UInt32 *offset); \
  8. UA_Int32 TYPE##_decodeXml(UA_ByteString *src, UA_UInt32 *offset, TYPE *dst); \
  9. UA_Int32 TYPE##_encodeXmlToStack(const TYPE *src, XML_Stack *s, XML_Attr *attr); \
  10. UA_Int32 TYPE##_decodeXmlFromStack(XML_Stack* s, XML_Attr* attr, TYPE* dst, UA_Boolean isStart);
  11. #define UA_TYPE_METHOD_CALCSIZEXML_NOTIMPL(TYPE) \
  12. UA_Int32 TYPE##_calcSizeXml(const void * p) { \
  13. return -1; \
  14. }
  15. #define UA_TYPE_METHOD_ENCODEXML_NOTIMPL(TYPE) \
  16. UA_Int32 TYPE##_encodeXml(const TYPE *src, UA_ByteString *dst, UA_UInt32 *offset) { \
  17. return UA_ERR_NOT_IMPLEMENTED; \
  18. } \
  19. UA_Int32 TYPE##_encodeXmlToStack(const TYPE *src, XML_Stack *s, XML_Attr *attr) { \
  20. DBG_VERBOSE(printf(#TYPE "_encodeXML entered with src=%p\n", (void* ) src)); \
  21. return UA_ERR_NOT_IMPLEMENTED;\
  22. }
  23. #define UA_TYPE_METHOD_DECODEXML_NOTIMPL(TYPE) \
  24. UA_Int32 TYPE##_decodeXml(UA_ByteString *src, UA_UInt32 *offset, TYPE *dst) { \
  25. return UA_ERR_NOT_IMPLEMENTED; \
  26. } \
  27. \
  28. UA_Int32 TYPE##_decodeXmlFromStack(XML_Stack* s, XML_Attr* attr, TYPE* dst, UA_Boolean isStart) { \
  29. DBG_VERBOSE(printf(#TYPE "_decodeXML entered with dst=%p,isStart=%d\n", (void* ) dst, (_Bool) isStart)); \
  30. return UA_ERR_NOT_IMPLEMENTED; \
  31. }
  32. #define UA_TYPE_DECODEXML_FROM_BYTESTRING(TYPE) \
  33. UA_Int32 TYPE##_decodeXml(UA_ByteString *src, UA_UInt32 *offset, TYPE *dst) { \
  34. /* // Init Stack here \
  35. UA_Stack *stack; \
  36. UA_Attr *attr; \
  37. TYPE##decodeXmlFromStack(stack, attr, dst, UA_TRUE); \
  38. */ \
  39. return UA_ERR_NOT_IMPLEMENTED; \
  40. }
  41. UA_TYPE_XML_ENCODING(UA_Boolean)
  42. UA_TYPE_XML_ENCODING(UA_SByte)
  43. UA_TYPE_XML_ENCODING(UA_Byte)
  44. UA_TYPE_XML_ENCODING(UA_Int16)
  45. UA_TYPE_XML_ENCODING(UA_UInt16)
  46. UA_TYPE_XML_ENCODING(UA_Int32)
  47. UA_TYPE_XML_ENCODING(UA_UInt32)
  48. UA_TYPE_XML_ENCODING(UA_Int64)
  49. UA_TYPE_XML_ENCODING(UA_UInt64)
  50. UA_TYPE_XML_ENCODING(UA_Float)
  51. UA_TYPE_XML_ENCODING(UA_Double)
  52. UA_TYPE_XML_ENCODING(UA_String)
  53. UA_TYPE_XML_ENCODING(UA_DateTime)
  54. UA_TYPE_XML_ENCODING(UA_Guid)
  55. UA_TYPE_XML_ENCODING(UA_ByteString)
  56. UA_TYPE_XML_ENCODING(UA_XmlElement)
  57. UA_TYPE_XML_ENCODING(UA_NodeId)
  58. UA_TYPE_XML_ENCODING(UA_ExpandedNodeId)
  59. UA_TYPE_XML_ENCODING(UA_StatusCode)
  60. UA_TYPE_XML_ENCODING(UA_QualifiedName)
  61. UA_TYPE_XML_ENCODING(UA_LocalizedText)
  62. UA_TYPE_XML_ENCODING(UA_ExtensionObject)
  63. UA_TYPE_XML_ENCODING(UA_DataValue)
  64. UA_TYPE_XML_ENCODING(UA_Variant)
  65. UA_TYPE_XML_ENCODING(UA_DiagnosticInfo)
  66. /* Not built-in types */
  67. UA_TYPE_XML_ENCODING(UA_InvalidType)
  68. #endif /* UA_TYPES_ENCODING_XML_H_ */