/simpletypesystem/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/simpletypesystem/trunk

« back to all changes in this revision

Viewing changes to src/DynamicArray.h

  • Committer: Gustav Hartvigsson
  • Date: 2015-04-10 15:24:35 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20150410152435-uumooulvwmn02rxb
* Renamed DynamicArray to SDynamicArray.
* Renamed dynamic_array_*() functions to s_dynamic_array_*()
* Fixed indentation problem in Error.h and defs.h
* Removed dependency on stdbool.h
* Added sboolean
* Addad sconstpointer
* Reverted SMap back no not depending on SObject.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
BEGIN_DECLS
30
30
 
31
31
/** @file
32
 
 * Dynamic Array.
 
32
 * @defgroup SDynamicArray SDynamicArray
 
33
 * @addtogroup SDynamicArray SDynamicArray
 
34
 * @{
33
35
 *
34
 
 * This file contains an imlpementation of a "dynamic" array, it is usefule when
 
36
 * SDynamicArray is an imlpementation of a dynamic array, it is usefule when
35
37
 * dealing with lare amounts of data that may change over time, or with an
36
38
 * unknowned numebr of items.
37
39
 * 
47
49
#define ARRAY_PADDING 8
48
50
 
49
51
/**
50
 
 * an opaque data structure that represents the dynamic array.
 
52
 * An SDynamicArray is the standard implementation of a Dynamic Array in SSTS.
 
53
 *
 
54
 * It does not depend an SObject, because it should be albe to be used in,
 
55
 * SObject and SObject based classes.
51
56
 */
52
 
typedef struct DynamicArray DynamicArray;
 
57
typedef struct SDynamicArray SDynamicArray;
 
58
 
 
59
typedef struct SDynamicArrayPrivate SDynamicArrayPrivate;
 
60
 
 
61
struct SDynamicArray {
 
62
  SDynamicArrayPrivate * priv;
 
63
  size_t max_size;
 
64
  size_t len;
 
65
};
53
66
 
54
67
/**
55
68
 * Create a new dynamic array.
62
75
 *        Normally a function with the signature <tt> (DynamicArray * self,
63
76
          spointer item, spointer data) </tt> should be used but cast to FreeFunc.
64
77
 */
65
 
DynamicArray * dynamic_array_new (size_t len, FreeFunc free_func);
 
78
SDynamicArray * s_dynamic_array_new (size_t len, FreeFunc free_func);
66
79
 
67
80
/**
68
81
 * Frees the dynamic array.
69
82
 * 
70
83
 * after this is run the data will be lost.
71
84
 */
72
 
void dynamic_array_free (DynamicArray * self);
 
85
void s_dynamic_array_free (SDynamicArray * self);
73
86
 
74
87
 
75
88
/**
76
89
 * Get an item from the array.
77
90
 */
78
 
spointer dynamic_array_get (DynamicArray * self, size_t index);
 
91
spointer s_dynamic_array_get (SDynamicArray * self, size_t index);
79
92
 
80
93
/**
81
94
 * Get the length of the array.
82
95
 */
83
 
size_t dynamic_array_len (DynamicArray * self);
 
96
size_t s_dynamic_array_len (SDynamicArray * self);
84
97
 
85
98
 
86
99
/**
88
101
 * The size is the number of elements that can be allocated without resizing
89
102
 * the array.
90
103
 * 
91
 
 * To get the length of the array use dynamic_array_len ().
 
104
 * To get the length of the array use s_dynamic_array_len ().
92
105
 */
93
 
size_t dynamic_array_size (DynamicArray * self);
 
106
size_t s_dynamic_array_size (SDynamicArray * self);
94
107
 
95
108
 
96
109
/**
97
110
 * Add an item to the array.
98
111
 */
99
 
void dynamic_array_add (DynamicArray * self, spointer item);
 
112
void s_dynamic_array_add (SDynamicArray * self, spointer item);
100
113
 
101
114
/**
102
115
 * Dumps a copy of the array. Must be cast.
105
118
 * 
106
119
 * Is null-terminated.
107
120
 */
108
 
spointer* dynamic_array_dump_array (DynamicArray * self);
 
121
spointer* s_dynamic_array_dump_array (SDynamicArray * self);
109
122
 
110
123
/**
111
124
 * Use a function on the array.
112
125
 */
113
 
void dynamic_array_for_each (DynamicArray * self, ForEachFunc func,
 
126
void s_dynamic_array_for_each (SDynamicArray * self, ForEachFunc func,
114
127
                             spointer data);
115
128
 
116
129
/** TODO
117
 
 * same as dynamic_array_for_each (), with the difference that it returns a new
118
 
 * DynamicArray.
 
130
 * same as s_dynamic_array_for_each (), with the difference that it returns a new
 
131
 * SDynamicArray.
119
132
 */
120
 
DynamicArray * dynamic_array_for_each_with_return (DynamicArray * self,
 
133
SDynamicArray * s_dynamic_array_for_each_with_return (SDynamicArray * self,
121
134
                                                   ForEachFunc func,
122
135
                                                   spointer data);
123
136
 
 
137
/** @} */
 
138
 
124
139
END_DECLS
125
140
 
126
141
#endif /* #define __H_DYNAMIC_ARRAY__ */