X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fsettings.c;h=7d7934af9240ccaaff1df4ce0ed0270647882cdc;hb=6d7eed1c12693a3688a3c16f634a5b816660085b;hp=0dfa94751f974ff8ba1f6c50d05638c5d7a157d0;hpb=78d5f809e7dedb2fa85ac1961a340089fd2e2711;p=pspp diff --git a/src/data/settings.c b/src/data/settings.c index 0dfa94751f..7d7934af92 100644 --- a/src/data/settings.c +++ b/src/data/settings.c @@ -48,6 +48,9 @@ struct settings /* Format of reals in output (SET WRB). */ enum float_format output_float_format; + /* MATRIX...END MATRIX settings. */ + enum settings_mdisplay mdisplay; + int viewlength; int viewwidth; bool safer_mode; @@ -59,7 +62,13 @@ struct settings double blanks; int max_messages[MSG_N_SEVERITIES]; bool printback; - bool mprint; + + /* Macro settings. */ + bool mexpand; /* Expand macros? */ + bool mprint; /* Print macro expansions? */ + int miterate; /* Maximum iterations of !FOR. */ + int mnest; /* Maximum nested macro expansion levels. */ + int mxloops; size_t workspace; struct fmt_spec default_format; @@ -84,6 +93,7 @@ static struct settings the_settings = { .input_float_format = FLOAT_NATIVE_DOUBLE, .output_integer_format = INTEGER_NATIVE, .output_float_format = FLOAT_NATIVE_DOUBLE, + .mdisplay = SETTINGS_MDISPLAY_TEXT, .viewlength = 24, .viewwidth = 79, .safer_mode = false, @@ -101,7 +111,12 @@ static struct settings the_settings = { }, .printback = true, - .mprint = true, + + .mexpand = true, + .mprint = false, + .miterate = 1000, + .mnest = 50, + .mxloops = 40, .workspace = 64L * 1024 * 1024, .default_format = { .type = FMT_F, .w = 8, .d = 2 }, @@ -294,6 +309,13 @@ settings_set_include (bool include) the_settings.include = include; } +/* Returns the year that starts the epoch. */ +int +settings_get_epoch (void) +{ + return the_settings.styles.epoch; +} + /* Sets the year that starts the epoch. */ void settings_set_epoch (int epoch) @@ -384,6 +406,20 @@ settings_set_max_messages (enum msg_severity severity, int max) the_settings.max_messages[severity] = max; } +/* Returns whether to expand macro invocations. */ +bool +settings_get_mexpand (void) +{ + return the_settings.mexpand; +} + +/* Sets whether to expand macro invocations. */ +void +settings_set_mexpand (bool mexpand) +{ + the_settings.mexpand = mexpand; +} + /* Independent of get_printback, controls whether the commands generated by macro invocations are displayed. */ bool @@ -400,6 +436,35 @@ settings_set_mprint (bool mprint) the_settings.mprint = mprint; } +/* Returns the limit for loop iterations within a macro. */ +int +settings_get_miterate (void) +{ + return the_settings.miterate; +} + +/* Sets the limit for loop iterations within a macro. */ +void +settings_set_miterate (int miterate) +{ + the_settings.miterate = miterate; +} + +/* Returns the limit for recursion macro expansions. */ +int settings_get_mnest (void) +{ + return the_settings.mnest; +} + +/* Sets the limit for recursion macro expansions. */ +void +settings_set_mnest (int mnest) +{ + the_settings.mnest = mnest; +} + +int settings_get_mxloops (void); +void settings_set_mxloops (int); /* Implied limit of unbounded loop. */ int settings_get_mxloops (void) @@ -550,6 +615,12 @@ settings_set_decimal_char (char decimal) the_settings.styles.decimal = decimal; } +void +settings_set_include_leading_zero (bool include_leading_zero) +{ + the_settings.styles.include_leading_zero = include_leading_zero; +} + const struct fmt_settings * settings_get_fmt_settings (void) { @@ -640,3 +711,15 @@ settings_set_show_variables (enum settings_value_show s) { the_settings.show_variables = s; } + +enum settings_mdisplay +settings_get_mdisplay (void) +{ + return the_settings.mdisplay; +} + +void +settings_set_mdisplay (enum settings_mdisplay mdisplay) +{ + the_settings.mdisplay = mdisplay; +}