Grab uctags keyword.c/h and add types.h with type declarations

keyword.c/h contains only changes made by me. To make the sync complete,
add type.h with type declarations (and remove the added declarations from
their original locations).
This commit is contained in:
Jiří Techet 2016-10-06 19:30:59 +02:00
parent a52137f414
commit ed01b7edb4
8 changed files with 48 additions and 13 deletions

View File

@ -89,6 +89,7 @@ libctags_la_SOURCES = \
main/sort.h \
main/strlist.c \
main/strlist.h \
main/types.h \
main/vstring.c \
main/vstring.h \
main/xtag.h \

View File

@ -13,6 +13,7 @@
* INCLUDE FILES
*/
#include "general.h" /* must always come first */
#include "types.h"
#include "mio.h"
#include "vstring.h"
@ -51,7 +52,7 @@ typedef struct sTagFields {
/* Information about the current tag candidate.
*/
typedef struct sTagEntryInfo {
struct sTagEntryInfo {
bool lineNumberEntry; /* pattern or line number entry */
unsigned long lineNumber; /* line number of tag */
MIOPos filePosition; /* file position of line containing tag */
@ -74,7 +75,7 @@ typedef struct sTagEntryInfo {
const char *signature; /* Argument list for functions and macros with arguments */
const char *varType;
} extensionFields; /* list of extension fields*/
} tagEntryInfo;
};
/*
* GLOBAL VARIABLES

View File

@ -13,12 +13,12 @@
#include "general.h" /* must always come first */
#include <string.h>
#include <ctype.h>
#include "debug.h"
#include "keyword.h"
#include "options.h"
#include "routines.h"
#include "main.h"
/*
* DATA DECLARATIONS
@ -78,7 +78,7 @@ static unsigned int hashValue (const char *const string, langType language)
/* "djb" hash as used in g_str_hash() in glib */
for (p = (const signed char *)string; *p != '\0'; p++)
h = (h << 5) + h + *p;
h = (h << 5) + h + tolower (*p);
/* consider language as an extra "character" and add it to the hash */
h = (h << 5) + h + language;
@ -136,15 +136,17 @@ extern void addKeyword (const char *const string, langType language, int value)
}
}
extern int lookupKeyword (const char *const string, langType language)
static int lookupKeywordFull (const char *const string, bool caseSensitive, langType language)
{
const unsigned int index = hashValue (string, language) % TableSize;
hashEntry *entry = getHashTableEntry (index);
int result = -1;
int result = KEYWORD_NONE;
while (entry != NULL)
{
if (language == entry->language && strcmp (string, entry->string) == 0)
if (language == entry->language &&
((caseSensitive && strcmp (string, entry->string) == 0) ||
(!caseSensitive && strcasecmp (string, entry->string) == 0)))
{
result = entry->value;
break;
@ -154,6 +156,16 @@ extern int lookupKeyword (const char *const string, langType language)
return result;
}
extern int lookupKeyword (const char *const string, langType language)
{
return lookupKeywordFull (string, true, language);
}
extern int lookupCaseKeyword (const char *const string, langType language)
{
return lookupKeywordFull (string, false, language);
}
extern void freeKeywordTable (void)
{
if (HashTable != NULL)

View File

@ -14,7 +14,8 @@
*/
#include "general.h" /* must always come first */
#include "parse.h"
#include "types.h"
#include "vstring.h"
#define KEYWORD_NONE -1
@ -23,6 +24,7 @@
*/
extern void addKeyword (const char *const string, langType language, int value);
extern int lookupKeyword (const char *const string, langType language);
extern int lookupCaseKeyword (const char *const string, langType language);
extern void freeKeywordTable (void);
#ifdef DEBUG
extern void printKeywordTable (void);

View File

@ -17,11 +17,11 @@
#define KIND_FILE_DEFAULT 'F'
#define KIND_FILE_DEFAULT_LONG "file"
typedef struct sKindOption {
struct sKindOption {
bool enabled; /* are tags for kind enabled? */
char letter; /* kind letter */
const char* name; /* kind name */
const char* description; /* displayed in --help output */
} kindOption;
};
#endif /* CTAGS_MAIN_KIND_H */

View File

@ -13,8 +13,7 @@
* INCLUDE FILES
*/
#include "general.h" /* must always come first */
#include "ctags.h" /* to define langType */
#include "types.h"
/*
* MACROS

View File

@ -27,7 +27,6 @@
/*
* DATA DECLARATIONS
*/
typedef int langType;
typedef void (*createRegexTag) (const vString* const name);
typedef void (*simpleParser) (void);

21
ctags/main/types.h Normal file
View File

@ -0,0 +1,21 @@
/*
* Copyright (c) 1998-2003, Darren Hiebert
*
* This source code is released for free distribution under the terms of the
* GNU General Public License version 2 or (at your option) any later version.
*
* Private definitions for parsing support.
*/
#ifndef CTAGS_MAIN_TYPES_H
#define CTAGS_MAIN_TYPES_H
typedef int langType;
struct sTagEntryInfo;
typedef struct sTagEntryInfo tagEntryInfo;
struct sKindOption;
typedef struct sKindOption kindOption;
#endif /* CTAGS_MAIN_TYPES_H */