summaryrefslogtreecommitdiff
path: root/src/ecbor_internal.h
blob: abeaf979bb4f3c7c132e95002746e4a823fab566 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
 * Copyright (c) 2018 Vasile Vilvoiu <vasi.vilvoiu@gmail.com>
 *
 * libecbor is free software; you can redistribute it and/or modify
 * it under the terms of the MIT license. See LICENSE for details.
 */

#ifndef _ECBOR_INTERNAL_H_
#define _ECBOR_INTERNAL_H_

#include <stdint.h>

/* Don't rely on <stddef.h> for this */
#define NULL 0
#define false 0
#define true 1

/* CBOR major type 7 must not be exposed to user, but translated to other types */
enum {
  ECBOR_TYPE_SPECIAL = 7
};

/* Additional value meanings */
enum {
  ECBOR_ADDITIONAL_1BYTE              = 24,
  ECBOR_ADDITIONAL_2BYTE              = 25,
  ECBOR_ADDITIONAL_4BYTE              = 26,
  ECBOR_ADDITIONAL_8BYTE              = 27,
  
  ECBOR_ADDITIONAL_INDEFINITE         = 31
};

/* Simple value meanings */
enum {
  ECBOR_SIMPLE_FALSE                  = 20,
  ECBOR_SIMPLE_TRUE                   = 21,
  ECBOR_SIMPLE_NULL                   = 22,
  ECBOR_SIMPLE_UNDEFINED              = 23
};

/*
 * Endianness
 */
extern uint16_t
ecbor_uint16_from_big_endian (uint16_t value);

extern uint32_t
ecbor_uint32_from_big_endian (uint32_t value);

extern uint64_t
ecbor_uint64_from_big_endian (uint64_t value);

extern float
ecbor_fp32_from_big_endian (float value);

extern double
ecbor_fp64_from_big_endian (double value);

#endif