Mercurial > ~dholland > hg > ag > index.cgi
view anagram/agcore/config.cpp @ 14:a02e9434072e
Fix friend declaration for gcc10.
XXX: did not check it against the IBM compiler, might end up needing
XXX: to be conditional.
author | David A. Holland |
---|---|
date | Tue, 31 May 2022 00:59:42 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* * AnaGram, A System for Syntax Directed Programming * Copyright 1993-2002 Parsifal Software. All Rights Reserved. * See the file COPYING for license and usage terms. * * config.cpp */ #include "agstring.h" #include "config.h" #include "configparam.h" //#define INCLUDE_LOGGING #include "log.h" #ifdef AG_ON_UNIX #define ALL_MASK "*" #endif #ifdef AG_ON_WINDOWS #define ALL_MASK "*.*" #endif #ifdef AG_ON_AMIGA #define ALL_MASK "#?" #endif //////////////////////////////////////////////////////////// #undef INTEGER_PARAM #undef STRING_PARAM #undef SWITCH #undef DICT_PARAM #undef TOKEN_PARAM #undef TEXT_PARAM #define INTEGER_PARAM(txt,nm) static IntegerParam nm##Param(txt,nm); int nm #define STRING_PARAM(txt, nm) static StringParam nm##Param(txt,nm);AgString nm #define SWITCH(txt, nm) static ConfigSwitch nm##Param(txt,nm); int nm #define CAST_PARAM(txt, nm) static CastParam nm##Param(txt,nm); int nm #define TOKEN_PARAM(txt, nm) static TokenParam nm##Param(txt,nm); int nm #define TEXT_PARAM(txt, nm) static TextParam nm##Param(txt,nm);AgString nm SWITCH ("allow macros", allow_macros) = 1; SWITCH ("auto init", auto_init) = 1; SWITCH ("auto resynch", auto_resynch) = 0; SWITCH ("backtrack", backtrack) = 1; INTEGER_PARAM("bottom margin", bottom_margin) = 3; SWITCH ("bright background", bright_background) = 1; SWITCH ("case sensitive", case_sensitive) = 1; STRING_PARAM ("compile command", compile_command) = ""; SWITCH ("const data", const_data) = 1; TEXT_PARAM ("context type", context_type) ; STRING_PARAM ("coverage file name", coverage_file_name) = "#.nrc"; SWITCH ("declare pcb", declare_pcb) = 1; CAST_PARAM ("default input type", default_input_type) ; SWITCH ("default reductions", default_reductions) = 1; CAST_PARAM ("default token type", default_token_type) ; SWITCH ("diagnose errors", diagnose_errors) = 1; SWITCH ("distinguish lexemes", distinguish_lexemes) = 0; STRING_PARAM ("edit command", edit_command) = "ed #.syn"; SWITCH ("enable mouse", enable_mouse) = 1; STRING_PARAM ("enum constant name", enum_constant_name) = "$_%_token"; TOKEN_PARAM ("eof token", eof_token) = 0; SWITCH ("error frame", error_frame) = 0; TOKEN_PARAM ("error token", error_token) ; SWITCH ("error trace", error_trace) = 0; SWITCH ("escape backslashes", escape_backslashes) = 0; SWITCH ("event driven", event_driven) = 0; SWITCH ("far tables", far_tables) = 0; TOKEN_PARAM ("grammar token", grammar_token) = 0; STRING_PARAM ("header file name", header_file_name) = "#.h"; SWITCH ("input values", input_values) = 0; SWITCH ("iso latin 1", iso_latin_1) = 1; INTEGER_PARAM("line length", line_length) = 80; SWITCH ("line numbers", line_numbers) = 0; STRING_PARAM ("line numbers path", line_numbers_path) ; SWITCH ("lines and columns", lines_and_columns) = 1; SWITCH ("main program", main_program) = 1; INTEGER_PARAM("max conflicts", max_conflicts) = 50; SWITCH ("near functions", near_functions) = 0; SWITCH ("nest comments", nest_comments) = 0; SWITCH ("no cr", no_cr) = 0; SWITCH ("old style", old_style) = 0; INTEGER_PARAM("page length", page_length) = 66; STRING_PARAM ("parser file name", parser_file_name) = "#.c"; TEXT_PARAM ("parser name", parser_name) = "#"; CAST_PARAM ("parser stack alignment", parser_stack_alignment) ; INTEGER_PARAM("parser stack size", parser_stack_size) = 128; SWITCH ("pointer input", pointer_input) = 0; TEXT_PARAM ("pointer type", pointer_type) = "unsigned char *"; STRING_PARAM ("print file name", print_file_name) = "LPT1"; SWITCH ("quick reference", quick_reference) = 0; SWITCH ("reduction choices", reduction_choices) = 0; SWITCH ("reentrant parser", reentrant_parser) = 0; SWITCH ("rule coverage", rule_coverage) = 0; INTEGER_PARAM("tab spacing", tab_spacing) = 8; SWITCH ("test file binary", test_file_binary) = 0; STRING_PARAM ("test file mask", test_file_mask) = ALL_MASK; SWITCH ("test range", test_range) = 1; SWITCH ("token names", token_names) = 0; SWITCH ("token names only", token_names_only) = 0; INTEGER_PARAM("top margin", top_margin) = 3; SWITCH ("traditional engine", traditional_engine) = 0; INTEGER_PARAM("video mode", video_mode) = -1; //////////////////////////////////////////////////////////// #define PARAM_REF(name) &name##Param ConfigParam *ConfigParam::table[] = { PARAM_REF(allow_macros), PARAM_REF(auto_init), PARAM_REF(auto_resynch), PARAM_REF(backtrack), PARAM_REF(bottom_margin), PARAM_REF(bright_background), PARAM_REF(case_sensitive), PARAM_REF(compile_command), PARAM_REF(const_data), PARAM_REF(context_type), PARAM_REF(coverage_file_name), PARAM_REF(declare_pcb), PARAM_REF(default_input_type), PARAM_REF(default_reductions), PARAM_REF(default_token_type), PARAM_REF(diagnose_errors), PARAM_REF(distinguish_lexemes), PARAM_REF(edit_command), PARAM_REF(enable_mouse), PARAM_REF(enum_constant_name), PARAM_REF(eof_token), PARAM_REF(error_frame), PARAM_REF(error_token), PARAM_REF(error_trace), PARAM_REF(escape_backslashes), PARAM_REF(event_driven), PARAM_REF(far_tables), PARAM_REF(grammar_token), PARAM_REF(header_file_name), PARAM_REF(input_values), PARAM_REF(iso_latin_1), PARAM_REF(line_length), PARAM_REF(line_numbers), PARAM_REF(line_numbers_path), PARAM_REF(lines_and_columns), PARAM_REF(main_program), PARAM_REF(max_conflicts), PARAM_REF(near_functions), PARAM_REF(nest_comments), PARAM_REF(no_cr), PARAM_REF(old_style), PARAM_REF(page_length), PARAM_REF(parser_file_name), PARAM_REF(parser_name), PARAM_REF(parser_stack_alignment), PARAM_REF(parser_stack_size), PARAM_REF(pointer_input), PARAM_REF(pointer_type), PARAM_REF(print_file_name), PARAM_REF(quick_reference), PARAM_REF(reduction_choices), PARAM_REF(reentrant_parser), PARAM_REF(rule_coverage), PARAM_REF(tab_spacing), PARAM_REF(test_file_binary), PARAM_REF(test_file_mask), PARAM_REF(test_range), PARAM_REF(token_names), PARAM_REF(token_names_only), PARAM_REF(top_margin), PARAM_REF(traditional_engine), //PARAM_REF(trial_copy_code), PARAM_REF(video_mode), }; int ConfigParam::paramCount = sizeof(ConfigParam::table)/sizeof(ConfigParam *); #ifdef __IBMCPP__ #pragma define(Param<int>) #pragma define(Param<AgString>) #endif #ifdef _MSC_VER template class Param<int>; template class Param<AgString>; #endif #ifdef __GNUC__ template class Param<int>; template class Param<AgString>; #endif #ifdef __WATCOM_CPLUSPLUS__ typedef Param<int> fake1; template Param<AgString> fake2; #endif #ifdef __BCPLUSPLUS__ #pragma option -Jgd typedef Param<int> fake1; template Param<AgString> fake2; #endif