• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

epics/apps/crucible/cbm_oct2011/cbmApp/src/ptools.h (r4864/r2310)

Go to the documentation of this file.
00001 /*
00002  * ptools.h
00003  *  programming tools
00004  * Author: p.zumbruch, p.zumbruch@gsi.de
00005  * created: 15.02.2007
00006  * last change: 27.02.2007
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 /* free */
00016 void    safeStringFree(char **inp, size_t size_of_inp);
00017 void    safePArrayFree(void **inp, size_t size_of_inp);
00018 
00019 /* strings and tokens*/
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 /* messages */
00029 void    message(FILE *stream, const char *file, int line, const char* type, const char* fcn, const char* format, ...);
00030 
00031 /* debugging */
00032 void    backTrace(size_t level);
00033 
00034 /*stack*/
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 /*list*/
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 /*PTOOLS_H_*/

Generated on Tue Dec 10 2013 04:52:22 for ROCsoft by  doxygen 1.7.1