pelib
2.0.0
|
00001 /* 00002 * array.h 00003 * 00004 * Created on: 5 Sep 2011 00005 * Copyright 2011 Nicolas Melot 00006 * 00007 * This file is part of pelib. 00008 * 00009 * pelib is free software: you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation, either version 3 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * pelib is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with pelib. If not, see <http://www.gnu.org/licenses/>. 00021 * 00022 */ 00023 00024 #include <pelib/template.h> 00025 #if PELIB_CONCAT_2(DONE_array_, ARRAY_T) == 0 00026 00027 #define array(elem) PELIB_CONCAT_2(array_, elem) 00028 #define array_t(elem) PELIB_CONCAT_2(array(elem), _t) 00029 00030 #define pelib_array_loadfilename(elem) PELIB_CONCAT_3(pelib_, array(elem), _loadfilename) 00031 #define pelib_array_loadfilenamebinary(elem) PELIB_CONCAT_3(pelib_, array(elem), _loadfilenamebinary) 00032 #define pelib_array_preloadfilenamebinary(elem) PELIB_CONCAT_3(pelib_, array(elem), _preloadfilenamebinary) 00033 #define pelib_array_loadfilenamewindowbinary(elem) PELIB_CONCAT_3(pelib_, array(elem), _loadfilenamewindowbinary) 00034 #define pelib_array_storefilename(elem) PELIB_CONCAT_3(pelib_, array(elem), _storefilename) 00035 #define pelib_array_storefilenamebinary(elem) PELIB_CONCAT_3(pelib_, array(elem), _storefilenamebinary) 00036 #define pelib_array_checkascending(elem) PELIB_CONCAT_3(pelib_, array(elem), _checkascending) 00037 #define pelib_array_read(elem) PELIB_CONCAT_3(pelib_, array(elem), _read) 00038 #define pelib_array_write(elem) PELIB_CONCAT_3(pelib_, array(elem), _write) 00039 #define pelib_array_append(elem) PELIB_CONCAT_3(pelib_, array(elem), _append) 00040 #define pelib_array_length(elem) PELIB_CONCAT_3(pelib_, array(elem), _length) 00041 #define pelib_array_capacity(elem) PELIB_CONCAT_3(pelib_, array(elem), _capacity) 00042 #define pelib_array_compare(elem) PELIB_CONCAT_3(pelib_, array(elem), _compare) 00043 00045 struct array(ARRAY_T) 00046 { 00047 size_t capacity; 00048 size_t length; 00049 ARRAY_T* data; 00050 }; 00051 typedef struct array(ARRAY_T) array_t(ARRAY_T); 00052 00053 #define STRUCT_T array_t(ARRAY_T) 00054 #include <pelib/structure.h> 00055 00057 array_t(ARRAY_T)* pelib_array_loadfilename(ARRAY_T)(char*); 00058 00060 array_t(ARRAY_T)* pelib_array_loadfilenamebinary(ARRAY_T)(char*); 00061 00063 array_t(ARRAY_T)* pelib_array_preloadfilenamebinary(ARRAY_T)(char*); 00064 00069 array_t(ARRAY_T)* pelib_array_loadfilenamewindowbinary(ARRAY_T)(char*, size_t from, size_t to); 00071 int 00072 pelib_array_storefilename(ARRAY_T)(array_t(ARRAY_T)*, char*); 00074 int 00075 pelib_array_storefilenamebinary(ARRAY_T)(array_t(ARRAY_T)*, char*); 00077 int 00078 pelib_array_checkascending(ARRAY_T)(array_t(ARRAY_T)*); 00080 ARRAY_T 00081 pelib_array_read(ARRAY_T)(array_t(ARRAY_T)*, size_t i); 00083 int 00084 pelib_array_write(ARRAY_T)(array_t(ARRAY_T)*, size_t i, ARRAY_T elem); 00088 int 00089 pelib_array_append(ARRAY_T)(array_t(ARRAY_T)*, ARRAY_T elem); 00091 size_t 00092 pelib_array_length(ARRAY_T)(array_t(ARRAY_T)*); 00094 size_t 00095 pelib_array_capacity(ARRAY_T)(array_t(ARRAY_T)*); 00099 int 00100 pelib_array_compare(ARRAY_T)(array_t(ARRAY_T)* a1, array_t(ARRAY_T)* a2); 00101 00102 #endif /* ARRAY_H_ */ 00103 00104 // Make sure the symbol does not propagate any further 00105 #undef ARRAY_T