You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.9 KiB
86 lines
1.9 KiB
/**
|
|
* @file keywords.h
|
|
* prototypes for keywords.cpp
|
|
*
|
|
* @author Ben Gardner
|
|
* @license GPL v2+
|
|
*/
|
|
|
|
#ifndef KEYWORDS_H_INCLUDED
|
|
#define KEYWORDS_H_INCLUDED
|
|
|
|
#include "uncrustify_types.h"
|
|
|
|
/**
|
|
* Initializes keywords table for a given language.
|
|
*
|
|
* Let us have a look on the problem is caused by the tokens "in" and "out",
|
|
* used in the file "Issue_3353.h" under.
|
|
* The strings representing the tokens ("in" and "out"), are found in the
|
|
* original table: static chunk_tag_t keywords[] because they are used by
|
|
* other languages. They are tokenized as CT_IN and CT_OUT.
|
|
* The correct tokenization is CT_FUNC_VAR.
|
|
*
|
|
* It is necessary to create (at run time) a new table with all the keywords
|
|
* proper to the used language.
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* The file
|
|
* "Issue_3353.h"
|
|
* struct A {
|
|
* void (*in)(
|
|
* void);
|
|
* void (*out)(
|
|
* void);
|
|
* };
|
|
*/
|
|
void init_keywords_for_language();
|
|
|
|
/**
|
|
* Loads the dynamic keywords from a file
|
|
*
|
|
* @param filename The path to the file to load
|
|
*
|
|
* @retval EX_OK successfully read keywords from file
|
|
* @retval EX_IOERR reading keywords file failed
|
|
*/
|
|
int load_keyword_file(const char *filename);
|
|
|
|
|
|
/**
|
|
* Search first the dynamic and then the static table for a matching keyword
|
|
*
|
|
* @param word Pointer to the text -- NOT zero terminated
|
|
* @param len The length of the text
|
|
*
|
|
* @return CT_WORD (no match) or the keyword token
|
|
*/
|
|
E_Token find_keyword_type(const char *word, size_t len);
|
|
|
|
|
|
/**
|
|
* Adds a keyword to the list of dynamic keywords
|
|
*
|
|
* @param tag The tag (string) must be zero terminated
|
|
* @param type The type, usually CT_TYPE
|
|
*/
|
|
void add_keyword(const std::string &tag, E_Token type);
|
|
|
|
|
|
void print_custom_keywords(FILE *pfile);
|
|
|
|
|
|
void clear_keyword_file();
|
|
|
|
|
|
//! Returns the pattern that the keyword needs based on the token
|
|
pattern_class_e get_token_pattern_class(E_Token tok);
|
|
|
|
|
|
bool keywords_are_sorted();
|
|
|
|
|
|
#endif /* KEYWORDS_H_INCLUDED */
|