Robotran C Documentation
Macros | Functions
useful_functions.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "mbs_data.h"
#include "mbs_1D_array.h"
#include "mbs_matrix.h"

Go to the source code of this file.

Macros

#define MIN(a, b)   (((a)<(b))?(a):(b))
 
#define MAX(a, b)   (((a)>(b))?(a):(b))
 
#define DBL_MAX   1.7976931348623158e+308
 

Functions

void * mbs_free (void *__ptr)
 Free the pointor ptr and set it to NULL. More...
 
void mbs_log (char *msg,...)
 Function for logging messages in a file called "log" where the program is executed. More...
 
double pow_int (double basis, int expo)
 compute efficiently pow with an integer exponent More...
 
int expo_ten_inf (double nb)
 get log with base 10 More...
 
double sign (double a)
 sign function More...
 
char * get_time_machine ()
 returns the current time as a String More...
 
char * get_char_vec (int l_v)
 create (with memory allocation) a vector (length l_v) of char More...
 
char ** get_char_tab (int nb_r, int nb_c)
 create (with memory allocation) a [nb_r times nb_c] matrix of chars WARNING: only the first dimension (nb_r) is allocated, pointing to NULL ! More...
 
void free_char_vec (char *vec)
 release memory for a vector of char More...
 
char * get_char_cpy (const char *fmt,...)
 Copy the provided formatted string into a newly allocated memory. More...
 
int set_char_cpy (char **dest, const char *fmt,...)
 Set a copy the provided formatted string into a newly allocated memory. More...
 
int set_um_string (char **um_str, const char *new_txt)
 Redirect the memory of the string user model to a newly allocated char array. More...
 
void free_char_tab (char **mat)
 release memory for a matrix of chars More...
 
char * str_replace_char (char *orig, const char old_char, const char *new_str, int free_orig)
 Create a copy of a string with a specific char replaced by a string. More...
 
double *** get_d3Darray_1 (int x, int y, int z)
 create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 1 More...
 
double *** get_d3Darray_0 (int nb_r, int nb_c, int z)
 create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 0 More...
 
void free_d3Darray_0 (double ***array3D)
 release memory for a 3D array of doubles, starting at index 1 More...
 
void free_d3Darray_1 (double ***array3D)
 
void mbs_print_data (MbsData *mbs_data)
 
void mbs_copy_data (MbsData *s, MbsData *s_copy)
 Copy all fields between two MBSdata structures. More...
 
void mbs_reset_joints_kine (MbsData *s)
 Reset joints kinematics (q, qd, qdd) of a MbsData structure to initial values. More...
 
void mbs_reset_data (MbsData *s)
 Reset all fields of a MbsData structure to initial values. More...
 
int mbs_write_data (MbsData *mbs, char *filename, char *function_name)
 Write a source with a function allocating and setting a MbsData copy of the provided. More...
 
int mbs_compare_data (MbsData *s1, MbsData *s2, int accelred)
 Compare two MbsData. More...
 
int mbs_strcmp (const char *__s1, const char *__s2)
 Compare two char with strcmp. More...
 
int mbs_stricmp (const char *__s1, const char *__s2)
 Compare two char with _stricmp (convert strings to lower case, ignoring case sensitive). More...
 

Macro Definition Documentation

◆ DBL_MAX

#define DBL_MAX   1.7976931348623158e+308

◆ MAX

#define MAX (   a,
 
)    (((a)>(b))?(a):(b))

◆ MIN

#define MIN (   a,
 
)    (((a)<(b))?(a):(b))

Function Documentation

◆ expo_ten_inf()

int expo_ten_inf ( double  nb)

get log with base 10

Parameters
[in]nbnumber to compute the log
Returns
the exponent (base 10) -> log_10 (this is the inferior exponent)

◆ free_char_tab()

void free_char_tab ( char **  mat)

release memory for a matrix of chars

Parameters
[in]matmatrix of chars

◆ free_char_vec()

void free_char_vec ( char *  vec)

release memory for a vector of char

Parameters
[in]vecvector of chars

◆ free_d3Darray_0()

void free_d3Darray_0 ( double ***  array3D)

release memory for a 3D array of doubles, starting at index 1

release memory for a 3D array of doubles, starting at index 0

Parameters
[in,out]array3D3D array of doubles

release memory for a 3D array of doubles, starting at index 1

Parameters
[in,out]array3D3D array of doubles

◆ free_d3Darray_1()

void free_d3Darray_1 ( double ***  array3D)

◆ get_char_cpy()

char* get_char_cpy ( const char *  fmt,
  ... 
)

Copy the provided formatted string into a newly allocated memory.

The caller is responsible to release the memory.

Parameters
fmtThe string to be formated and stored. Providing NULL returns NULL.
Returns
A pointer to the memory storing the formatted string.

◆ get_char_tab()

char** get_char_tab ( int  nb_r,
int  nb_c 
)

create (with memory allocation) a [nb_r times nb_c] matrix of chars WARNING: only the first dimension (nb_r) is allocated, pointing to NULL !

Parameters
[in]nb_r= nb of rows
[in]nb_c= nb of columns
Returns
requested matrix of chars

◆ get_char_vec()

char* get_char_vec ( int  l_v)

create (with memory allocation) a vector (length l_v) of char

Parameters
[in]l_v= size of the vector
Returns
requested vector of char

◆ get_d3Darray_0()

double*** get_d3Darray_0 ( int  nb_r,
int  nb_c,
int  z 
)

create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 0

Parameters
[in]nb_rnb of first dimension
[in]nb_cnb of second dimension
[in]znb of third dimension
Returns
requested 3D array of doubles

◆ get_d3Darray_1()

double*** get_d3Darray_1 ( int  x,
int  y,
int  z 
)

create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 1

Parameters
[in]xnb of first dimension
[in]ynb of second dimension
[in]znb of third dimension
Returns
requested 3D array of doubles

◆ get_time_machine()

char* get_time_machine ( )

returns the current time as a String

source: http://en.wikipedia.org/wiki/C_date_and_time_functions

◆ mbs_compare_data()

int mbs_compare_data ( MbsData s1,
MbsData s2,
int  accelred 
)

Compare two MbsData.

The following fields are not compared:

Other fields may be ommited.

The user model parameters are not compared.

If using "accelred" activate the flag accelred (non-null value). Otherwhise deactivate it (null value). The field specifiec to accelered (MbsData::jac_user and MbsData::jdqd_user) are allocated with size MbsData::nqv at file loading. When not using "accelred" this value can be changed without reallocating the fields.

Parameters
[in]s1The first multibody system.
[in]s2The second multibody system
[in]accelredFlag to compare specified field for accelred usage (user jacobian and jdqd fields). Should be set to False by default.
Returns
0 if same system, -1 otherwhise

◆ mbs_copy_data()

void mbs_copy_data ( MbsData s,
MbsData s_copy 
)

Copy all fields between two MBSdata structures.

WARNING: This function is not updated daily with new functionnalities of MbsData. Use with care.

The function does not modify the followings:

  • user models
  • user IOs
  • multibody filename
  • build path
  • project path
  • project name
  • pointers to project functions
  • pointer to realtime structure
Parameters
[in]sPointer to the multibody source.
[out]s_copyPointer to the multibody output.
Returns

◆ mbs_free()

void* mbs_free ( void *  __ptr)

Free the pointor ptr and set it to NULL.

◆ mbs_log()

void mbs_log ( char *  msg,
  ... 
)

Function for logging messages in a file called "log" where the program is executed.

It is useful for debugging when the printf messages do not appear in the console (for instance in Simulink).

◆ mbs_print_data()

void mbs_print_data ( MbsData mbs_data)

◆ mbs_reset_data()

void mbs_reset_data ( MbsData s)

Reset all fields of a MbsData structure to initial values.

Parameters
[in,out]sthe MbsData structure to reset

◆ mbs_reset_joints_kine()

void mbs_reset_joints_kine ( MbsData s)

Reset joints kinematics (q, qd, qdd) of a MbsData structure to initial values.

Parameters
[in,out]sthe MbsData structure to reset

◆ mbs_strcmp()

int mbs_strcmp ( const char *  __s1,
const char *  __s2 
)

Compare two char with strcmp.

Parameters
[in]__s1The first char to compare.
[in]__s2The second char to compare.
Returns
Negative number in case of error, 0 otherwhise.

◆ mbs_stricmp()

int mbs_stricmp ( const char *  __s1,
const char *  __s2 
)

Compare two char with _stricmp (convert strings to lower case, ignoring case sensitive).

Parameters
[in]__s1The first char to compare.
[in]__s2The second char to compare.
Returns
Negative number in case of error, 0 otherwhise.

◆ mbs_write_data()

int mbs_write_data ( MbsData mbs,
char *  filename,
char *  function_name 
)

Write a source with a function allocating and setting a MbsData copy of the provided.

Parameters
[in]mbsThe MbsData structure to be set in the function.
[in]filenameThe name of the source file to be created.
[in]function_nameThe name of the function creating the new MbsData. NULL can be provided, in such a case the name will be "get_mbs_data".
Returns
Negative number in case of error, 0 otherwhise.

◆ pow_int()

double pow_int ( double  basis,
int  expo 
)

compute efficiently pow with an integer exponent

Parameters
[in]a= basis (double)
[in]b= exponent (integer)
Returns
a^b (same result as pow(a,b), except that b is a integer -> more efficient)

◆ set_char_cpy()

int set_char_cpy ( char **  dest,
const char *  fmt,
  ... 
)

Set a copy the provided formatted string into a newly allocated memory.

If the destination adress is not NULL, it is FREED to avoid memory leaks. Ensure to only provide dynamic allocated memory adress or NULL.

The caller is responsible to release the memory.

Parameters
[in,out]destDestination where the copy must be set.
[in]fmtThe string to be formated and stored. Providing NULL sets NULL.
Returns
MBS_INFO_SUCCESS or MBS_INFO_FAILURE

◆ set_um_string()

int set_um_string ( char **  um_str,
const char *  new_txt 
)

Redirect the memory of the string user model to a newly allocated char array.

The memory of the existing user model is freed.

A copy of the new string to set in the user model is created.

This function can be used to any pointer to char*, even if it has been created for string user model.

Parameters
um_strPointer to the pointer of the string to be replaced, cannot be NULL.
new_txtThe new text to be set in the newly allocated memory pointed by um_str.
Returns
Negative number in case of error, 0 otherwhise.

◆ sign()

double sign ( double  a)

sign function

Parameters
[in]ainput
Returns
1 if positive (or 0), -1 if negative

◆ str_replace_char()

char* str_replace_char ( char *  orig,
const char  old_char,
const char *  new_str,
int  free_orig 
)

Create a copy of a string with a specific char replaced by a string.

If the char is not present in the input string, a copy is returned.

Only 1-byte characters from UTF-8 can be replaced from the string (globally excludes accentuated letters).

Parameters
[in,out]origPointer to the original string.
[in]old_charCharacter (unique) to be replaced from the original string.
[in]new_strPointer to the characters to be inserted instead of the old_char. A NULL pointer removes the old_char.
[in]free_strFlag to free the original_str on replacement success. This allow to call the function as ‘txt = str_replace(txt, ’\t', " ", 1);` without memory leak.
Returns
A pointer to the modified string, or NULL in case of error.