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.
110 lines
2.7 KiB
110 lines
2.7 KiB
/**
|
|
* @file language_names.h
|
|
*
|
|
* @author Guy Maurel
|
|
* extract from uncrustify.cpp
|
|
* @license GPL v2+
|
|
*/
|
|
|
|
#ifndef LANGUAGE_NAMES_H_INCLUDED
|
|
#define LANGUAGE_NAMES_H_INCLUDED
|
|
|
|
#include "base_types.h"
|
|
|
|
#include <cstddef> // to get size_t
|
|
#include <cstdio>
|
|
#include <map>
|
|
#include <string>
|
|
#include <string.h>
|
|
//#include <strings.h>
|
|
|
|
struct lang_name_t
|
|
{
|
|
const char *name;
|
|
size_t lang;
|
|
};
|
|
|
|
//! list of all programming languages Uncrustify supports
|
|
enum lang_flag_e
|
|
{
|
|
LANG_C = 0x0001,
|
|
LANG_CPP = 0x0002,
|
|
LANG_D = 0x0004,
|
|
LANG_CS = 0x0008, //! C# (C-Sharp)
|
|
LANG_JAVA = 0x0010,
|
|
LANG_OC = 0x0020, //! Objective-C
|
|
LANG_VALA = 0x0040,
|
|
LANG_PAWN = 0x0080,
|
|
LANG_ECMA = 0x0100, //! ECMA Script (JavaScript)
|
|
|
|
LANG_ALLC_NOT_C = 0x017e, /** LANG_CPP | LANG_D | LANG_CS | Issue # 4044
|
|
* LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
|
|
LANG_ALLC = 0x017f, /** LANG_C | LANG_CPP | LANG_D | LANG_CS |
|
|
* LANG_JAVA | LANG_OC | LANG_VALA | LANG_ECMA */
|
|
LANG_ALL = 0x0fff, //! applies to all languages
|
|
|
|
FLAG_HDR = 0x2000, /*<< Header file for C family languages */
|
|
FLAG_DIG = 0x4000, //! digraph/trigraph
|
|
FLAG_PP = 0x8000, //! only appears in a preprocessor
|
|
};
|
|
|
|
|
|
size_t language_flags_from_name(const char *name);
|
|
|
|
|
|
/**
|
|
* Gets the tag text for a language
|
|
*
|
|
* @param lang The LANG_xxx enum
|
|
*
|
|
* @return A string
|
|
*/
|
|
const char *language_name_from_flags(size_t lang);
|
|
|
|
bool ends_with(const char *filename, const char *tag, bool case_sensitive);
|
|
|
|
|
|
//! type to map a programming language to a typically used filename extension
|
|
struct lang_ext_t
|
|
{
|
|
const char *ext; //! filename extension typically used for ...
|
|
const char *name; //! a programming language
|
|
};
|
|
|
|
|
|
/**
|
|
* Set idx = 0 before the first call.
|
|
* Done when returns nullptr
|
|
*/
|
|
const char *get_file_extension(int &idx);
|
|
|
|
|
|
typedef std::map<std::string, std::string> extension_map_t;
|
|
/**
|
|
* maps a file extension to a language flag.
|
|
*
|
|
* @note The "." need to be included, as in ".c". The file extensions
|
|
* ARE case sensitive.
|
|
*/
|
|
static extension_map_t g_ext_map;
|
|
|
|
|
|
const char *extension_add(const char *ext_text, const char *lang_text);
|
|
|
|
|
|
//! Prints custom file extensions to the file
|
|
void print_extensions(FILE *pfile);
|
|
|
|
|
|
// TODO: better use enum lang_t for source file language
|
|
/**
|
|
* Find the language for the file extension
|
|
* Defaults to C
|
|
*
|
|
* @param filename The name of the file
|
|
* @return LANG_xxx
|
|
*/
|
|
size_t language_flags_from_filename(const char *filename);
|
|
|
|
#endif /* LANGUAGE_NAMES_H_INCLUDED */
|