geany  1.38
About: Geany is a text editor (using GTK2) with basic features of an integrated development environment (syntax highlighting, code folding, symbol name auto-completion, ...). F: office T: editor programming GTK+ IDE
  Fossies Dox: geany-1.38.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

geany_c.c File Reference
#include "general.h"
#include <string.h>
#include <setjmp.h>
#include "debug.h"
#include "mio.h"
#include "entry.h"
#include "geany_lcpp.h"
#include "keyword.h"
#include "options.h"
#include "parse.h"
#include "read.h"
#include "routines.h"
#include "xtag.h"
Include dependency graph for geany_c.c:

Go to the source code of this file.

Classes

struct  sKeywordDesc
 
struct  sMemberInfo
 
struct  sTokenInfo
 
struct  sStatementInfo
 
struct  sParenInfo
 

Macros

#define activeToken(st)   ((st)->token [(int) (st)->tokenIndex])
 
#define parentDecl(st)
 
#define isType(token, t)   (bool) ((token)->type == (t))
 
#define insideEnumBody(st)
 
#define isExternCDecl(st, c)
 
#define isOneOf(c, s)   (bool) (strchr ((s), (c)) != NULL)
 

Typedefs

typedef enum eException exception_t
 
typedef int keywordId
 
typedef struct sKeywordDesc keywordDesc
 
typedef enum eTokenType tokenType
 
typedef enum eTagScope tagScope
 
typedef enum eDeclaration declType
 
typedef enum eVisibilityType accessType
 
typedef struct sMemberInfo memberInfo
 
typedef struct sTokenInfo tokenInfo
 
typedef enum eImplementation impType
 
typedef struct sStatementInfo statementInfo
 
typedef enum eTagType tagType
 
typedef struct sParenInfo parenInfo
 

Enumerations

enum  { NumTokens = 12 }
 
enum  eException {
  ExceptionNone , ExceptionEOF , ExceptionFormattingError , ExceptionBraceFormattingError ,
  ExceptionNone , ExceptionEOF , ExceptionFixedFormat , ExceptionLoop ,
  ExceptionNone , ExceptionEOF , ExceptionNone , ExceptionEOF ,
  ExceptionNone , ExceptionEOF
}
 
enum  eKeywordId {
  KEYWORD_article , KEYWORD_book , KEYWORD_booklet , KEYWORD_conference ,
  KEYWORD_inbook , KEYWORD_incollection , KEYWORD_inproceedings , KEYWORD_manual ,
  KEYWORD_mastersthesis , KEYWORD_misc , KEYWORD_phdthesis , KEYWORD_proceedings ,
  KEYWORD_string , KEYWORD_techreport , KEYWORD_unpublished , KEYWORD_ATTRIBUTE ,
  KEYWORD_ABSTRACT , KEYWORD_ALIAS , KEYWORD_BOOLEAN , KEYWORD_BYTE ,
  KEYWORD_BAD_STATE , KEYWORD_BAD_TRANS , KEYWORD_BIND , KEYWORD_BIND_VAR ,
  KEYWORD_BIT , KEYWORD_BODY , KEYWORD_CASE , KEYWORD_CATCH ,
  KEYWORD_CHAR , KEYWORD_CLASS , KEYWORD_CONST , KEYWORD_CONSTRAINT ,
  KEYWORD_COVERAGE_BLOCK , KEYWORD_COVERAGE_DEF , KEYWORD_DEFAULT , KEYWORD_DELEGATE ,
  KEYWORD_DELETE , KEYWORD_DO , KEYWORD_DOUBLE , KEYWORD_ELSE ,
  KEYWORD_ENUM , KEYWORD_EXPLICIT , KEYWORD_EXTERN , KEYWORD_EXTENDS ,
  KEYWORD_EVENT , KEYWORD_FINAL , KEYWORD_FINALLY , KEYWORD_FLOAT ,
  KEYWORD_FOR , KEYWORD_FRIEND , KEYWORD_FUNCTION , KEYWORD_GET ,
  KEYWORD_GOTO , KEYWORD_IF , KEYWORD_IMPLEMENTS , KEYWORD_IMPORT ,
  KEYWORD_IN , KEYWORD_INLINE , KEYWORD_INT , KEYWORD_INOUT ,
  KEYWORD_INPUT , KEYWORD_INTEGER , KEYWORD_INTERFACE , KEYWORD_INTERNAL ,
  KEYWORD_LOCAL , KEYWORD_LONG , KEYWORD_M_BAD_STATE , KEYWORD_M_BAD_TRANS ,
  KEYWORD_M_STATE , KEYWORD_M_TRANS , KEYWORD_MODULE , KEYWORD_MUTABLE ,
  KEYWORD_NAMESPACE , KEYWORD_NEW , KEYWORD_NEWCOV , KEYWORD_NATIVE ,
  KEYWORD_NOEXCEPT , KEYWORD_OPERATOR , KEYWORD_OUT , KEYWORD_OUTPUT ,
  KEYWORD_OVERLOAD , KEYWORD_OVERRIDE , KEYWORD_PACKED , KEYWORD_PORT ,
  KEYWORD_PACKAGE , KEYWORD_PRIVATE , KEYWORD_PROGRAM , KEYWORD_PROTECTED ,
  KEYWORD_PUBLIC , KEYWORD_REF , KEYWORD_REGISTER , KEYWORD_RETURN ,
  KEYWORD_SHADOW , KEYWORD_STATE , KEYWORD_SET , KEYWORD_SHORT ,
  KEYWORD_SIGNAL , KEYWORD_SIGNED , KEYWORD_SIZE_T , KEYWORD_STATIC ,
  KEYWORD_STATIC_ASSERT , KEYWORD_STRING , KEYWORD_STRUCT , KEYWORD_SWITCH ,
  KEYWORD_SYNCHRONIZED , KEYWORD_TASK , KEYWORD_TEMPLATE , KEYWORD_THIS ,
  KEYWORD_THROW , KEYWORD_THROWS , KEYWORD_TRANSIENT , KEYWORD_TRANS ,
  KEYWORD_TRANSITION , KEYWORD_TRY , KEYWORD_TYPEDEF , KEYWORD_TYPENAME ,
  KEYWORD_UINT , KEYWORD_ULONG , KEYWORD_UNION , KEYWORD_UNSIGNED ,
  KEYWORD_USHORT , KEYWORD_USING , KEYWORD_VIRTUAL , KEYWORD_VOID ,
  KEYWORD_VOLATILE , KEYWORD_WCHAR_T , KEYWORD_WEAK , KEYWORD_WHILE ,
  KEYWORD_function , KEYWORD_capital_function , KEYWORD_object , KEYWORD_capital_object ,
  KEYWORD_prototype , KEYWORD_var , KEYWORD_const , KEYWORD_new ,
  KEYWORD_this , KEYWORD_for , KEYWORD_while , KEYWORD_do ,
  KEYWORD_if , KEYWORD_else , KEYWORD_switch , KEYWORD_try ,
  KEYWORD_catch , KEYWORD_finally , KEYWORD_return , KEYWORD_public ,
  KEYWORD_private , KEYWORD_protected , KEYWORD_internal , KEYWORD_final ,
  KEYWORD_native , KEYWORD_dynamic , KEYWORD_class , KEYWORD_interface ,
  KEYWORD_package , KEYWORD_extends , KEYWORD_static , KEYWORD_implements ,
  KEYWORD_get , KEYWORD_set , KEYWORD_import , KEYWORD_id ,
  KEYWORD_name , KEYWORD_script , KEYWORD_cdata , KEYWORD_mx ,
  KEYWORD_fx , KEYWORD_override , KEYWORD_allocatable , KEYWORD_assignment ,
  KEYWORD_associate , KEYWORD_automatic , KEYWORD_bind , KEYWORD_block ,
  KEYWORD_byte , KEYWORD_cexternal , KEYWORD_cglobal , KEYWORD_character ,
  KEYWORD_codimension , KEYWORD_common , KEYWORD_complex , KEYWORD_contains ,
  KEYWORD_data , KEYWORD_dimension , KEYWORD_dllexport , KEYWORD_dllimport ,
  KEYWORD_do , KEYWORD_double , KEYWORD_elemental , KEYWORD_end ,
  KEYWORD_entry , KEYWORD_enum , KEYWORD_enumerator , KEYWORD_equivalence ,
  KEYWORD_extends , KEYWORD_external , KEYWORD_forall , KEYWORD_format ,
  KEYWORD_function , KEYWORD_if , KEYWORD_implicit , KEYWORD_include ,
  KEYWORD_inline , KEYWORD_integer , KEYWORD_intent , KEYWORD_interface ,
  KEYWORD_intrinsic , KEYWORD_kind , KEYWORD_len , KEYWORD_logical ,
  KEYWORD_map , KEYWORD_module , KEYWORD_namelist , KEYWORD_operator ,
  KEYWORD_optional , KEYWORD_parameter , KEYWORD_pascal , KEYWORD_pexternal ,
  KEYWORD_pglobal , KEYWORD_pointer , KEYWORD_precision , KEYWORD_private ,
  KEYWORD_procedure , KEYWORD_program , KEYWORD_public , KEYWORD_pure ,
  KEYWORD_real , KEYWORD_record , KEYWORD_recursive , KEYWORD_save ,
  KEYWORD_select , KEYWORD_sequence , KEYWORD_static , KEYWORD_stdcall ,
  KEYWORD_structure , KEYWORD_subroutine , KEYWORD_target , KEYWORD_then ,
  KEYWORD_type , KEYWORD_union , KEYWORD_use , KEYWORD_value ,
  KEYWORD_virtual , KEYWORD_volatile , KEYWORD_where , KEYWORD_while ,
  KEYWORD_package , KEYWORD_import , KEYWORD_const , KEYWORD_type ,
  KEYWORD_var , KEYWORD_func , KEYWORD_struct , KEYWORD_interface ,
  KEYWORD_map , KEYWORD_chan , KEYWORD_function , KEYWORD_capital_function ,
  KEYWORD_capital_object , KEYWORD_prototype , KEYWORD_var , KEYWORD_let ,
  KEYWORD_const , KEYWORD_new , KEYWORD_this , KEYWORD_for ,
  KEYWORD_while , KEYWORD_do , KEYWORD_if , KEYWORD_else ,
  KEYWORD_switch , KEYWORD_try , KEYWORD_catch , KEYWORD_finally ,
  KEYWORD_sap , KEYWORD_return , KEYWORD_class , KEYWORD_extends ,
  KEYWORD_static , KEYWORD_default , KEYWORD_export , KEYWORD_async ,
  KEYWORD_is , KEYWORD_begin , KEYWORD_body , KEYWORD_cursor ,
  KEYWORD_declare , KEYWORD_end , KEYWORD_function , KEYWORD_if ,
  KEYWORD_else , KEYWORD_elseif , KEYWORD_endif , KEYWORD_loop ,
  KEYWORD_while , KEYWORD_case , KEYWORD_for , KEYWORD_do ,
  KEYWORD_call , KEYWORD_package , KEYWORD_pragma , KEYWORD_procedure ,
  KEYWORD_record , KEYWORD_object , KEYWORD_ref , KEYWORD_rem ,
  KEYWORD_return , KEYWORD_returns , KEYWORD_subtype , KEYWORD_table ,
  KEYWORD_trigger , KEYWORD_type , KEYWORD_index , KEYWORD_event ,
  KEYWORD_publication , KEYWORD_service , KEYWORD_domain , KEYWORD_datatype ,
  KEYWORD_result , KEYWORD_url , KEYWORD_internal , KEYWORD_external ,
  KEYWORD_when , KEYWORD_then , KEYWORD_variable , KEYWORD_exception ,
  KEYWORD_at , KEYWORD_on , KEYWORD_primary , KEYWORD_references ,
  KEYWORD_unique , KEYWORD_check , KEYWORD_constraint , KEYWORD_foreign ,
  KEYWORD_ml_table , KEYWORD_ml_table_lang , KEYWORD_ml_table_dnet , KEYWORD_ml_table_java ,
  KEYWORD_ml_table_chk , KEYWORD_ml_conn , KEYWORD_ml_conn_lang , KEYWORD_ml_conn_dnet ,
  KEYWORD_ml_conn_java , KEYWORD_ml_conn_chk , KEYWORD_ml_prop , KEYWORD_local ,
  KEYWORD_temporary , KEYWORD_drop , KEYWORD_view , KEYWORD_synonym ,
  KEYWORD_handler , KEYWORD_comment , KEYWORD_create , KEYWORD_go
}
 
enum  eTokenType {
  TOKEN_OPEN_CURLY = '{' , TOKEN_UNDEFINED = 256 , TOKEN_KEYWORD , TOKEN_IDENTIFIER ,
  TOKEN_NONE , TOKEN_ARGS , TOKEN_BRACE_CLOSE , TOKEN_BRACE_OPEN ,
  TOKEN_COMMA , TOKEN_DOUBLE_COLON , TOKEN_KEYWORD , TOKEN_NAME ,
  TOKEN_PACKAGE , TOKEN_PAREN_NAME , TOKEN_SEMICOLON , TOKEN_SPEC ,
  TOKEN_STAR , TOKEN_ARRAY , TOKEN_COUNT , TOKEN_UNDEFINED ,
  TOKEN_EOF , TOKEN_CHARACTER , TOKEN_CLOSE_PAREN , TOKEN_SEMICOLON ,
  TOKEN_COLON , TOKEN_COMMA , TOKEN_KEYWORD , TOKEN_OPEN_PAREN ,
  TOKEN_IDENTIFIER , TOKEN_STRING , TOKEN_PERIOD , TOKEN_OPEN_CURLY ,
  TOKEN_CLOSE_CURLY , TOKEN_EQUAL_SIGN , TOKEN_EXCLAMATION , TOKEN_FORWARD_SLASH ,
  TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE , TOKEN_OPEN_MXML , TOKEN_CLOSE_MXML ,
  TOKEN_CLOSE_SGML , TOKEN_LESS_THAN , TOKEN_GREATER_THAN , TOKEN_QUESTION_MARK ,
  TOKEN_OPEN_NAMESPACE , TOKEN_POSTFIX_OPERATOR , TOKEN_STAR , TOKEN_BINARY_OPERATOR ,
  TOKEN_UNDEFINED , TOKEN_COMMA , TOKEN_DOUBLE_COLON , TOKEN_IDENTIFIER ,
  TOKEN_KEYWORD , TOKEN_LABEL , TOKEN_NUMERIC , TOKEN_OPERATOR ,
  TOKEN_PAREN_CLOSE , TOKEN_PAREN_OPEN , TOKEN_SQUARE_CLOSE , TOKEN_SQUARE_OPEN ,
  TOKEN_PERCENT , TOKEN_STATEMENT_END , TOKEN_STRING , TOKEN_NONE = -1 ,
  TOKEN_OTHER , TOKEN_KEYWORD , TOKEN_IDENTIFIER , TOKEN_STRING ,
  TOKEN_OPEN_PAREN , TOKEN_CLOSE_PAREN , TOKEN_OPEN_CURLY , TOKEN_CLOSE_CURLY ,
  TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE , TOKEN_SEMICOLON , TOKEN_STAR ,
  TOKEN_LEFT_ARROW , TOKEN_DOT , TOKEN_COMMA , TOKEN_EOF ,
  TOKEN_UNDEFINED , TOKEN_EOF , TOKEN_CHARACTER , TOKEN_CLOSE_PAREN ,
  TOKEN_SEMICOLON , TOKEN_COLON , TOKEN_COMMA , TOKEN_KEYWORD ,
  TOKEN_OPEN_PAREN , TOKEN_IDENTIFIER , TOKEN_STRING , TOKEN_TEMPLATE_STRING ,
  TOKEN_PERIOD , TOKEN_OPEN_CURLY , TOKEN_CLOSE_CURLY , TOKEN_EQUAL_SIGN ,
  TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE , TOKEN_REGEXP , TOKEN_POSTFIX_OPERATOR ,
  TOKEN_STAR , TOKEN_BINARY_OPERATOR , TOKEN_UNDEFINED , TOKEN_EOF ,
  TOKEN_CHARACTER , TOKEN_CLOSE_PAREN , TOKEN_SEMICOLON , TOKEN_COLON ,
  TOKEN_COMMA , TOKEN_KEYWORD , TOKEN_OPEN_PAREN , TOKEN_OPERATOR ,
  TOKEN_IDENTIFIER , TOKEN_STRING , TOKEN_PERIOD , TOKEN_OPEN_CURLY ,
  TOKEN_CLOSE_CURLY , TOKEN_EQUAL_SIGN , TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE ,
  TOKEN_VARIABLE , TOKEN_AMPERSAND , TOKEN_UNDEFINED , TOKEN_EOF ,
  TOKEN_CLOSE_PAREN , TOKEN_SEMICOLON , TOKEN_COLON , TOKEN_COMMA ,
  TOKEN_KEYWORD , TOKEN_OPEN_PAREN , TOKEN_OPERATOR , TOKEN_IDENTIFIER ,
  TOKEN_STRING , TOKEN_PERIOD , TOKEN_OPEN_CURLY , TOKEN_CLOSE_CURLY ,
  TOKEN_EQUAL_SIGN , TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE , TOKEN_VARIABLE ,
  TOKEN_UNDEFINED , TOKEN_BLOCK_LABEL_BEGIN , TOKEN_BLOCK_LABEL_END , TOKEN_CHARACTER ,
  TOKEN_CLOSE_PAREN , TOKEN_COLON , TOKEN_SEMICOLON , TOKEN_COMMA ,
  TOKEN_IDENTIFIER , TOKEN_KEYWORD , TOKEN_OPEN_PAREN , TOKEN_OPERATOR ,
  TOKEN_OTHER , TOKEN_STRING , TOKEN_PERIOD , TOKEN_OPEN_CURLY ,
  TOKEN_CLOSE_CURLY , TOKEN_OPEN_SQUARE , TOKEN_CLOSE_SQUARE , TOKEN_TILDE ,
  TOKEN_FORWARD_SLASH , TOKEN_EQUAL
}
 
enum  eTagScope {
  SCOPE_GLOBAL , SCOPE_STATIC , SCOPE_EXTERN , SCOPE_FRIEND ,
  SCOPE_TYPEDEF , SCOPE_COUNT
}
 
enum  eDeclaration {
  DECL_NONE , DECL_BASE , DECL_CLASS , DECL_ENUM ,
  DECL_EVENT , DECL_SIGNAL , DECL_FUNCTION , DECL_FUNCTION_TEMPLATE ,
  DECL_IGNORE , DECL_INTERFACE , DECL_MODULE , DECL_NAMESPACE ,
  DECL_NOMANGLE , DECL_PACKAGE , DECL_STRUCT , DECL_UNION ,
  DECL_COUNT
}
 
enum  eVisibilityType {
  ACCESS_UNDEFINED , ACCESS_PRIVATE , ACCESS_PROTECTED , ACCESS_PUBLIC ,
  ACCESS_DEFAULT , ACCESS_COUNT
}
 
enum  eImplementation {
  IMP_DEFAULT , IMP_ABSTRACT , IMP_VIRTUAL , IMP_PURE_VIRTUAL ,
  IMP_COUNT
}
 
enum  eTagType {
  TAG_UNDEFINED , TAG_CLASS , TAG_ENUM , TAG_ENUMERATOR ,
  TAG_FIELD , TAG_FUNCTION , TAG_INTERFACE , TAG_MEMBER ,
  TAG_METHOD , TAG_NAMESPACE , TAG_PACKAGE , TAG_PROTOTYPE ,
  TAG_STRUCT , TAG_TYPEDEF , TAG_UNION , TAG_VARIABLE ,
  TAG_EXTERN_VAR , TAG_MACRO , TAG_EVENT , TAG_SIGNAL ,
  TAG_LOCAL , TAG_PROPERTY , TAG_COUNT , TAG_UNDEFINED = -1 ,
  TAG_BLOCK_DATA , TAG_COMMON_BLOCK , TAG_ENTRY_POINT , TAG_FUNCTION ,
  TAG_INTERFACE , TAG_COMPONENT , TAG_LABEL , TAG_LOCAL ,
  TAG_MODULE , TAG_NAMELIST , TAG_PROGRAM , TAG_SUBROUTINE ,
  TAG_DERIVED_TYPE , TAG_VARIABLE , TAG_ENUM , TAG_ENUMERATOR ,
  TAG_COUNT
}
 
enum  cKind {
  CK_UNDEFINED = -1 , CK_CLASS , CK_DEFINE , CK_ENUMERATOR ,
  CK_FUNCTION , CK_ENUMERATION , CK_MEMBER , CK_NAMESPACE ,
  CK_PROTOTYPE , CK_STRUCT , CK_TYPEDEF , CK_UNION ,
  CK_VARIABLE , CK_EXTERN_VARIABLE
}
 
enum  dKind {
  DK_UNDEFINED = -1 , DK_CLASS , DK_ENUMERATOR , DK_FUNCTION ,
  DK_ENUMERATION , DK_INTERFACE , DK_MEMBER , DK_NAMESPACE ,
  DK_PROTOTYPE , DK_STRUCT , DK_TYPEDEF , DK_UNION ,
  DK_VARIABLE , DK_EXTERN_VARIABLE
}
 
enum  javaKind {
  JK_UNDEFINED = -1 , JK_CLASS , JK_FIELD , JK_INTERFACE ,
  JK_METHOD , JK_PACKAGE , JK_ENUMERATOR , JK_ENUMERATION
}
 
enum  csharpKind {
  CSK_UNDEFINED = -1 , CSK_CLASS , CSK_DEFINE , CSK_ENUMERATOR ,
  CSK_EVENT , CSK_FIELD , CSK_ENUMERATION , CSK_INTERFACE ,
  CSK_LOCAL , CSK_METHOD , CSK_NAMESPACE , CSK_PROPERTY ,
  CSK_STRUCT , CSK_TYPEDEF
}
 
enum  valaKind {
  VK_UNDEFINED = -1 , VK_CLASS , VK_DEFINE , VK_ENUMERATOR ,
  VK_FIELD , VK_ENUMERATION , VK_INTERFACE , VK_LOCAL ,
  VK_METHOD , VK_NAMESPACE , VK_PROPERTY , VK_SIGNAL ,
  VK_STRUCT
}
 

Functions

static void createTags (const unsigned int nestLevel, statementInfo *const parent)
 
static void copyToken (tokenInfo *const dest, const tokenInfo *const src)
 
static const char * getVarType (const statementInfo *const st, const tokenInfo *const token)
 
static void initToken (tokenInfo *const token)
 
static void advanceToken (statementInfo *const st)
 
static tokenInfoprevToken (const statementInfo *const st, unsigned int n)
 
static void setToken (statementInfo *const st, const tokenType type)
 
static void retardToken (statementInfo *const st)
 
static tokenInfonewToken (void)
 
static void deleteToken (tokenInfo *const token)
 
static const char * accessString (const accessType laccess)
 
static const char * implementationString (const impType imp)
 
static bool isDataTypeKeyword (const tokenInfo *const token)
 
static bool isContextualKeyword (const tokenInfo *const token)
 
static bool isContextualStatement (const statementInfo *const st)
 
static bool isMember (const statementInfo *const st)
 
static void initMemberInfo (statementInfo *const st)
 
static void reinitStatement (statementInfo *const st, const bool partial)
 
static void reinitStatementWithToken (statementInfo *const st, tokenInfo *token, const bool partial)
 
static void initStatement (statementInfo *const st, statementInfo *const parent)
 
static cKind cTagKind (const tagType type)
 
static csharpKind csharpTagKind (const tagType type)
 
static dKind dTagKind (const tagType type)
 
static valaKind valaTagKind (const tagType type)
 
static javaKind javaTagKind (const tagType type)
 
static int kindIndexForType (const tagType type)
 
static tagType declToTagType (const declType declaration)
 
static const char * accessField (const statementInfo *const st)
 
static void addOtherFields (tagEntryInfo *const tag, const tagType type, const tokenInfo *const nameToken, const statementInfo *const st, vString *const scope)
 
static void addContextSeparator (vString *const scope)
 
static void findScopeHierarchy (vString *const string, const statementInfo *const st)
 
static void makeExtraTagEntry (const tagType type, tagEntryInfo *const e, vString *const scope)
 
static void makeTag (const tokenInfo *const token, const statementInfo *const st, bool isFileScope, const tagType type)
 
static bool isValidTypeSpecifier (const declType declaration)
 
static void qualifyEnumeratorTag (const statementInfo *const st, const tokenInfo *const nameToken)
 
static void qualifyFunctionTag (const statementInfo *const st, const tokenInfo *const nameToken)
 
static void qualifyFunctionDeclTag (const statementInfo *const st, const tokenInfo *const nameToken)
 
static void qualifyCompoundTag (const statementInfo *const st, const tokenInfo *const nameToken)
 
static void qualifyBlockTag (statementInfo *const st, const tokenInfo *const nameToken)
 
static void qualifyVariableTag (const statementInfo *const st, const tokenInfo *const nameToken)
 
static int skipToOneOf (const char *const chars)
 
static int skipToNonWhite (void)
 
static void skipToFormattedBraceMatch (void)
 
static void skipToMatch (const char *const pair)
 
static void skipParens (void)
 
static void skipBraces (void)
 
static keywordId analyzeKeyword (const char *const name)
 
static void analyzeIdentifier (tokenInfo *const token)
 
static void readIdentifier (tokenInfo *const token, const int firstChar)
 
static void readPackageName (tokenInfo *const token, const int firstChar)
 
static void readPackageOrNamespace (statementInfo *const st, const declType declaration)
 
static void readPackage (statementInfo *const st)
 
static void processName (statementInfo *const st)
 
static void readOperator (statementInfo *const st)
 
static void setAccess (statementInfo *const st, const accessType laccess)
 
static void discardTypeList (tokenInfo *const token)
 
static void addParentClass (statementInfo *const st, tokenInfo *const token)
 
static void readParents (statementInfo *const st, const int qualifier)
 
static void checkIsClassEnum (statementInfo *const st, const declType decl)
 
static void processToken (tokenInfo *const token, statementInfo *const st)
 
static void restartStatement (statementInfo *const st)
 
static void skipMemIntializerList (tokenInfo *const token)
 
static void skipMacro (statementInfo *const st)
 
static bool isDPostArgumentToken (tokenInfo *const token)
 
static bool skipPostArgumentStuff (statementInfo *const st, parenInfo *const info)
 
static void skipJavaThrows (statementInfo *const st)
 
static void skipValaPostParens (statementInfo *const st)
 
static void analyzePostParens (statementInfo *const st, parenInfo *const info)
 
static int parseParens (statementInfo *const st, parenInfo *const info)
 
static void initParenInfo (parenInfo *const info)
 
static void analyzeParens (statementInfo *const st)
 
static void addContext (statementInfo *const st, const tokenInfo *const token)
 
static bool inheritingDeclaration (declType decl)
 
static void processColon (statementInfo *const st)
 
static int skipInitializer (statementInfo *const st)
 
static void processInitializer (statementInfo *const st)
 
static void parseIdentifier (statementInfo *const st, const int c)
 
static void parseGeneralToken (statementInfo *const st, const int c)
 
static void nextToken (statementInfo *const st)
 
static statementInfonewStatement (statementInfo *const parent)
 
static void deleteStatement (void)
 
static void deleteAllStatements (void)
 
static bool isStatementEnd (const statementInfo *const st)
 
static void checkStatementEnd (statementInfo *const st)
 
static void nest (statementInfo *const st, const unsigned int nestLevel)
 
static void tagCheck (statementInfo *const st)
 
static rescanReason findCTags (const unsigned int passCount)
 
static void buildKeywordHash (const langType language, unsigned int idx)
 
static void initializeCParser (const langType language)
 
static void initializeCppParser (const langType language)
 
static void initializeJavaParser (const langType language)
 
static void initializeDParser (const langType language)
 
static void initializeGLSLParser (const langType language)
 
static void initializeFeriteParser (const langType language)
 
static void initializeCsharpParser (const langType language)
 
static void initializeValaParser (const langType language)
 
parserDefinitionCParser (void)
 
parserDefinitionCppParser (void)
 
parserDefinitionJavaParser (void)
 
parserDefinitionDParser (void)
 
parserDefinitionGLSLParser (void)
 
parserDefinitionFeriteParser (void)
 
parserDefinitionCsharpParser (void)
 
parserDefinitionValaParser (void)
 

Variables

static jmp_buf Exception
 
static langType Lang_c
 
static langType Lang_cpp
 
static langType Lang_csharp
 
static langType Lang_java
 
static langType Lang_d
 
static langType Lang_glsl
 
static langType Lang_ferite
 
static langType Lang_vala
 
static kindDefinition CKinds []
 
static kindDefinition DKinds []
 
static kindDefinition JavaKinds []
 
static kindDefinition CsharpKinds []
 
static kindDefinition ValaKinds []
 
static const keywordDesc KeywordTable []
 
static unsigned int contextual_fake_count = 0
 
static statementInfoCurrentStatement = NULL
 

Macro Definition Documentation

◆ activeToken

#define activeToken (   st)    ((st)->token [(int) (st)->tokenIndex])

Definition at line 34 of file geany_c.c.

◆ insideEnumBody

#define insideEnumBody (   st)
Value:
(bool) ((st)->parent == NULL ? false : \
((st)->parent->declaration == DECL_ENUM))
@ DECL_ENUM
Definition: geany_c.c:146
#define NULL
Definition: rbtree.h:150

Definition at line 38 of file geany_c.c.

◆ isExternCDecl

#define isExternCDecl (   st,
 
)
Value:
(bool) ((c) == STRING_SYMBOL && \
! (st)->haveQualifyingName && \
(st)->scope == SCOPE_EXTERN)
@ SCOPE_EXTERN
Definition: geany_c.c:135
@ STRING_SYMBOL
Definition: read.h:47

Definition at line 40 of file geany_c.c.

◆ isOneOf

#define isOneOf (   c,
 
)    (bool) (strchr ((s), (c)) != NULL)

Definition at line 44 of file geany_c.c.

◆ isType

#define isType (   token,
 
)    (bool) ((token)->type == (t))

Definition at line 37 of file geany_c.c.

◆ parentDecl

#define parentDecl (   st)
Value:
((st)->parent == NULL ? \
DECL_NONE : (st)->parent->declaration)
@ DECL_NONE
Definition: geany_c.c:143

Definition at line 35 of file geany_c.c.

Typedef Documentation

◆ accessType

◆ declType

typedef enum eDeclaration declType

◆ exception_t

typedef enum eException exception_t

◆ impType

typedef enum eImplementation impType

◆ keywordDesc

typedef struct sKeywordDesc keywordDesc

◆ keywordId

typedef int keywordId

Definition at line 96 of file geany_c.c.

◆ memberInfo

typedef struct sMemberInfo memberInfo

◆ parenInfo

typedef struct sParenInfo parenInfo

◆ statementInfo

typedef struct sStatementInfo statementInfo

◆ tagScope

typedef enum eTagScope tagScope

◆ tagType

typedef enum eTagType tagType

◆ tokenInfo

typedef struct sTokenInfo tokenInfo

◆ tokenType

typedef enum eTokenType tokenType

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NumTokens 

Definition at line 50 of file geany_c.c.

◆ cKind

enum cKind
Enumerator
CK_UNDEFINED 
CK_CLASS 
CK_DEFINE 
CK_ENUMERATOR 
CK_FUNCTION 
CK_ENUMERATION 
CK_MEMBER 
CK_NAMESPACE 
CK_PROTOTYPE 
CK_STRUCT 
CK_TYPEDEF 
CK_UNION 
CK_VARIABLE 
CK_EXTERN_VARIABLE 

Definition at line 275 of file geany_c.c.

◆ csharpKind

enum csharpKind
Enumerator
CSK_UNDEFINED 
CSK_CLASS 
CSK_DEFINE 
CSK_ENUMERATOR 
CSK_EVENT 
CSK_FIELD 
CSK_ENUMERATION 
CSK_INTERFACE 
CSK_LOCAL 
CSK_METHOD 
CSK_NAMESPACE 
CSK_PROPERTY 
CSK_STRUCT 
CSK_TYPEDEF 

Definition at line 344 of file geany_c.c.

◆ dKind

enum dKind
Enumerator
DK_UNDEFINED 
DK_CLASS 
DK_ENUMERATOR 
DK_FUNCTION 
DK_ENUMERATION 
DK_INTERFACE 
DK_MEMBER 
DK_NAMESPACE 
DK_PROTOTYPE 
DK_STRUCT 
DK_TYPEDEF 
DK_UNION 
DK_VARIABLE 
DK_EXTERN_VARIABLE 

Definition at line 301 of file geany_c.c.

◆ eDeclaration

Enumerator
DECL_NONE 
DECL_BASE 
DECL_CLASS 
DECL_ENUM 
DECL_EVENT 
DECL_SIGNAL 
DECL_FUNCTION 
DECL_FUNCTION_TEMPLATE 
DECL_IGNORE 
DECL_INTERFACE 
DECL_MODULE 
DECL_NAMESPACE 
DECL_NOMANGLE 
DECL_PACKAGE 
DECL_STRUCT 
DECL_UNION 
DECL_COUNT 

Definition at line 141 of file geany_c.c.

◆ eException

enum eException
Enumerator
ExceptionNone 
ExceptionEOF 
ExceptionFormattingError 
ExceptionBraceFormattingError 
ExceptionNone 
ExceptionEOF 
ExceptionFixedFormat 
ExceptionLoop 
ExceptionNone 
ExceptionEOF 
ExceptionNone 
ExceptionEOF 
ExceptionNone 
ExceptionEOF 

Definition at line 52 of file geany_c.c.

◆ eImplementation

Enumerator
IMP_DEFAULT 
IMP_ABSTRACT 
IMP_VIRTUAL 
IMP_PURE_VIRTUAL 
IMP_COUNT 

Definition at line 189 of file geany_c.c.

◆ eKeywordId

enum eKeywordId
Enumerator
KEYWORD_article 
KEYWORD_book 
KEYWORD_booklet 
KEYWORD_conference 
KEYWORD_inbook 
KEYWORD_incollection 
KEYWORD_inproceedings 
KEYWORD_manual 
KEYWORD_mastersthesis 
KEYWORD_misc 
KEYWORD_phdthesis 
KEYWORD_proceedings 
KEYWORD_string 
KEYWORD_techreport 
KEYWORD_unpublished 
KEYWORD_ATTRIBUTE 
KEYWORD_ABSTRACT 
KEYWORD_ALIAS 
KEYWORD_BOOLEAN 
KEYWORD_BYTE 
KEYWORD_BAD_STATE 
KEYWORD_BAD_TRANS 
KEYWORD_BIND 
KEYWORD_BIND_VAR 
KEYWORD_BIT 
KEYWORD_BODY 
KEYWORD_CASE 
KEYWORD_CATCH 
KEYWORD_CHAR 
KEYWORD_CLASS 
KEYWORD_CONST 
KEYWORD_CONSTRAINT 
KEYWORD_COVERAGE_BLOCK 
KEYWORD_COVERAGE_DEF 
KEYWORD_DEFAULT 
KEYWORD_DELEGATE 
KEYWORD_DELETE 
KEYWORD_DO 
KEYWORD_DOUBLE 
KEYWORD_ELSE 
KEYWORD_ENUM 
KEYWORD_EXPLICIT 
KEYWORD_EXTERN 
KEYWORD_EXTENDS 
KEYWORD_EVENT 
KEYWORD_FINAL 
KEYWORD_FINALLY 
KEYWORD_FLOAT 
KEYWORD_FOR 
KEYWORD_FRIEND 
KEYWORD_FUNCTION 
KEYWORD_GET 
KEYWORD_GOTO 
KEYWORD_IF 
KEYWORD_IMPLEMENTS 
KEYWORD_IMPORT 
KEYWORD_IN 
KEYWORD_INLINE 
KEYWORD_INT 
KEYWORD_INOUT 
KEYWORD_INPUT 
KEYWORD_INTEGER 
KEYWORD_INTERFACE 
KEYWORD_INTERNAL 
KEYWORD_LOCAL 
KEYWORD_LONG 
KEYWORD_M_BAD_STATE 
KEYWORD_M_BAD_TRANS 
KEYWORD_M_STATE 
KEYWORD_M_TRANS 
KEYWORD_MODULE 
KEYWORD_MUTABLE 
KEYWORD_NAMESPACE 
KEYWORD_NEW 
KEYWORD_NEWCOV 
KEYWORD_NATIVE 
KEYWORD_NOEXCEPT 
KEYWORD_OPERATOR 
KEYWORD_OUT 
KEYWORD_OUTPUT 
KEYWORD_OVERLOAD 
KEYWORD_OVERRIDE 
KEYWORD_PACKED 
KEYWORD_PORT 
KEYWORD_PACKAGE 
KEYWORD_PRIVATE 
KEYWORD_PROGRAM 
KEYWORD_PROTECTED 
KEYWORD_PUBLIC 
KEYWORD_REF 
KEYWORD_REGISTER 
KEYWORD_RETURN 
KEYWORD_SHADOW 
KEYWORD_STATE 
KEYWORD_SET 
KEYWORD_SHORT 
KEYWORD_SIGNAL 
KEYWORD_SIGNED 
KEYWORD_SIZE_T 
KEYWORD_STATIC 
KEYWORD_STATIC_ASSERT 
KEYWORD_STRING 
KEYWORD_STRUCT 
KEYWORD_SWITCH 
KEYWORD_SYNCHRONIZED 
KEYWORD_TASK 
KEYWORD_TEMPLATE 
KEYWORD_THIS 
KEYWORD_THROW 
KEYWORD_THROWS 
KEYWORD_TRANSIENT 
KEYWORD_TRANS 
KEYWORD_TRANSITION 
KEYWORD_TRY 
KEYWORD_TYPEDEF 
KEYWORD_TYPENAME 
KEYWORD_UINT 
KEYWORD_ULONG 
KEYWORD_UNION 
KEYWORD_UNSIGNED 
KEYWORD_USHORT 
KEYWORD_USING 
KEYWORD_VIRTUAL 
KEYWORD_VOID 
KEYWORD_VOLATILE 
KEYWORD_WCHAR_T 
KEYWORD_WEAK 
KEYWORD_WHILE 
KEYWORD_function 
KEYWORD_capital_function 
KEYWORD_object 
KEYWORD_capital_object 
KEYWORD_prototype 
KEYWORD_var 
KEYWORD_const 
KEYWORD_new 
KEYWORD_this 
KEYWORD_for 
KEYWORD_while 
KEYWORD_do 
KEYWORD_if 
KEYWORD_else 
KEYWORD_switch 
KEYWORD_try 
KEYWORD_catch 
KEYWORD_finally 
KEYWORD_return 
KEYWORD_public 
KEYWORD_private 
KEYWORD_protected 
KEYWORD_internal 
KEYWORD_final 
KEYWORD_native 
KEYWORD_dynamic 
KEYWORD_class 
KEYWORD_interface 
KEYWORD_package 
KEYWORD_extends 
KEYWORD_static 
KEYWORD_implements 
KEYWORD_get 
KEYWORD_set 
KEYWORD_import 
KEYWORD_id 
KEYWORD_name 
KEYWORD_script 
KEYWORD_cdata 
KEYWORD_mx 
KEYWORD_fx 
KEYWORD_override 
KEYWORD_allocatable 
KEYWORD_assignment 
KEYWORD_associate 
KEYWORD_automatic 
KEYWORD_bind 
KEYWORD_block 
KEYWORD_byte 
KEYWORD_cexternal 
KEYWORD_cglobal 
KEYWORD_character 
KEYWORD_codimension 
KEYWORD_common 
KEYWORD_complex 
KEYWORD_contains 
KEYWORD_data 
KEYWORD_dimension 
KEYWORD_dllexport 
KEYWORD_dllimport 
KEYWORD_do 
KEYWORD_double 
KEYWORD_elemental 
KEYWORD_end 
KEYWORD_entry 
KEYWORD_enum 
KEYWORD_enumerator 
KEYWORD_equivalence 
KEYWORD_extends 
KEYWORD_external 
KEYWORD_forall 
KEYWORD_format 
KEYWORD_function 
KEYWORD_if 
KEYWORD_implicit 
KEYWORD_include 
KEYWORD_inline 
KEYWORD_integer 
KEYWORD_intent 
KEYWORD_interface 
KEYWORD_intrinsic 
KEYWORD_kind 
KEYWORD_len 
KEYWORD_logical 
KEYWORD_map 
KEYWORD_module 
KEYWORD_namelist 
KEYWORD_operator 
KEYWORD_optional 
KEYWORD_parameter 
KEYWORD_pascal 
KEYWORD_pexternal 
KEYWORD_pglobal 
KEYWORD_pointer 
KEYWORD_precision 
KEYWORD_private 
KEYWORD_procedure 
KEYWORD_program 
KEYWORD_public 
KEYWORD_pure 
KEYWORD_real 
KEYWORD_record 
KEYWORD_recursive 
KEYWORD_save 
KEYWORD_select 
KEYWORD_sequence 
KEYWORD_static 
KEYWORD_stdcall 
KEYWORD_structure 
KEYWORD_subroutine 
KEYWORD_target 
KEYWORD_then 
KEYWORD_type 
KEYWORD_union 
KEYWORD_use 
KEYWORD_value 
KEYWORD_virtual 
KEYWORD_volatile 
KEYWORD_where 
KEYWORD_while 
KEYWORD_package 
KEYWORD_import 
KEYWORD_const 
KEYWORD_type 
KEYWORD_var 
KEYWORD_func 
KEYWORD_struct 
KEYWORD_interface 
KEYWORD_map 
KEYWORD_chan 
KEYWORD_function 
KEYWORD_capital_function 
KEYWORD_capital_object 
KEYWORD_prototype 
KEYWORD_var 
KEYWORD_let 
KEYWORD_const 
KEYWORD_new 
KEYWORD_this 
KEYWORD_for 
KEYWORD_while 
KEYWORD_do 
KEYWORD_if 
KEYWORD_else 
KEYWORD_switch 
KEYWORD_try 
KEYWORD_catch 
KEYWORD_finally 
KEYWORD_sap 
KEYWORD_return 
KEYWORD_class 
KEYWORD_extends 
KEYWORD_static 
KEYWORD_default 
KEYWORD_export 
KEYWORD_async 
KEYWORD_is 
KEYWORD_begin 
KEYWORD_body 
KEYWORD_cursor 
KEYWORD_declare 
KEYWORD_end 
KEYWORD_function 
KEYWORD_if 
KEYWORD_else 
KEYWORD_elseif 
KEYWORD_endif 
KEYWORD_loop 
KEYWORD_while 
KEYWORD_case 
KEYWORD_for 
KEYWORD_do 
KEYWORD_call 
KEYWORD_package 
KEYWORD_pragma 
KEYWORD_procedure 
KEYWORD_record 
KEYWORD_object 
KEYWORD_ref 
KEYWORD_rem 
KEYWORD_return 
KEYWORD_returns 
KEYWORD_subtype 
KEYWORD_table 
KEYWORD_trigger 
KEYWORD_type 
KEYWORD_index 
KEYWORD_event 
KEYWORD_publication 
KEYWORD_service 
KEYWORD_domain 
KEYWORD_datatype 
KEYWORD_result 
KEYWORD_url 
KEYWORD_internal 
KEYWORD_external 
KEYWORD_when 
KEYWORD_then 
KEYWORD_variable 
KEYWORD_exception 
KEYWORD_at 
KEYWORD_on 
KEYWORD_primary 
KEYWORD_references 
KEYWORD_unique 
KEYWORD_check 
KEYWORD_constraint 
KEYWORD_foreign 
KEYWORD_ml_table 
KEYWORD_ml_table_lang 
KEYWORD_ml_table_dnet 
KEYWORD_ml_table_java 
KEYWORD_ml_table_chk 
KEYWORD_ml_conn 
KEYWORD_ml_conn_lang 
KEYWORD_ml_conn_dnet 
KEYWORD_ml_conn_java 
KEYWORD_ml_conn_chk 
KEYWORD_ml_prop 
KEYWORD_local 
KEYWORD_temporary 
KEYWORD_drop 
KEYWORD_view 
KEYWORD_synonym 
KEYWORD_handler 
KEYWORD_comment 
KEYWORD_create 
KEYWORD_go 

Definition at line 60 of file geany_c.c.

◆ eTagScope

enum eTagScope
Enumerator
SCOPE_GLOBAL 
SCOPE_STATIC 
SCOPE_EXTERN 
SCOPE_FRIEND 
SCOPE_TYPEDEF 
SCOPE_COUNT 

Definition at line 131 of file geany_c.c.

◆ eTagType

enum eTagType
Enumerator
TAG_UNDEFINED 
TAG_CLASS 
TAG_ENUM 
TAG_ENUMERATOR 
TAG_FIELD 
TAG_FUNCTION 
TAG_INTERFACE 
TAG_MEMBER 
TAG_METHOD 
TAG_NAMESPACE 
TAG_PACKAGE 
TAG_PROTOTYPE 
TAG_STRUCT 
TAG_TYPEDEF 
TAG_UNION 
TAG_VARIABLE 
TAG_EXTERN_VAR 
TAG_MACRO 
TAG_EVENT 
TAG_SIGNAL 
TAG_LOCAL 
TAG_PROPERTY 
TAG_COUNT 
TAG_UNDEFINED 
TAG_BLOCK_DATA 
TAG_COMMON_BLOCK 
TAG_ENTRY_POINT 
TAG_FUNCTION 
TAG_INTERFACE 
TAG_COMPONENT 
TAG_LABEL 
TAG_LOCAL 
TAG_MODULE 
TAG_NAMELIST 
TAG_PROGRAM 
TAG_SUBROUTINE 
TAG_DERIVED_TYPE 
TAG_VARIABLE 
TAG_ENUM 
TAG_ENUMERATOR 
TAG_COUNT 

Definition at line 222 of file geany_c.c.

◆ eTokenType

enum eTokenType
Enumerator
TOKEN_OPEN_CURLY 
TOKEN_UNDEFINED 
TOKEN_KEYWORD 
TOKEN_IDENTIFIER 
TOKEN_NONE 
TOKEN_ARGS 
TOKEN_BRACE_CLOSE 
TOKEN_BRACE_OPEN 
TOKEN_COMMA 
TOKEN_DOUBLE_COLON 
TOKEN_KEYWORD 
TOKEN_NAME 
TOKEN_PACKAGE 
TOKEN_PAREN_NAME 
TOKEN_SEMICOLON 
TOKEN_SPEC 
TOKEN_STAR 
TOKEN_ARRAY 
TOKEN_COUNT 
TOKEN_UNDEFINED 
TOKEN_EOF 
TOKEN_CHARACTER 
TOKEN_CLOSE_PAREN 
TOKEN_SEMICOLON 
TOKEN_COLON 
TOKEN_COMMA 
TOKEN_KEYWORD 
TOKEN_OPEN_PAREN 
TOKEN_IDENTIFIER 
TOKEN_STRING 
TOKEN_PERIOD 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_EQUAL_SIGN 
TOKEN_EXCLAMATION 
TOKEN_FORWARD_SLASH 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_OPEN_MXML 
TOKEN_CLOSE_MXML 
TOKEN_CLOSE_SGML 
TOKEN_LESS_THAN 
TOKEN_GREATER_THAN 
TOKEN_QUESTION_MARK 
TOKEN_OPEN_NAMESPACE 
TOKEN_POSTFIX_OPERATOR 
TOKEN_STAR 
TOKEN_BINARY_OPERATOR 
TOKEN_UNDEFINED 
TOKEN_COMMA 
TOKEN_DOUBLE_COLON 
TOKEN_IDENTIFIER 
TOKEN_KEYWORD 
TOKEN_LABEL 
TOKEN_NUMERIC 
TOKEN_OPERATOR 
TOKEN_PAREN_CLOSE 
TOKEN_PAREN_OPEN 
TOKEN_SQUARE_CLOSE 
TOKEN_SQUARE_OPEN 
TOKEN_PERCENT 
TOKEN_STATEMENT_END 
TOKEN_STRING 
TOKEN_NONE 
TOKEN_OTHER 
TOKEN_KEYWORD 
TOKEN_IDENTIFIER 
TOKEN_STRING 
TOKEN_OPEN_PAREN 
TOKEN_CLOSE_PAREN 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_SEMICOLON 
TOKEN_STAR 
TOKEN_LEFT_ARROW 
TOKEN_DOT 
TOKEN_COMMA 
TOKEN_EOF 
TOKEN_UNDEFINED 
TOKEN_EOF 
TOKEN_CHARACTER 
TOKEN_CLOSE_PAREN 
TOKEN_SEMICOLON 
TOKEN_COLON 
TOKEN_COMMA 
TOKEN_KEYWORD 
TOKEN_OPEN_PAREN 
TOKEN_IDENTIFIER 
TOKEN_STRING 
TOKEN_TEMPLATE_STRING 
TOKEN_PERIOD 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_EQUAL_SIGN 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_REGEXP 
TOKEN_POSTFIX_OPERATOR 
TOKEN_STAR 
TOKEN_BINARY_OPERATOR 
TOKEN_UNDEFINED 
TOKEN_EOF 
TOKEN_CHARACTER 
TOKEN_CLOSE_PAREN 
TOKEN_SEMICOLON 
TOKEN_COLON 
TOKEN_COMMA 
TOKEN_KEYWORD 
TOKEN_OPEN_PAREN 
TOKEN_OPERATOR 
TOKEN_IDENTIFIER 
TOKEN_STRING 
TOKEN_PERIOD 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_EQUAL_SIGN 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_VARIABLE 
TOKEN_AMPERSAND 
TOKEN_UNDEFINED 
TOKEN_EOF 
TOKEN_CLOSE_PAREN 
TOKEN_SEMICOLON 
TOKEN_COLON 
TOKEN_COMMA 
TOKEN_KEYWORD 
TOKEN_OPEN_PAREN 
TOKEN_OPERATOR 
TOKEN_IDENTIFIER 
TOKEN_STRING 
TOKEN_PERIOD 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_EQUAL_SIGN 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_VARIABLE 
TOKEN_UNDEFINED 
TOKEN_BLOCK_LABEL_BEGIN 
TOKEN_BLOCK_LABEL_END 
TOKEN_CHARACTER 
TOKEN_CLOSE_PAREN 
TOKEN_COLON 
TOKEN_SEMICOLON 
TOKEN_COMMA 
TOKEN_IDENTIFIER 
TOKEN_KEYWORD 
TOKEN_OPEN_PAREN 
TOKEN_OPERATOR 
TOKEN_OTHER 
TOKEN_STRING 
TOKEN_PERIOD 
TOKEN_OPEN_CURLY 
TOKEN_CLOSE_CURLY 
TOKEN_OPEN_SQUARE 
TOKEN_CLOSE_SQUARE 
TOKEN_TILDE 
TOKEN_FORWARD_SLASH 
TOKEN_EQUAL 

Definition at line 110 of file geany_c.c.

◆ eVisibilityType

Enumerator
ACCESS_UNDEFINED 
ACCESS_PRIVATE 
ACCESS_PROTECTED 
ACCESS_PUBLIC 
ACCESS_DEFAULT 
ACCESS_COUNT 

Definition at line 162 of file geany_c.c.

◆ javaKind

enum javaKind
Enumerator
JK_UNDEFINED 
JK_CLASS 
JK_FIELD 
JK_INTERFACE 
JK_METHOD 
JK_PACKAGE 
JK_ENUMERATOR 
JK_ENUMERATION 

Definition at line 327 of file geany_c.c.

◆ valaKind

enum valaKind
Enumerator
VK_UNDEFINED 
VK_CLASS 
VK_DEFINE 
VK_ENUMERATOR 
VK_FIELD 
VK_ENUMERATION 
VK_INTERFACE 
VK_LOCAL 
VK_METHOD 
VK_NAMESPACE 
VK_PROPERTY 
VK_SIGNAL 
VK_STRUCT 

Definition at line 368 of file geany_c.c.

Function Documentation

◆ accessField()

static const char * accessField ( const statementInfo *const  st)
static

◆ accessString()

static const char * accessString ( const accessType  laccess)
static

Definition at line 652 of file geany_c.c.

References ACCESS_COUNT, ARRAY_SIZE, and Assert.

Referenced by accessField().

◆ addContext()

static void addContext ( statementInfo *const  st,
const tokenInfo *const  token 
)
static

◆ addContextSeparator()

static void addContextSeparator ( vString *const  scope)
static

◆ addOtherFields()

◆ addParentClass()

static void addParentClass ( statementInfo *const  st,
tokenInfo *const  token 
)
static

Definition at line 1958 of file geany_c.c.

References sStatementInfo::parentClasses, vStringCat(), vStringLength, and vStringPut().

Referenced by readParents().

◆ advanceToken()

static void advanceToken ( statementInfo *const  st)
static

◆ analyzeIdentifier()

◆ analyzeKeyword()

static keywordId analyzeKeyword ( const char *const  name)
static

◆ analyzeParens()

◆ analyzePostParens()

◆ buildKeywordHash()

◆ checkIsClassEnum()

static void checkIsClassEnum ( statementInfo *const  st,
const declType  decl 
)
static

Definition at line 2003 of file geany_c.c.

References DECL_ENUM, sStatementInfo::declaration, isInputLanguage(), and Lang_cpp.

Referenced by processToken().

◆ checkStatementEnd()

static void checkStatementEnd ( statementInfo *const  st)
static

◆ copyToken()

static void copyToken ( tokenInfo *const  dest,
const tokenInfo *const  src 
)
static

◆ CParser()

◆ CppParser()

◆ createTags()

◆ CsharpParser()

◆ csharpTagKind()

◆ cTagKind()

◆ declToTagType()

◆ deleteAllStatements()

static void deleteAllStatements ( void  )
static

Definition at line 2871 of file geany_c.c.

References CurrentStatement, deleteStatement(), and NULL.

Referenced by findCTags().

◆ deleteStatement()

◆ deleteToken()

static void deleteToken ( tokenInfo *const  token)
static

◆ discardTypeList()

static void discardTypeList ( tokenInfo *const  token)
static

Definition at line 1945 of file geany_c.c.

References cppIsident1, cppUngetc(), readIdentifier(), and skipToNonWhite().

Referenced by processToken().

◆ DParser()

◆ dTagKind()

◆ FeriteParser()

◆ findCTags()

◆ findScopeHierarchy()

◆ getVarType()

◆ GLSLParser()

◆ implementationString()

static const char * implementationString ( const impType  imp)
static

Definition at line 662 of file geany_c.c.

References ARRAY_SIZE, Assert, and IMP_COUNT.

Referenced by addOtherFields().

◆ inheritingDeclaration()

static bool inheritingDeclaration ( declType  decl)
static

Definition at line 2637 of file geany_c.c.

References DECL_CLASS, DECL_ENUM, DECL_INTERFACE, DECL_STRUCT, isInputLanguage(), Lang_cpp, Lang_csharp, and Lang_d.

Referenced by processColon().

◆ initializeCParser()

static void initializeCParser ( const langType  language)
static

Definition at line 3168 of file geany_c.c.

References buildKeywordHash(), and Lang_c.

Referenced by CParser().

◆ initializeCppParser()

static void initializeCppParser ( const langType  language)
static

Definition at line 3174 of file geany_c.c.

References buildKeywordHash(), and Lang_cpp.

Referenced by CppParser().

◆ initializeCsharpParser()

static void initializeCsharpParser ( const langType  language)
static

Definition at line 3220 of file geany_c.c.

References buildKeywordHash(), and Lang_csharp.

Referenced by CsharpParser().

◆ initializeDParser()

static void initializeDParser ( const langType  language)
static

◆ initializeFeriteParser()

static void initializeFeriteParser ( const langType  language)
static

Definition at line 3214 of file geany_c.c.

References buildKeywordHash(), and Lang_ferite.

Referenced by FeriteParser().

◆ initializeGLSLParser()

static void initializeGLSLParser ( const langType  language)
static

Definition at line 3208 of file geany_c.c.

References buildKeywordHash(), and Lang_glsl.

Referenced by GLSLParser().

◆ initializeJavaParser()

static void initializeJavaParser ( const langType  language)
static

Definition at line 3180 of file geany_c.c.

References buildKeywordHash(), and Lang_java.

Referenced by JavaParser().

◆ initializeValaParser()

static void initializeValaParser ( const langType  language)
static

Definition at line 3226 of file geany_c.c.

References addKeyword(), buildKeywordHash(), KEYWORD_ATTRIBUTE, KEYWORD_ENUM, and Lang_vala.

Referenced by ValaParser().

◆ initMemberInfo()

◆ initParenInfo()

◆ initStatement()

static void initStatement ( statementInfo *const  st,
statementInfo *const  parent 
)
static

◆ initToken()

◆ isContextualKeyword()

static bool isContextualKeyword ( const tokenInfo *const  token)
static

◆ isContextualStatement()

static bool isContextualStatement ( const statementInfo *const  st)
static

◆ isDataTypeKeyword()

static bool isDataTypeKeyword ( const tokenInfo *const  token)
static

◆ isDPostArgumentToken()

static bool isDPostArgumentToken ( tokenInfo *const  token)
static

◆ isMember()

static bool isMember ( const statementInfo *const  st)
static

◆ isStatementEnd()

static bool isStatementEnd ( const statementInfo *const  st)
static

◆ isValidTypeSpecifier()

static bool isValidTypeSpecifier ( const declType  declaration)
static

Definition at line 1459 of file geany_c.c.

References DECL_BASE, DECL_CLASS, DECL_ENUM, DECL_STRUCT, and DECL_UNION.

Referenced by qualifyFunctionDeclTag(), and qualifyVariableTag().

◆ JavaParser()

◆ javaTagKind()

◆ kindIndexForType()

static int kindIndexForType ( const tagType  type)
static

◆ makeExtraTagEntry()

static void makeExtraTagEntry ( const tagType  type,
tagEntryInfo *const  e,
vString *const  scope 
)
static

◆ makeTag()

◆ nest()

◆ newStatement()

◆ newToken()

static tokenInfo * newToken ( void  )
static

◆ nextToken()

◆ parseGeneralToken()

static void parseGeneralToken ( statementInfo *const  st,
const int  c 
)
static

◆ parseIdentifier()

static void parseIdentifier ( statementInfo *const  st,
const int  c 
)
static

Definition at line 2755 of file geany_c.c.

References activeToken, isType, processToken(), readIdentifier(), and TOKEN_NONE.

Referenced by parseGeneralToken().

◆ parseParens()

◆ prevToken()

static tokenInfo * prevToken ( const statementInfo *const  st,
unsigned int  n 
)
static

◆ processColon()

◆ processInitializer()

static void processInitializer ( statementInfo *const  st)
static

◆ processName()

◆ processToken()

static void processToken ( tokenInfo *const  token,
statementInfo *const  st 
)
static

Definition at line 2009 of file geany_c.c.

References ACCESS_PRIVATE, ACCESS_PROTECTED, ACCESS_PUBLIC, checkIsClassEnum(), DECL_BASE, DECL_CLASS, DECL_ENUM, DECL_EVENT, DECL_IGNORE, DECL_INTERFACE, DECL_NAMESPACE, DECL_PACKAGE, DECL_SIGNAL, DECL_STRUCT, DECL_UNION, sStatementInfo::declaration, discardTypeList(), sStatementInfo::gotName, IMP_ABSTRACT, IMP_VIRTUAL, sStatementInfo::implementation, initToken(), isInputLanguage(), tokenInfo::keyword, KEYWORD_ABSTRACT, KEYWORD_ATTRIBUTE, KEYWORD_BOOLEAN, KEYWORD_CATCH, KEYWORD_CHAR, KEYWORD_CLASS, KEYWORD_CONST, KEYWORD_DOUBLE, KEYWORD_ENUM, KEYWORD_EVENT, KEYWORD_EXTENDS, KEYWORD_EXTERN, KEYWORD_FLOAT, KEYWORD_FRIEND, KEYWORD_IF, KEYWORD_IMPLEMENTS, KEYWORD_IMPORT, KEYWORD_INT, KEYWORD_INTERFACE, KEYWORD_LONG, KEYWORD_MODULE, KEYWORD_NAMESPACE, KEYWORD_NONE, KEYWORD_OPERATOR, KEYWORD_PACKAGE, KEYWORD_PRIVATE, KEYWORD_PROTECTED, KEYWORD_PUBLIC, KEYWORD_SHORT, KEYWORD_SIGNAL, KEYWORD_SIGNED, KEYWORD_SIZE_T, KEYWORD_STATIC, KEYWORD_STATIC_ASSERT, KEYWORD_STRUCT, KEYWORD_THROWS, KEYWORD_TYPEDEF, KEYWORD_UNION, KEYWORD_UNSIGNED, KEYWORD_USING, KEYWORD_VIRTUAL, KEYWORD_VOID, KEYWORD_VOLATILE, KEYWORD_WCHAR_T, Lang_csharp, Lang_d, Lang_java, Lang_vala, processName(), readOperator(), readPackage(), readPackageOrNamespace(), readParents(), sStatementInfo::scope, SCOPE_EXTERN, SCOPE_FRIEND, SCOPE_STATIC, SCOPE_TYPEDEF, setAccess(), setToken(), skipBraces(), skipParens(), skipToMatch(), skipToNonWhite(), and TOKEN_NONE.

Referenced by parseIdentifier(), and restartStatement().

◆ qualifyBlockTag()

static void qualifyBlockTag ( statementInfo *const  st,
const tokenInfo *const  nameToken 
)
static

◆ qualifyCompoundTag()

static void qualifyCompoundTag ( const statementInfo *const  st,
const tokenInfo *const  nameToken 
)
static

◆ qualifyEnumeratorTag()

static void qualifyEnumeratorTag ( const statementInfo *const  st,
const tokenInfo *const  nameToken 
)
static

Definition at line 1479 of file geany_c.c.

References isType, makeTag(), TAG_ENUMERATOR, and TOKEN_NAME.

Referenced by tagCheck().

◆ qualifyFunctionDeclTag()

static void qualifyFunctionDeclTag ( const statementInfo *const  st,
const tokenInfo *const  nameToken 
)
static

◆ qualifyFunctionTag()

static void qualifyFunctionTag ( const statementInfo *const  st,
const tokenInfo *const  nameToken 
)
static

◆ qualifyVariableTag()

◆ readIdentifier()

◆ readOperator()

◆ readPackage()

◆ readPackageName()

static void readPackageName ( tokenInfo *const  token,
const int  firstChar 
)
static

Definition at line 1789 of file geany_c.c.

References cppGetc(), cppIsident, cppUngetc(), initToken(), name, and vStringPut().

Referenced by readPackage(), and readPackageOrNamespace().

◆ readPackageOrNamespace()

◆ readParents()

static void readParents ( statementInfo *const  st,
const int  qualifier 
)
static

◆ reinitStatement()

◆ reinitStatementWithToken()

static void reinitStatementWithToken ( statementInfo *const  st,
tokenInfo token,
const bool  partial 
)
static

◆ restartStatement()

static void restartStatement ( statementInfo *const  st)
static

◆ retardToken()

static void retardToken ( statementInfo *const  st)
static

Definition at line 626 of file geany_c.c.

References NumTokens, setToken(), TOKEN_NONE, and sStatementInfo::tokenIndex.

Referenced by skipMacro().

◆ setAccess()

◆ setToken()

static void setToken ( statementInfo *const  st,
const tokenType  type 
)
static

◆ skipBraces()

static void skipBraces ( void  )
static

Definition at line 1699 of file geany_c.c.

References cppUngetc(), skipToMatch(), and skipToNonWhite().

Referenced by processToken().

◆ skipInitializer()

◆ skipJavaThrows()

static void skipJavaThrows ( statementInfo *const  st)
static

◆ skipMacro()

static void skipMacro ( statementInfo *const  st)
static

Definition at line 2154 of file geany_c.c.

References isType, prevToken(), retardToken(), skipToMatch(), and TOKEN_NAME.

Referenced by parseParens().

◆ skipMemIntializerList()

static void skipMemIntializerList ( tokenInfo *const  token)
static

Definition at line 2127 of file geany_c.c.

References cppIsident1, cppUngetc(), readIdentifier(), skipToMatch(), and skipToNonWhite().

Referenced by skipPostArgumentStuff().

◆ skipParens()

static void skipParens ( void  )
static

◆ skipPostArgumentStuff()

◆ skipToFormattedBraceMatch()

static void skipToFormattedBraceMatch ( void  )
static

Definition at line 1616 of file geany_c.c.

References cppGetc().

Referenced by skipToMatch().

◆ skipToMatch()

◆ skipToNonWhite()

◆ skipToOneOf()

static int skipToOneOf ( const char *const  chars)
static

Definition at line 1588 of file geany_c.c.

References chars, cppGetc(), and NULL.

Referenced by processColon().

◆ skipValaPostParens()

static void skipValaPostParens ( statementInfo *const  st)
static

◆ tagCheck()

◆ ValaParser()

◆ valaTagKind()

Variable Documentation

◆ CKinds

kindDefinition CKinds[]
static
Initial value:
= {
{ true, 'c', "class", "classes"},
{ true, 'd', "macro", "macro definitions"},
{ true, 'e', "enumerator", "enumerators (values inside an enumeration)"},
{ true, 'f', "function", "function definitions"},
{ true, 'g', "enum", "enumeration names"},
{ true, 'm', "member", "class, struct, and union members"},
{ true, 'n', "namespace", "namespaces"},
{ false, 'p', "prototype", "function prototypes"},
{ true, 's', "struct", "structure names"},
{ true, 't', "typedef", "typedefs"},
{ true, 'u', "union", "union names"},
{ true, 'v', "variable", "variable definitions"},
{ false, 'x', "externvar", "external variable declarations"},
}

Definition at line 284 of file geany_c.c.

Referenced by CParser(), CppParser(), FeriteParser(), and GLSLParser().

◆ contextual_fake_count

unsigned int contextual_fake_count = 0
static

Definition at line 2831 of file geany_c.c.

Referenced by findCTags(), and tagCheck().

◆ CsharpKinds

kindDefinition CsharpKinds[]
static
Initial value:
= {
{ true, 'c', "class", "classes"},
{ true, 'd', "macro", "macro definitions"},
{ true, 'e', "enumerator", "enumerators (values inside an enumeration)"},
{ true, 'E', "event", "events"},
{ true, 'f', "field", "fields"},
{ true, 'g', "enum", "enumeration names"},
{ true, 'i', "interface", "interfaces"},
{ false, 'l', "local", "local variables"},
{ true, 'm', "method", "methods"},
{ true, 'n', "namespace", "namespaces"},
{ true, 'p', "property", "properties"},
{ true, 's', "struct", "structure names"},
{ true, 't', "typedef", "typedefs"},
}

Definition at line 352 of file geany_c.c.

Referenced by CsharpParser().

◆ CurrentStatement

statementInfo* CurrentStatement = NULL
static

Definition at line 2832 of file geany_c.c.

Referenced by deleteAllStatements(), deleteStatement(), and newStatement().

◆ DKinds

kindDefinition DKinds[]
static
Initial value:
= {
{ true, 'c', "class", "classes"},
{ true, 'e', "enumerator", "enumerators (values inside an enumeration)"},
{ true, 'f', "function", "function definitions"},
{ true, 'g', "enum", "enumeration names"},
{ true, 'i', "interface", "interfaces"},
{ true, 'm', "member", "class, struct, and union members"},
{ true, 'n', "namespace", "namespaces"},
{ false, 'p', "prototype", "function prototypes"},
{ true, 's', "struct", "structure names"},
{ true, 't', "typedef", "typedefs"},
{ true, 'u', "union", "union names"},
{ true, 'v', "variable", "variable definitions"},
{ false, 'x', "externvar", "external variable declarations"},
}

Definition at line 310 of file geany_c.c.

Referenced by DParser().

◆ Exception

jmp_buf Exception
static

◆ JavaKinds

kindDefinition JavaKinds[]
static
Initial value:
= {
{ true, 'c', "class", "classes"},
{ true, 'f', "field", "fields"},
{ true, 'i', "interface", "interfaces"},
{ true, 'm', "method", "methods"},
{ true, 'p', "package", "packages"},
{ true, 'e', "enumConstant", "enum constants"},
{ true, 'g', "enum", "enum types"},
}

Definition at line 334 of file geany_c.c.

Referenced by JavaParser().

◆ KeywordTable

const keywordDesc KeywordTable[]
static

Definition at line 391 of file geany_c.c.

Referenced by buildKeywordHash().

◆ Lang_c

langType Lang_c
static

Definition at line 265 of file geany_c.c.

Referenced by addContext(), addContextSeparator(), and initializeCParser().

◆ Lang_cpp

◆ Lang_csharp

◆ Lang_d

◆ Lang_ferite

◆ Lang_glsl

langType Lang_glsl
static

Definition at line 270 of file geany_c.c.

Referenced by initializeGLSLParser().

◆ Lang_java

◆ Lang_vala

◆ ValaKinds

kindDefinition ValaKinds[]
static
Initial value:
= {
{ true, 'c', "class", "classes"},
{ true, 'd', "macro", "macro definitions"},
{ true, 'e', "enumerator", "enumerators (values inside an enumeration)"},
{ true, 'f', "field", "fields"},
{ true, 'g', "enum", "enumeration names"},
{ true, 'i', "interface", "interfaces"},
{ false, 'l', "local", "local variables"},
{ true, 'm', "method", "methods"},
{ true, 'n', "namespace", "namespaces"},
{ true, 'p', "property", "properties"},
{ true, 'S', "signal", "signals"},
{ true, 's', "struct", "structure names"},
}

Definition at line 375 of file geany_c.c.

Referenced by ValaParser().