1 /****************************************************************
\r
2 * Process Wrapper Help functions
\r
3 * Creator: lschor, 2008-11-21
\r
4 * Description: General process wrapper fucntions
\r
7 * - 2008-11-21: Created
\r
10 #ifndef __PROCESS_WRAPPER_HELP_H__
\r
11 #define __PROCESS_WRAPPER_HELP_H__
\r
13 #include <stdarg.h> // Used for va_list
\r
16 * Gets an index of a string, where the index must be separated by
\r
17 * a character specified in tokens.
\r
18 * Returns -1, when an error occurs.
\r
21 * getIndex("name_1_2", "_", 0) will return 1.
\r
22 * getIndex("name_1_2", "_", 1) will return 2.
\r
24 * @param string string to parse
\r
25 * @param tokens delimiter of indices
\r
26 * @param indexNumber position of index (starting at 0)
\r
28 int getIndex(const char* string, char* tokens, int indexNumber) {
\r
30 char* token_pointer;
\r
33 string_copy = (char*) malloc(sizeof(char) * (strlen(string) + 1));
\r
35 fprintf(stderr, "getIndex(): could not allocate memory.\n");
\r
39 strcpy(string_copy, string);
\r
41 token_pointer = strtok(string_copy, tokens);
\r
43 token_pointer = strtok(NULL, tokens);
\r
45 } while (index <= indexNumber && token_pointer != 0);
\r
47 if (token_pointer) {
\r
48 index = atoi(token_pointer);
\r
58 * Create the port name of an iterated port based on its basename and the
\r
61 * @param port buffer where the result is stored (created using
\r
63 * @param base basename of the port
\r
64 * @param number_of_indices number of dimensions of the port
\r
65 * @param index_range_pairs index and range values for each dimension
\r
67 int *createPort(int *port, int base, int number_of_indices,
\r
68 int index_range_pairs, ...) {
\r
75 va_start(marker, index_range_pairs);
\r
77 value = index_range_pairs;
\r
78 for (i = 0; i < number_of_indices; i++) {
\r
80 value = va_arg(marker, int);
\r
82 if (i < number_of_indices - 1) {
\r
83 value = va_arg(marker, int);
\r
88 for (i = 0; i < number_of_indices; i++) {
\r
91 for (j = 1; j < number_of_indices - i; j ++) {
\r
94 *port += index[i] * weight;
\r