Ian Jauslin
summaryrefslogtreecommitdiff
blob: fb74e6774b11669277eddb2f4b7b7a21a0f48801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
Copyright 2015 Ian Jauslin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* Array structures */

#ifndef ARRAY_H
#define ARRAY_H

#include "types.h"

// init
int init_Int_Array(Int_Array* array, int memory);
int free_Int_Array(Int_Array array);

// copy
int int_array_cpy(Int_Array input, Int_Array* output);
int int_array_cpy_noinit(Int_Array input, Int_Array* output);

// resize memory
int int_array_resize(Int_Array* array, int newsize);

// add a value
int int_array_append(int val, Int_Array* output);
// concatenate
int int_array_concat(Int_Array input, Int_Array* output);

// find (does not assume the array is sorted)
int int_array_find(int val, Int_Array array);
int int_array_find_err(int val, Int_Array array);

// sort
int int_array_sort(Int_Array array, int begin, int end);

// compare Int_Array's
int int_array_cmp(Int_Array array1, Int_Array array2);

// check whether an array is a sub-array of another
int int_array_is_subarray_ordered(Int_Array input, Int_Array test_array);

// print array
int int_array_print(Int_Array array);
// read array
int int_array_read(Char_Array str, Int_Array* array);


// Char_Array

// init
int init_Char_Array(Char_Array* array, int memory);
int free_Char_Array(Char_Array array);

// copy
int char_array_cpy(Char_Array input, Char_Array* output);
int char_array_cpy_noinit(Char_Array input, Char_Array* output);

// resize memory
int char_array_resize(Char_Array* array, int newsize);

// add a value
int char_array_append(char val, Char_Array* output);
int char_array_append_str(char* str, Char_Array* output);
// concatenate
int char_array_concat(Char_Array input, Char_Array* output);

// convert to char*
int char_array_to_str(Char_Array input, char** output);
// noinit (changes the size of input if needed)
char* char_array_to_str_noinit(Char_Array* input);
// convert from char*
int str_to_char_array(char* str, Char_Array* output);

// format strings
int char_array_snprintf(Char_Array* output, char* fmt, ...);

// replace '*' with given character
int replace_star(char c, Char_Array str, Char_Array* out);


// Str_Array

// init
int init_Str_Array(Str_Array* array, int memory);
int free_Str_Array(Str_Array array);

// copy
int str_array_cpy(Str_Array input, Str_Array* output);
int str_array_cpy_noinit(Str_Array input, Str_Array* output);

// resize memory
int str_array_resize(Str_Array* array, int newsize);

// add a value
int str_array_append(Char_Array val, Str_Array* output);
int str_array_append_noinit(Char_Array val, Str_Array* output);
// concatenate
int str_array_concat(Str_Array input, Str_Array* output);
int str_array_concat_noinit(Str_Array input, Str_Array* output);


// Labels

// allocate memory
int init_Labels(Labels* labels,int size);
// free memory
int free_Labels(Labels labels);

// resize the memory allocated to a labels table
int resize_labels(Labels* labels,int new_size);

// copy a labels table
int labels_cpy(Labels input, Labels* output);
int labels_cpy_noinit(Labels input, Labels* output);

// append an element to a labels table
int labels_append(Char_Array label, int index, Labels* output);
int labels_append_noinit(Char_Array label, int index, Labels* output);

// concatenate two labels tables
int labels_concat(Labels input, Labels* output);

#endif