00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef PTOOLS_H_
00010 #define PTOOLS_H_
00011
00012 #ifndef SAFE_FREE
00013 #define SAFE_FREE(pointer) if(pointer){free(pointer);pointer=NULL;}
00014 #endif
00015
00016 void safeStringFree(char **inp, size_t size_of_inp);
00017 void safePArrayFree(void **inp, size_t size_of_inp);
00018
00019
00020
00021 int stringLength (char *pstring);
00022 int divideUpStrings (char *stringinp, char **argumentArray[], char *token, int maxArgs, char tokenProtection);
00023 int removeToken(char* input, char* token, char tokenProtection);
00024 int replaceStringlets(char* input, char **output, char* token, char* replacement);
00025 int combineString(char **list, char** output, size_t elements);
00026 int removeMultipleChars(const unsigned char remove, char *string[]);
00027
00028
00029 void message(FILE *stream, const char *file, int line, const char* type, const char* fcn, const char* format, ...);
00030
00031
00032 void backTrace(size_t level);
00033
00034
00035 typedef struct stackNode
00036 {
00037 void* data;
00038 struct stackNode* next;
00039 struct stackNode* prev;
00040 size_t size;
00041 }
00042 stackNode;
00043
00044 typedef struct stack
00045 {
00046 struct stackNode *top;
00047 struct stackNode *bottom;
00048 size_t size;
00049 }
00050 stack;
00051
00052 struct stack* createStack(struct stack **pStack);
00053 bool clearStack(struct stack* pStack);
00054 bool clearStackOnly(struct stack* pStack);
00055 bool initStack(struct stack* pStack);
00056 bool deleteStack(struct stack** pStack);
00057 bool deleteStackOnly(struct stack** pStack);
00058 bool pushStack(struct stack* pStack, void* element, size_t size);
00059 void* popStack(struct stack* pStack);
00060 bool insertStack(struct stack *pStack, void* element, size_t size, int (*compare)(void*,void*));
00061 bool dumpStack(FILE *stream, struct stack* pStack);
00062 bool dumpStackString(FILE *stream, struct stack* pStack);
00063 bool removeFromStack(struct stack* pStack, void* element, int (*compare)(void*,void*));
00064 void* findInStack(struct stack* pStack, void* element, int (*compare)(void*,void*));
00065
00066
00067
00068 #ifdef INCLUDELIST
00069
00070 typedef struct listNode
00071 {
00072 void* data;
00073 struct listNode* next;
00074 struct listNode* prev;
00075 size_t size;
00076 }
00077 listNode;
00078
00079 typedef struct list
00080 {
00081 struct listNode *top;
00082 struct listNode *bottom;
00083 size_t size;
00084 }
00085 list;
00086
00087 struct list* createList(struct list **pList);
00088 bool clearList(struct list* pList);
00089 bool clearListOnly(struct list* pList);
00090 bool initList(struct list* pList);
00091 bool deleteList(struct list** pList);
00092 bool deleteListOnly(struct list** pList);
00093 bool appendList(struct list* pList, void* element, size_t size);
00094 bool insertList(struct list *pList, void* element, size_t size, int (*compare)(void*,void*));
00095 bool dumpList(FILE *stream, struct list* pList);
00096 bool removeFromList(struct list* pList, void* element, int (*compare)(void*,void*));
00097 void* findInList(struct list* pList, void* element, int (*compare)(void*,void*));
00098 void* popList(struct list* pList);
00099 bool dumpListString(FILE *stream, struct list* pList);
00100 #endif
00101 #endif