diff options
Diffstat (limited to 'prism/util/pm_integer.h')
-rw-r--r-- | prism/util/pm_integer.h | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/prism/util/pm_integer.h b/prism/util/pm_integer.h index 7f172988b3..91b28ad2f3 100644 --- a/prism/util/pm_integer.h +++ b/prism/util/pm_integer.h @@ -48,6 +48,9 @@ typedef struct { * from the string itself. */ typedef enum { + /** The default decimal base, with no prefix. Leading 0s will be ignored. */ + PM_INTEGER_BASE_DEFAULT, + /** The binary base, indicated by a 0b or 0B prefix. */ PM_INTEGER_BASE_BINARY, @@ -79,15 +82,7 @@ typedef enum { * @param start The start of the string. * @param end The end of the string. */ -PRISM_EXPORTED_FUNCTION void pm_integer_parse(pm_integer_t *integer, pm_integer_base_t base, const uint8_t *start, const uint8_t *end); - -/** - * Return the memory size of the integer. - * - * @param integer The integer to get the memory size of. - * @return The size of the memory associated with the integer. - */ -size_t pm_integer_memsize(const pm_integer_t *integer); +void pm_integer_parse(pm_integer_t *integer, pm_integer_base_t base, const uint8_t *start, const uint8_t *end); /** * Compare two integers. This function returns -1 if the left integer is less @@ -101,6 +96,18 @@ size_t pm_integer_memsize(const pm_integer_t *integer); int pm_integer_compare(const pm_integer_t *left, const pm_integer_t *right); /** + * Reduce a ratio of integers to its simplest form. + * + * If either the numerator or denominator do not fit into a 32-bit integer, then + * this function is a no-op. In the future, we may consider reducing even the + * larger numbers, but for now we're going to keep it simple. + * + * @param numerator The numerator of the ratio. + * @param denominator The denominator of the ratio. + */ +void pm_integers_reduce(pm_integer_t *numerator, pm_integer_t *denominator); + +/** * Convert an integer to a decimal string. * * @param buffer The buffer to append the string to. |