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