aes70::OCP1 namespace

Contents

Namespace which implements the OCP.1 encoding used by AES70.

Classes

struct Command
template<typename F, typename I>
struct floating_point
template<typename T>
struct integral
struct KeepAlive
struct Message
struct Notification
struct OcaBitstring
template<size_t N>
struct OcaBitstringFixedLen
struct OcaBlob
template<size_t N>
struct OcaBlobFixedLen
template<typename ElementType>
struct OcaList
template<typename ElementType>
struct OcaList2D
template<typename ElementType, size_t N>
struct OcaListFixedLen
template<typename Key, typename Value>
struct OcaMap
struct OcaString
struct Response
template<typename... TN>
struct Struct
template<typename... TN>
struct tuple

Typedefs

using ignore = std::decay<decltype(std::ignore)>::type
using OcaUint8 = integral<uint8_t>
using OcaUint16 = integral<uint16_t>
using OcaUint32 = integral<uint32_t>
using OcaUint64 = integral<uint64_t>
using OcaInt8 = integral<int8_t>
using OcaInt16 = integral<int16_t>
using OcaInt32 = integral<int32_t>
using OcaInt64 = integral<int64_t>
using OcaBoolean = integral<uint8_t>
using OcaFloat32 = floating_point<float, uint32_t>
using OcaFloat64 = floating_point<double, uint64_t>
template<typename A, typename B>
using pair = tuple<A, B>
template<typename Key, typename Value>
using OcaMultiMap = OcaList<pair<Key, Value>>

Functions

template<typename T>
auto encoded_length(const T& x) -> AES70_ALWAYS_INLINE std::size_t
template<typename T>
auto encode_to(uint8_t* dst, const T& x) -> AES70_ALWAYS_INLINE uint8_t*
template<typename T>
auto decode_from(const uint8_t* src, T& x) -> const AES70_ALWAYS_INLINE uint8_t*
template<typename T>
auto decode_length(const uint8_t* src, const uint8_t* end, const T&) -> const AES70_ALWAYS_INLINE uint8_t*

Typedef documentation

typedef std::decay<decltype(std::ignore)>::typeaes70::OCP1::ignore

Special type which can be used as a placeholder for un-used parameters in AES70 APIs.

typedef integral<uint8_t>aes70::OCP1::OcaUint8

OCP.1 encoder for OcaUint8

typedef integral<uint16_t>aes70::OCP1::OcaUint16

OCP.1 encoder for OcaUint16

typedef integral<uint32_t>aes70::OCP1::OcaUint32

OCP.1 encoder for OcaUint32

typedef integral<uint64_t>aes70::OCP1::OcaUint64

OCP.1 encoder for OcaUint64

typedef integral<int8_t>aes70::OCP1::OcaInt8

OCP.1 encoder for OcaInt8

typedef integral<int16_t>aes70::OCP1::OcaInt16

OCP.1 encoder for OcaInt16

typedef integral<int32_t>aes70::OCP1::OcaInt32

OCP.1 encoder for OcaInt32

typedef integral<int64_t>aes70::OCP1::OcaInt64

OCP.1 encoder for OcaInt64

typedef integral<uint8_t>aes70::OCP1::OcaBoolean

OCP.1 encoder for OcaBoolean.

typedef floating_point<float, uint32_t>aes70::OCP1::OcaFloat32

OCP.1 encoder for OcaFloat32.

typedef floating_point<double, uint64_t>aes70::OCP1::OcaFloat64

OCP.1 encoder for OcaFloat64.

template<typename A, typename B>
using aes70::OCP1::pair = tuple<A, B>

OCP.1 encoder template for encoding pairs of types.

template<typename Key, typename Value>
using aes70::OCP1::OcaMultiMap = OcaList<pair<Key, Value>>

OCP.1 encoder template for OcaMultiMap.

Function documentation

template<typename T>
AES70_ALWAYS_INLINE std::size_t aes70::OCP1::encoded_length(const T& x)

Returns the number of bytes of the OCP.1 encoding of x

template<typename T>
AES70_ALWAYS_INLINE uint8_t* aes70::OCP1::encode_to(uint8_t* dst, const T& x)

Returns Returns dst + encoded_length(x)

Generates the OCP.1 encoding of x into dst.

template<typename T>
const AES70_ALWAYS_INLINE uint8_t* aes70::OCP1::decode_from(const uint8_t* src, T& x)

Returns Returns src + encoded_length(x).

Decodes x from src.

template<typename T>
const AES70_ALWAYS_INLINE uint8_t* aes70::OCP1::decode_length(const uint8_t* src, const uint8_t* end, const T&)

Returns src + encoded_length(x) or nullptr if !(src + encoded_length(x) < end).