FMI Library: part of JModelica.org
Macros | Functions | Variables
jm_vector.h File Reference
#include <assert.h>
#include <string.h>
#include "jm_callbacks.h"

Go to the source code of this file.

Macros

#define jm_mangle_ex(name, type)   name## _ ##type
 jm_mange macro is used to construct names for the template instances Extra level (jm_mange_ex) is needed to force argument expansion (pre-scan) More...
 
#define jm_mangle(name, type)   jm_mangle_ex(name,type)
 
#define jm_vector(T)   jm_mangle(jm_vector, T)
 jm_vector(T) is the type name (i.e., to be used as jm_vector(int) vi;) More...
 
#define JM_VECTOR_MINIMAL_CAPACITY   16
 
#define JM_VECTOR_MAX_MEMORY_CHUNK   1024
 
#define jm_vector_declare_template(T)
 
#define jm_diff_name(a, b)   strcmp(a.name,b.name)
 

Functions

 jm_vector_declare_template (char) static jm_string jm_vector_char2string(jm_vector(char)*v)
 
 jm_vector_declare_template (int) jm_vector_declare_template(double) jm_vector_declare_template(jm_voidp) jm_vector_declare_template(size_t) jm_vector_declare_template(jm_string) jm_vector_declare_template(jm_name_ID_map_t) jm_define_comp_f(jm_compare_voidp
 
int jm_diff jm_define_comp_f (jm_compare_int, int, jm_diff) jm_define_comp_f(jm_compare_char
 
int jm_diff jm_diff jm_define_comp_f (jm_compare_double, double, jm_diff) jm_define_comp_f(jm_compare_size_t
 
int jm_diff jm_diff jm_diff jm_define_comp_f (jm_compare_string, jm_string, strcmp) jm_define_comp_f(jm_compare_name
 

Variables

int jm_diff char
 
int jm_diff jm_diff size_t
 
int jm_diff jm_diff jm_diff jm_name_ID_map_t
 
int jm_diff jm_diff jm_diff jm_diff_name
 

Vector handling functions.

Allocates a vector on heap with the specified size and specified number of preallocated items (can be larger than size).

extern jm_vector(T)* jm_vector_alloc(T)(size_t size, size_t capacity, jm_callbacks*c ); Note that there is no need to call jm_vector_init for a vector allocated with this function.

Parameters
size- initial size of the vector, can be 0
capacity- initial capacity of the vector, can be 0. At least initSize elements are allocated.
c- jm_callbacks callbacks, can be zero
Returns
Newly allocated vector
#define jm_vector_alloc(T)   jm_mangle(jm_vector_alloc, T)
 
#define jm_vector_free(T)   jm_mangle(jm_vector_free, T)
 
#define jm_vector_init(T)   jm_mangle(jm_vector_init, T)
 jm_vector_init initializes a vector allocated on stack. More...
 
#define jm_vector_free_data(T)   jm_mangle(jm_vector_free_data, T)
 
#define jm_vector_get_size(T)   jm_mangle(jm_vector_get_size, T)
 
#define jm_vector_get_item(T)   jm_mangle(jm_vector_get_item, T)
 
#define jm_vector_get_itemp(T)   jm_mangle(jm_vector_get_itemp, T)
 
#define jm_vector_get_last(T)   jm_mangle(jm_vector_get_last, T)
 
#define jm_vector_get_lastp(T)   jm_mangle(jm_vector_get_lastp, T)
 
#define jm_define_comp_f(F, T, COMPAR_OP)
 A conveniece macro for comparison function definition. More...
 
#define jm_diff(first, second)   (int)(first-second)
 
#define jm_vector_find(T)   jm_mangle(jm_vector_find, T)
 jm_vector_find functions use linear search to find items in a vector. JM_COMPAR_OP is used for comparison. More...
 
#define jm_vector_find_index(T)   jm_mangle(jm_vector_find_index, T)
 
#define jm_vector_qsort(T)   jm_mangle(jm_vector_qsort, T)
 
#define jm_vector_bsearch(T)   jm_mangle(jm_vector_bsearch, T)
 
#define jm_vector_bsearch_index(T)   jm_mangle(jm_vector_bsearch_index, T)
 
#define jm_vector_set_item(T)   jm_mangle(jm_vector_set_item, T)
 
#define jm_vector_zero(T)   jm_mangle(jm_vector_zero, T)
 
#define jm_vector_resize(T)   jm_mangle(jm_vector_resize, T)
 
#define jm_vector_reserve(T)   jm_mangle(jm_vector_reserve, T)
 
#define jm_vector_copy(T)   jm_mangle(jm_vector_copy, T)
 
#define jm_vector_clone(T)   jm_mangle(jm_vector_clone, T)
 
#define jm_vector_append(T)   jm_mangle(jm_vector_append, T)
 
#define jm_vector_insert(T)   jm_mangle(jm_vector_insert, T)
 
#define jm_vector_remove_item(T)   jm_mangle(jm_vector_remove_item, T)
 
#define jm_vector_resize1(T)   jm_mangle(jm_vector_resize1, T)
 
#define jm_vector_push_back(T)   jm_mangle(jm_vector_push_back, T)
 
#define jm_vector_foreach(T)   jm_mangle(jm_vector_foreach, T)
 
#define jm_vector_foreach_c(T)   jm_mangle(jm_vector_foreach_c, T)
 
typedef int(* jm_compare_ft) (const void *, const void *)
 Function type for item comparison. Can be generated with jm_define_comp_f. More...
 

Detailed Description

Definition of jm_vector and supporting functions

Definition in file jm_vector.h.

Macro Definition Documentation

#define jm_diff_name (   a,
 
)    strcmp(a.name,b.name)