diff options
Diffstat (limited to 'prism/integer.h')
| -rw-r--r-- | prism/integer.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/prism/integer.h b/prism/integer.h new file mode 100644 index 0000000000..9285986885 --- /dev/null +++ b/prism/integer.h @@ -0,0 +1,41 @@ +/** + * @file integer.h + * + * This module provides functions for working with arbitrary-sized integers. + */ +#ifndef PRISM_INTEGER_H +#define PRISM_INTEGER_H + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> + +/** + * A structure represents an arbitrary-sized integer. + */ +typedef struct { + /** + * The number of allocated values. length is set to 0 if the integer fits + * into uint32_t. + */ + size_t length; + + /** + * List of 32-bit integers. Set to NULL if the integer fits into uint32_t. + */ + uint32_t *values; + + /** + * Embedded value for small integer. This value is set to 0 if the value + * does not fit into uint32_t. + */ + uint32_t value; + + /** + * Whether or not the integer is negative. It is stored this way so that a + * zeroed pm_integer_t is always positive zero. + */ + bool negative; +} pm_integer_t; + +#endif |
