xref: /Universal-ctags/main/routines.h (revision d53559843c3c07240e7ea2eb5dce190aa0ab69d7)
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