Skip to content

Commit 80b36f6

Browse files
committed
Daha önce bir takım sebeplerle dokunulmamış eksiklikler giderildi.
1 parent 6da63a7 commit 80b36f6

File tree

14 files changed

+184
-192
lines changed

14 files changed

+184
-192
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@
1010
/Projects/Eclipse/dsSimulation/Debug
1111
/Projects/DevCpp/dsTest/obj
1212
/Projects/DevCpp/dsSimulation/obj
13+
/Test/test
14+
/Test/simulation

DS/eaDSCircularBuffer.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ eaDSCircularBuffer eaDSCircularBufferInit(size_t sizeOfData, void * (*dataCreate
2323

2424
eaDSCircularBuffer eaDSCircularBufferInitWithDetails(size_t sizeOfData, void * (*dataCreate)(size_t), void * (*dataCopy)(void *, const void *, size_t), int (*dataCompare)(const void *, const void *, size_t), void (*dataClear)(void *), size_t capacity)
2525
{
26-
eaDSCircularBuffer circularBuffer;
27-
28-
circularBuffer = (eaDSCircularBuffer) calloc(1, sizeof(struct _eaDSCircularBuffer));
26+
eaDSCircularBuffer circularBuffer = (eaDSCircularBuffer) calloc(1, sizeof(struct _eaDSCircularBuffer));
2927

3028
if (NULL == circularBuffer)
3129
{
@@ -170,7 +168,7 @@ int eaDSCircularBufferGet(eaDSCircularBuffer circularBuffer, void * data, size_t
170168
return EXIT_SUCCESS;
171169
}
172170

173-
int eaDSCircularBufferGetWhereIsIt(eaDSCircularBuffer circularBuffer, const void * data, size_t numberOfData, size_t * len)
171+
int eaDSCircularBufferGetWhereIsIt(const eaDSCircularBuffer circularBuffer, const void * data, size_t numberOfData, size_t * len)
174172
{
175173
size_t i;
176174

DS/eaDSDynamicArray.c

Lines changed: 73 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ eaDSDynamicArray eaDSDynamicArrayInit(void * (*dataCreateAndCopy)(const void *),
3232

3333
eaDSDynamicArray eaDSDynamicArrayInitWithDetails(void * (*dataCreateAndCopy)(const void *), int (*dataCompare)(const void *, const void *), void (*dataClear)(void *), unsigned short expFactor, unsigned short startingCapacity)
3434
{
35-
eaDSDynamicArray dynamicArray = NULL;
36-
37-
dynamicArray = (eaDSDynamicArray) malloc(sizeof(struct _eaDSDynamicArray));
35+
eaDSDynamicArray dynamicArray = (eaDSDynamicArray) malloc(sizeof(struct _eaDSDynamicArray));
3836

3937
if (NULL == dynamicArray)
4038
{
@@ -56,9 +54,9 @@ eaDSDynamicArray eaDSDynamicArrayInitWithDetails(void * (*dataCreateAndCopy)(con
5654
dynamicArray->Count = 0;
5755
dynamicArray->Capacity = dynamicArray->StartingCapacity;
5856
dynamicArray->ExpFactor = (expFactor < 2) ? DEFAULT_EXP_FACTOR : expFactor;
59-
dynamicArray->dataCreateAndCopy = (dataCreateAndCopy == NULL) ? copyAddress : dataCreateAndCopy;
60-
dynamicArray->dataCompare = (dataCompare == NULL) ? compareAddress : dataCompare;
61-
dynamicArray->dataClear = (dataClear == NULL) ? free : dataClear;
57+
dynamicArray->dataCreateAndCopy = (NULL == dataCreateAndCopy) ? copyAddress : dataCreateAndCopy;
58+
dynamicArray->dataCompare = (NULL == dataCompare) ? compareAddress : dataCompare;
59+
dynamicArray->dataClear = (NULL == dataClear) ? free : dataClear;
6260
}
6361
}
6462

@@ -122,9 +120,7 @@ void eaDSDynamicArrayClear(eaDSDynamicArray dynamicArray)
122120
void eaDSDynamicArraySort(eaDSDynamicArray dynamicArray)
123121
{
124122
void * buf;
125-
size_t i, j, N;
126-
127-
N = dynamicArray->Count;
123+
size_t i, j, N = dynamicArray->Count;
128124

129125
for(i = 1; i < N; i++)
130126
{
@@ -149,9 +145,9 @@ size_t eaDSDynamicArrayGetCapacity(const eaDSDynamicArray dynamicArray)
149145

150146
int eaDSDynamicArrayAdd(eaDSDynamicArray dynamicArray, const void * data)
151147
{
152-
void * item;
148+
void * item = dynamicArray->dataCreateAndCopy(data);
153149

154-
if (NULL == (item = dynamicArray->dataCreateAndCopy(data)))
150+
if (NULL == item)
155151
{
156152
perror(NULL);
157153

@@ -160,11 +156,10 @@ int eaDSDynamicArrayAdd(eaDSDynamicArray dynamicArray, const void * data)
160156

161157
if (dynamicArray->Count == dynamicArray->Capacity)
162158
{
163-
size_t i;
164159
void ** tmp;
165160

166161
dynamicArray->Capacity *= dynamicArray->ExpFactor;
167-
tmp = (void **) malloc(dynamicArray->Capacity * sizeof(void *));
162+
tmp = (void **) realloc(dynamicArray->Data, dynamicArray->Capacity * sizeof(void *));
168163

169164
if (NULL == tmp)
170165
{
@@ -174,12 +169,6 @@ int eaDSDynamicArrayAdd(eaDSDynamicArray dynamicArray, const void * data)
174169
return EXIT_FAILURE;
175170
}
176171

177-
for (i = 0; i < dynamicArray->Count; i++)
178-
{
179-
tmp[i] = dynamicArray->Data[i];
180-
}
181-
182-
free(dynamicArray->Data);
183172
dynamicArray->Data = tmp;
184173
}
185174

@@ -189,11 +178,9 @@ int eaDSDynamicArrayAdd(eaDSDynamicArray dynamicArray, const void * data)
189178
return EXIT_SUCCESS;
190179
}
191180

192-
int eaDSDynamicArrayInsert(eaDSDynamicArray dynamicArray, const void * data, const size_t index)
181+
int eaDSDynamicArrayInsert(eaDSDynamicArray dynamicArray, const void * data, size_t index)
193182
{
194-
size_t j, cnt;
195-
196-
cnt = dynamicArray->Count;
183+
size_t j, cnt = dynamicArray->Count;
197184

198185
if(index <= cnt)
199186
{
@@ -211,7 +198,7 @@ int eaDSDynamicArrayInsert(eaDSDynamicArray dynamicArray, const void * data, con
211198
void ** tmp;
212199

213200
dynamicArray->Capacity *= dynamicArray->ExpFactor;
214-
tmp = (void **) malloc(dynamicArray->Capacity * sizeof(void *));
201+
tmp = (void **) realloc(dynamicArray->Data, dynamicArray->Capacity * sizeof(void *));
215202

216203
if(NULL == tmp)
217204
{
@@ -221,12 +208,6 @@ int eaDSDynamicArrayInsert(eaDSDynamicArray dynamicArray, const void * data, con
221208
return EXIT_FAILURE;
222209
}
223210

224-
for (j = 0; j < dynamicArray->Count; j++)
225-
{
226-
tmp[j] = dynamicArray->Data[j];
227-
}
228-
229-
free(dynamicArray->Data);
230211
dynamicArray->Data = tmp;
231212
}
232213

@@ -254,14 +235,30 @@ int eaDSDynamicArrayInsert(eaDSDynamicArray dynamicArray, const void * data, con
254235

255236
void eaDSDynamicArrayRemove(eaDSDynamicArray dynamicArray, const void * data)
256237
{
257-
size_t i, cnt;
258-
259-
cnt = dynamicArray->Count;
238+
size_t i, cnt = dynamicArray->Count;
260239

261240
for (i = 0; i < cnt; i++)
262241
{
263242
if (!dynamicArray->dataCompare(data, dynamicArray->Data[i]))
264243
{
244+
if ((DEFAULT_STARTING_CAPACITY < dynamicArray->Capacity) && (dynamicArray->Count < dynamicArray->Capacity / dynamicArray->ExpFactor))
245+
{
246+
void ** tmp;
247+
248+
dynamicArray->Capacity /= dynamicArray->ExpFactor;
249+
tmp = (void **) realloc(dynamicArray->Data, dynamicArray->Capacity * sizeof(void *));
250+
251+
if (NULL != tmp)
252+
{
253+
dynamicArray->Data = tmp;
254+
}
255+
else
256+
{
257+
dynamicArray->Capacity *= dynamicArray->ExpFactor;
258+
}
259+
260+
}
261+
265262
dynamicArray->Count--;
266263
dynamicArray->dataClear(dynamicArray->Data[i]);
267264

@@ -277,14 +274,29 @@ void eaDSDynamicArrayRemove(eaDSDynamicArray dynamicArray, const void * data)
277274

278275
void eaDSDynamicArrayRemoveAll(eaDSDynamicArray dynamicArray, const void * data)
279276
{
280-
size_t i, cnt;
281-
282-
cnt = dynamicArray->Count;
277+
size_t i, cnt = dynamicArray->Count;
283278

284279
for (i = 0; i < cnt; i++)
285280
{
286281
if (!dynamicArray->dataCompare(data, dynamicArray->Data[i]))
287282
{
283+
if ((DEFAULT_STARTING_CAPACITY < dynamicArray->Capacity) && (dynamicArray->Count < dynamicArray->Capacity / dynamicArray->ExpFactor))
284+
{
285+
void ** tmp;
286+
287+
dynamicArray->Capacity /= dynamicArray->ExpFactor;
288+
tmp = (void **) realloc(dynamicArray->Data, dynamicArray->Capacity * sizeof(void *));
289+
290+
if (NULL != tmp)
291+
{
292+
dynamicArray->Data = tmp;
293+
}
294+
else
295+
{
296+
dynamicArray->Capacity *= dynamicArray->ExpFactor;
297+
}
298+
}
299+
288300
dynamicArray->Count--;
289301
dynamicArray->dataClear(dynamicArray->Data[i]);
290302

@@ -299,14 +311,13 @@ void eaDSDynamicArrayRemoveAll(eaDSDynamicArray dynamicArray, const void * data)
299311
}
300312
}
301313

302-
void eaDSDynamicArrayRemoveAt(eaDSDynamicArray dynamicArray, const size_t index)
314+
void eaDSDynamicArrayRemoveAt(eaDSDynamicArray dynamicArray, size_t index)
303315
{
304-
size_t j, cnt;
305-
306-
cnt = dynamicArray->Count;
316+
size_t j, cnt = dynamicArray->Count;
307317

308318
if(cnt && (index < cnt))
309319
{
320+
310321
dynamicArray->dataClear(dynamicArray->Data[index]);
311322

312323
for (j = index; j < cnt - 1; j++)
@@ -318,14 +329,29 @@ void eaDSDynamicArrayRemoveAt(eaDSDynamicArray dynamicArray, const size_t index)
318329
}
319330
}
320331

321-
void eaDSDynamicArrayRemoveAtCopyLastItem(eaDSDynamicArray dynamicArray, const size_t index)
332+
void eaDSDynamicArrayRemoveAtCopyLastItem(eaDSDynamicArray dynamicArray, size_t index)
322333
{
323-
size_t cnt;
324-
325-
cnt = dynamicArray->Count;
334+
size_t cnt = dynamicArray->Count;
326335

327336
if(cnt && (index < cnt))
328337
{
338+
if ((DEFAULT_STARTING_CAPACITY < dynamicArray->Capacity) && (dynamicArray->Count < dynamicArray->Capacity / dynamicArray->ExpFactor))
339+
{
340+
void ** tmp;
341+
342+
dynamicArray->Capacity /= dynamicArray->ExpFactor;
343+
tmp = (void **) realloc(dynamicArray->Data, dynamicArray->Capacity * sizeof(void *));
344+
345+
if (NULL != tmp)
346+
{
347+
dynamicArray->Data = tmp;
348+
}
349+
else
350+
{
351+
dynamicArray->Capacity *= dynamicArray->ExpFactor;
352+
}
353+
}
354+
329355
dynamicArray->dataClear(dynamicArray->Data[index]);
330356

331357
if (cnt - 1)
@@ -337,11 +363,9 @@ void eaDSDynamicArrayRemoveAtCopyLastItem(eaDSDynamicArray dynamicArray, const s
337363
}
338364
}
339365

340-
void * eaDSDynamicArrayGetFrom(const eaDSDynamicArray dynamicArray, const size_t index)
366+
void * eaDSDynamicArrayGetFrom(const eaDSDynamicArray dynamicArray, size_t index)
341367
{
342-
void * data;
343-
344-
data = NULL;
368+
void * data = NULL;
345369

346370
if(index < dynamicArray->Count)
347371
{
@@ -354,7 +378,7 @@ void * eaDSDynamicArrayGetFrom(const eaDSDynamicArray dynamicArray, const size_t
354378
return data;
355379
}
356380

357-
void * eaDSDynamicArrayGetAddressFrom(const eaDSDynamicArray dynamicArray, const size_t index)
381+
void * eaDSDynamicArrayGetAddressFrom(const eaDSDynamicArray dynamicArray, size_t index)
358382
{
359383
if(index < dynamicArray->Count)
360384
{

0 commit comments

Comments
 (0)