135 lines
3.7 KiB
C
135 lines
3.7 KiB
C
|
/*
|
||
|
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
|