1 /******************************************************************************
2 *
3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * ID: arr 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 ******************************************************************************/
15
16 #ifndef _ARR_
17 #define _ARR_
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif // __cplusplus
22
23 #include "buf.h"
24
25 //--------------------------------------------------------------------------
26
27 typedef struct
28 {
29 buf data;
30 uint isize; // The size of the item
31 ubyte isobj; // Each item is a memory block
32 } arr, * parr;
33
34 typedef struct
35 {
36 buf data;
37 uint itype; // The type of items
38 uint isize; // The size of the item
39 // uint ifor; // For foreach
40 uint dim[ MAX_MSR ]; // Dimensions
41 } garr, * pgarr;
42
43 pvoid STDCALL arr_append( parr pa );
44 uint STDCALL arr_appenditems( parr pa, uint count );
45 void STDCALL arr_appendnum( parr pa, uint val );
46 pvoid STDCALL arr_appendzero( parr pa );
47 void STDCALL arr_clear( parr pa );
48 uint STDCALL arr_count( parr pa );
49 uint STDCALL arr_getlast( parr pa );
50 uint STDCALL arr_getuint( parr pa, uint num );
51 void STDCALL arr_init( parr pa, uint size );
52 void STDCALL arr_delete( parr pa );
53 uint STDCALL arr_pop( parr pa );
54 pvoid STDCALL arr_ptr( parr pa, uint num );
55 void STDCALL arr_reserve( parr pa, uint count );
56 void STDCALL arr_setuint( parr pa, uint num, uint value );
57 void STDCALL arr_step( parr pa, uint count );
58 pvoid STDCALL arr_top( parr pa );
59
60 pgarr STDCALL garr_init( pgarr pga );
61 pgarr STDCALL garr_del( pgarr pga, uint from, uint number );
62 void STDCALL garr_delete( pgarr pga );
63 uint STDCALL garr_expand( pgarr pga, uint count );
64 uint STDCALL garr_insert( pgarr pga, uint from, uint number );
65 uint STDCALL garr_count( pgarr pga );
66 void STDCALL garr_oftype( pgarr pga, uint itype );
67 void STDCALL garr_array( pgarr pga, uint first );
68 void STDCALL garr_array2( pgarr pga, uint first, uint second );
69 void STDCALL garr_array3( pgarr pga, uint first, uint second, uint third );
70 pubyte STDCALL garr_index( pgarr pga, uint first );
71 pubyte STDCALL garr_index2( pgarr pga, uint first, uint second );
72 pubyte STDCALL garr_index3( pgarr pga, uint first, uint second, uint third );
73
74
75
76 //--------------------------------------------------------------------------
77
78 #ifdef __cplusplus
79 }
80 #endif // __cplusplus
81
82 #endif // _ARR_
83
84