dynamiC
0.1
|
Implementation of dynamiC operations module. More...
#include "dynamic.h"
Go to the source code of this file.
Macros | |
#define | max_type(A, B) (DYN_TYPE(A) > DYN_TYPE(B)) ? DYN_TYPE(A) : DYN_TYPE(B) |
#define | CHECK_COPY_REFERENCE(X1) |
#define | CHECK_NOCOPY_REFERENCE(X2) |
#define | CHECK_REFERENCE(X1, X2) |
Functions | |
trilean | dyn_op_neg (dyn_c *dyn) |
Negate dynamic value in param dyn. More... | |
trilean | dyn_op_add (dyn_c *dyn1, dyn_c *dyn2) |
Add dyn2 to dyn1. More... | |
trilean | dyn_op_sub (dyn_c *dyn1, dyn_c *dyn2) |
Subtract dyn2 from dyn1. More... | |
trilean | dyn_op_mul (dyn_c *dyn1, dyn_c *dyn2) |
Multiply dyn1 with dyn2. More... | |
trilean | dyn_op_div (dyn_c *dyn1, dyn_c *dyn2) |
Divide dyn1 by dyn2. More... | |
trilean | dyn_op_mod (dyn_c *dyn1, dyn_c *dyn2) |
dyn1 Modulo dyn2 More... | |
float | fast_approx_pow (float x, float p) |
Power function approximation x^y. More... | |
trilean | dyn_op_pow (dyn_c *dyn1, dyn_c *dyn2) |
dyn1 to the power of dyn2 More... | |
trilean | dyn_get_bool_3 (const dyn_c *dyn) |
Returns the trinary truth value (DYN_TRUE|DYN_FALSE|DYN_NONE) of an element. More... | |
trilean | dyn_op_and (dyn_c *dyn1, dyn_c *dyn2) |
Logical (trinary) AND operation. More... | |
trilean | dyn_op_or (dyn_c *dyn1, dyn_c *dyn2) |
Logical (trinary) OR operation. More... | |
trilean | dyn_op_xor (dyn_c *dyn1, dyn_c *dyn2) |
Logical (trinary) XOR operation. More... | |
trilean | dyn_op_not (dyn_c *dyn) |
Logical (trinary) Negation. More... | |
dyn_char | dyn_op_cmp (dyn_c *dyn1, dyn_c *dyn2) |
Common compare function for dynamic elements. More... | |
trilean | dyn_op_id (dyn_c *dyn1, dyn_c *dyn2) |
Type and Value Equality. More... | |
trilean | dyn_op_eq (dyn_c *dyn1, dyn_c *dyn2) |
Relational Equality. More... | |
trilean | dyn_op_ne (dyn_c *dyn1, dyn_c *dyn2) |
Relational Not Equal. More... | |
trilean | dyn_op_lt (dyn_c *dyn1, dyn_c *dyn2) |
Relational Less Than. More... | |
trilean | dyn_op_ge (dyn_c *dyn1, dyn_c *dyn2) |
Relational Greater Than or Equal. More... | |
trilean | dyn_op_gt (dyn_c *dyn1, dyn_c *dyn2) |
Relational Greater Than. More... | |
trilean | dyn_op_le (dyn_c *dyn1, dyn_c *dyn2) |
Relational Less Than or Equal. More... | |
trilean | dyn_op_in (dyn_c *element, dyn_c *container) |
Check if dyn2 is element of dyn1. More... | |
trilean | dyn_op_b_not (dyn_c *dyn) |
Binary complement. | |
trilean | dyn_op_b_and (dyn_c *dyn1, dyn_c *dyn2) |
Binary AND. | |
trilean | dyn_op_b_or (dyn_c *dyn1, dyn_c *dyn2) |
Binary OR. | |
trilean | dyn_op_b_xor (dyn_c *dyn1, dyn_c *dyn2) |
Binary XOR. | |
trilean | dyn_op_b_shift_l (dyn_c *dyn1, dyn_c *dyn2) |
Binary shift left. | |
trilean | dyn_op_b_shift_r (dyn_c *dyn1, dyn_c *dyn2) |
Binary shift right. | |
Implementation of dynamiC operations module.
This project is released under the MIT-License.
Definition in file dynamic_op.c.
#define CHECK_COPY_REFERENCE | ( | X1 | ) |
Definition at line 19 of file dynamic_op.c.
#define CHECK_NOCOPY_REFERENCE | ( | X2 | ) |
Definition at line 25 of file dynamic_op.c.
#define CHECK_REFERENCE | ( | X1, | |
X2 | |||
) |
Definition at line 30 of file dynamic_op.c.
Common compare function for dynamic elements.
Basic compare function for dynamic data dypes, based on the relation between the input parameters, different values are returned, see the list below.
dyn1 | first dynamic parameter |
dyn2 | second dynamic parameter |
0 | if dyn1 == dyn2 |
1 | if dyn1 < dyn2 |
2 | if dyn1 > dyn2 |
3 | if dyn1 != dyn2 |
4 | if not comparable due to different data types (STRING <= SET) |
Definition at line 683 of file dynamic_op.c.
Referenced by dyn_op_eq(), dyn_op_gt(), dyn_op_lt(), and dyn_op_ne().
float fast_approx_pow | ( | float | x, |
float | p | ||
) |
Power function approximation x^y.
This implementation is based on the fastapprox library of Paul Minero.
x | base value |
y | exponential value |
approx. float value
Definition at line 417 of file dynamic_op.c.