1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef UA_TYPES_ENCODING_JSON_H_
- #define UA_TYPES_ENCODING_JSON_H_
- #include "util/ua_util.h"
- #include "ua_types.h"
- /**
- * @ingroup encoding
- * @defgroup encoding_json JSON Encoding
- *
- * @brief Encoding of UA datatypes in JSON. This extends the IEC 62541 standard
- * and is only included in the "extended" profile. The extension is intended to
- * be used with a webserver that transmits JSON over HTTP.
- *
- * @{
- */
- #define UA_TYPE_CALCSIZEJSON_AS(TYPE, TYPE_AS) \
- UA_Int32 TYPE##_calcSizeJSON(TYPE const *p) { \
- return TYPE_AS##_calcSizeJSON((TYPE_AS *)p); \
- }
- #define UA_TYPE_ENCODEJSON_AS(TYPE, TYPE_AS) \
- UA_Int32 TYPE##_encodeJSON(TYPE const *src, UA_ByteString *dst, UA_UInt32 *offset) { \
- return TYPE_AS##_encodeJSON((TYPE_AS *)src, dst, offset); \
- }
- #define UA_TYPE_DECODEJSON_AS(TYPE, TYPE_AS) \
- UA_Int32 TYPE##_decodeJSON(UA_ByteString const *src, UA_UInt32 *offset, TYPE *dst) { \
- return TYPE_AS##_decodeJSON(src, offset, (TYPE_AS *)dst); \
- }
- #define UA_TYPE_JSON_ENCODING_AS(TYPE, TYPE_AS) \
- UA_TYPE_CALCSIZEJSON_AS(TYPE, TYPE_AS) \
- UA_TYPE_ENCODEJSON_AS(TYPE, TYPE_AS) \
- UA_TYPE_DECODEJSON_AS(TYPE, TYPE_AS)
- #define UA_TYPE_JSON_ENCODING(TYPE) \
- UA_Int32 TYPE##_calcSizeJSON(TYPE const *p); \
- UA_Int32 TYPE##_encodeJSON(TYPE const *src, UA_ByteString *dst, UA_UInt32 *offset); \
- UA_Int32 TYPE##_decodeJSON(UA_ByteString const *src, UA_UInt32 *offset, TYPE *dst);
- UA_TYPE_JSON_ENCODING(UA_Boolean)
- UA_TYPE_JSON_ENCODING(UA_SByte)
- UA_TYPE_JSON_ENCODING(UA_Byte)
- UA_TYPE_JSON_ENCODING(UA_Int16)
- UA_TYPE_JSON_ENCODING(UA_UInt16)
- UA_TYPE_JSON_ENCODING(UA_Int32)
- UA_TYPE_JSON_ENCODING(UA_UInt32)
- UA_TYPE_JSON_ENCODING(UA_Int64)
- UA_TYPE_JSON_ENCODING(UA_UInt64)
- UA_TYPE_JSON_ENCODING(UA_Float)
- UA_TYPE_JSON_ENCODING(UA_Double)
- UA_TYPE_JSON_ENCODING(UA_String)
- UA_TYPE_JSON_ENCODING(UA_DateTime)
- UA_TYPE_JSON_ENCODING(UA_Guid)
- UA_TYPE_JSON_ENCODING(UA_ByteString)
- UA_TYPE_JSON_ENCODING(UA_XmlElement)
- UA_TYPE_JSON_ENCODING(UA_NodeId)
- UA_TYPE_JSON_ENCODING(UA_ExpandedNodeId)
- UA_TYPE_JSON_ENCODING(UA_StatusCode)
- UA_TYPE_JSON_ENCODING(UA_QualifiedName)
- UA_TYPE_JSON_ENCODING(UA_LocalizedText)
- UA_TYPE_JSON_ENCODING(UA_ExtensionObject)
- UA_TYPE_JSON_ENCODING(UA_DataValue)
- UA_TYPE_JSON_ENCODING(UA_Variant)
- UA_TYPE_JSON_ENCODING(UA_DiagnosticInfo)
- /* Not built-in types */
- UA_TYPE_JSON_ENCODING(UA_InvalidType)
- /// @} /* end of group */
- #endif /* UA_TYPES_ENCODING_JSON_H_ */
|