@@ -0,0+1,32@@ |
||
1 |
+#pragma once |
|
2 |
+ |
|
3 |
+#include <stdint.h> |
|
4 |
+#include <stdlib.h> |
|
5 |
+ |
|
6 |
+typedef struct { |
|
7 |
+ uintptr_t value; |
|
8 |
+ uint8_t size; |
|
9 |
+} uvalue_size; |
|
10 |
+ |
|
11 |
+typedef struct { |
|
12 |
+ intptr_t value; |
|
13 |
+ uint8_t size; |
|
14 |
+} value_size; |
|
15 |
+ |
|
16 |
+/// Return the number of bytes to encode the given unsigned value as uleb128 |
|
17 |
+uint8_t uleb128_bytes(uintptr_t value); |
|
18 |
+ |
|
19 |
+/// Encode the given unsigned value as uleb128 into data, return size of encode |
|
20 |
+uint8_t uleb128_encode(uintptr_t value, uint8_t *data); |
|
21 |
+ |
|
22 |
+/// Decode the uleb128 data given, return value and size |
|
23 |
+uvalue_size uleb128_decode(uint8_t *data); |
|
24 |
+ |
|
25 |
+/// Return the number of bytes to encode the given signed value as leb128 |
|
26 |
+uint8_t leb128_bytes(intptr_t value); |
|
27 |
+ |
|
28 |
+/// Encode the given signed value as leb128 into data, return size of encode |
|
29 |
+uint8_t leb128_encode(intptr_t value, uint8_t *data); |
|
30 |
+ |
|
31 |
+/// Decode the leb128 data given, return value and size |
|
32 |
+value_size leb128_decode(uint8_t *data); |