Skip to content

Commit f9e5e50

Browse files
committed
Refactor the ArrayQueue, rename [Push] to [Enqueue] and [Pop] to [Dequeue].
1 parent 0907ef0 commit f9e5e50

File tree

7 files changed

+58
-55
lines changed

7 files changed

+58
-55
lines changed

ChangeLog.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
## Developing
1+
## v0.7.0
2+
3+
_`2021.8.18 UTC+8 10:42`_
24

35
* Fix case spelling error in `ArrayList.c`.
46
* Update the `Vibrator` API of Android.
57
* Add the `Smooth` function and Set the `Smooth` as the default ease.
68
* Optimize the `Tween` implementation by remove the `queueAction`.
9+
* Refactor the `ArrayQueue`, rename `Push` to `Enqueue` and `Pop` to `Dequeue`. **(Break Compatibility)**
710

811

912
## v0.6.4

Engine/Graphics/OpenGL/Mesh.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,14 +268,14 @@ static void Render(Drawable* drawable)
268268
fromChild = AArrayList_Get
269269
(
270270
mesh->childList,
271-
AArrayQueue_PopWithDefault(mesh->drawRangeQueue, int, mesh->fromIndex),
271+
AArrayQueue_DequeueWithDefault(mesh->drawRangeQueue, int, mesh->fromIndex),
272272
SubMesh*
273273
);
274274

275275
toChild = AArrayList_Get
276276
(
277277
mesh->childList,
278-
AArrayQueue_PopWithDefault(mesh->drawRangeQueue, int, mesh->toIndex),
278+
AArrayQueue_DequeueWithDefault(mesh->drawRangeQueue, int, mesh->toIndex),
279279
SubMesh*
280280
);
281281
}

Engine/Graphics/OpenGL/Mesh.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ static inline void AMesh_Draw(Mesh* mesh)
272272
*/
273273
static inline void AMesh_DrawByIndex(Mesh* mesh, int fromIndex, int toIndex)
274274
{
275-
AArrayQueue_Push(mesh->drawRangeQueue, fromIndex);
276-
AArrayQueue_Push(mesh->drawRangeQueue, toIndex);
275+
AArrayQueue_Enqueue(mesh->drawRangeQueue, fromIndex);
276+
AArrayQueue_Enqueue(mesh->drawRangeQueue, toIndex);
277277
ADrawable->Draw (mesh->drawable);
278278
}
279279

Engine/Toolkit/Utils/ArrayQueue.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,38 @@
1919
#include "Engine/Toolkit/Platform/Log.h"
2020

2121

22-
static void* Push(ArrayQueue* arrayQueue, void* elementPtr)
22+
static void* Enqueue(ArrayQueue* arrayQueue, void* elementPtr)
2323
{
24-
if (arrayQueue->topIndex > 0 && arrayQueue->topIndex == arrayQueue->elementList->elementArr->length)
24+
if (arrayQueue->headIndex > 0 && arrayQueue->headIndex == arrayQueue->elementList->elementArr->length)
2525
{
26-
AArrayList->RemoveRange(arrayQueue->elementList, 0, arrayQueue->topIndex - 1);
27-
arrayQueue->topIndex = 0;
26+
AArrayList->RemoveRange(arrayQueue->elementList, 0, arrayQueue->headIndex - 1);
27+
arrayQueue->headIndex = 0;
2828
}
2929

3030
return AArrayList->Add(arrayQueue->elementList, elementPtr);
3131
}
3232

3333

34-
static void* Pop(ArrayQueue* arrayQueue, void* defaultElementPtr)
34+
static void* Dequeue(ArrayQueue* arrayQueue, void* defaultElementPtr)
3535
{
36-
if (arrayQueue->topIndex == arrayQueue->elementList->size)
36+
if (arrayQueue->headIndex == arrayQueue->elementList->size)
3737
{
3838
return defaultElementPtr;
3939
}
4040

4141
return (char*) arrayQueue->elementList->elementArr->data +
4242
arrayQueue->elementList->elementTypeSize *
43-
(arrayQueue->topIndex++);
43+
(arrayQueue->headIndex++);
4444
}
4545

4646

4747
static void RemoveAt(ArrayQueue* arrayQueue, int index)
4848
{
4949
ALog_A
5050
(
51-
index >= arrayQueue->topIndex && index < arrayQueue->elementList->size,
51+
index >= arrayQueue->headIndex && index < arrayQueue->elementList->size,
5252
"AArrayQueue RemoveAt index = %d, out of range [%d, %d]",
53-
index, arrayQueue->topIndex, arrayQueue->elementList->size - 1
53+
index, arrayQueue->headIndex, arrayQueue->elementList->size - 1
5454
);
5555

5656
AArrayList->Remove(arrayQueue->elementList, index);
@@ -59,7 +59,7 @@ static void RemoveAt(ArrayQueue* arrayQueue, int index)
5959

6060
static void Release(ArrayQueue* arrayQueue)
6161
{
62-
arrayQueue->topIndex = 0;
62+
arrayQueue->headIndex = 0;
6363
AArrayList->Release(arrayQueue->elementList);
6464
}
6565

@@ -75,7 +75,7 @@ static void InitWithCapacity(int elementTypeSize, int capacity, ArrayQueue* outA
7575
AArrayList->InitWithCapacity(elementTypeSize, capacity, outArrayQueue->elementList);
7676
}
7777

78-
outArrayQueue->topIndex = 0;
78+
outArrayQueue->headIndex = 0;
7979
}
8080

8181

@@ -102,7 +102,7 @@ static ArrayQueue* Create(int elementTypeSize)
102102

103103
static void Clear(ArrayQueue* arrayQueue)
104104
{
105-
arrayQueue->topIndex = 0;
105+
arrayQueue->headIndex = 0;
106106
AArrayList->Clear(arrayQueue->elementList);
107107
}
108108

@@ -115,8 +115,8 @@ struct AArrayQueue AArrayQueue[1] =
115115
InitWithCapacity,
116116
Release,
117117

118-
Push,
119-
Pop,
118+
Enqueue,
119+
Dequeue,
120120
RemoveAt,
121121
Clear,
122122
}};

Engine/Toolkit/Utils/ArrayQueue.h

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
typedef struct
2828
{
2929
/**
30-
* ArrayQueue top element index.
30+
* ArrayQueue head element index.
3131
*/
32-
int topIndex;
32+
int headIndex;
3333

3434
/**
3535
* Store all elements.
@@ -53,26 +53,26 @@ struct AArrayQueue
5353
void (*Release) (ArrayQueue* arrayQueue);
5454

5555
/**
56-
* Push the element from elementPtr to the tail of ArrayQueue.
56+
* Add the element from elementPtr to the tail of ArrayQueue.
5757
* elementPtr: point to element
5858
*
5959
* return the elementPtr in ArrayQueue.
6060
*/
61-
void* (*Push) (ArrayQueue* arrayQueue, void* elementPtr);
61+
void* (*Enqueue) (ArrayQueue* arrayQueue, void* elementPtr);
6262

6363
/**
64-
* Pop the element from the head of ArrayQueue.
65-
* return the top elementPtr of the ArrayQueue, if no element return defaultElementPtr.
64+
* Remove the element from the head of ArrayQueue.
65+
* return the head elementPtr of the ArrayQueue, if no element return defaultElementPtr.
6666
*/
67-
void* (*Pop) (ArrayQueue* arrayQueue, void* defaultElementPtr);
67+
void* (*Dequeue) (ArrayQueue* arrayQueue, void* defaultElementPtr);
6868

6969
/**
70-
* Remove the element at index that range in [topIndex, ArrayQueue size - 1].
70+
* Remove the element at index that range in [headIndex, ArrayQueue size - 1].
7171
*/
7272
void (*RemoveAt) (ArrayQueue* arrayQueue, int index);
7373

7474
/**
75-
* Clear all elements, and reset topIndex to 0.
75+
* Clear all elements, and reset headIndex to 0.
7676
*/
7777
void (*Clear) (ArrayQueue* arrayQueue);
7878
};
@@ -93,49 +93,49 @@ extern struct AArrayQueue AArrayQueue[1];
9393
* example: ArrayQueue queue[1] = AArrayQueue_Init(ElementType, increase)
9494
*/
9595
#define AArrayQueue_Init(ElementType, increase) \
96-
{ \
97-
0, \
98-
AArrayList_Init(ElementType, increase), \
96+
{ \
97+
0, \
98+
AArrayList_Init(ElementType, increase), \
9999
}
100100

101101

102102
/**
103-
* Shortcut of AArrayQueue->Push.
103+
* Shortcut of AArrayQueue->Enqueue.
104104
*/
105-
#define AArrayQueue_Push(arrayQueue, element) \
106-
AArrayQueue->Push(arrayQueue, &(element))
105+
#define AArrayQueue_Enqueue(arrayQueue, element) \
106+
AArrayQueue->Enqueue(arrayQueue, &(element))
107107

108108

109109
/**
110-
* Shortcut of AArrayQueue->Pop.
110+
* Shortcut of AArrayQueue->Dequeue.
111111
* return element.
112112
*/
113-
#define AArrayQueue_Pop(arrayQueue, ElementType) \
114-
(*(ElementType*) AArrayQueue->Pop(arrayQueue, NULL_PTR))
113+
#define AArrayQueue_Dequeue(arrayQueue, ElementType) \
114+
(*(ElementType*) AArrayQueue->Dequeue(arrayQueue, NULL_PTR))
115115

116116

117117
/**
118-
* Shortcut of AArrayQueue->Pop.
118+
* Shortcut of AArrayQueue->Dequeue.
119119
* return element.
120120
*/
121-
#define AArrayQueue_PopWithDefault(arrayQueue, ElementType, defaultValue) \
122-
(*(ElementType*) AArrayQueue->Pop(arrayQueue, &(defaultValue)))
121+
#define AArrayQueue_DequeueWithDefault(arrayQueue, ElementType, defaultValue) \
122+
(*(ElementType*) AArrayQueue->Dequeue(arrayQueue, &(defaultValue)))
123123

124124

125125
/**
126-
* Shortcut of AArrayQueue->Pop.
126+
* Shortcut of AArrayQueue->Dequeue.
127127
* return elementPtr.
128128
*/
129-
#define AArrayQueue_PopPtr(arrayQueue, ElementType) \
130-
((ElementType*) AArrayQueue->Pop(arrayQueue, NULL))
129+
#define AArrayQueue_DequeuePtr(arrayQueue, ElementType) \
130+
((ElementType*) AArrayQueue->Dequeue(arrayQueue, NULL))
131131

132132

133133
/**
134-
* Shortcut of AArrayQueue->Pop.
134+
* Shortcut of AArrayQueue->Dequeue.
135135
* return elementPtr.
136136
*/
137-
#define AArrayQueue_PopPtrWithDefault(arrayQueue, ElementType, defaultValue) \
138-
((ElementType*) AArrayQueue->Pop(arrayQueue, &(defaultValue)))
137+
#define AArrayQueue_DequeuePtrWithDefault(arrayQueue, ElementType, defaultValue) \
138+
((ElementType*) AArrayQueue->Dequeue(arrayQueue, &(defaultValue)))
139139

140140

141141
#endif

Engine/Toolkit/Utils/Tween.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ static inline void SetActionValue(TweenAction* action)
132132
}
133133

134134

135-
static void PopQueueActionToRun(Tween* tween)
135+
static void DequeueAction(Tween* tween)
136136
{
137137
// get a queue action to run
138-
TweenAction* action = AArrayQueue_Pop(tween->queue, TweenAction*);
138+
TweenAction* action = AArrayQueue_Dequeue(tween->queue, TweenAction*);
139139

140140
if (action != NULL)
141141
{
@@ -181,7 +181,7 @@ static void* RunActions(Array(TweenAction*)* actions, void* tweenID)
181181

182182
if (action->isQueue)
183183
{
184-
AArrayQueue_Push(tween->queue, action);
184+
AArrayQueue_Enqueue(tween->queue, action);
185185
}
186186
else
187187
{
@@ -190,7 +190,7 @@ static void* RunActions(Array(TweenAction*)* actions, void* tweenID)
190190
}
191191
}
192192

193-
PopQueueActionToRun(tween);
193+
DequeueAction(tween);
194194

195195
return tweenID;
196196
}
@@ -220,7 +220,7 @@ static bool TryRemoveAction(void* tweenID, TweenAction* action)
220220
}
221221
}
222222

223-
for (int i = tween->queue->topIndex; i < tween->queue->elementList->size; ++i)
223+
for (int i = tween->queue->headIndex; i < tween->queue->elementList->size; ++i)
224224
{
225225
TweenAction* tweenAction = AArrayList_Get(tween->queue->elementList, i, TweenAction*);
226226

@@ -253,7 +253,7 @@ static bool TryRemoveAllActions(void* tweenID)
253253
AArrayList->Clear(tween->current);
254254

255255
TweenAction* action;
256-
while ((action = AArrayQueue_Pop(tween->queue, TweenAction*)))
256+
while ((action = AArrayQueue_Dequeue(tween->queue, TweenAction*)))
257257
{
258258
AArrayList_Add(actionCacheList, action);
259259
}
@@ -302,7 +302,7 @@ static bool TryCompleteAllActions(void* tweenID, bool isFireOnComplete)
302302
AArrayList->Clear(tween->current);
303303

304304
TweenAction* action;
305-
while ((action = AArrayQueue_Pop(tween->queue, TweenAction*)))
305+
while ((action = AArrayQueue_Dequeue(tween->queue, TweenAction*)))
306306
{
307307
SetActionComplete(action, isFireOnComplete);
308308
AArrayList_Add(actionCacheList, action);
@@ -387,7 +387,7 @@ static void Update(float deltaSeconds)
387387

388388
if (action->isQueue)
389389
{
390-
PopQueueActionToRun(tween);
390+
DequeueAction(tween);
391391
}
392392
}
393393
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<img src="./Docs/Images/Logo.png" width="176" height="228" alt="Mojoc Logo" title="Mojoc Logo" />
22

33

4-
## Mojoc v0.6.4
4+
## Mojoc v0.7.0
55

66
Mojoc is an open-source, cross-platform, pure C game engine. It is based on OpenGLES3 and written in C99. It currently works on IOS and Android, but can easily be extended to other platforms, and will support more platforms in the future.
77

0 commit comments

Comments
 (0)