vector.h
Go to the documentation of this file.
1 #ifndef VECTORH
2 #define VECTORH
3 
4 #include "boolean.h"
5 #include <stdio.h>
6 
52 boolean CmpID(void *a,void *b);
53 
63 void CopyID(void *a,void *b);
73 void DeleteID(void *a);
74 
75 
87 boolean CmpDouble(void *a,void *b);
97 void CopyDouble(void *a,void *b);
106 void DeleteDouble(void *a);
107 
108 
114 typedef struct {
115  double f;
116  double s;
117 } TDoublePair;
118 
128 void NewDoublePair(double f,double s,TDoublePair *p);
129 
139 double FirstInPair(TDoublePair *p);
140 
150 double SecondInPair(TDoublePair *p);
151 
163 boolean CmpDoublePair(void *a,void *b);
164 
174 void CopyDoublePair(void *a,void *b);
175 
184 void DeleteDoublePair(void *a);
185 
186 
198 boolean CmpVoidPtr(void *a,void *b);
208 void CopyVoidPtr(void *a,void *b);
217 void DeleteVoidPtr(void *a);
218 
227 typedef struct
228 {
229  void **elements;
230  unsigned int ele_size;
231  unsigned int num_ele;
232  unsigned int max_ele;
233  void (* Copy)(void *,void*);
234  void (* Delete)(void *);
235 } Tvector;
236 
261 void InitVector(unsigned int ele_size,
262  void (* Copy)(void *,void*),
263  void (* Delete)(void *),
264  unsigned int max_ele,Tvector *vector);
265 
276 void ResetVector(Tvector *vector);
277 
286 void CopyVector(Tvector *v_dst,Tvector *v_src);
287 
297 unsigned int VectorFirstFreePos(Tvector *vector);
298 
311 unsigned int VectorSize(Tvector *vector);
312 
323 unsigned int VectorMaxSize(Tvector *vector);
324 
334 boolean VectorEmpty(Tvector *vector);
335 
350 boolean ElementInVector(void *e,boolean (* cmp)(void *,void*),Tvector *vector);
366 unsigned int FindPos(void *e,boolean (* cmp)(void *,void*),Tvector *vector);
367 
378 unsigned int NewVectorElement(void *e,Tvector *vector);
379 
390 unsigned int NewFreeVectorElement(void *e,Tvector *vector);
402 void SetVectorElement(unsigned int i,void *e,Tvector *vector);
403 
415 void *GetVectorElement(unsigned int i,Tvector *vector);
416 
426 void *GetLastElement(Tvector *vector);
427 
440 void RemoveVectorElement(unsigned int i,Tvector *vector);
441 
457 void SwapVectorElements(unsigned int i,unsigned int j,Tvector *vector);
458 
466 void ReverseVector(Tvector *vector);
467 
476 void ConcatVectors(Tvector *vector1,Tvector *vector);
477 
493 void ExtractVectorElement(unsigned int i,void *e,Tvector *vector);
494 
509 void MoveVectorElement(unsigned int i,unsigned int ni,Tvector *vector);
510 
518 void DeleteVector(void *vector);
519 
520 #endif
Definition of the boolean type.
double s
Definition: vector.h:116
void DeleteVector(void *vector)
Destructor.
Definition: vector.c:389
unsigned int VectorSize(Tvector *vector)
Gets the number of elements in a vector.
Definition: vector.c:173
void DeleteID(void *a)
Destructor for identifiers.
Definition: vector.c:29
boolean CmpVoidPtr(void *a, void *b)
Comparison operator for void pointers.
Definition: vector.c:82
A pair of dubles.
Definition: vector.h:114
unsigned int num_ele
Definition: vector.h:231
void ConcatVectors(Tvector *vector1, Tvector *vector)
Concatenates two vectors.
Definition: vector.c:333
void * GetVectorElement(unsigned int i, Tvector *vector)
Returns a pointer to a vector element.
Definition: vector.c:270
void CopyVector(Tvector *v_dst, Tvector *v_src)
Copy constructor.
Definition: vector.c:138
void RemoveVectorElement(unsigned int i, Tvector *vector)
Removes an element from the vector.
Definition: vector.c:286
unsigned int VectorMaxSize(Tvector *vector)
Gets the maximum number of elements in a vector.
Definition: vector.c:178
double f
Definition: vector.h:115
void ExtractVectorElement(unsigned int i, void *e, Tvector *vector)
Extracts an element from a vector.
Definition: vector.c:342
void CopyVoidPtr(void *a, void *b)
Copy constructor for void pointers.
Definition: vector.c:87
unsigned int VectorFirstFreePos(Tvector *vector)
Finds a free position in the vector.
Definition: vector.c:162
void DeleteDoublePair(void *a)
Destructor for pairs of doubles.
Definition: vector.c:77
boolean VectorEmpty(Tvector *vector)
Checks if a vector is empty.
Definition: vector.c:183
void ReverseVector(Tvector *vector)
Reverses a vector.
Definition: vector.c:319
void ResetVector(Tvector *vector)
Resets a vector.
Definition: vector.c:120
boolean CmpID(void *a, void *b)
Comparison operator for identifiers.
Definition: vector.c:19
double FirstInPair(TDoublePair *p)
The first element of a pair.
Definition: vector.c:55
void DeleteDouble(void *a)
Destructor for doubles.
Definition: vector.c:44
void * GetLastElement(Tvector *vector)
Returns a pointer to the last element of a vector.
Definition: vector.c:278
void InitVector(unsigned int ele_size, void(*Copy)(void *, void *), void(*Delete)(void *), unsigned int max_ele, Tvector *vector)
Constructor.
Definition: vector.c:100
unsigned int FindPos(void *e, boolean(*cmp)(void *, void *), Tvector *vector)
Search for an element in a vector.
Definition: vector.c:193
void SetVectorElement(unsigned int i, void *e, Tvector *vector)
Adds an element to the vector in a given position.
Definition: vector.c:238
void MoveVectorElement(unsigned int i, unsigned int ni, Tvector *vector)
Moves a vector element from one position to another.
Definition: vector.c:363
unsigned int max_ele
Definition: vector.h:232
void ** elements
Definition: vector.h:229
boolean CmpDouble(void *a, void *b)
Comparison operator for doubles.
Definition: vector.c:34
A generic vector.
Definition: vector.h:227
unsigned int NewFreeVectorElement(void *e, Tvector *vector)
Adds an element to the vector.
Definition: vector.c:227
void NewDoublePair(double f, double s, TDoublePair *p)
Constructor.
Definition: vector.c:49
void DeleteVoidPtr(void *a)
Destructor for void pointers.
Definition: vector.c:92
boolean ElementInVector(void *e, boolean(*cmp)(void *, void *), Tvector *vector)
Search for an element in a vector.
Definition: vector.c:188
void CopyDoublePair(void *a, void *b)
Copy constructor for pairs of doubles.
Definition: vector.c:71
boolean CmpDoublePair(void *a, void *b)
Comparison operator for paris of doubles.
Definition: vector.c:65
void SwapVectorElements(unsigned int i, unsigned int j, Tvector *vector)
Swaps two elements in a vector.
Definition: vector.c:299
unsigned int ele_size
Definition: vector.h:230
void CopyDouble(void *a, void *b)
Copy constructor for doubles.
Definition: vector.c:39
double SecondInPair(TDoublePair *p)
The second element of a pair.
Definition: vector.c:60
unsigned int NewVectorElement(void *e, Tvector *vector)
Adds an element to the vector.
Definition: vector.c:216
void CopyID(void *a, void *b)
Copy constructor for identifiers.
Definition: vector.c:24