DNA Calib 1.1
Project brief
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
terse Namespace Reference

Namespaces

namespace  impl
 
namespace  traits
 

Classes

struct  Anchor
 
class  Archive
 
struct  ArchiveOffset
 
struct  ArchiveSize
 
class  BinaryInputArchive
 
class  BinaryOutputArchive
 
class  Blob
 
struct  ByteSwapper
 
struct  ByteSwapper< Endianness::Big >
 
struct  ByteSwapper< Endianness::Little >
 
class  CharInputStreamBuf
 
class  CharOutputStreamBuf
 
class  DynArray
 Resizable array-like abstraction for trivial-types only. More...
 
class  ExtendableBinaryInputArchive
 
class  ExtendableBinaryOutputArchive
 
class  ExtendableJSONInputArchive
 
class  ExtendableJSONOutputArchive
 
class  JSONInputArchive
 
class  JSONOutputArchive
 
struct  Transparent
 
class  VirtualSerializerProxy
 

Typedefs

template<Endianness EByteOrder>
using SwapTo = ByteSwapper< EByteOrder >
 
template<Endianness EByteOrder>
using SwapFrom = ByteSwapper< EByteOrder >
 

Enumerations

enum class  Endianness { Little , Big , Network = Big }
 

Functions

template<typename TOffset >
ArchiveOffset< TOffset >::Proxy proxy (ArchiveOffset< TOffset > &offset)
 
template<typename TSize , typename TOffset >
ArchiveSize< TSize, TOffset >::Proxy proxy (ArchiveSize< TSize, TOffset > &size, Anchor< TOffset > &base)
 
template<typename T >
Transparent< T > transparent (T &data)
 
constexpr std::size_t base64encode (std::size_t size)
 
std::size_t base64encode (char *destination, const char *source, std::size_t size)
 
constexpr std::size_t base64decode (std::size_t size)
 
std::size_t base64decode (char *destination, const char *source, std::size_t size)
 
template<typename T >
void networkToHost (T &value)
 
template<typename T >
void networkToHost128 (T *values)
 
template<typename T >
void hostToNetwork (T &value)
 
template<typename T >
void hostToNetwork128 (T *values)
 

Variables

static const char * alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 

Typedef Documentation

◆ SwapFrom

template<Endianness EByteOrder>
using terse::SwapFrom = typedef ByteSwapper<EByteOrder>

◆ SwapTo

template<Endianness EByteOrder>
using terse::SwapTo = typedef ByteSwapper<EByteOrder>

Enumeration Type Documentation

◆ Endianness

enum class terse::Endianness
strong
Enumerator
Little 
Big 
Network 

Function Documentation

◆ base64decode() [1/2]

std::size_t terse::base64decode ( char *  destination,
const char *  source,
std::size_t  size 
)
inline
57 {
58 char* out = destination;
59
60 int buffer[256];
61 std::fill_n(buffer, 256, -1);
62 for (int i = 0; i < 64; i++) {
63 buffer[static_cast<std::size_t>(alphabet[i])] = i;
64 }
65
66 int val = 0;
67 int valb = -8;
68
69 for (std::size_t pos = {}; pos < size; ++pos) {
70 const auto c = static_cast<unsigned char>(source[pos]);
71 if (buffer[c] == -1) {
72 break;
73 }
74 val = (val << 6) + buffer[c];
75 valb += 6;
76 if (valb >= 0) {
77 *out++ = static_cast<char>((val >> valb) & 0xFF);
78 valb -= 8;
79 }
80 }
81
82 // Length of base64decoded data
83 return static_cast<std::size_t>(out - destination);
84}
static const char * alphabet
Definition: Base64.h:17

References alphabet.

◆ base64decode() [2/2]

constexpr std::size_t terse::base64decode ( std::size_t  size)
constexpr
52 {
53 return (size * 3ul) / 4ul;
54}

Referenced by terse::ExtendableJSONInputArchive< TExtender, TStream, TSize, TOffset >::process().

◆ base64encode() [1/2]

std::size_t terse::base64encode ( char *  destination,
const char *  source,
std::size_t  size 
)
inline
24 {
25 char* out = destination;
26
27 int val = 0;
28 int valb = -6;
29
30 for (std::size_t pos = {}; pos < size; ++pos) {
31 const auto c = static_cast<unsigned char>(source[pos]);
32 val = (val << 8) + c;
33 valb += 8;
34 while (valb >= 0) {
35 *out++ = (alphabet[(val >> valb) & 0x3F]);
36 valb -= 6;
37 }
38 }
39
40 if (valb > -6) {
41 *out++ = alphabet[((val << 8) >> (valb + 8)) & 0x3F];
42 }
43
44 while (static_cast<std::size_t>(out - destination) % 4) {
45 *out++ = '=';
46 }
47
48 // Length of base64encoded data
49 return static_cast<std::size_t>(out - destination);
50}

References alphabet.

◆ base64encode() [2/2]

constexpr std::size_t terse::base64encode ( std::size_t  size)
constexpr

◆ hostToNetwork()

template<typename T >
void terse::hostToNetwork ( T &  value)
inline
157 {
159}
Definition: ByteSwap.h:60

◆ hostToNetwork128()

template<typename T >
void terse::hostToNetwork128 ( T *  values)
inline
162 {
164}

◆ networkToHost()

template<typename T >
void terse::networkToHost ( T &  value)
inline
147 {
149}

◆ networkToHost128()

template<typename T >
void terse::networkToHost128 ( T *  values)
inline
152 {
154}

◆ proxy() [1/2]

template<typename TOffset >
ArchiveOffset< TOffset >::Proxy terse::proxy ( ArchiveOffset< TOffset > &  offset)
102 {
103 return typename ArchiveOffset<TOffset>::Proxy{offset};
104}
Definition: ArchiveOffset.h:31

◆ proxy() [2/2]

template<typename TSize , typename TOffset >
ArchiveSize< TSize, TOffset >::Proxy terse::proxy ( ArchiveSize< TSize, TOffset > &  size,
Anchor< TOffset > &  base 
)
124 {
125 return typename ArchiveSize<TSize, TOffset>::Proxy{size, base};
126}
Definition: ArchiveSize.h:37

◆ transparent()

template<typename T >
Transparent< T > terse::transparent ( T &  data)

Variable Documentation

◆ alphabet

const char* terse::alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
static

Referenced by base64decode(), and base64encode().