00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _GDSL_2DARRAY_H_
00026 #define _GDSL_2DARRAY_H_
00027
00028
00029 #include <stdio.h>
00030
00031
00032 #include "gdsl_types.h"
00033
00034
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039
00040
00052 typedef struct gdsl_2darray* gdsl_2darray_t;
00053
00057 typedef enum
00058 {
00060 GDSL_2DARRAY_POSITION_FIRST_ROW = 1,
00061
00063 GDSL_2DARRAY_POSITION_LAST_ROW = 2,
00064
00066 GDSL_2DARRAY_POSITION_FIRST_COL = 4,
00067
00069 GDSL_2DARRAY_POSITION_LAST_COL = 8
00070
00071 } gdsl_2darray_position_t;
00072
00081 typedef void (* gdsl_2darray_write_func_t)
00082 (gdsl_element_t E,
00083 const FILE* OUTPUT_FILE,
00084 gdsl_2darray_position_t POSITION,
00085 void* USER_DATA
00086 );
00087
00088
00089
00090
00091
00116 extern gdsl_2darray_t
00117 gdsl_2darray_alloc (const char* NAME,
00118 const ulong R,
00119 const ulong C,
00120 const gdsl_alloc_func_t ALLOC_F,
00121 const gdsl_free_func_t FREE_F
00122 );
00123
00139 extern void
00140 gdsl_2darray_free (gdsl_2darray_t A
00141 );
00142
00143
00144
00145
00146
00156 extern const char*
00157 gdsl_2darray_get_name (const gdsl_2darray_t A
00158 );
00159
00169 extern ulong
00170 gdsl_2darray_get_rows_number (const gdsl_2darray_t A
00171 );
00172
00182 extern ulong
00183 gdsl_2darray_get_columns_number (const gdsl_2darray_t A
00184 );
00185
00195 extern ulong
00196 gdsl_2darray_get_size (const gdsl_2darray_t A
00197 );
00198
00211 extern gdsl_element_t
00212 gdsl_2darray_get_content (const gdsl_2darray_t A,
00213 const ulong R,
00214 const ulong C
00215 );
00216
00217
00218
00219
00220
00234 extern gdsl_2darray_t
00235 gdsl_2darray_set_name (gdsl_2darray_t A,
00236 const char* NEW_NAME
00237 );
00238
00260 extern gdsl_element_t
00261 gdsl_2darray_set_content (gdsl_2darray_t A,
00262 const ulong R,
00263 const ulong C,
00264 void* VALUE
00265 );
00266
00267
00268
00269
00270
00287 extern void
00288 gdsl_2darray_write (const gdsl_2darray_t A,
00289 const gdsl_2darray_write_func_t WRITE_F,
00290 FILE* OUTPUT_FILE,
00291 void* USER_DATA
00292 );
00293
00311 extern void
00312 gdsl_2darray_write_xml (const gdsl_2darray_t A,
00313 const gdsl_write_func_t WRITE_F,
00314 FILE* OUTPUT_FILE,
00315 void* USER_DATA
00316 );
00317
00335 extern void
00336 gdsl_2darray_dump (const gdsl_2darray_t A,
00337 const gdsl_write_func_t WRITE_F,
00338 FILE* OUTPUT_FILE,
00339 void* USER_DATA
00340 );
00341
00342
00343
00344
00345
00346
00347 #ifdef __cplusplus
00348 }
00349 #endif
00350
00351
00352 #endif
00353