Hisham Muhammad | f6e0b7d | 2006-06-06 20:28:42 +0000 | [diff] [blame] | 1 | /* Do not edit this file. It was automatically generated. */ |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 2 | |
| 3 | #ifndef HEADER_Vector |
| 4 | #define HEADER_Vector |
| 5 | /* |
Hisham Muhammad | 84281bd | 2011-12-26 21:35:57 +0000 | [diff] [blame] | 6 | htop - Vector.h |
Hisham Muhammad | 300caa0 | 2011-05-26 16:35:07 +0000 | [diff] [blame] | 7 | (C) 2004-2011 Hisham H. Muhammad |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 8 | Released under the GNU GPL, see the COPYING file |
| 9 | in the source distribution for its full text. |
| 10 | */ |
| 11 | |
| 12 | #include "Object.h" |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 13 | |
Hisham Muhammad | 7ca1081 | 2011-11-18 06:08:56 +0000 | [diff] [blame] | 14 | #define swap(a_,x_,y_) do{ void* tmp_ = a_[x_]; a_[x_] = a_[y_]; a_[y_] = tmp_; }while(0) |
| 15 | |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 16 | #ifndef DEFAULT_SIZE |
| 17 | #define DEFAULT_SIZE -1 |
| 18 | #endif |
| 19 | |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 20 | typedef struct Vector_ { |
| 21 | Object **array; |
Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 22 | ObjectClass* type; |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 23 | int arraySize; |
| 24 | int growthRate; |
| 25 | int items; |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 26 | bool owner; |
| 27 | } Vector; |
| 28 | |
| 29 | |
Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 30 | Vector* Vector_new(ObjectClass* type, bool owner, int size); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 31 | |
| 32 | void Vector_delete(Vector* this); |
Hisham Muhammad | 5d48ab8 | 2006-07-11 06:13:32 +0000 | [diff] [blame] | 33 | |
| 34 | #ifdef DEBUG |
| 35 | |
Hisham Muhammad | 3684849 | 2006-11-12 21:52:14 +0000 | [diff] [blame] | 36 | int Vector_count(Vector* this); |
| 37 | |
Hisham Muhammad | 5d48ab8 | 2006-07-11 06:13:32 +0000 | [diff] [blame] | 38 | #endif |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 39 | |
| 40 | void Vector_prune(Vector* this); |
| 41 | |
Hisham Muhammad | 7ca1081 | 2011-11-18 06:08:56 +0000 | [diff] [blame] | 42 | // If I were to use only one sorting algorithm for both cases, it would probably be this one: |
| 43 | /* |
| 44 | |
| 45 | */ |
| 46 | |
| 47 | void Vector_quickSort(Vector* this); |
| 48 | |
| 49 | void Vector_insertionSort(Vector* this); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 50 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 51 | void Vector_insert(Vector* this, int idx, void* data_); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 52 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 53 | Object* Vector_take(Vector* this, int idx); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 54 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 55 | Object* Vector_remove(Vector* this, int idx); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 56 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 57 | void Vector_moveUp(Vector* this, int idx); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 58 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 59 | void Vector_moveDown(Vector* this, int idx); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 60 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 61 | void Vector_set(Vector* this, int idx, void* data_); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 62 | |
Hisham Muhammad | 7ca1081 | 2011-11-18 06:08:56 +0000 | [diff] [blame] | 63 | #ifdef DEBUG |
| 64 | |
Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 65 | extern Object* Vector_get(Vector* this, int idx); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 66 | |
Hisham Muhammad | 7ca1081 | 2011-11-18 06:08:56 +0000 | [diff] [blame] | 67 | #else |
| 68 | |
| 69 | #define Vector_get(v_, idx_) ((v_)->array[idx_]) |
| 70 | |
| 71 | #endif |
| 72 | |
Hisham Muhammad | e685bde | 2007-08-10 05:59:36 +0000 | [diff] [blame] | 73 | extern int Vector_size(Vector* this); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 74 | |
Hisham Muhammad | da23c8c | 2008-03-09 08:58:38 +0000 | [diff] [blame] | 75 | /* |
| 76 | |
| 77 | */ |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 78 | |
| 79 | void Vector_add(Vector* this, void* data_); |
| 80 | |
Hisham Muhammad | e685bde | 2007-08-10 05:59:36 +0000 | [diff] [blame] | 81 | extern int Vector_indexOf(Vector* this, void* search_, Object_Compare compare); |
Hisham Muhammad | a853faa | 2006-05-30 13:45:40 +0000 | [diff] [blame] | 82 | |
| 83 | #endif |