Functions and macros extending the C language.
Macros:
Conversion of a macro into a char* containing its value
Safe malloc, allocates 'size*sizeof(*ptr)' bytes of memory and raises CapyExc_MallocFailed if the allocation fails.
Safe realloc, raises CapyExc_MallocFailed if the reallocation fails and leaves 'ptr' unchanged if it fails
Shortcut equivalent to a for loop iterating from 0 to (nbIter-1) and storing the current iteration index in varName
Macro used to create padding fields
Input argument(s):
T: the type of the field to padd
I: index to differentiate several padding field in the same structure
Macros equivalent to printf and fprintf where a '\n' would have been added at the end of the formatting string
Macro to use OOP methods. Given a structure 'S' with a method defined as pointer to function as field 'm', an instance 's' of 'S' can execute this method with the command $(s, m)() (where 's' must be a pointer to 'S') The function pointed to by 'm' can access the instance at the origin of the call by defining the macro #define CapyThatS struct S* that = (struct S*)capyThat and calling this macro at the head of the function, before any call to another $(..., ...). A pointer to the instance is then available in the body of function through the variable 'that'. The macro CapyThat... must be defined for each structure using OOP methods. LibCapy provide this macro for each of the structure it defines.
Same as $(instance, method) but the value of 'that' in the execution of the method is replaced with 'actor' instead of 'instance'. Used to implement genericity.
Safe fscanf raising CapyExc_StreamReadError if it fails
Safe fprintf raising CapyExc_StreamWriteError if it fails
Safe fread raising CapyExc_StreamReadError if it fails
Safe fwrite raising CapyExc_StreamWriteError if it fails
Return the number of arguments of a variadic macro given the type 'type' of these arguments
Equality operator for float and double types.
Input argument(s):
a,b: the values to compare
Output and side effect(s):
Return true if the values are considered equal using the ULP method described here: https://randomascii.wordpress.com/2012/02/25/ comparing-floating-point-numbers-2012-edition/
Get the minimum value in a array of base type values
Input argument(s):
arr: the array
size: the size of the array
Output and side effect(s):
Return the minimum value
Get the maximum value in a array of base type values
Input argument(s):
arr: the array
size: the size of the array
Output and side effect(s):
Return the maximum value
Get the index of the minimum value in a array of base type values
Input argument(s):
arr: the array
size: the size of the array
Output and side effect(s):
Return the minimum value
Get the index of the maximum value in a array of base type values
Input argument(s):
arr: the array
size: the size of the array
Output and side effect(s):
Return the maximum value
for loop using the 'iterator' to iterates on each 'elem' of the iterator's associated container. A copy of the value in the container can be accessed with 'elem', and the adress of the value with 'elem'Ptr.
Inheritance operator. Use it in the 'Create' function of the inheriting class to initialise the 'Parent' properties and methods in 'Instance'. 'Args' are arguments given to the parent 'Create' function (inside parenthesis)
Get teh maximum possible value for an integer type
Get a pointer to the instance of the structure containing 'ptr' given its a structure of type 'containerType' and 'ptr' points to the 'fieldName' field in that structure.
Enumerations:
None.
Typedefs:
Typedef for struct sigaction to comply with CBo
Functions:
Safe fopen raising CapyExc_StreamOpenError if it fails
Safe sprintf allocating memory as necessary for the result string and raising CapyExc_MallocFailed if the memory allocation failed
Input argument(s):
str: pointer to the result string
fmt: format as in sprintf
...: arguments as in sprintf
Clone of asprintf
Input argument(s):
fmt: format as in sprintf
...: arguments as in sprintf
Output and side effect(s):
Return a newly allocated string
Exception(s):
May raise CapyExc_MallocFailed
Sleep for a given amount of time in milliseconds
Input argument(s):
delayMs: delay in milliseconds
Output and side effect(s):
Return -1 if the sleep has been interrupted by an interruption, else 0
Check if an address is inside the currently accessible address space
Input argument(s):
ptr: the address to check
nbByte: the number of bytes checked from that adress, if equal to 0 uses 1 byte instead
Output and side effect(s):
Return true if the 'nbByte' bytes from 'ptr' are in the accessible adress space, else false
Get the quantity of memory currently used by the process calling this function.
Output and side effect(s):
Return the quantity of memory in bytes. May return 0 if the quantity of used memory couldn't be measured.
Avoid child process to become zombies and wait until their parent's wait() call. This applies to *all* child processes.