1d4c6f1e6SMasatake YAMATO /* 2d4c6f1e6SMasatake YAMATO * Copyright (c) 2002, Darren Hiebert 3d4c6f1e6SMasatake YAMATO * 4d4c6f1e6SMasatake YAMATO * This source code is released for free distribution under the terms of the 50ce38835Sviccuad * GNU General Public License version 2 or (at your option) any later version. 6d4c6f1e6SMasatake YAMATO * 7d4c6f1e6SMasatake YAMATO * External interface to routines.c 8d4c6f1e6SMasatake YAMATO */ 95474c2e5SMasatake YAMATO #ifndef CTAGS_MAIN_ROUTINES_H 105474c2e5SMasatake YAMATO #define CTAGS_MAIN_ROUTINES_H 11d4c6f1e6SMasatake YAMATO 12d4c6f1e6SMasatake YAMATO /* 13d4c6f1e6SMasatake YAMATO * INCLUDE FILES 14d4c6f1e6SMasatake YAMATO */ 15d4c6f1e6SMasatake YAMATO #include "general.h" /* must always come first */ 16509a47dbSJiří Techet 1765e7c8acSMike Burns #include <stdio.h> 18d4c6f1e6SMasatake YAMATO 19509a47dbSJiří Techet 20d4c6f1e6SMasatake YAMATO /* 21d4c6f1e6SMasatake YAMATO * MACROS 22d4c6f1e6SMasatake YAMATO */ 23d4c6f1e6SMasatake YAMATO #define xMalloc(n,Type) (Type *)eMalloc((size_t)(n) * sizeof (Type)) 24d4c6f1e6SMasatake YAMATO #define xCalloc(n,Type) (Type *)eCalloc((size_t)(n), sizeof (Type)) 25d4c6f1e6SMasatake YAMATO #define xRealloc(p,n,Type) (Type *)eRealloc((p), (n) * sizeof (Type)) 26d4c6f1e6SMasatake YAMATO 27d4c6f1e6SMasatake YAMATO #define ARRAY_SIZE(X) (sizeof (X) / sizeof (X[0])) 28df9a8cdeSMasatake YAMATO #define ARRAY_AND_SIZE(X) (X), ARRAY_SIZE(X) 29d4c6f1e6SMasatake YAMATO 30908570b8SMasatake YAMATO #define STRINGIFY(X) STRINGIFY_(X) 31908570b8SMasatake YAMATO #define STRINGIFY_(X) #X 32908570b8SMasatake YAMATO 33d4c6f1e6SMasatake YAMATO /* 34d4c6f1e6SMasatake YAMATO * DATA DECLARATIONS 35d4c6f1e6SMasatake YAMATO */ 36d4c6f1e6SMasatake YAMATO typedef int errorSelection; 372ce906a2SMasatake YAMATO enum eErrorTypes { FATAL = 1, WARNING = 2, NOTICE = 4, PERROR = 8, }; 38d4c6f1e6SMasatake YAMATO 39d4c6f1e6SMasatake YAMATO /* 40d4c6f1e6SMasatake YAMATO * FUNCTION PROTOTYPES 41d4c6f1e6SMasatake YAMATO */ 428ccb7ee9SJiří Techet extern void error (const errorSelection selection, const char *const format, ...) CTAGS_ATTR_PRINTF (2, 3); 43421341a4SMasatake YAMATO #define notice(...) error (NOTICE, __VA_ARGS__) 44d4c6f1e6SMasatake YAMATO 45d4c6f1e6SMasatake YAMATO /* Memory allocation functions */ 46d4c6f1e6SMasatake YAMATO #ifdef NEED_PROTO_MALLOC 47d4c6f1e6SMasatake YAMATO extern void *malloc (size_t); 48d4c6f1e6SMasatake YAMATO extern void *realloc (void *ptr, size_t); 49d4c6f1e6SMasatake YAMATO #endif 50d4c6f1e6SMasatake YAMATO extern void *eMalloc (const size_t size); 51d4c6f1e6SMasatake YAMATO extern void *eCalloc (const size_t count, const size_t size); 52d4c6f1e6SMasatake YAMATO extern void *eRealloc (void *const ptr, const size_t size); 53d4c6f1e6SMasatake YAMATO extern void eFree (void *const ptr); 5483739ab9SMasatake YAMATO extern void eFreeNoNullCheck (void *const ptr); 5556065e52SMasatake YAMATO extern void eFreeIndirect(void **ptr); 56d4c6f1e6SMasatake YAMATO 57d4c6f1e6SMasatake YAMATO /* String manipulation functions */ 58d4c6f1e6SMasatake YAMATO extern int struppercmp (const char *s1, const char *s2); 59d4c6f1e6SMasatake YAMATO extern int strnuppercmp (const char *s1, const char *s2, size_t n); 60d4c6f1e6SMasatake YAMATO #ifndef HAVE_STRSTR 61d4c6f1e6SMasatake YAMATO extern char* strstr (const char *str, const char *substr); 62d4c6f1e6SMasatake YAMATO #endif 63d4c6f1e6SMasatake YAMATO extern char* strrstr (const char *str, const char *substr); 64d4c6f1e6SMasatake YAMATO extern char* eStrdup (const char* str); 65d4c6f1e6SMasatake YAMATO extern char* eStrndup (const char* str, size_t len); 66d4c6f1e6SMasatake YAMATO extern void toLowerString (char* str); 67d4c6f1e6SMasatake YAMATO extern void toUpperString (char* str); 68d4c6f1e6SMasatake YAMATO extern char* newLowerString (const char* str); 69d4c6f1e6SMasatake YAMATO extern char* newUpperString (const char* str); 70ce990805SThomas Braun extern bool strToUInt(const char *const str, int base, unsigned int *value); 7159f256efSK.Takata extern bool strToULong(const char *const string, int base, unsigned long *value); 72ce990805SThomas Braun extern bool strToInt(const char *const str, int base, int *value); 7359f256efSK.Takata extern bool strToLong(const char *const string, int base, long *value); 74d4c6f1e6SMasatake YAMATO 75d4c6f1e6SMasatake YAMATO /* File system functions */ 76d4c6f1e6SMasatake YAMATO extern const char *baseFilename (const char *const filePath); 77d4c6f1e6SMasatake YAMATO extern const char *fileExtension (const char *const fileName); 78d96bd365SMasatake YAMATO 79*d5355984SMasatake YAMATO extern FILE *tempFileFP (const char *const mode, char **const pName); 80*d5355984SMasatake YAMATO 815474c2e5SMasatake YAMATO #endif /* CTAGS_MAIN_ROUTINES_H */ 82