|
DCCL v5
|
Dynamic Compact Control Language namespace. More...
Namespaces | |
| namespace | arith |
| DCCL Arithmetic Encoder Library namespace. | |
| namespace | internal |
| Namespace for objects used internally by DCCL. | |
| namespace | legacyccl |
| DCCL Implementation of the REMUS CCL Language Library namespace. | |
| namespace | native_protobuf |
| Implements the default Google Protocol Buffers encoder for a variety of numeric types. | |
| namespace | test |
| Unit test namespace. | |
| namespace | tool |
| 'dccl' command line tool namespace | |
| namespace | v2 |
| Goby/DCCL version 2 default field codecs. | |
| namespace | v3 |
| DCCL version 3 default field codecs. | |
| namespace | v4 |
| DCCL version 4 default field codecs. | |
| namespace | v5 |
| DCCL version 5 default field codecs. | |
Classes | |
| class | Bitset |
| A variable size container of bits (subclassed from std::deque<bool>) with an optional hierarchy. Similar to set::bitset but can be resized at runtime and has the ability to have parent Bitsets that can give bits to their children. More... | |
| class | Codec |
| The Dynamic CCL enCODer/DECoder. This is the main class you will use to load, encode and decode DCCL messages. Many users will not need any other DCCL classes than this one. More... | |
| class | DCCLFieldOptions |
| class | DCCLFieldOptions_Conditions |
| class | DCCLFieldOptions_Units |
| class | DCCLFieldOptions_Units_CustomUnit |
| class | DCCLMessageOptions |
| class | DCCLMessageOptions_Conditions |
| class | DefaultIdentifierCodec |
| Provides the default 1 byte or 2 byte DCCL ID codec. More... | |
| class | DynamicConditions |
| class | DynamicProtobufManager |
| Helper class for creating google::protobuf::Message objects that are not statically compiled into the application. More... | |
| class | Exception |
| Exception class for DCCL. More... | |
| class | FieldCodecBase |
| Provides a base class for defining DCCL field encoders / decoders. Most users who wish to define custom encoders/decoders will use the RepeatedTypedFieldCodec, TypedFieldCodec or its children (e.g. TypedFixedFieldCodec) instead of directly inheriting from this class. More... | |
| class | FieldCodecManager |
| class | FieldCodecManagerLocal |
| A class for managing the various field codecs. Here you can add and remove field codecs. The DCCL Codec and DefaultMessageCodec use the find() methods to locate the appropriate field codec. More... | |
| class | FieldCodecSelector |
| A class that goes between FieldCodecBase and TypedFieldCodec to determine if the pre_encode() and post_decode() methods (which convert between WireType and FieldType) must be implemented or not. More... | |
| class | FieldCodecSelector< WireType, FieldType, std::enable_if_t< std::is_same< WireType, FieldType >::value > > |
| A class that goes between FieldCodecBase and TypedFieldCodec to determine if the pre_encode() and post_decode() methods must be implemented or not. The specialization is selected if WireType == FieldType and implements these functions as a pass-through. More... | |
| class | Logger |
| The DCCL Logger class. Do not instantiate this class directly. Rather, use the dccl::dlog object. More... | |
| class | NullValueException |
| Exception used to signal null (non-existent) value within field codecs during decode. More... | |
| class | Option |
| Represents a command line option. More... | |
| class | OutOfRangeException |
| class | RepeatedTypedFieldCodec |
| Base class for "repeated" (multiple value) static-typed (no dccl::any) field encoders/decoders. Use TypedFixedFieldCodec if your codec is fixed length (always uses the same number of bits on the wire). Use TypedFieldCodec if your fields are always singular ("optional" or "required"). Singular fields are default implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector. More... | |
| class | TypedFieldCodec |
| Base class for static-typed (no dccl::any) field encoders/decoders. Most single-valued user defined variable length codecs will start with this class. Use TypedFixedFieldCodec if your codec is fixed length (always uses the same number of bits on the wire) or RepeatedTypedFieldCodec if your codec has special behavior for repeated (vector) fields. More... | |
| class | TypedFixedFieldCodec |
| Base class for static-typed field encoders/decoders that use a fixed number of bits on the wire regardless of the value of the field. Use TypedFieldCodec if your encoder is variable length. See TypedFieldCodec for an explanation of the template parameters (FieldType and WireType). More... | |
Typedefs | |
| using | any = std::any |
| using | bad_any_cast = std::bad_any_cast |
| typedef google::protobuf::uint32 | uint32 |
| an unsigned 32 bit integer | |
| using | int32 = google::protobuf::int32 |
| a signed 32 bit integer | |
| using | uint64 = google::protobuf::uint64 |
| an unsigned 64 bit integer | |
| using | int64 = google::protobuf::int64 |
| a signed 64 bit integer | |
Enumerations | |
| enum | MessagePart { HEAD , BODY , UNKNOWN } |
Functions | |
| template<class T > | |
| T | any_cast (const any &operand) |
| template<class T > | |
| T | any_cast (any &operand) |
| template<class T > | |
| T | any_cast (any &&operand) |
| template<class T > | |
| const T * | any_cast (const any *operand) noexcept |
| template<class T > | |
| T * | any_cast (any *operand) noexcept |
| bool | is_empty (const any &a) |
| bool | operator== (const Bitset &a, const Bitset &b) |
| bool | operator< (const Bitset &a, const Bitset &b) |
| Bitset | operator& (const Bitset &b1, const Bitset &b2) |
| Bitset | operator| (const Bitset &b1, const Bitset &b2) |
| Bitset | operator^ (const Bitset &b1, const Bitset &b2) |
| std::ostream & | operator<< (std::ostream &os, const Bitset &b) |
| std::ostream & | operator<< (std::ostream &os, const Codec &codec) |
| unsigned | floor_bits2bytes (unsigned bits) |
| unsigned | ceil_bits2bytes (unsigned bits) |
| std::ostream & | operator<< (std::ostream &out, const google::protobuf::Message &msg) |
| template<typename Float > | |
| Float | round (Float d) |
| template<typename Float > | |
| std::enable_if< std::is_floating_point< Float >::value, Float >::type | round (Float value, int precision) |
| template<typename Float > | |
| std::enable_if< std::is_floating_point< Float >::value, Float >::type | quantize (Float value, double interval) |
| template<typename Int > | |
| Int | abs (Int i) |
| template<typename Int > | |
| std::enable_if< std::is_integral< Int >::value, Int >::type | round (Int value, int precision) |
| template<typename Int > | |
| std::enable_if< std::is_integral< Int >::value, Int >::type | quantize (Int value, double interval) |
| template<class T > | |
| void | hash_combine (std::size_t &seed, const T &v) |
| hash combine - from boost::hash_combine | |
| std::string | exception_string (const std::string &in, const google::protobuf::Descriptor *desc, const google::protobuf::FieldDescriptor *field) |
| std::ostream & | operator<< (std::ostream &os, const FieldCodecBase &field_codec) |
| Exception | type_error (const std::string &action, const std::type_info &expected, const std::type_info &got) |
| void | to_ostream (const std::string &msg, dccl::logger::Verbosity vrb, dccl::logger::Group grp, std::ostream *os, bool add_timestamp) |
| std::string | hash_as_string (std::size_t hash) |
| int32_t | decompose_float_format (float val, int16_t &exponent) |
| int64_t | decompose_float_format (double val, int16_t &exponent) |
| float | compose_float_format (int32_t significand, int16_t exponent) |
| double | compose_float_format (int64_t significand, int16_t exponent) |
| template<std::size_t N> | |
| void | increment (std::bitset< N > &bits) |
| template<std::size_t N> | |
| bool | is_negative (const std::bitset< N > &bits) |
| template<std::size_t N> | |
| void | negate (std::bitset< N > &bits) |
| template<std::size_t N> | |
| std::bitset< N > | negated (const std::bitset< N > &bits) |
| template<std::size_t N> | |
| void | add_to (std::bitset< N > &a, const std::bitset< N > &b) |
| template<std::size_t N> | |
| std::bitset< N > | sum (const std::bitset< N > &a, const std::bitset< N > &b) |
| template<std::size_t N> | |
| std::bitset< N > | difference (const std::bitset< N > &a, const std::bitset< N > &b) |
| template<std::size_t N> | |
| bool | unsigned_geq (const std::bitset< N > &a, const std::bitset< N > &b) |
| template<std::size_t N> | |
| std::bitset< N > | unsigned_quotient (const std::bitset< N > &n, const std::bitset< N > &d) |
| template<std::size_t N> | |
| std::bitset< 2 *N > | unsigned_product (const std::bitset< N > &a, const std::bitset< N > &b) |
| template<std::size_t N> | |
| void | rounding_shift_right (std::bitset< N > &bits, uint16_t num_pos) |
| template<std::size_t N> | |
| int16_t | drop_to_sig_fig (std::bitset< N > &bits, uint16_t target_sig_fig) |
| template<typename T , std::size_t N> | |
| T | fill_unsigned (const std::bitset< N > &bits) |
| template<typename Integral , std::enable_if_t< std::is_integral< Integral >::value, bool > = true> | |
| uint64 | encode (Integral value, double min, double res) |
| template<typename Float , std::enable_if_t< std::is_floating_point< Float >::value, bool > = true> | |
| uint64 | encode (Float value, double min, double res) |
| template<typename Integral , std::enable_if_t< std::is_integral< Integral >::value, bool > = true> | |
| Integral | decode (uint64 value_enc, double min, double res) |
| template<typename Float , std::enable_if_t< std::is_floating_point< Float >::value, bool > = true> | |
| Float | decode (uint64 value_enc, double min, double res) |
| bool | is_part_of_oneof (const google::protobuf::FieldDescriptor *field_desc) |
| Checks whether a given field is part to a oneof or not. | |
| int | containing_oneof_index (const google::protobuf::FieldDescriptor *field_desc) |
| Returns the index of the containing oneof of the given field, or -1 if the field is not part of a oneof. | |
| int | oneof_size (const google::protobuf::OneofDescriptor *oneof_desc) |
| Returns the number of bits needed to represent the oneof cases (including the unset case). | |
Binary encoding | |
| void | hex_decode (const std::string &in, std::string *out) |
Decodes a (little-endian) hexadecimal string to a byte string. Index 0 and 1 (first byte) of in are written to index 0 (first byte) of out | |
| std::string | hex_decode (const std::string &in) |
| template<typename CharIterator > | |
| void | hex_encode (CharIterator begin, CharIterator end, std::string *out, bool upper_case=false) |
Encodes a (little-endian) hexadecimal string from a byte string. Index 0 of begin is written to index 0 and 1 (first byte) of out | |
| template<typename CharIterator > | |
| std::string | hex_encode (CharIterator begin, CharIterator end) |
| void | hex_encode (const std::string &in, std::string *out, bool upper_case=false) |
Encodes a (little-endian) hexadecimal string from a byte string. Index 0 of in is written to index 0 and 1 (first byte) of out | |
| std::string | hex_encode (const std::string &in) |
| std::string | b64_encode (const std::string &in) |
| std::string | b64_decode (const std::string &in) |
| unsigned | ceil_log2 (dccl::uint64 v) |
| unsigned long | ceil_log2 (double d) |
| unsigned long | ceil_log2 (int i) |
| unsigned long | ceil_log2 (long i) |
| unsigned long | ceil_log2 (unsigned i) |
| double | log2 (double d) |
Variables | |
| DCCLFieldOptionsDefaultTypeInternal | _DCCLFieldOptions_default_instance_ |
| DCCLFieldOptions_ConditionsDefaultTypeInternal | _DCCLFieldOptions_Conditions_default_instance_ |
| DCCLFieldOptions_UnitsDefaultTypeInternal | _DCCLFieldOptions_Units_default_instance_ |
| DCCLFieldOptions_Units_CustomUnitDefaultTypeInternal | _DCCLFieldOptions_Units_CustomUnit_default_instance_ |
| DCCLMessageOptionsDefaultTypeInternal | _DCCLMessageOptions_default_instance_ |
| DCCLMessageOptions_ConditionsDefaultTypeInternal | _DCCLMessageOptions_Conditions_default_instance_ |
| extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::PROTOBUF_NAMESPACE_ID::FieldOptions, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::dccl::DCCLFieldOptions >, 11, false > | field |
| extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::PROTOBUF_NAMESPACE_ID::MessageOptions, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::dccl::DCCLMessageOptions >, 11, false > | msg |
| const unsigned | BITS_IN_BYTE = 8 |
| Logger | dlog |
| const std::string | VERSION_STRING = "5.0.1" |
| const std::string | VERSION_DATE = "2026.07.14" |
| const std::string | COMPILE_DATE = "2026.07.14" |
Dynamic Compact Control Language namespace.
| using dccl::int32 = typedef google::protobuf::int32 |
| using dccl::int64 = typedef google::protobuf::int64 |
| typedef google::protobuf::uint32 dccl::uint32 |
| using dccl::uint64 = typedef google::protobuf::uint64 |
| enum dccl::MessagePart |
Definition at line 32 of file field_codec_message_stack.h.
|
inline |
|
noexcept |
|
noexcept |
|
inline |
|
inline |
|
inline |
| float dccl::compose_float_format | ( | int32_t | significand, |
| int16_t | exponent | ||
| ) |
composes float/double from a two-integer representation; the reverse process of decompose_float_format (also accounting for the special cases).
Definition at line 158 of file numeric.cpp.
| double dccl::compose_float_format | ( | int64_t | significand, |
| int16_t | exponent | ||
| ) |
Definition at line 172 of file numeric.cpp.
|
inline |
| Integral dccl::decode | ( | uint64 | value_enc, |
| double | min, | ||
| double | res | ||
| ) |
| Float dccl::decode | ( | uint64 | value_enc, |
| double | min, | ||
| double | res | ||
| ) |
| int64_t dccl::decompose_float_format | ( | double | val, |
| int16_t & | exponent | ||
| ) |
Definition at line 102 of file numeric.cpp.
| int32_t dccl::decompose_float_format | ( | float | val, |
| int16_t & | exponent | ||
| ) |
decomposes float/double to a two-integer representation: a significant (aka mantissa) and exponent. The functionality is similar to std::frexp except the significant is represented as a integer type instead of a floating point representation. Conceptually: val = <return value> * 2 ^ exponent
| val | value to decompose |
| exponent | that allows the significant to be expressed without a decimal point |
If val is 0, exponent is 0, and 0 is returned If val is +Inf, exponent is unspecified, and most positive integer is returned If val is -Inf, exponent is unspecified, and most negative integer is returned If val is NaN, exponent is unspecified, and second most negative integer is returned
Definition at line 43 of file numeric.cpp.
|
inline |
|
inline |
| uint64 dccl::encode | ( | Float | value, |
| double | min, | ||
| double | res | ||
| ) |
| uint64 dccl::encode | ( | Integral | value, |
| double | min, | ||
| double | res | ||
| ) |
|
inline |
Definition at line 32 of file exception.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Encodes a (little-endian) hexadecimal string from a byte string. Index 0 of begin is written to index 0 and 1 (first byte) of out
| begin | iterator to first byte of string to encode (e.g. "TOM") |
| end | iterator pointing to the past-the-end character of the string. |
| out | pointer to string to store result (e.g. "544f4d") |
| upper_case | set true to use upper case for the alphabet characters (i.e. A,B,C,D,E,F), otherwise lowercase is used (a,b,c,d,e,f). |
|
inline |
|
inline |
Encodes a (little-endian) hexadecimal string from a byte string. Index 0 of in is written to index 0 and 1 (first byte) of out
| in | byte string to encode (e.g. "TOM") |
| out | pointer to string to store result (e.g. "544f4d") |
| upper_case | set true to use upper case for the alphabet characters (i.e. A,B,C,D,E,F), otherwise lowercase is used (a,b,c,d,e,f). |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| std::ostream & dccl::operator<< | ( | std::ostream & | os, |
| const FieldCodecBase & | field_codec | ||
| ) |
Definition at line 675 of file field_codec.cpp.
|
inline |
| std::enable_if< std::is_floating_point< Float >::value, Float >::type dccl::quantize | ( | Float | value, |
| double | interval | ||
| ) |
| std::enable_if< std::is_integral< Int >::value, Int >::type dccl::quantize | ( | Int | value, |
| double | interval | ||
| ) |
| std::enable_if< std::is_floating_point< Float >::value, Float >::type dccl::round | ( | Float | value, |
| int | precision | ||
| ) |
| std::enable_if< std::is_integral< Int >::value, Int >::type dccl::round | ( | Int | value, |
| int | precision | ||
| ) |
|
inline |
|
inline |
| void dccl::to_ostream | ( | const std::string & | msg, |
| dccl::logger::Verbosity | vrb, | ||
| dccl::logger::Group | grp, | ||
| std::ostream * | os, | ||
| bool | add_timestamp | ||
| ) |
Definition at line 81 of file logger.cpp.
|
inline |
Definition at line 544 of file field_codec.h.
|
inline |
|
inline |
|
inline |
|
extern |
Definition at line 58 of file option_extensions.pb.h.
|
extern |
Definition at line 55 of file option_extensions.pb.h.
|
extern |
Definition at line 64 of file option_extensions.pb.h.
|
extern |
Definition at line 61 of file option_extensions.pb.h.
|
extern |
Definition at line 70 of file option_extensions.pb.h.
|
extern |
Definition at line 67 of file option_extensions.pb.h.
|
extern |
Definition at line 29 of file logger.cpp.
| extern::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<::PROTOBUF_NAMESPACE_ID::FieldOptions,::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits<::dccl::DCCLFieldOptions >, 11, false > dccl::field |
Definition at line 1870 of file option_extensions.pb.h.
| extern::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<::PROTOBUF_NAMESPACE_ID::MessageOptions,::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits<::dccl::DCCLMessageOptions >, 11, false > dccl::msg |
Definition at line 1874 of file option_extensions.pb.h.