diff options
Diffstat (limited to 'Build/source/utils/chktex/chktex-1.6.4/Utility.h')
-rw-r--r-- | Build/source/utils/chktex/chktex-1.6.4/Utility.h | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/Build/source/utils/chktex/chktex-1.6.4/Utility.h b/Build/source/utils/chktex/chktex-1.6.4/Utility.h new file mode 100644 index 00000000000..8df63f26d7a --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.4/Utility.h @@ -0,0 +1,172 @@ +/* + * ChkTeX, utility functions -- header file. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef UTILITY_H +#define UTILITY_H 1 + +#include "ChkTeX.h" +#include "OpSys.h" + +/* + * How many indexes we'll allocate first time + */ +#define MINPUDDLE 256 + +/* + * How many bytes we want in front/end of each char buffer. > 2 + */ +#define WALLBYTES 4 + +#ifndef HASH_SIZE +# define HASH_SIZE 1009 /* A reasonably large prime */ +#endif + +#define FORWL(ind, list) for(ind = 0; ind < (list).Stack.Used; ind++) + + +enum Strip +{ + STRP_LFT = 0x01, + STRP_RGT = 0x02, + STRP_BTH = 0x03 +}; + +struct HashEntry +{ + struct HashEntry *Next; + char *Str; +}; + +struct Hash +{ + struct HashEntry **Index; +}; + +struct Stack +{ + void **Data; + unsigned long Size, Used; +}; + +struct WordList +{ + unsigned long MaxLen; + int NonEmpty; + struct Stack Stack; + struct Hash Hash; +}; +#define WORDLIST_DEFINED + +struct FileNode +{ + char *Name; + FILE *fh; + unsigned long Line; +}; + +/* Rotates x n bits left (should be an int, long, etc.) */ +#define ROTATEL(x,n) ((x<<n) | (x>>((CHAR_BIT*sizeof(x)) - n))) + +/* Rotates x n bits right (should be an int, long, etc.) */ +#define ROTATER(x,n) ((x>>n) | (x<<((CHAR_BIT*sizeof(x)) - n))) + +int fexists(const char *Filename); + +void *sfmemset(void *to, int c, long n); +void *saferealloc(void *old, size_t newsize); + +int strafter(const char *Str, const char *Cmp); +void strrep(char *String, const char From, const char To); +void strxrep(char *Buf, const char *Prot, const char To); +char *strip(char *String, const enum Strip What); +void strwrite(char *To, const char *From, unsigned long Len); +int strinfront(const char *Str, const char *Cmp); +char *strdupx(const char *String, int Extra); +void strmove(char *a, const char *b); + +void ClearHash(struct Hash *h); +void InsertHash(char *a, struct Hash *h); +char *HasHash(const char *a, const struct Hash *h); + +int InsertWord(const char *Word, struct WordList *WL); +char *HasWord(const char *Word, struct WordList *WL); +void MakeLower(struct WordList *wl); +void ListRep(struct WordList *wl, const char From, const char To); +void ClearWord(struct WordList *WL); + +int StkPush(void *Data, struct Stack *Stack); +void *StkPop(struct Stack *Stack); +void *StkTop(struct Stack *Stack); + +FILE *CurStkFile(struct Stack *stack); +const char *CurStkName(struct Stack *stack); +unsigned long CurStkLine(struct Stack *stack); +char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack); +int PushFileName(const char *Name, struct Stack *stack); +int PushFile(const char *, FILE *, struct Stack *); + + +void FreeErrInfo(struct ErrInfo *ei); +struct ErrInfo *PushChar(const char c, const unsigned long Line, + const unsigned long Column, struct Stack *Stk, + const char *LineCpy); +struct ErrInfo *PushErr(const char *Data, const unsigned long Line, + const unsigned long Column, + const unsigned long ErrLen, const char *LineCpy, + struct Stack *Stk); +struct ErrInfo *TopChar(struct Stack *Stack); +struct ErrInfo *TopErr(struct Stack *Stack); +struct ErrInfo *PopErr(struct Stack *Stack); +struct ErrInfo *TopMatch(struct Stack *Stack, char *String); + +long BrackIndex(char const c); +void AddBracket(char const c); +char MatchBracket(char const); + + + +short substring(const char *source, char *dest, unsigned long pos, long len); + +#ifndef HAVE_STRLWR +# define strlwr mystrlwr +char *mystrlwr(char *String); +#endif + +#ifndef HAVE_STRDUP +# define strdup mystrdup +char *mystrdup(const char *String); +#endif + + +#ifndef HAVE_STRCASECMP +int strcasecmp(char *a, char *b); +#endif + + + +#endif /* UTILITY_H */ |