diff options
author | somov <somov@yandex-team.ru> | 2022-02-10 16:45:47 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:47 +0300 |
commit | a5950576e397b1909261050b8c7da16db58f10b1 (patch) | |
tree | 7ba7677f6a4c3e19e2cefab34d16df2c8963b4d4 /contrib/tools/yasm/libyasm/preproc.h | |
parent | 81eddc8c0b55990194e112b02d127b87d54164a9 (diff) | |
download | ydb-a5950576e397b1909261050b8c7da16db58f10b1.tar.gz |
Restoring authorship annotation for <somov@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/tools/yasm/libyasm/preproc.h')
-rw-r--r-- | contrib/tools/yasm/libyasm/preproc.h | 420 |
1 files changed, 210 insertions, 210 deletions
diff --git a/contrib/tools/yasm/libyasm/preproc.h b/contrib/tools/yasm/libyasm/preproc.h index 751b19e4b0..7c0845c431 100644 --- a/contrib/tools/yasm/libyasm/preproc.h +++ b/contrib/tools/yasm/libyasm/preproc.h @@ -1,210 +1,210 @@ -/** - * \file libyasm/preproc.h - * \brief YASM preprocessor module interface. - * - * \license - * Copyright (C) 2001-2007 Peter Johnson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * \endlicense - */ -#ifndef YASM_PREPROC_H -#define YASM_PREPROC_H - -#ifndef YASM_DOXYGEN -/** Base #yasm_preproc structure. Must be present as the first element in any - * #yasm_preproc implementation. - */ -typedef struct yasm_preproc_base { - /** #yasm_preproc_module implementation for this preprocessor. */ - const struct yasm_preproc_module *module; -} yasm_preproc_base; -#endif - -/** YASM preprocesor module interface. */ -typedef struct yasm_preproc_module { - /** One-line description of the preprocessor. */ - const char *name; - - /** Keyword used to select preprocessor on the command line. */ - const char *keyword; - - /** Create preprocessor. - * Module-level implementation of yasm_preproc_create(). - * Call yasm_preproc_create() instead of calling this function. - * - * \param in_filename initial starting filename, or "-" to read from - * stdin - * \param symtab symbol table (may be NULL if none) - * \param lm line mapping repository - * \param errwarns error/warnning set. - * \return New preprocessor. - * - * \note Any preprocessor errors and warnings are stored into errwarns. - */ - /*@only@*/ yasm_preproc * (*create) (const char *in_filename, - yasm_symtab *symtab, - yasm_linemap *lm, - yasm_errwarns *errwarns); - - /** Module-level implementation of yasm_preproc_destroy(). - * Call yasm_preproc_destroy() instead of calling this function. - */ - void (*destroy) (/*@only@*/ yasm_preproc *preproc); - - /** Module-level implementation of yasm_preproc_get_line(). - * Call yasm_preproc_get_line() instead of calling this function. - */ - char * (*get_line) (yasm_preproc *preproc); - - /** Module-level implementation of yasm_preproc_get_included_file(). - * Call yasm_preproc_get_included_file() instead of calling this function. - */ - size_t (*get_included_file) (yasm_preproc *preproc, /*@out@*/ char *buf, - size_t max_size); - - /** Module-level implementation of yasm_preproc_add_include_file(). - * Call yasm_preproc_add_include_file() instead of calling this function. - */ - void (*add_include_file) (yasm_preproc *preproc, const char *filename); - - /** Module-level implementation of yasm_preproc_predefine_macro(). - * Call yasm_preproc_predefine_macro() instead of calling this function. - */ - void (*predefine_macro) (yasm_preproc *preproc, const char *macronameval); - - /** Module-level implementation of yasm_preproc_undefine_macro(). - * Call yasm_preproc_undefine_macro() instead of calling this function. - */ - void (*undefine_macro) (yasm_preproc *preproc, const char *macroname); - - /** Module-level implementation of yasm_preproc_builtin_define(). - * Call yasm_preproc_builtin_define() instead of calling this function. - */ - void (*define_builtin) (yasm_preproc *preproc, const char *macronameval); - - /** Module-level implementation of yasm_preproc_add_standard(). - * Call yasm_preproc_add_standard() instead of calling this function. - */ - void (*add_standard) (yasm_preproc *preproc, const char **macros); -} yasm_preproc_module; - -/** Initialize preprocessor. - * The preprocessor needs access to the object format module to find out - * any output format specific macros. - * \param module preprocessor module - * \param in_filename initial starting filename, or "-" to read from stdin - * \param symtab symbol table (may be NULL if none) - * \param lm line mapping repository - * \param errwarns error/warning set - * \return New preprocessor. - * \note Errors/warnings are stored into errwarns. - */ -/*@only@*/ yasm_preproc *yasm_preproc_create - (yasm_preproc_module *module, const char *in_filename, - yasm_symtab *symtab, yasm_linemap *lm, yasm_errwarns *errwarns); - -/** Cleans up any allocated preproc memory. - * \param preproc preprocessor - */ -void yasm_preproc_destroy(/*@only@*/ yasm_preproc *preproc); - -/** Gets a single line of preprocessed source code. - * \param preproc preprocessor - * \return Allocated line of code, without the trailing \n. - */ -char *yasm_preproc_get_line(yasm_preproc *preproc); - -/** Get the next filename included by the source code. - * \param preproc preprocessor - * \param buf destination buffer for filename - * \param max_size maximum number of bytes that can be returned in buf - * \return Actual number of bytes returned in buf. - */ -size_t yasm_preproc_get_included_file(yasm_preproc *preproc, - /*@out@*/ char *buf, size_t max_size); - -/** Pre-include a file. - * \param preproc preprocessor - * \param filename filename - */ -void yasm_preproc_add_include_file(yasm_preproc *preproc, - const char *filename); - -/** Pre-define a macro. - * \param preproc preprocessor - * \param macronameval "name=value" string - */ -void yasm_preproc_predefine_macro(yasm_preproc *preproc, - const char *macronameval); - -/** Un-define a macro. - * \param preproc preprocessor - * \param macroname macro name - */ -void yasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname); - -/** Define a builtin macro, preprocessed before the "standard" macros. - * \param preproc preprocessor - * \param macronameval "name=value" string - */ -void yasm_preproc_define_builtin(yasm_preproc *preproc, - const char *macronameval); - -/** Define additional standard macros, preprocessed after the builtins but - * prior to any user-defined macros. - * \param preproc preprocessor - * \param macros NULL-terminated array of macro strings - */ -void yasm_preproc_add_standard(yasm_preproc *preproc, - const char **macros); - -#ifndef YASM_DOXYGEN - -/* Inline macro implementations for preproc functions */ - -#define yasm_preproc_create(module, in_filename, symtab, lm, ews) \ - module->create(in_filename, symtab, lm, ews) - -#define yasm_preproc_destroy(preproc) \ - ((yasm_preproc_base *)preproc)->module->destroy(preproc) -#define yasm_preproc_get_line(preproc) \ - ((yasm_preproc_base *)preproc)->module->get_line(preproc) -#define yasm_preproc_get_included_file(preproc, buf, max_size) \ - ((yasm_preproc_base *)preproc)->module->get_included_file(preproc, buf, max_size) -#define yasm_preproc_add_include_file(preproc, filename) \ - ((yasm_preproc_base *)preproc)->module->add_include_file(preproc, filename) -#define yasm_preproc_predefine_macro(preproc, macronameval) \ - ((yasm_preproc_base *)preproc)->module->predefine_macro(preproc, \ - macronameval) -#define yasm_preproc_undefine_macro(preproc, macroname) \ - ((yasm_preproc_base *)preproc)->module->undefine_macro(preproc, macroname) -#define yasm_preproc_define_builtin(preproc, macronameval) \ - ((yasm_preproc_base *)preproc)->module->define_builtin(preproc, \ - macronameval) -#define yasm_preproc_add_standard(preproc, macros) \ - ((yasm_preproc_base *)preproc)->module->add_standard(preproc, \ - macros) - -#endif - -#endif +/** + * \file libyasm/preproc.h + * \brief YASM preprocessor module interface. + * + * \license + * Copyright (C) 2001-2007 Peter Johnson + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * \endlicense + */ +#ifndef YASM_PREPROC_H +#define YASM_PREPROC_H + +#ifndef YASM_DOXYGEN +/** Base #yasm_preproc structure. Must be present as the first element in any + * #yasm_preproc implementation. + */ +typedef struct yasm_preproc_base { + /** #yasm_preproc_module implementation for this preprocessor. */ + const struct yasm_preproc_module *module; +} yasm_preproc_base; +#endif + +/** YASM preprocesor module interface. */ +typedef struct yasm_preproc_module { + /** One-line description of the preprocessor. */ + const char *name; + + /** Keyword used to select preprocessor on the command line. */ + const char *keyword; + + /** Create preprocessor. + * Module-level implementation of yasm_preproc_create(). + * Call yasm_preproc_create() instead of calling this function. + * + * \param in_filename initial starting filename, or "-" to read from + * stdin + * \param symtab symbol table (may be NULL if none) + * \param lm line mapping repository + * \param errwarns error/warnning set. + * \return New preprocessor. + * + * \note Any preprocessor errors and warnings are stored into errwarns. + */ + /*@only@*/ yasm_preproc * (*create) (const char *in_filename, + yasm_symtab *symtab, + yasm_linemap *lm, + yasm_errwarns *errwarns); + + /** Module-level implementation of yasm_preproc_destroy(). + * Call yasm_preproc_destroy() instead of calling this function. + */ + void (*destroy) (/*@only@*/ yasm_preproc *preproc); + + /** Module-level implementation of yasm_preproc_get_line(). + * Call yasm_preproc_get_line() instead of calling this function. + */ + char * (*get_line) (yasm_preproc *preproc); + + /** Module-level implementation of yasm_preproc_get_included_file(). + * Call yasm_preproc_get_included_file() instead of calling this function. + */ + size_t (*get_included_file) (yasm_preproc *preproc, /*@out@*/ char *buf, + size_t max_size); + + /** Module-level implementation of yasm_preproc_add_include_file(). + * Call yasm_preproc_add_include_file() instead of calling this function. + */ + void (*add_include_file) (yasm_preproc *preproc, const char *filename); + + /** Module-level implementation of yasm_preproc_predefine_macro(). + * Call yasm_preproc_predefine_macro() instead of calling this function. + */ + void (*predefine_macro) (yasm_preproc *preproc, const char *macronameval); + + /** Module-level implementation of yasm_preproc_undefine_macro(). + * Call yasm_preproc_undefine_macro() instead of calling this function. + */ + void (*undefine_macro) (yasm_preproc *preproc, const char *macroname); + + /** Module-level implementation of yasm_preproc_builtin_define(). + * Call yasm_preproc_builtin_define() instead of calling this function. + */ + void (*define_builtin) (yasm_preproc *preproc, const char *macronameval); + + /** Module-level implementation of yasm_preproc_add_standard(). + * Call yasm_preproc_add_standard() instead of calling this function. + */ + void (*add_standard) (yasm_preproc *preproc, const char **macros); +} yasm_preproc_module; + +/** Initialize preprocessor. + * The preprocessor needs access to the object format module to find out + * any output format specific macros. + * \param module preprocessor module + * \param in_filename initial starting filename, or "-" to read from stdin + * \param symtab symbol table (may be NULL if none) + * \param lm line mapping repository + * \param errwarns error/warning set + * \return New preprocessor. + * \note Errors/warnings are stored into errwarns. + */ +/*@only@*/ yasm_preproc *yasm_preproc_create + (yasm_preproc_module *module, const char *in_filename, + yasm_symtab *symtab, yasm_linemap *lm, yasm_errwarns *errwarns); + +/** Cleans up any allocated preproc memory. + * \param preproc preprocessor + */ +void yasm_preproc_destroy(/*@only@*/ yasm_preproc *preproc); + +/** Gets a single line of preprocessed source code. + * \param preproc preprocessor + * \return Allocated line of code, without the trailing \n. + */ +char *yasm_preproc_get_line(yasm_preproc *preproc); + +/** Get the next filename included by the source code. + * \param preproc preprocessor + * \param buf destination buffer for filename + * \param max_size maximum number of bytes that can be returned in buf + * \return Actual number of bytes returned in buf. + */ +size_t yasm_preproc_get_included_file(yasm_preproc *preproc, + /*@out@*/ char *buf, size_t max_size); + +/** Pre-include a file. + * \param preproc preprocessor + * \param filename filename + */ +void yasm_preproc_add_include_file(yasm_preproc *preproc, + const char *filename); + +/** Pre-define a macro. + * \param preproc preprocessor + * \param macronameval "name=value" string + */ +void yasm_preproc_predefine_macro(yasm_preproc *preproc, + const char *macronameval); + +/** Un-define a macro. + * \param preproc preprocessor + * \param macroname macro name + */ +void yasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname); + +/** Define a builtin macro, preprocessed before the "standard" macros. + * \param preproc preprocessor + * \param macronameval "name=value" string + */ +void yasm_preproc_define_builtin(yasm_preproc *preproc, + const char *macronameval); + +/** Define additional standard macros, preprocessed after the builtins but + * prior to any user-defined macros. + * \param preproc preprocessor + * \param macros NULL-terminated array of macro strings + */ +void yasm_preproc_add_standard(yasm_preproc *preproc, + const char **macros); + +#ifndef YASM_DOXYGEN + +/* Inline macro implementations for preproc functions */ + +#define yasm_preproc_create(module, in_filename, symtab, lm, ews) \ + module->create(in_filename, symtab, lm, ews) + +#define yasm_preproc_destroy(preproc) \ + ((yasm_preproc_base *)preproc)->module->destroy(preproc) +#define yasm_preproc_get_line(preproc) \ + ((yasm_preproc_base *)preproc)->module->get_line(preproc) +#define yasm_preproc_get_included_file(preproc, buf, max_size) \ + ((yasm_preproc_base *)preproc)->module->get_included_file(preproc, buf, max_size) +#define yasm_preproc_add_include_file(preproc, filename) \ + ((yasm_preproc_base *)preproc)->module->add_include_file(preproc, filename) +#define yasm_preproc_predefine_macro(preproc, macronameval) \ + ((yasm_preproc_base *)preproc)->module->predefine_macro(preproc, \ + macronameval) +#define yasm_preproc_undefine_macro(preproc, macroname) \ + ((yasm_preproc_base *)preproc)->module->undefine_macro(preproc, macroname) +#define yasm_preproc_define_builtin(preproc, macronameval) \ + ((yasm_preproc_base *)preproc)->module->define_builtin(preproc, \ + macronameval) +#define yasm_preproc_add_standard(preproc, macros) \ + ((yasm_preproc_base *)preproc)->module->add_standard(preproc, \ + macros) + +#endif + +#endif |