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 
254 void InitVector(unsigned int ele_size,
255  void (* Copy)(void *,void*),
256  void (* Delete)(void *),
257  unsigned int max_ele,Tvector *vector);
258 
269 void ResetVector(Tvector *vector);
270 
279 void CopyVector(Tvector *v_dst,Tvector *v_src);
280 
290 unsigned int VectorFirstFreePos(Tvector *vector);
291 
304 unsigned int VectorSize(Tvector *vector);
305 
316 unsigned int VectorMaxSize(Tvector *vector);
317 
327 boolean VectorEmpty(Tvector *vector);
328 
343 boolean ElementInVector(void *e,boolean (* cmp)(void *,void*),Tvector *vector);
359 unsigned int FindPos(void *e,boolean (* cmp)(void *,void*),Tvector *vector);
360 
371 unsigned int NewVectorElement(void *e,Tvector *vector);
372 
383 unsigned int NewFreeVectorElement(void *e,Tvector *vector);
395 void SetVectorElement(unsigned int i,void *e,Tvector *vector);
396 
408 void *GetVectorElement(unsigned int i,Tvector *vector);
409 
419 void *GetLastElement(Tvector *vector);
420 
433 void RemoveVectorElement(unsigned int i,Tvector *vector);
434 
450 void SwapVectorElements(unsigned int i,unsigned int j,Tvector *vector);
451 
459 void ReverseVector(Tvector *vector);
460 
469 void ConcatVectors(Tvector *vector1,Tvector *vector);
470 
486 void ExtractVectorElement(unsigned int i,void *e,Tvector *vector);
487 
502 void MoveVectorElement(unsigned int i,unsigned int ni,Tvector *vector);
503 
511 void DeleteVector(void *vector);
512 
513 #endif
Definition of the boolean type.
double s
Definition: vector.h:116
void DeleteVector(void *vector)
Destructor.
Definition: vector.c:388
unsigned int VectorSize(Tvector *vector)
Gets the number of elements in a vector.
Definition: vector.c:169
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:332
void * GetVectorElement(unsigned int i, Tvector *vector)
Returns a pointer to a vector element.
Definition: vector.c:269
void CopyVector(Tvector *v_dst, Tvector *v_src)
Copy constructor.
Definition: vector.c:134
void RemoveVectorElement(unsigned int i, Tvector *vector)
Removes an element from the vector.
Definition: vector.c:285
unsigned int VectorMaxSize(Tvector *vector)
Gets the maximum number of elements in a vector.
Definition: vector.c:174
double f
Definition: vector.h:115
void ExtractVectorElement(unsigned int i, void *e, Tvector *vector)
Extracts an element from a vector.
Definition: vector.c:341
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:158
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:179
void ReverseVector(Tvector *vector)
Reverses a vector.
Definition: vector.c:318
void ResetVector(Tvector *vector)
Resets a vector.
Definition: vector.c:116
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:277
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:189
void SetVectorElement(unsigned int i, void *e, Tvector *vector)
Adds an element to the vector in a given position.
Definition: vector.c:234
void MoveVectorElement(unsigned int i, unsigned int ni, Tvector *vector)
Moves a vector element from one position to another.
Definition: vector.c:362
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:223
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:184
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:298
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:212
void CopyID(void *a, void *b)
Copy constructor for identifiers.
Definition: vector.c:24