Infinint
[Class_wrapper]
Variable length integer data type without overflow.
More...Data Structures | |
struct | dar_infinint |
Incomplete struct for use as an infinint object pointer. More... | |
Mathematical operations | |
Each function performs the indicated operation using each operand and placing the result in the first argument (overwriting the first operand).
The exceptions are the euclide and boolean operations. It should be noted that infinint operations are in general much slower than fixed size integer operations. This is to be expected of course. However, if the data you are using will not overflow a fixed size variable, use that. It's just faster. Sample code: dar_infinint* a = dar_infi(1000); dar_infinint* b = dar_infds("10345"); dar_infinint* c = dar_infhs("4A3F10"); // a += b dar_infinint_add( &a, b ); // d = a + b dar_infinint_add( &a, b ); dar_infinint* d = dar_infinint_copy( a ); // d = a + b saving a dar_infinint* t = dar_infinint_copy( a ); dar_infinint_add( &a, b ); dar_infinint* d = dar_infinint_copy( a ); a = dar_infinint_copy( t ); dar_infinint_destroy( t ); // a++ dar_infinint_increment( a ); @endverbatim | |
void | dar_infinint_add (dar_infinint **a, dar_infinint *b) |
Adds two values and replaces the first parameter with the results. | |
void | dar_infinint_sub (dar_infinint **a, dar_infinint *b) |
Subtracts two values and replaces the first parameter with the results. | |
void | dar_infinint_mult (dar_infinint **a, dar_infinint *b) |
Multiplies two values and replaces the first parameter with the results. | |
void | dar_infinint_div (dar_infinint **a, dar_infinint *b) |
Divides two values and replaces the first parameter with the results. | |
void | dar_infinint_pow (dar_infinint **a, dar_infinint *b) |
Takes the first parameter to the second parameter and replaces the first parameter with the results. | |
void | dar_infinint_powi (dar_infinint **a, int exp) |
Takes the first parameter to the second parameter and replaces the first parameter with the results. | |
void | dar_infinint_shiftl (dar_infinint **a, dar_infinint *b) |
Shifts the first parameter to the left b number of times and replaces the first parameter with the results. | |
void | dar_infinint_shiftli (dar_infinint **a, int bit) |
Shifts the first parameter to the left b number of times and replaces the first parameter with the results. | |
void | dar_infinint_shiftr (dar_infinint **a, dar_infinint *b) |
Shifts the first parameter to the right b number of times and replaces the first parameter with the results. | |
void | dar_infinint_shiftri (dar_infinint **a, int bit) |
Shifts the first parameter to the right b number of times and replaces the first parameter with the results. | |
void | dar_infinint_increment (dar_infinint **a) |
Increments the parameter by one. | |
void | dar_infinint_decrement (dar_infinint **a) |
Decrements the parameter by one. | |
void | dar_infinint_euclide (dar_infinint *a, dar_infinint *b, dar_infinint **q, dar_infinint **r) |
Finds the quotient and remainder of the first and second parameters. | |
bool | dar_infinint_comp_eq (dar_infinint *a, dar_infinint *b) |
Determines if the first and second parameters are equal. | |
bool | dar_infinint_comp_leq (dar_infinint *a, dar_infinint *b) |
Determines if the first parameter is less than or equal to the second. | |
bool | dar_infinint_comp_l (dar_infinint *a, dar_infinint *b) |
Determines if the first parameter is less than the second. | |
bool | dar_infinint_comp_geq (dar_infinint *a, dar_infinint *b) |
Determines if the first parameter is greater than or equal to the second. | |
bool | dar_infinint_comp_g (dar_infinint *a, dar_infinint *b) |
Determines if the first parameter is less than the second. | |
bool | dar_infinint_comp_neq (dar_infinint *a, dar_infinint *b) |
Determines if the first and second parameters are not equal. | |
Functions | |
void | dar_infinint_destroy (dar_infinint *ref) |
Have the libdar library destroy the infinint object. | |
dar_infinint * | dar_infinint_copy (dar_infinint *ref) |
Creates a copy of a given infinint. | |
dar_infinint * | dar_infpi (int num) |
Create infinint from platform specified integer. | |
dar_infinint * | dar_infi (U_32 num) |
Create infinint from library (libdar) specified integer. | |
dar_infinint * | dar_infu32 (U_32 num) |
Create infinint from unsigned 32 bit. | |
dar_infinint * | dar_infu64 (U_64 num) |
Create infinint from unsigned 64 bit. | |
dar_infinint * | dar_infds (char *num) |
Create infinint from decimal string. | |
dar_infinint * | dar_infhs (char *num) |
Create infinint from hex string. | |
dar_infinint * | dar_infbin (U_8 *num) |
Create infinint from binary infinint data. | |
int | dar_piinf (bool *overflow, dar_infinint *box) |
Extract platform specified integer from infinint. | |
U_32 | dar_iinf (bool *overflow, dar_infinint *box) |
Extract library (libdar) defined integer from infinint. | |
U_32 | dar_u32inf (bool *overflow, dar_infinint *box) |
Extract unsigned 32 bit from infinint. | |
U_64 | dar_u64inf (bool *overflow, dar_infinint *box) |
Extract unsigned 64 bit from infinint. | |
char * | dar_dsinf (U_I *length, dar_infinint *box) |
Extract decimal string from infinint. | |
char * | dar_hsinf (U_I *length, dar_infinint *box) |
Extract hex string from infinint. | |
U_8 * | dar_bininf (U_I *length, dar_infinint *box) |
Extract binary infinint data. |
Detailed Description
Variable length integer data type without overflow.
Libdar was created to handle files of infinit size and number. Traditional fixed size integer data types (byte
, short
, int
, long
, etc) of course overflow at a certain maximum value. The Infinint is a variable length data type that can be dumped to file. The binary format can store both the number and the length of the variable without overflowing. See the infinint specification for more information.
Like many of the class wrappers provided with this binding, it is important to be sure to avoid leaking memory. Make sure to call dar_infinint_destroy
when there is no more use for the infinint.
Function Documentation
|
Extract binary infinint data.
Storage size is exactly equal to Definition at line 596 of file translations.cpp. |
|
Extract decimal string from infinint.
Storage size is Definition at line 573 of file translations.cpp. |
|
Extract hex string from infinint.
Storage size is Definition at line 586 of file translations.cpp. |
|
Create infinint from binary infinint data. Input byte array must be correctly formated infinint data. Consult a libdar infinint binary dump specification before attempting to use this function. Definition at line 466 of file translations.cpp. |