[geany/geany] 4cde63: Sync the beginning of entry.c/h

Jiří Techet git-noreply at xxxxx
Mon Dec 17 21:05:42 UTC 2018


Branch:      refs/heads/master
Author:      Jiří Techet <techet at gmail.com>
Committer:   Jiří Techet <techet at gmail.com>
Date:        Sun, 09 Oct 2016 10:40:08 UTC
Commit:      4cde630dd78282cead151a9afb14bd7056c7f407
             https://github.com/geany/geany/commit/4cde630dd78282cead151a9afb14bd7056c7f407

Log Message:
-----------
Sync the beginning of entry.c/h

Mostly sTagEntryInfo and eTagFile taken from uctags and sync of includes.


Modified Paths:
--------------
    ctags/main/entry.c
    ctags/main/entry.h

Modified: ctags/main/entry.c
57 lines changed, 36 insertions(+), 21 deletions(-)
===================================================================
@@ -22,7 +22,9 @@
 #if defined (HAVE_TYPES_H)
 # include <types.h>       /* to declare off_t on some hosts */
 #endif
-
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>      /* to declare close (), ftruncate (), truncate () */
+#endif
 
 /*  These header files provide for the functions necessary to do file
  *  truncation.
@@ -34,23 +36,25 @@
 # include <io.h>
 #endif
 
-#include "ctags.h"
 #include "debug.h"
 #include "entry.h"
+#include "field.h"
+#include "fmt.h"
+#include "kind.h"
 #include "main.h"
 #include "options.h"
+#include "output.h"
+#include "ptag.h"
 #include "read.h"
+#include "routines.h"
 #include "sort.h"
 #include "strlist.h"
-#include "routines.h"
-#include "output.h"
+#include "xtag.h"
+#include "ctags.h"
 
 /*
 *   MACROS
 */
-#define PSEUDO_TAG_PREFIX       "!_"
-
-#define includeExtensionFlags()         (Option.tagFileFormat > 1)
 
 /*
  *  Portability defines
@@ -76,27 +80,37 @@ typedef struct eTagFile {
 	char *directory;
 	MIO *mio;
 	struct sNumTags { unsigned long added, prev; } numTags;
-	struct sMax { size_t line, tag, file; } max;
-/*	struct sEtags {
-		char *name;
-		MIO *mio;
-		size_t byteCount;
-	} etags;*/
+	struct sMax { size_t line, tag; } max;
 	vString *vLine;
+
+	unsigned int cork;
+	struct sCorkQueue {
+		struct sTagEntryInfo* queue;
+		unsigned int length;
+		unsigned int count;
+	} corkQueue;
+
+	bool patternCacheValid;
 } tagFile;
 
 /*
 *   DATA DEFINITIONS
 */
 
 tagFile TagFile = {
-	NULL,               /* tag file name */
-	NULL,               /* tag file directory (absolute) */
-	NULL,               /* file pointer */
-	{ 0, 0 },           /* numTags */
-	{ 0, 0, 0 },        /* max */
-/*	{ NULL, NULL, 0 },*/  /* etags */
-	NULL                /* vLine */
+    NULL,               /* tag file name */
+    NULL,               /* tag file directory (absolute) */
+    NULL,               /* file pointer */
+    { 0, 0 },           /* numTags */
+    { 0, 0 },        /* max */
+    NULL,                /* vLine */
+    .cork = false,
+    .corkQueue = {
+	    .queue = NULL,
+	    .length = 0,
+	    .count  = 0
+    },
+    .patternCacheValid = false,
 };
 
 static bool TagsToStdout = false;
@@ -118,7 +132,8 @@ extern int ftruncate (int fd, off_t length);
 
 extern void freeTagFileResources (void)
 {
-	eFree (TagFile.directory);
+	if (TagFile.directory != NULL)
+		eFree (TagFile.directory);
 	vStringDelete (TagFile.vLine);
 }
 


Modified: ctags/main/entry.h
69 lines changed, 54 insertions(+), 15 deletions(-)
===================================================================
@@ -15,17 +15,21 @@
 #include "general.h"  /* must always come first */
 #include "types.h"
 
+#include <stdio.h>
+
 #include "field.h"
-#include "mio.h"
-#include "vstring.h"
 #include "kind.h"
+#include "vstring.h"
+#include "xtag.h"
+#include "mio.h"
+#include "nestlevel.h"
 
 /*
 *   MACROS
 */
 #define WHOLE_FILE  -1L
+#define includeExtensionFlags()         (Option.tagFileFormat > 1)
 
-#define NO_PARSER_FIELD -1
 #define CORK_NIL 0
 
 /*
@@ -39,16 +43,25 @@ typedef struct sTagField {
 /*  Information about the current tag candidate.
  */
 struct sTagEntryInfo {
-	bool     lineNumberEntry;   /* pattern or line number entry */
-	unsigned long lineNumber;   /* line number of tag */
-	MIOPos      filePosition;   /* file position of line containing tag */
-	const char* language;       /* language of source file */
-	bool     isFileScope;       /* is tag visible only within source file? */
-	bool     isFileEntry;       /* is this just an entry for a file name? */
-	bool     truncateLine;      /* truncate tag line at end of tag name? */
-	const char *sourceFileName; /* name of source file */
-	const char *name;           /* name of the tag */
-	const kindOption *kind;     /* kind descriptor */
+	unsigned int lineNumberEntry:1;  /* pattern or line number entry */
+	unsigned int isFileScope    :1;  /* is tag visible only within input file? */
+	unsigned int isFileEntry    :1;  /* is this just an entry for a file name? */
+	unsigned int truncateLine   :1;  /* truncate tag line at end of tag name? */
+	unsigned int placeholder    :1;	 /* This is just a part of scope context.
+					    Put this entry to cork queue but
+					    don't print it to tags file. */
+
+	unsigned long lineNumber;     /* line number of tag */
+	const char* pattern;	      /* pattern for locating input line
+				       * (may be NULL if not present) *//*  */
+	unsigned int boundaryInfo;    /* info about nested input stream */
+	MIOPos      filePosition;     /* file position of line containing tag */
+	const char* language;         /* language of input file */
+	const char *inputFileName;   /* name of input file */
+	const char *name;             /* name of the tag */
+	const kindOption *kind;	      /* kind descriptor */
+	unsigned char extra[ ((XTAG_COUNT) / 8) + 1 ];
+
 	struct {
 		const char* access;
 		const char* fileScope;
@@ -57,16 +70,42 @@ struct sTagEntryInfo {
 
 		const kindOption* scopeKind;
 		const char* scopeName;
+		int         scopeIndex;   /* cork queue entry for upper scope tag.
+					     This field is meaningful if the value
+					     is not CORK_NIL and scope[0]  and scope[1] are
+					     NULL. */
+
+		const char* signature;
 
-		const char *signature; /* Argument list for functions and macros with arguments */
 		const char *varType;
-	} extensionFields;          /* list of extension fields*/
+
+#define ROLE_INDEX_DEFINITION -1
+		int roleIndex; /* for role of reference tag */
+
+#ifdef HAVE_LIBXML
+		const char* xpath;
+#endif
+		unsigned long endLine;
+	} extensionFields;  /* list of extension fields*/
+
+#define PRE_ALLOCATED_PARSER_FIELDS 5
+#define NO_PARSER_FIELD -1
+	unsigned int usedParserFields;
+	tagField     parserFields [PRE_ALLOCATED_PARSER_FIELDS];
+
+	/* Following source* fields are used only when #line is found
+	   in input and --line-directive is given in ctags command line. */
+	const char* sourceLanguage;
+	const char *sourceFileName;
+	unsigned long sourceLineNumberDifference;
 };
 
+
 /*
 *   GLOBAL VARIABLES
 */
 
+
 /*
 *   FUNCTION PROTOTYPES
 */



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list