|
- #ifndef HL_H_
-
- #include <stdio.h>
- #include <uthash.h>
- #include <ctype.h>
- #include <string.h>
- #include <stdbool.h>
- #include "vector.h"
- #include "jeger.h"
-
- #define UNUSED(x) ((void)x) /* much like this header */
-
- // -------------------
- // ### Definitions ###
- // -------------------
-
- typedef enum {
- KEYSYMBOL,
- KEYWORD,
- MATCH,
- REGION
- } token_type_t;
-
- typedef void (*attribute_callback_t) (const char * string,
- const int length,
- void * attributes);
-
- typedef struct {
- char * key;
- attribute_callback_t callback;
- UT_hash_handle hh;
- } display_t;
-
- typedef struct {
- void * attributes;
- struct hl_group_t * link;
- } hl_group_t;
-
- typedef struct {
- hl_group_t * hl;
- regex_t * syntax;
- token_type_t t;
- char _pad[4];
- } token_t;
-
- extern vector_t token_table;
- extern display_t * display_table;
-
- extern hl_group_t * keyword_hl;
- extern hl_group_t * preprocessor_hl;
- extern hl_group_t * symbol_hl;
-
- extern hl_group_t * special_hl;
- extern hl_group_t * control_hl;
- extern hl_group_t * keyword_hl;
- extern hl_group_t * block_hl;
- extern hl_group_t * separator_hl;
- extern hl_group_t * operator_hl;
- extern hl_group_t * comment_hl;
- extern hl_group_t * string_literal_hl;
-
- extern void new_display_mode(display_t * mode);
- extern int free_token(token_t * token);
- extern int append_token(token_t * token);
-
- // TODO: ALIGN PROPERLY...
-
- extern token_t * new_symbol_token(const char * const c,
- hl_group_t * const g);
-
- extern int new_symbol_tokens(const char * const * symbols,
- hl_group_t * const g);
-
- extern int new_char_tokens(const char * str,
- hl_group_t * const g);
-
- extern token_t * new_keyword_token(const char * const word,
- hl_group_t * const g);
-
- extern int new_keyword_tokens(const char * const * words,
- hl_group_t * const g);
-
- extern token_t * new_token(const char * const word,
- const token_type_t t,
- hl_group_t * const g);
-
- extern token_t * new_region_token(const char * start,
- const char * end,
- hl_group_t * g);
-
- extern int token_fits(const token_t * const token,
- const char * const to,
- const int string_offset,
- const bool is_start_of_line,
- int * match_offset);
-
- extern void render_string(const char * const string,
- const char * const mode);
-
- extern int hl_init(void);
- extern int hl_deinit(void);
-
- #define HL_H_
- #endif
|