@@ -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); |
|