From: John Darrington Date: Mon, 2 Apr 2007 08:55:51 +0000 (+0000) Subject: Changed a lot of non-const pointers to const. X-Git-Tag: sav-api~1515 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=48386ee68a5283653435d05a9ea4e449710fd370;p=pspp Changed a lot of non-const pointers to const. Patch #5825 --- diff --git a/po/de.po b/po/de.po index f894269d20..e1d11637d5 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.4.2\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2007-03-26 18:17+0800\n" +"POT-Creation-Date: 2007-04-01 13:38+0800\n" "PO-Revision-Date: 2006-05-26 17:49+0800\n" "Last-Translator: John Darrington \n" "Language-Team: German \n" @@ -176,13 +176,13 @@ msgstr "" msgid "Month number %f is not between 1 and 12." msgstr "" -#: src/data/dictionary.c:717 +#: src/data/dictionary.c:724 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/dictionary.c:1238 +#: src/data/dictionary.c:1245 msgid "Variable suffix too large." msgstr "" @@ -309,13 +309,13 @@ msgid "%s variables are not compatible with %s format %s." msgstr "" #: src/data/format.c:310 src/data/por-file-reader.c:489 -#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1066 +#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1075 #: src/ui/gui/psppire-var-store.c:481 msgid "String" msgstr "Zeichenkette" #: src/data/format.c:310 src/data/por-file-reader.c:489 -#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:962 +#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:971 #: src/ui/gui/psppire-var-store.c:474 msgid "Numeric" msgstr "Nummer" @@ -826,15 +826,15 @@ msgstr "Der Variabelname %s ist große als %d Buchstaben." msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" -#: src/data/variable.c:964 +#: src/data/variable.c:966 msgid "ordinary" msgstr "" -#: src/data/variable.c:966 +#: src/data/variable.c:968 msgid "system" msgstr "" -#: src/data/variable.c:968 +#: src/data/variable.c:970 msgid "scratch" msgstr "" @@ -1036,7 +1036,7 @@ msgstr "" #: src/language/dictionary/sys-file-info.c:160 #: src/language/dictionary/sys-file-info.c:395 #: src/language/dictionary/sys-file-info.c:620 -#: src/language/stats/descriptives.c:879 +#: src/language/stats/descriptives.c:880 msgid "Variable" msgstr "" @@ -1291,7 +1291,7 @@ msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "" -#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:364 +#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:365 msgid "No variables specified." msgstr "" @@ -1387,7 +1387,7 @@ msgstr[0] "" msgstr[1] "" #: src/language/data-io/print-space.c:75 src/language/lexer/lexer.c:465 -#: src/language/stats/autorecode.c:153 src/language/xforms/select-if.c:61 +#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:61 msgid "expecting end of command" msgstr "" @@ -1426,7 +1426,7 @@ msgid "" "will be made permanent." msgstr "" -#: src/language/dictionary/delete-variables.c:48 +#: src/language/dictionary/delete-variables.c:49 msgid "" "DELETE VARIABLES may not be used to delete all variables from the active " "file dictionary. Use NEW FILE instead." @@ -1575,8 +1575,8 @@ msgstr "" #: src/language/dictionary/split-file.c:86 #: src/language/dictionary/sys-file-info.c:549 -#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145 -#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187 +#: src/language/stats/crosstabs.q:1119 src/language/stats/crosstabs.q:1146 +#: src/language/stats/crosstabs.q:1166 src/language/stats/crosstabs.q:1188 #: src/language/stats/examine.q:1189 src/language/stats/frequencies.q:1145 #: src/language/stats/frequencies.q:1269 msgid "Value" @@ -2120,57 +2120,57 @@ msgstr "" msgid "expecting number or data string" msgstr "" -#: src/language/lexer/variable-parser.c:54 +#: src/language/lexer/variable-parser.c:64 msgid "expecting variable name" msgstr "" -#: src/language/lexer/variable-parser.c:64 +#: src/language/lexer/variable-parser.c:74 #, c-format msgid "%s is not a variable name." msgstr "" -#: src/language/lexer/variable-parser.c:173 +#: src/language/lexer/variable-parser.c:183 #, c-format msgid "" "%s is not a numeric variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:176 +#: src/language/lexer/variable-parser.c:186 #, c-format msgid "" "%s is not a string variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:180 +#: src/language/lexer/variable-parser.c:190 #, c-format msgid "Scratch variables (such as %s) are not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:184 +#: src/language/lexer/variable-parser.c:194 #, c-format msgid "" "%s and %s are not the same type. All variables in this variable list must " "be of the same type. %s will be omitted from the list." msgstr "" -#: src/language/lexer/variable-parser.c:190 +#: src/language/lexer/variable-parser.c:200 #, c-format msgid "" "%s and %s are string variables with different widths. All variables in this " "variable list must have the same width. %s will be omttied from the list." msgstr "" -#: src/language/lexer/variable-parser.c:195 +#: src/language/lexer/variable-parser.c:205 #, c-format msgid "Variable %s appears twice in variable list." msgstr "" -#: src/language/lexer/variable-parser.c:308 +#: src/language/lexer/variable-parser.c:318 #, c-format msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary." msgstr "" -#: src/language/lexer/variable-parser.c:316 +#: src/language/lexer/variable-parser.c:326 #, c-format msgid "" "When using the TO keyword to specify several variables, both variables must " @@ -2178,19 +2178,19 @@ msgid "" "system variables. %s is a %s variable, whereas %s is %s." msgstr "" -#: src/language/lexer/variable-parser.c:390 +#: src/language/lexer/variable-parser.c:400 msgid "incorrect use of TO convention" msgstr "" -#: src/language/lexer/variable-parser.c:433 +#: src/language/lexer/variable-parser.c:443 msgid "Scratch variables not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:455 +#: src/language/lexer/variable-parser.c:465 msgid "Prefixes don't match in use of TO convention." msgstr "" -#: src/language/lexer/variable-parser.c:460 +#: src/language/lexer/variable-parser.c:470 msgid "Bad bounds in use of TO convention." msgstr "" @@ -2248,17 +2248,17 @@ msgid "" "contains the aggregate variables and the break variables." msgstr "" -#: src/language/stats/autorecode.c:135 +#: src/language/stats/autorecode.c:136 #, c-format msgid "Source variable count (%u) does not match target variable count (%u)." msgstr "" -#: src/language/stats/autorecode.c:163 +#: src/language/stats/autorecode.c:164 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/language/stats/autorecode.c:170 +#: src/language/stats/autorecode.c:171 #, c-format msgid "Duplicate variable name %s among target variables." msgstr "" @@ -2281,8 +2281,8 @@ msgid "Group2" msgstr "" #: src/language/stats/binomial.c:208 src/language/stats/chisquare.c:237 -#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:825 -#: src/language/stats/crosstabs.q:1025 src/language/stats/crosstabs.q:1748 +#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:826 +#: src/language/stats/crosstabs.q:1026 src/language/stats/crosstabs.q:1749 #: src/language/stats/examine.q:909 src/language/stats/frequencies.q:1222 #: src/language/stats/oneway.q:307 src/language/stats/oneway.q:471 #: src/language/stats/regression.q:324 @@ -2290,15 +2290,15 @@ msgid "Total" msgstr "" #: src/language/stats/binomial.c:253 src/language/stats/chisquare.c:260 -#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184 +#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1185 msgid "Category" msgstr "" -#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:835 +#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:836 #: src/language/stats/examine.q:985 src/language/stats/frequencies.q:1518 #: src/language/stats/npar-summary.c:124 src/language/stats/oneway.q:392 -#: src/language/stats/t-test.q:681 src/language/stats/t-test.q:704 -#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1367 +#: src/language/stats/t-test.q:680 src/language/stats/t-test.q:703 +#: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1366 msgid "N" msgstr "" @@ -2347,10 +2347,10 @@ msgstr "" msgid "Chi-Square" msgstr "" -#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1119 +#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1120 #: src/language/stats/oneway.q:280 src/language/stats/oneway.q:681 -#: src/language/stats/regression.q:317 src/language/stats/t-test.q:981 -#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266 +#: src/language/stats/regression.q:317 src/language/stats/t-test.q:980 +#: src/language/stats/t-test.q:1172 src/language/stats/t-test.q:1265 msgid "df" msgstr "" @@ -2367,280 +2367,280 @@ msgstr "" msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/language/stats/crosstabs.q:337 +#: src/language/stats/crosstabs.q:338 msgid "Too many crosstabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:347 +#: src/language/stats/crosstabs.q:348 msgid "expecting BY" msgstr "" -#: src/language/stats/crosstabs.q:414 +#: src/language/stats/crosstabs.q:415 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:452 +#: src/language/stats/crosstabs.q:453 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:820 +#: src/language/stats/crosstabs.q:821 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:973 +#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:973 msgid "Cases" msgstr "" -#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:907 +#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:907 #: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1519 msgid "Valid" msgstr "" -#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:908 +#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:908 #: src/language/stats/frequencies.q:1213 src/language/stats/frequencies.q:1520 #: src/ui/gui/var-sheet.c:73 msgid "Missing" msgstr "Löse" -#: src/language/stats/crosstabs.q:836 src/language/stats/examine.q:988 +#: src/language/stats/crosstabs.q:837 src/language/stats/examine.q:988 #: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148 #: src/language/stats/frequencies.q:1149 msgid "Percent" msgstr "Prozent" -#: src/language/stats/crosstabs.q:1077 +#: src/language/stats/crosstabs.q:1078 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1078 +#: src/language/stats/crosstabs.q:1079 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1079 +#: src/language/stats/crosstabs.q:1080 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1080 +#: src/language/stats/crosstabs.q:1081 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1081 +#: src/language/stats/crosstabs.q:1082 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1082 +#: src/language/stats/crosstabs.q:1083 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1083 +#: src/language/stats/crosstabs.q:1084 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1084 +#: src/language/stats/crosstabs.q:1085 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1115 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144 -#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185 +#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145 +#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1186 #: src/language/stats/examine.q:1420 msgid "Statistic" msgstr "" -#: src/language/stats/crosstabs.q:1121 +#: src/language/stats/crosstabs.q:1122 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1123 +#: src/language/stats/crosstabs.q:1124 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1125 +#: src/language/stats/crosstabs.q:1126 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1140 +#: src/language/stats/crosstabs.q:1141 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188 +#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189 +#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190 +#: src/language/stats/crosstabs.q:1149 src/language/stats/crosstabs.q:1191 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1159 +#: src/language/stats/crosstabs.q:1160 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1163 +#: src/language/stats/crosstabs.q:1164 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:985 -#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269 +#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:984 +#: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1268 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:986 -#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1270 +#: src/language/stats/crosstabs.q:1168 src/language/stats/t-test.q:985 +#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1181 +#: src/language/stats/crosstabs.q:1182 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:68 +#: src/language/stats/crosstabs.q:1187 src/ui/gui/var-sheet.c:68 msgid "Type" msgstr "Typ" -#: src/language/stats/crosstabs.q:1940 +#: src/language/stats/crosstabs.q:1941 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1941 +#: src/language/stats/crosstabs.q:1942 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1942 +#: src/language/stats/crosstabs.q:1943 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1943 +#: src/language/stats/crosstabs.q:1944 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1944 +#: src/language/stats/crosstabs.q:1945 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1981 src/language/stats/crosstabs.q:2051 -#: src/language/stats/crosstabs.q:2110 +#: src/language/stats/crosstabs.q:1982 src/language/stats/crosstabs.q:2052 +#: src/language/stats/crosstabs.q:2111 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126 +#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127 +#: src/language/stats/crosstabs.q:1999 src/language/stats/crosstabs.q:2128 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1999 +#: src/language/stats/crosstabs.q:2000 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2000 +#: src/language/stats/crosstabs.q:2001 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:2005 +#: src/language/stats/crosstabs.q:2006 msgid "Phi" msgstr "" -#: src/language/stats/crosstabs.q:2006 +#: src/language/stats/crosstabs.q:2007 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:2007 +#: src/language/stats/crosstabs.q:2008 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2008 +#: src/language/stats/crosstabs.q:2009 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:2009 +#: src/language/stats/crosstabs.q:2010 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:2010 +#: src/language/stats/crosstabs.q:2011 msgid "Gamma" msgstr "" -#: src/language/stats/crosstabs.q:2011 +#: src/language/stats/crosstabs.q:2012 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:2012 +#: src/language/stats/crosstabs.q:2013 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:2013 +#: src/language/stats/crosstabs.q:2014 msgid "Kappa" msgstr "" -#: src/language/stats/crosstabs.q:2083 +#: src/language/stats/crosstabs.q:2084 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:2086 +#: src/language/stats/crosstabs.q:2087 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:2094 +#: src/language/stats/crosstabs.q:2095 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:2097 +#: src/language/stats/crosstabs.q:2098 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:2128 +#: src/language/stats/crosstabs.q:2129 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2133 +#: src/language/stats/crosstabs.q:2134 msgid "Lambda" msgstr "" -#: src/language/stats/crosstabs.q:2134 +#: src/language/stats/crosstabs.q:2135 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:2135 +#: src/language/stats/crosstabs.q:2136 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2136 +#: src/language/stats/crosstabs.q:2137 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:2137 +#: src/language/stats/crosstabs.q:2138 msgid "Eta" msgstr "" -#: src/language/stats/crosstabs.q:2142 +#: src/language/stats/crosstabs.q:2143 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:2143 src/language/stats/crosstabs.q:2144 +#: src/language/stats/crosstabs.q:2144 src/language/stats/crosstabs.q:2145 #, c-format msgid "%s Dependent" msgstr "" #: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1525 #: src/language/stats/frequencies.q:125 src/language/stats/npar-summary.c:127 -#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:682 -#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:829 -#: src/language/stats/t-test.q:1167 +#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:681 +#: src/language/stats/t-test.q:704 src/language/stats/t-test.q:828 +#: src/language/stats/t-test.q:1166 msgid "Mean" msgstr "" @@ -2696,47 +2696,47 @@ msgstr "" msgid "Sum" msgstr "" -#: src/language/stats/descriptives.c:346 +#: src/language/stats/descriptives.c:347 #, c-format msgid "Z-score variable name %s would be a duplicate variable name." msgstr "" -#: src/language/stats/descriptives.c:449 +#: src/language/stats/descriptives.c:450 msgid "expecting statistic name: reverting to default" msgstr "" -#: src/language/stats/descriptives.c:522 +#: src/language/stats/descriptives.c:523 msgid "" "Ran out of generic names for Z-score variables. There are only 126 generic " "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." msgstr "" -#: src/language/stats/descriptives.c:554 +#: src/language/stats/descriptives.c:555 msgid "Mapping of variables to corresponding Z-scores." msgstr "" -#: src/language/stats/descriptives.c:559 +#: src/language/stats/descriptives.c:560 msgid "Source" msgstr "" -#: src/language/stats/descriptives.c:560 +#: src/language/stats/descriptives.c:561 msgid "Target" msgstr "" -#: src/language/stats/descriptives.c:670 +#: src/language/stats/descriptives.c:671 #, c-format msgid "Z-score of %s" msgstr "" -#: src/language/stats/descriptives.c:882 +#: src/language/stats/descriptives.c:883 msgid "Valid N" msgstr "" -#: src/language/stats/descriptives.c:883 +#: src/language/stats/descriptives.c:884 msgid "Missing N" msgstr "" -#: src/language/stats/descriptives.c:910 +#: src/language/stats/descriptives.c:911 #, c-format msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" @@ -2803,9 +2803,9 @@ msgid "Median" msgstr "" #: src/language/stats/examine.q:1617 src/language/stats/npar-summary.c:130 -#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:683 -#: src/language/stats/t-test.q:706 src/language/stats/t-test.q:831 -#: src/language/stats/t-test.q:1168 +#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:682 +#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:830 +#: src/language/stats/t-test.q:1167 msgid "Std. Deviation" msgstr "" @@ -3035,7 +3035,7 @@ msgid "" "exactly %d values." msgstr "" -#: src/language/stats/npar.q:422 src/language/stats/t-test.q:485 +#: src/language/stats/npar.q:422 src/language/stats/t-test.q:484 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%d) did not " @@ -3081,7 +3081,7 @@ msgid "Mean Square" msgstr "" #: src/language/stats/oneway.q:282 src/language/stats/regression.q:319 -#: src/language/stats/t-test.q:978 +#: src/language/stats/t-test.q:977 msgid "F" msgstr "" @@ -3135,13 +3135,13 @@ msgid "Value of Contrast" msgstr "" #: src/language/stats/oneway.q:680 src/language/stats/regression.q:223 -#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172 -#: src/language/stats/t-test.q:1265 +#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171 +#: src/language/stats/t-test.q:1264 msgid "t" msgstr "" -#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:982 -#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1267 +#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:981 +#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266 msgid "Sig. (2-tailed)" msgstr "" @@ -3258,7 +3258,7 @@ msgstr "" msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:1147 +#: src/language/stats/regression.q:1181 msgid "Dependent variable must be numeric." msgstr "" @@ -3282,115 +3282,115 @@ msgstr "" msgid "VARIABLES subcommand is not appropriate with PAIRS" msgstr "" -#: src/language/stats/t-test.q:335 +#: src/language/stats/t-test.q:334 msgid "One or more VARIABLES must be specified." msgstr "" -#: src/language/stats/t-test.q:379 +#: src/language/stats/t-test.q:378 #, c-format msgid "Long string variable %s is not valid here." msgstr "" -#: src/language/stats/t-test.q:399 src/language/stats/t-test.q:413 +#: src/language/stats/t-test.q:398 src/language/stats/t-test.q:412 msgid "" "When applying GROUPS to a string variable, two values must be specified." msgstr "" -#: src/language/stats/t-test.q:502 +#: src/language/stats/t-test.q:501 msgid "At least two variables must be specified on PAIRS." msgstr "" -#: src/language/stats/t-test.q:679 +#: src/language/stats/t-test.q:678 msgid "One-Sample Statistics" msgstr "" -#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707 -#: src/language/stats/t-test.q:832 +#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706 +#: src/language/stats/t-test.q:831 msgid "SE. Mean" msgstr "" -#: src/language/stats/t-test.q:702 +#: src/language/stats/t-test.q:701 msgid "Group Statistics" msgstr "" -#: src/language/stats/t-test.q:826 +#: src/language/stats/t-test.q:825 msgid "Paired Sample Statistics" msgstr "" -#: src/language/stats/t-test.q:848 src/language/stats/t-test.q:1193 -#: src/language/stats/t-test.q:1384 +#: src/language/stats/t-test.q:847 src/language/stats/t-test.q:1192 +#: src/language/stats/t-test.q:1383 #, c-format msgid "Pair %d" msgstr "" -#: src/language/stats/t-test.q:966 +#: src/language/stats/t-test.q:965 msgid "Independent Samples Test" msgstr "" -#: src/language/stats/t-test.q:974 +#: src/language/stats/t-test.q:973 msgid "Levene's Test for Equality of Variances" msgstr "" -#: src/language/stats/t-test.q:976 +#: src/language/stats/t-test.q:975 msgid "t-test for Equality of Means" msgstr "" -#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1369 +#: src/language/stats/t-test.q:978 src/language/stats/t-test.q:1368 msgid "Sig." msgstr "" -#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1268 +#: src/language/stats/t-test.q:982 src/language/stats/t-test.q:1267 msgid "Mean Difference" msgstr "" -#: src/language/stats/t-test.q:984 +#: src/language/stats/t-test.q:983 msgid "Std. Error Difference" msgstr "" -#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164 -#: src/language/stats/t-test.q:1260 +#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1163 +#: src/language/stats/t-test.q:1259 #, c-format msgid "%g%% Confidence Interval of the Difference" msgstr "" -#: src/language/stats/t-test.q:1044 +#: src/language/stats/t-test.q:1043 msgid "Equal variances assumed" msgstr "" -#: src/language/stats/t-test.q:1096 +#: src/language/stats/t-test.q:1095 msgid "Equal variances not assumed" msgstr "" -#: src/language/stats/t-test.q:1154 +#: src/language/stats/t-test.q:1153 msgid "Paired Samples Test" msgstr "" -#: src/language/stats/t-test.q:1157 +#: src/language/stats/t-test.q:1156 msgid "Paired Differences" msgstr "" -#: src/language/stats/t-test.q:1169 +#: src/language/stats/t-test.q:1168 msgid "Std. Error Mean" msgstr "" -#: src/language/stats/t-test.q:1249 +#: src/language/stats/t-test.q:1248 msgid "One-Sample Test" msgstr "" -#: src/language/stats/t-test.q:1254 +#: src/language/stats/t-test.q:1253 #, c-format msgid "Test Value = %f" msgstr "" -#: src/language/stats/t-test.q:1364 +#: src/language/stats/t-test.q:1363 msgid "Paired Samples Correlations" msgstr "" -#: src/language/stats/t-test.q:1368 +#: src/language/stats/t-test.q:1367 msgid "Correlation" msgstr "" -#: src/language/stats/t-test.q:1387 +#: src/language/stats/t-test.q:1386 #, c-format msgid "%s & %s" msgstr "" @@ -4134,105 +4134,122 @@ msgstr "" msgid "Style of bevel around the custom entry button" msgstr "" -#: src/ui/gui/data-editor.c:159 +#: src/ui/gui/data-editor.c:161 #, fuzzy msgid "Weights" msgstr "Rechts" -#: src/ui/gui/data-editor.c:160 +#: src/ui/gui/data-editor.c:162 msgid "Weight cases by variable" msgstr "" -#: src/ui/gui/data-editor.c:169 src/ui/gui/data-editor.glade:294 +#: src/ui/gui/data-editor.c:171 src/ui/gui/data-editor.glade:293 msgid "Transpose" msgstr "" -#: src/ui/gui/data-editor.c:170 +#: src/ui/gui/data-editor.c:172 msgid "Transpose the cases with the variables" msgstr "" -#: src/ui/gui/data-editor.c:494 +#: src/ui/gui/data-editor.c:183 +#, fuzzy +msgid "Split" +msgstr "Alle Datei" + +#: src/ui/gui/data-editor.c:184 +msgid "Split the active file" +msgstr "" + +#: src/ui/gui/data-editor.c:194 +msgid "Sort" +msgstr "" + +#: src/ui/gui/data-editor.c:195 +msgid "Sort cases in the active file" +msgstr "" + +#: src/ui/gui/data-editor.c:531 msgid "Font Selection" msgstr "Schriftwahlung" -#: src/ui/gui/data-editor.c:672 +#: src/ui/gui/data-editor.c:709 msgid "No Split" msgstr "" -#: src/ui/gui/data-editor.c:680 +#: src/ui/gui/data-editor.c:717 #, fuzzy msgid "Split by " msgstr "Alle Datei" -#: src/ui/gui/data-editor.c:705 +#: src/ui/gui/data-editor.c:742 msgid "Filter off" msgstr "" -#: src/ui/gui/data-editor.c:718 +#: src/ui/gui/data-editor.c:755 #, c-format msgid "Filter by %s" msgstr "" -#: src/ui/gui/data-editor.c:736 +#: src/ui/gui/data-editor.c:773 msgid "Weights off" msgstr "" -#: src/ui/gui/data-editor.c:749 +#: src/ui/gui/data-editor.c:786 #, c-format msgid "Weight by %s" msgstr "" -#: src/ui/gui/data-editor.c:772 src/ui/gui/data-editor.c:983 -#: src/ui/gui/data-editor.glade:414 +#: src/ui/gui/data-editor.c:809 src/ui/gui/data-editor.c:1020 +#: src/ui/gui/data-editor.glade:412 msgid "Open" msgstr "Öffen" -#: src/ui/gui/data-editor.c:773 +#: src/ui/gui/data-editor.c:810 msgid "Open a data file" msgstr "" -#: src/ui/gui/data-editor.c:781 src/ui/gui/data-editor.c:888 -#: src/ui/gui/data-editor.glade:424 +#: src/ui/gui/data-editor.c:818 src/ui/gui/data-editor.c:925 +#: src/ui/gui/data-editor.glade:422 msgid "Save" msgstr "Speichen" -#: src/ui/gui/data-editor.c:782 src/ui/gui/data-editor.c:792 +#: src/ui/gui/data-editor.c:819 src/ui/gui/data-editor.c:829 #, fuzzy msgid "Save data to file" msgstr "Speichern unter" -#: src/ui/gui/data-editor.c:791 +#: src/ui/gui/data-editor.c:828 #, fuzzy msgid "Save As" msgstr "Speichern unter" -#: src/ui/gui/data-editor.c:800 +#: src/ui/gui/data-editor.c:837 msgid "New" msgstr "" -#: src/ui/gui/data-editor.c:801 +#: src/ui/gui/data-editor.c:838 msgid "New data file" msgstr "" -#: src/ui/gui/data-editor.c:896 src/ui/gui/data-editor.c:991 +#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1028 msgid "System Files (*.sav)" msgstr "Systemedatein (*.sav)" -#: src/ui/gui/data-editor.c:902 src/ui/gui/data-editor.c:997 +#: src/ui/gui/data-editor.c:939 src/ui/gui/data-editor.c:1034 msgid "Portable Files (*.por) " msgstr "Tragbardatein (*.por)" -#: src/ui/gui/data-editor.c:908 src/ui/gui/data-editor.c:1003 +#: src/ui/gui/data-editor.c:945 src/ui/gui/data-editor.c:1040 #: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:524 msgid "All Files" msgstr "Alle Datei" -#: src/ui/gui/data-editor.c:916 +#: src/ui/gui/data-editor.c:953 #, fuzzy msgid "System File" msgstr "Systemedatein (*.sav)" -#: src/ui/gui/data-editor.c:921 +#: src/ui/gui/data-editor.c:958 #, fuzzy msgid "Portable File" msgstr "Tragbardatein (*.por)" @@ -4291,8 +4308,8 @@ msgstr "Schrift" msgid "Grid Lines" msgstr "Glitten" -#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:614 -#: src/ui/gui/data-editor.glade:1324 src/ui/gui/data-editor.glade:1502 +#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:623 +#: src/ui/gui/data-editor.glade:1333 src/ui/gui/data-editor.glade:1511 msgid "Value Labels" msgstr "Werten" @@ -4300,11 +4317,11 @@ msgstr "Werten" msgid "Data" msgstr "Daten" -#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:497 +#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:507 msgid "Variables" msgstr "Variableansicht" -#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:550 +#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:560 #, fuzzy msgid "Insert Variable" msgstr "Variableansicht" @@ -4314,230 +4331,233 @@ msgstr "Variableansicht" msgid "Insert Cases" msgstr "_Stecken" -#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:486 -#: src/ui/gui/data-editor.glade:1868 +#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:496 +#: src/ui/gui/data-editor.glade:1877 msgid "Go To Case" msgstr "" -#: src/ui/gui/data-editor.glade:286 src/ui/gui/data-editor.glade:1933 +#: src/ui/gui/data-editor.glade:285 src/ui/gui/data-editor.glade:1942 msgid "Sort Cases" msgstr "" -#: src/ui/gui/data-editor.glade:302 +#: src/ui/gui/data-editor.glade:301 msgid "Restructure" msgstr "" -#: src/ui/gui/data-editor.glade:310 +#: src/ui/gui/data-editor.glade:309 #, fuzzy msgid "Merge Files" msgstr "Alle Datei" -#: src/ui/gui/data-editor.glade:318 +#: src/ui/gui/data-editor.glade:317 msgid "Aggregate" msgstr "" -#: src/ui/gui/data-editor.glade:332 src/ui/gui/data-editor.glade:571 +#: src/ui/gui/data-editor.glade:330 src/ui/gui/data-editor.glade:580 #, fuzzy msgid "Split File" msgstr "Alle Datei" -#: src/ui/gui/data-editor.glade:340 src/ui/gui/data-editor.glade:594 +#: src/ui/gui/data-editor.glade:338 src/ui/gui/data-editor.glade:603 msgid "Select Cases" msgstr "" -#: src/ui/gui/data-editor.glade:347 src/ui/gui/data-editor.glade:582 +#: src/ui/gui/data-editor.glade:345 src/ui/gui/data-editor.glade:591 msgid "Weight Cases" msgstr "" -#: src/ui/gui/data-editor.glade:358 src/ui/gui/syntax-editor.glade:233 +#: src/ui/gui/data-editor.glade:356 src/ui/gui/syntax-editor.glade:233 #, fuzzy msgid "_Windows" msgstr "_Datei" -#: src/ui/gui/data-editor.glade:365 src/ui/gui/syntax-editor.glade:242 +#: src/ui/gui/data-editor.glade:363 src/ui/gui/syntax-editor.glade:242 msgid "_Minimise All Windows" msgstr "" -#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:254 +#: src/ui/gui/data-editor.glade:374 src/ui/gui/syntax-editor.glade:254 msgid "_Help" msgstr "_Hilfe" -#: src/ui/gui/data-editor.glade:383 src/ui/gui/syntax-editor.glade:263 +#: src/ui/gui/data-editor.glade:381 src/ui/gui/syntax-editor.glade:263 msgid "_Reference Manual" msgstr "" -#: src/ui/gui/data-editor.glade:390 src/ui/gui/syntax-editor.glade:271 +#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:271 msgid "_About" msgstr "_Info" -#: src/ui/gui/data-editor.glade:435 +#: src/ui/gui/data-editor.glade:433 msgid "Print" msgstr "Drucken" -#: src/ui/gui/data-editor.glade:455 +#: src/ui/gui/data-editor.glade:444 +msgid "Recall" +msgstr "" + +#: src/ui/gui/data-editor.glade:465 msgid "Undo" msgstr "" -#: src/ui/gui/data-editor.glade:466 +#: src/ui/gui/data-editor.glade:476 msgid "Redo" msgstr "" -#: src/ui/gui/data-editor.glade:518 +#: src/ui/gui/data-editor.glade:528 msgid "Find" msgstr "" -#: src/ui/gui/data-editor.glade:538 +#: src/ui/gui/data-editor.glade:548 #, fuzzy msgid "Insert Case" msgstr "_Stecken" -#: src/ui/gui/data-editor.glade:626 +#: src/ui/gui/data-editor.glade:635 msgid "Use Sets" msgstr "" -#: src/ui/gui/data-editor.glade:708 +#: src/ui/gui/data-editor.glade:717 msgid "Data View" msgstr "Datenansicht" -#: src/ui/gui/data-editor.glade:735 +#: src/ui/gui/data-editor.glade:744 msgid "Variable View" msgstr "Variableansicht" -#: src/ui/gui/data-editor.glade:765 +#: src/ui/gui/data-editor.glade:774 msgid "Information Area" msgstr "" -#: src/ui/gui/data-editor.glade:784 +#: src/ui/gui/data-editor.glade:793 msgid "Processor Area" msgstr "" -#: src/ui/gui/data-editor.glade:809 +#: src/ui/gui/data-editor.glade:818 msgid "OMS Area" msgstr "" -#: src/ui/gui/data-editor.glade:834 +#: src/ui/gui/data-editor.glade:843 msgid "Case Counter Area" msgstr "" -#: src/ui/gui/data-editor.glade:859 +#: src/ui/gui/data-editor.glade:868 msgid "Filter Use Status Area" msgstr "" -#: src/ui/gui/data-editor.glade:885 +#: src/ui/gui/data-editor.glade:894 msgid "Weight Status Area" msgstr "" -#: src/ui/gui/data-editor.glade:911 +#: src/ui/gui/data-editor.glade:920 #, fuzzy msgid "Split File Status Area" msgstr "Alle Datei" -#: src/ui/gui/data-editor.glade:941 +#: src/ui/gui/data-editor.glade:950 msgid "Variable Type" msgstr "Variableansicht" -#: src/ui/gui/data-editor.glade:976 src/ui/gui/psppire-var-store.c:475 +#: src/ui/gui/data-editor.glade:985 src/ui/gui/psppire-var-store.c:475 msgid "Comma" msgstr "Komma" -#: src/ui/gui/data-editor.glade:991 src/ui/gui/psppire-var-store.c:476 +#: src/ui/gui/data-editor.glade:1000 src/ui/gui/psppire-var-store.c:476 msgid "Dot" msgstr "Punkt" -#: src/ui/gui/data-editor.glade:1006 +#: src/ui/gui/data-editor.glade:1015 msgid "Scientific notation" msgstr "Wissenschaftlichnotation" -#: src/ui/gui/data-editor.glade:1021 src/ui/gui/psppire-var-store.c:478 +#: src/ui/gui/data-editor.glade:1030 src/ui/gui/psppire-var-store.c:478 msgid "Date" msgstr "Datum" -#: src/ui/gui/data-editor.glade:1036 src/ui/gui/psppire-var-store.c:479 +#: src/ui/gui/data-editor.glade:1045 src/ui/gui/psppire-var-store.c:479 msgid "Dollar" msgstr "Euro" -#: src/ui/gui/data-editor.glade:1051 +#: src/ui/gui/data-editor.glade:1060 msgid "Custom currency" msgstr "Spezialwährung" -#: src/ui/gui/data-editor.glade:1143 +#: src/ui/gui/data-editor.glade:1152 msgid "positive" msgstr "positiv" -#: src/ui/gui/data-editor.glade:1149 +#: src/ui/gui/data-editor.glade:1158 msgid "negative" msgstr "negativ" -#: src/ui/gui/data-editor.glade:1162 +#: src/ui/gui/data-editor.glade:1171 msgid "Sample" msgstr "Muster" -#: src/ui/gui/data-editor.glade:1212 +#: src/ui/gui/data-editor.glade:1221 msgid "Width:" msgstr "Große:" -#: src/ui/gui/data-editor.glade:1256 +#: src/ui/gui/data-editor.glade:1265 msgid "Decimal Places:" msgstr "Dezimalstellen:" -#: src/ui/gui/data-editor.glade:1422 +#: src/ui/gui/data-editor.glade:1431 msgid "Value Label:" msgstr "Kennsatz:" -#: src/ui/gui/data-editor.glade:1435 +#: src/ui/gui/data-editor.glade:1444 msgid "Value:" msgstr "Werte:" -#: src/ui/gui/data-editor.glade:1566 +#: src/ui/gui/data-editor.glade:1575 msgid "Missing Values" msgstr "Lösewerten" -#: src/ui/gui/data-editor.glade:1584 +#: src/ui/gui/data-editor.glade:1593 msgid "_Range plus one optional discrete missing value" msgstr "Wertebereich und ein optional Lösewert" -#: src/ui/gui/data-editor.glade:1608 +#: src/ui/gui/data-editor.glade:1617 msgid "_Low:" msgstr "_Tief:" -#: src/ui/gui/data-editor.glade:1637 +#: src/ui/gui/data-editor.glade:1646 msgid "_High:" msgstr "_Hoch:" -#: src/ui/gui/data-editor.glade:1678 +#: src/ui/gui/data-editor.glade:1687 msgid "Di_screte value:" msgstr "Di_skretwerte" -#: src/ui/gui/data-editor.glade:1725 +#: src/ui/gui/data-editor.glade:1734 msgid "_No missing values" msgstr "_Kein Lösewerten" -#: src/ui/gui/data-editor.glade:1742 +#: src/ui/gui/data-editor.glade:1751 msgid "_Discrete missing values" msgstr "_Diskret Lösewerten" -#: src/ui/gui/data-editor.glade:1885 +#: src/ui/gui/data-editor.glade:1894 msgid "Case Number:" msgstr "" -#: src/ui/gui/data-editor.glade:1994 +#: src/ui/gui/data-editor.glade:2003 src/ui/gui/psppire.glade:1187 msgid "Sort by:" msgstr "" -#: src/ui/gui/data-editor.glade:2043 src/ui/gui/sort-cases-dialog.c:279 +#: src/ui/gui/data-editor.glade:2052 src/ui/gui/psppire.glade:1240 msgid "Ascending" msgstr "" -#: src/ui/gui/data-editor.glade:2056 src/ui/gui/sort-cases-dialog.c:281 +#: src/ui/gui/data-editor.glade:2065 src/ui/gui/psppire.glade:1250 msgid "Descending" msgstr "" -#: src/ui/gui/data-editor.glade:2072 +#: src/ui/gui/data-editor.glade:2081 src/ui/gui/psppire.glade:1266 msgid "Sort Order" msgstr "" -#: src/ui/gui/dict-display.c:92 src/ui/gui/sort-cases-dialog.c:339 -#: src/ui/gui/transpose-dialog.c:123 +#: src/ui/gui/dict-display.c:92 msgid "Var" msgstr "" @@ -4601,12 +4621,12 @@ msgstr "" msgid "%d" msgstr "" -#: src/ui/gui/psppire.glade:9 +#: src/ui/gui/psppire.glade:11 #, fuzzy msgid "This is pre-alpha software. Use at your own risk." msgstr "Diese Software ist vor-Alpha. Wahrscheinlich Funktioniert es nicht." -#: src/ui/gui/psppire.glade:10 +#: src/ui/gui/psppire.glade:12 msgid "" " This program is free software; you can redistribute it and/or modify\n" " it under the terms of the GNU General Public License as published by\n" @@ -4624,11 +4644,12 @@ msgid "" " 02110-1301, USA.\n" msgstr "" -#: src/ui/gui/psppire.glade:90 src/ui/gui/psppire.glade:170 +#: src/ui/gui/psppire.glade:89 src/ui/gui/psppire.glade:170 +#: src/ui/gui/weight-cases-dialog.c:85 msgid "Do not weight cases" msgstr "" -#: src/ui/gui/psppire.glade:100 +#: src/ui/gui/psppire.glade:99 msgid "Weight cases by" msgstr "" @@ -4641,16 +4662,118 @@ msgstr "Variableansicht" msgid "Current Status: " msgstr "" -#: src/ui/gui/psppire.glade:257 +#: src/ui/gui/psppire.glade:258 #, fuzzy msgid "Name Variable:" msgstr "Variableansicht" -#: src/ui/gui/psppire.glade:290 +#: src/ui/gui/psppire.glade:291 #, fuzzy msgid "Variable(s):" msgstr "Variableansicht" +#: src/ui/gui/psppire.glade:444 +msgid "Analyse all cases. Do not create groups." +msgstr "" + +#: src/ui/gui/psppire.glade:454 +msgid "Compare groups." +msgstr "" + +#: src/ui/gui/psppire.glade:467 +msgid "Organise output by groups." +msgstr "" + +#: src/ui/gui/psppire.glade:514 +msgid "Groups based on:" +msgstr "" + +#: src/ui/gui/psppire.glade:579 +msgid "Sort the file by grouping variables." +msgstr "" + +#: src/ui/gui/psppire.glade:590 +msgid "File is already sorted." +msgstr "" + +#: src/ui/gui/psppire.glade:634 +msgid "Current Status : " +msgstr "" + +#: src/ui/gui/psppire.glade:642 +msgid "Analysis by groups is off" +msgstr "" + +#: src/ui/gui/psppire.glade:740 +#, fuzzy +msgid "All Cases" +msgstr "Alle Datei" + +#: src/ui/gui/psppire.glade:761 +msgid "If condition is satisfied" +msgstr "" + +#: src/ui/gui/psppire.glade:780 +msgid "If..." +msgstr "" + +#: src/ui/gui/psppire.glade:816 +msgid "Random Sample of cases" +msgstr "" + +#: src/ui/gui/psppire.glade:830 +#, fuzzy +msgid "Sample..." +msgstr "Muster" + +#: src/ui/gui/psppire.glade:841 +msgid "Approximately 23% of cases" +msgstr "" + +#: src/ui/gui/psppire.glade:876 +msgid "Based on time or case range" +msgstr "" + +#: src/ui/gui/psppire.glade:890 +msgid "Range..." +msgstr "" + +#: src/ui/gui/psppire.glade:901 +msgid "2 thru 3" +msgstr "" + +#: src/ui/gui/psppire.glade:936 +#, fuzzy +msgid "Use filter variable" +msgstr "Variableansicht" + +#: src/ui/gui/psppire.glade:983 +#, fuzzy +msgid "Select" +msgstr "Schriftwahlung" + +#: src/ui/gui/psppire.glade:1012 +#, fuzzy +msgid "Filtered" +msgstr "Datei:" + +#: src/ui/gui/psppire.glade:1022 +msgid "Deleted" +msgstr "" + +#: src/ui/gui/psppire.glade:1039 +#, fuzzy +msgid "Unselected Cases Are" +msgstr "_Stecken" + +#: src/ui/gui/psppire.glade:1067 +msgid "Curent Status : " +msgstr "" + +#: src/ui/gui/psppire.glade:1079 +msgid "Do not filter cases" +msgstr "" + #: src/ui/gui/psppire-var-store.c:470 msgid "None" msgstr "Keine" @@ -4663,10 +4786,6 @@ msgstr "Wissenschäflich" msgid "Custom" msgstr "Spezial" -#: src/ui/gui/sort-cases-dialog.c:367 -msgid "Criteria" -msgstr "" - #: src/ui/gui/syntax-editor.c:80 #, c-format msgid "Save contents of syntax editor to %s?" @@ -4759,6 +4878,11 @@ msgstr "Ordinalwert" msgid "Scale" msgstr "Skalwert" +#: src/ui/gui/weight-cases-dialog.c:91 +#, c-format +msgid "Weight cases by %s" +msgstr "" + #: src/ui/gui/window-manager.c:141 #, fuzzy, c-format msgid "Syntax%d" diff --git a/po/pspp.pot b/po/pspp.pot index 81f892fe26..1b4bd2d569 100644 --- a/po/pspp.pot +++ b/po/pspp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2007-03-26 18:17+0800\n" +"POT-Creation-Date: 2007-04-01 13:38+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -175,13 +175,13 @@ msgstr "" msgid "Month number %f is not between 1 and 12." msgstr "" -#: src/data/dictionary.c:717 +#: src/data/dictionary.c:724 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/dictionary.c:1238 +#: src/data/dictionary.c:1245 msgid "Variable suffix too large." msgstr "" @@ -308,13 +308,13 @@ msgid "%s variables are not compatible with %s format %s." msgstr "" #: src/data/format.c:310 src/data/por-file-reader.c:489 -#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1066 +#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1075 #: src/ui/gui/psppire-var-store.c:481 msgid "String" msgstr "" #: src/data/format.c:310 src/data/por-file-reader.c:489 -#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:962 +#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:971 #: src/ui/gui/psppire-var-store.c:474 msgid "Numeric" msgstr "" @@ -821,15 +821,15 @@ msgstr "" msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" -#: src/data/variable.c:964 +#: src/data/variable.c:966 msgid "ordinary" msgstr "" -#: src/data/variable.c:966 +#: src/data/variable.c:968 msgid "system" msgstr "" -#: src/data/variable.c:968 +#: src/data/variable.c:970 msgid "scratch" msgstr "" @@ -1031,7 +1031,7 @@ msgstr "" #: src/language/dictionary/sys-file-info.c:160 #: src/language/dictionary/sys-file-info.c:395 #: src/language/dictionary/sys-file-info.c:620 -#: src/language/stats/descriptives.c:879 +#: src/language/stats/descriptives.c:880 msgid "Variable" msgstr "" @@ -1286,7 +1286,7 @@ msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "" -#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:364 +#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:365 msgid "No variables specified." msgstr "" @@ -1382,7 +1382,7 @@ msgstr[0] "" msgstr[1] "" #: src/language/data-io/print-space.c:75 src/language/lexer/lexer.c:465 -#: src/language/stats/autorecode.c:153 src/language/xforms/select-if.c:61 +#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:61 msgid "expecting end of command" msgstr "" @@ -1421,7 +1421,7 @@ msgid "" "will be made permanent." msgstr "" -#: src/language/dictionary/delete-variables.c:48 +#: src/language/dictionary/delete-variables.c:49 msgid "" "DELETE VARIABLES may not be used to delete all variables from the active " "file dictionary. Use NEW FILE instead." @@ -1570,8 +1570,8 @@ msgstr "" #: src/language/dictionary/split-file.c:86 #: src/language/dictionary/sys-file-info.c:549 -#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145 -#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187 +#: src/language/stats/crosstabs.q:1119 src/language/stats/crosstabs.q:1146 +#: src/language/stats/crosstabs.q:1166 src/language/stats/crosstabs.q:1188 #: src/language/stats/examine.q:1189 src/language/stats/frequencies.q:1145 #: src/language/stats/frequencies.q:1269 msgid "Value" @@ -2115,57 +2115,57 @@ msgstr "" msgid "expecting number or data string" msgstr "" -#: src/language/lexer/variable-parser.c:54 +#: src/language/lexer/variable-parser.c:64 msgid "expecting variable name" msgstr "" -#: src/language/lexer/variable-parser.c:64 +#: src/language/lexer/variable-parser.c:74 #, c-format msgid "%s is not a variable name." msgstr "" -#: src/language/lexer/variable-parser.c:173 +#: src/language/lexer/variable-parser.c:183 #, c-format msgid "" "%s is not a numeric variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:176 +#: src/language/lexer/variable-parser.c:186 #, c-format msgid "" "%s is not a string variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:180 +#: src/language/lexer/variable-parser.c:190 #, c-format msgid "Scratch variables (such as %s) are not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:184 +#: src/language/lexer/variable-parser.c:194 #, c-format msgid "" "%s and %s are not the same type. All variables in this variable list must " "be of the same type. %s will be omitted from the list." msgstr "" -#: src/language/lexer/variable-parser.c:190 +#: src/language/lexer/variable-parser.c:200 #, c-format msgid "" "%s and %s are string variables with different widths. All variables in this " "variable list must have the same width. %s will be omttied from the list." msgstr "" -#: src/language/lexer/variable-parser.c:195 +#: src/language/lexer/variable-parser.c:205 #, c-format msgid "Variable %s appears twice in variable list." msgstr "" -#: src/language/lexer/variable-parser.c:308 +#: src/language/lexer/variable-parser.c:318 #, c-format msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary." msgstr "" -#: src/language/lexer/variable-parser.c:316 +#: src/language/lexer/variable-parser.c:326 #, c-format msgid "" "When using the TO keyword to specify several variables, both variables must " @@ -2173,19 +2173,19 @@ msgid "" "system variables. %s is a %s variable, whereas %s is %s." msgstr "" -#: src/language/lexer/variable-parser.c:390 +#: src/language/lexer/variable-parser.c:400 msgid "incorrect use of TO convention" msgstr "" -#: src/language/lexer/variable-parser.c:433 +#: src/language/lexer/variable-parser.c:443 msgid "Scratch variables not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:455 +#: src/language/lexer/variable-parser.c:465 msgid "Prefixes don't match in use of TO convention." msgstr "" -#: src/language/lexer/variable-parser.c:460 +#: src/language/lexer/variable-parser.c:470 msgid "Bad bounds in use of TO convention." msgstr "" @@ -2243,17 +2243,17 @@ msgid "" "contains the aggregate variables and the break variables." msgstr "" -#: src/language/stats/autorecode.c:135 +#: src/language/stats/autorecode.c:136 #, c-format msgid "Source variable count (%u) does not match target variable count (%u)." msgstr "" -#: src/language/stats/autorecode.c:163 +#: src/language/stats/autorecode.c:164 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/language/stats/autorecode.c:170 +#: src/language/stats/autorecode.c:171 #, c-format msgid "Duplicate variable name %s among target variables." msgstr "" @@ -2276,8 +2276,8 @@ msgid "Group2" msgstr "" #: src/language/stats/binomial.c:208 src/language/stats/chisquare.c:237 -#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:825 -#: src/language/stats/crosstabs.q:1025 src/language/stats/crosstabs.q:1748 +#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:826 +#: src/language/stats/crosstabs.q:1026 src/language/stats/crosstabs.q:1749 #: src/language/stats/examine.q:909 src/language/stats/frequencies.q:1222 #: src/language/stats/oneway.q:307 src/language/stats/oneway.q:471 #: src/language/stats/regression.q:324 @@ -2285,15 +2285,15 @@ msgid "Total" msgstr "" #: src/language/stats/binomial.c:253 src/language/stats/chisquare.c:260 -#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184 +#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1185 msgid "Category" msgstr "" -#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:835 +#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:836 #: src/language/stats/examine.q:985 src/language/stats/frequencies.q:1518 #: src/language/stats/npar-summary.c:124 src/language/stats/oneway.q:392 -#: src/language/stats/t-test.q:681 src/language/stats/t-test.q:704 -#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1367 +#: src/language/stats/t-test.q:680 src/language/stats/t-test.q:703 +#: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1366 msgid "N" msgstr "" @@ -2342,10 +2342,10 @@ msgstr "" msgid "Chi-Square" msgstr "" -#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1119 +#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1120 #: src/language/stats/oneway.q:280 src/language/stats/oneway.q:681 -#: src/language/stats/regression.q:317 src/language/stats/t-test.q:981 -#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266 +#: src/language/stats/regression.q:317 src/language/stats/t-test.q:980 +#: src/language/stats/t-test.q:1172 src/language/stats/t-test.q:1265 msgid "df" msgstr "" @@ -2362,280 +2362,280 @@ msgstr "" msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/language/stats/crosstabs.q:337 +#: src/language/stats/crosstabs.q:338 msgid "Too many crosstabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:347 +#: src/language/stats/crosstabs.q:348 msgid "expecting BY" msgstr "" -#: src/language/stats/crosstabs.q:414 +#: src/language/stats/crosstabs.q:415 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:452 +#: src/language/stats/crosstabs.q:453 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:820 +#: src/language/stats/crosstabs.q:821 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:973 +#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:973 msgid "Cases" msgstr "" -#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:907 +#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:907 #: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1519 msgid "Valid" msgstr "" -#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:908 +#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:908 #: src/language/stats/frequencies.q:1213 src/language/stats/frequencies.q:1520 #: src/ui/gui/var-sheet.c:73 msgid "Missing" msgstr "" -#: src/language/stats/crosstabs.q:836 src/language/stats/examine.q:988 +#: src/language/stats/crosstabs.q:837 src/language/stats/examine.q:988 #: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148 #: src/language/stats/frequencies.q:1149 msgid "Percent" msgstr "" -#: src/language/stats/crosstabs.q:1077 +#: src/language/stats/crosstabs.q:1078 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1078 +#: src/language/stats/crosstabs.q:1079 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1079 +#: src/language/stats/crosstabs.q:1080 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1080 +#: src/language/stats/crosstabs.q:1081 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1081 +#: src/language/stats/crosstabs.q:1082 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1082 +#: src/language/stats/crosstabs.q:1083 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1083 +#: src/language/stats/crosstabs.q:1084 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1084 +#: src/language/stats/crosstabs.q:1085 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1115 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144 -#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185 +#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145 +#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1186 #: src/language/stats/examine.q:1420 msgid "Statistic" msgstr "" -#: src/language/stats/crosstabs.q:1121 +#: src/language/stats/crosstabs.q:1122 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1123 +#: src/language/stats/crosstabs.q:1124 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1125 +#: src/language/stats/crosstabs.q:1126 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1140 +#: src/language/stats/crosstabs.q:1141 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188 +#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189 +#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190 +#: src/language/stats/crosstabs.q:1149 src/language/stats/crosstabs.q:1191 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1159 +#: src/language/stats/crosstabs.q:1160 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1163 +#: src/language/stats/crosstabs.q:1164 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:985 -#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269 +#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:984 +#: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1268 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:986 -#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1270 +#: src/language/stats/crosstabs.q:1168 src/language/stats/t-test.q:985 +#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1181 +#: src/language/stats/crosstabs.q:1182 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:68 +#: src/language/stats/crosstabs.q:1187 src/ui/gui/var-sheet.c:68 msgid "Type" msgstr "" -#: src/language/stats/crosstabs.q:1940 +#: src/language/stats/crosstabs.q:1941 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1941 +#: src/language/stats/crosstabs.q:1942 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1942 +#: src/language/stats/crosstabs.q:1943 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1943 +#: src/language/stats/crosstabs.q:1944 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1944 +#: src/language/stats/crosstabs.q:1945 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1981 src/language/stats/crosstabs.q:2051 -#: src/language/stats/crosstabs.q:2110 +#: src/language/stats/crosstabs.q:1982 src/language/stats/crosstabs.q:2052 +#: src/language/stats/crosstabs.q:2111 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126 +#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127 +#: src/language/stats/crosstabs.q:1999 src/language/stats/crosstabs.q:2128 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1999 +#: src/language/stats/crosstabs.q:2000 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2000 +#: src/language/stats/crosstabs.q:2001 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:2005 +#: src/language/stats/crosstabs.q:2006 msgid "Phi" msgstr "" -#: src/language/stats/crosstabs.q:2006 +#: src/language/stats/crosstabs.q:2007 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:2007 +#: src/language/stats/crosstabs.q:2008 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2008 +#: src/language/stats/crosstabs.q:2009 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:2009 +#: src/language/stats/crosstabs.q:2010 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:2010 +#: src/language/stats/crosstabs.q:2011 msgid "Gamma" msgstr "" -#: src/language/stats/crosstabs.q:2011 +#: src/language/stats/crosstabs.q:2012 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:2012 +#: src/language/stats/crosstabs.q:2013 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:2013 +#: src/language/stats/crosstabs.q:2014 msgid "Kappa" msgstr "" -#: src/language/stats/crosstabs.q:2083 +#: src/language/stats/crosstabs.q:2084 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:2086 +#: src/language/stats/crosstabs.q:2087 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:2094 +#: src/language/stats/crosstabs.q:2095 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:2097 +#: src/language/stats/crosstabs.q:2098 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:2128 +#: src/language/stats/crosstabs.q:2129 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2133 +#: src/language/stats/crosstabs.q:2134 msgid "Lambda" msgstr "" -#: src/language/stats/crosstabs.q:2134 +#: src/language/stats/crosstabs.q:2135 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:2135 +#: src/language/stats/crosstabs.q:2136 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2136 +#: src/language/stats/crosstabs.q:2137 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:2137 +#: src/language/stats/crosstabs.q:2138 msgid "Eta" msgstr "" -#: src/language/stats/crosstabs.q:2142 +#: src/language/stats/crosstabs.q:2143 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:2143 src/language/stats/crosstabs.q:2144 +#: src/language/stats/crosstabs.q:2144 src/language/stats/crosstabs.q:2145 #, c-format msgid "%s Dependent" msgstr "" #: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1525 #: src/language/stats/frequencies.q:125 src/language/stats/npar-summary.c:127 -#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:682 -#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:829 -#: src/language/stats/t-test.q:1167 +#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:681 +#: src/language/stats/t-test.q:704 src/language/stats/t-test.q:828 +#: src/language/stats/t-test.q:1166 msgid "Mean" msgstr "" @@ -2691,47 +2691,47 @@ msgstr "" msgid "Sum" msgstr "" -#: src/language/stats/descriptives.c:346 +#: src/language/stats/descriptives.c:347 #, c-format msgid "Z-score variable name %s would be a duplicate variable name." msgstr "" -#: src/language/stats/descriptives.c:449 +#: src/language/stats/descriptives.c:450 msgid "expecting statistic name: reverting to default" msgstr "" -#: src/language/stats/descriptives.c:522 +#: src/language/stats/descriptives.c:523 msgid "" "Ran out of generic names for Z-score variables. There are only 126 generic " "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." msgstr "" -#: src/language/stats/descriptives.c:554 +#: src/language/stats/descriptives.c:555 msgid "Mapping of variables to corresponding Z-scores." msgstr "" -#: src/language/stats/descriptives.c:559 +#: src/language/stats/descriptives.c:560 msgid "Source" msgstr "" -#: src/language/stats/descriptives.c:560 +#: src/language/stats/descriptives.c:561 msgid "Target" msgstr "" -#: src/language/stats/descriptives.c:670 +#: src/language/stats/descriptives.c:671 #, c-format msgid "Z-score of %s" msgstr "" -#: src/language/stats/descriptives.c:882 +#: src/language/stats/descriptives.c:883 msgid "Valid N" msgstr "" -#: src/language/stats/descriptives.c:883 +#: src/language/stats/descriptives.c:884 msgid "Missing N" msgstr "" -#: src/language/stats/descriptives.c:910 +#: src/language/stats/descriptives.c:911 #, c-format msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" @@ -2798,9 +2798,9 @@ msgid "Median" msgstr "" #: src/language/stats/examine.q:1617 src/language/stats/npar-summary.c:130 -#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:683 -#: src/language/stats/t-test.q:706 src/language/stats/t-test.q:831 -#: src/language/stats/t-test.q:1168 +#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:682 +#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:830 +#: src/language/stats/t-test.q:1167 msgid "Std. Deviation" msgstr "" @@ -3029,7 +3029,7 @@ msgid "" "exactly %d values." msgstr "" -#: src/language/stats/npar.q:422 src/language/stats/t-test.q:485 +#: src/language/stats/npar.q:422 src/language/stats/t-test.q:484 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%d) did not " @@ -3075,7 +3075,7 @@ msgid "Mean Square" msgstr "" #: src/language/stats/oneway.q:282 src/language/stats/regression.q:319 -#: src/language/stats/t-test.q:978 +#: src/language/stats/t-test.q:977 msgid "F" msgstr "" @@ -3129,13 +3129,13 @@ msgid "Value of Contrast" msgstr "" #: src/language/stats/oneway.q:680 src/language/stats/regression.q:223 -#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172 -#: src/language/stats/t-test.q:1265 +#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171 +#: src/language/stats/t-test.q:1264 msgid "t" msgstr "" -#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:982 -#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1267 +#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:981 +#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266 msgid "Sig. (2-tailed)" msgstr "" @@ -3252,7 +3252,7 @@ msgstr "" msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:1147 +#: src/language/stats/regression.q:1181 msgid "Dependent variable must be numeric." msgstr "" @@ -3276,115 +3276,115 @@ msgstr "" msgid "VARIABLES subcommand is not appropriate with PAIRS" msgstr "" -#: src/language/stats/t-test.q:335 +#: src/language/stats/t-test.q:334 msgid "One or more VARIABLES must be specified." msgstr "" -#: src/language/stats/t-test.q:379 +#: src/language/stats/t-test.q:378 #, c-format msgid "Long string variable %s is not valid here." msgstr "" -#: src/language/stats/t-test.q:399 src/language/stats/t-test.q:413 +#: src/language/stats/t-test.q:398 src/language/stats/t-test.q:412 msgid "" "When applying GROUPS to a string variable, two values must be specified." msgstr "" -#: src/language/stats/t-test.q:502 +#: src/language/stats/t-test.q:501 msgid "At least two variables must be specified on PAIRS." msgstr "" -#: src/language/stats/t-test.q:679 +#: src/language/stats/t-test.q:678 msgid "One-Sample Statistics" msgstr "" -#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707 -#: src/language/stats/t-test.q:832 +#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706 +#: src/language/stats/t-test.q:831 msgid "SE. Mean" msgstr "" -#: src/language/stats/t-test.q:702 +#: src/language/stats/t-test.q:701 msgid "Group Statistics" msgstr "" -#: src/language/stats/t-test.q:826 +#: src/language/stats/t-test.q:825 msgid "Paired Sample Statistics" msgstr "" -#: src/language/stats/t-test.q:848 src/language/stats/t-test.q:1193 -#: src/language/stats/t-test.q:1384 +#: src/language/stats/t-test.q:847 src/language/stats/t-test.q:1192 +#: src/language/stats/t-test.q:1383 #, c-format msgid "Pair %d" msgstr "" -#: src/language/stats/t-test.q:966 +#: src/language/stats/t-test.q:965 msgid "Independent Samples Test" msgstr "" -#: src/language/stats/t-test.q:974 +#: src/language/stats/t-test.q:973 msgid "Levene's Test for Equality of Variances" msgstr "" -#: src/language/stats/t-test.q:976 +#: src/language/stats/t-test.q:975 msgid "t-test for Equality of Means" msgstr "" -#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1369 +#: src/language/stats/t-test.q:978 src/language/stats/t-test.q:1368 msgid "Sig." msgstr "" -#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1268 +#: src/language/stats/t-test.q:982 src/language/stats/t-test.q:1267 msgid "Mean Difference" msgstr "" -#: src/language/stats/t-test.q:984 +#: src/language/stats/t-test.q:983 msgid "Std. Error Difference" msgstr "" -#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164 -#: src/language/stats/t-test.q:1260 +#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1163 +#: src/language/stats/t-test.q:1259 #, c-format msgid "%g%% Confidence Interval of the Difference" msgstr "" -#: src/language/stats/t-test.q:1044 +#: src/language/stats/t-test.q:1043 msgid "Equal variances assumed" msgstr "" -#: src/language/stats/t-test.q:1096 +#: src/language/stats/t-test.q:1095 msgid "Equal variances not assumed" msgstr "" -#: src/language/stats/t-test.q:1154 +#: src/language/stats/t-test.q:1153 msgid "Paired Samples Test" msgstr "" -#: src/language/stats/t-test.q:1157 +#: src/language/stats/t-test.q:1156 msgid "Paired Differences" msgstr "" -#: src/language/stats/t-test.q:1169 +#: src/language/stats/t-test.q:1168 msgid "Std. Error Mean" msgstr "" -#: src/language/stats/t-test.q:1249 +#: src/language/stats/t-test.q:1248 msgid "One-Sample Test" msgstr "" -#: src/language/stats/t-test.q:1254 +#: src/language/stats/t-test.q:1253 #, c-format msgid "Test Value = %f" msgstr "" -#: src/language/stats/t-test.q:1364 +#: src/language/stats/t-test.q:1363 msgid "Paired Samples Correlations" msgstr "" -#: src/language/stats/t-test.q:1368 +#: src/language/stats/t-test.q:1367 msgid "Correlation" msgstr "" -#: src/language/stats/t-test.q:1387 +#: src/language/stats/t-test.q:1386 #, c-format msgid "%s & %s" msgstr "" @@ -4128,100 +4128,116 @@ msgstr "" msgid "Style of bevel around the custom entry button" msgstr "" -#: src/ui/gui/data-editor.c:159 +#: src/ui/gui/data-editor.c:161 msgid "Weights" msgstr "" -#: src/ui/gui/data-editor.c:160 +#: src/ui/gui/data-editor.c:162 msgid "Weight cases by variable" msgstr "" -#: src/ui/gui/data-editor.c:169 src/ui/gui/data-editor.glade:294 +#: src/ui/gui/data-editor.c:171 src/ui/gui/data-editor.glade:293 msgid "Transpose" msgstr "" -#: src/ui/gui/data-editor.c:170 +#: src/ui/gui/data-editor.c:172 msgid "Transpose the cases with the variables" msgstr "" -#: src/ui/gui/data-editor.c:494 +#: src/ui/gui/data-editor.c:183 +msgid "Split" +msgstr "" + +#: src/ui/gui/data-editor.c:184 +msgid "Split the active file" +msgstr "" + +#: src/ui/gui/data-editor.c:194 +msgid "Sort" +msgstr "" + +#: src/ui/gui/data-editor.c:195 +msgid "Sort cases in the active file" +msgstr "" + +#: src/ui/gui/data-editor.c:531 msgid "Font Selection" msgstr "" -#: src/ui/gui/data-editor.c:672 +#: src/ui/gui/data-editor.c:709 msgid "No Split" msgstr "" -#: src/ui/gui/data-editor.c:680 +#: src/ui/gui/data-editor.c:717 msgid "Split by " msgstr "" -#: src/ui/gui/data-editor.c:705 +#: src/ui/gui/data-editor.c:742 msgid "Filter off" msgstr "" -#: src/ui/gui/data-editor.c:718 +#: src/ui/gui/data-editor.c:755 #, c-format msgid "Filter by %s" msgstr "" -#: src/ui/gui/data-editor.c:736 +#: src/ui/gui/data-editor.c:773 msgid "Weights off" msgstr "" -#: src/ui/gui/data-editor.c:749 +#: src/ui/gui/data-editor.c:786 #, c-format msgid "Weight by %s" msgstr "" -#: src/ui/gui/data-editor.c:772 src/ui/gui/data-editor.c:983 -#: src/ui/gui/data-editor.glade:414 +#: src/ui/gui/data-editor.c:809 src/ui/gui/data-editor.c:1020 +#: src/ui/gui/data-editor.glade:412 msgid "Open" msgstr "" -#: src/ui/gui/data-editor.c:773 +#: src/ui/gui/data-editor.c:810 msgid "Open a data file" msgstr "" -#: src/ui/gui/data-editor.c:781 src/ui/gui/data-editor.c:888 -#: src/ui/gui/data-editor.glade:424 +#: src/ui/gui/data-editor.c:818 src/ui/gui/data-editor.c:925 +#: src/ui/gui/data-editor.glade:422 msgid "Save" msgstr "" -#: src/ui/gui/data-editor.c:782 src/ui/gui/data-editor.c:792 +#: src/ui/gui/data-editor.c:819 src/ui/gui/data-editor.c:829 msgid "Save data to file" msgstr "" -#: src/ui/gui/data-editor.c:791 +#: src/ui/gui/data-editor.c:828 msgid "Save As" msgstr "" -#: src/ui/gui/data-editor.c:800 +#: src/ui/gui/data-editor.c:837 msgid "New" msgstr "" -#: src/ui/gui/data-editor.c:801 +#: src/ui/gui/data-editor.c:838 msgid "New data file" msgstr "" -#: src/ui/gui/data-editor.c:896 src/ui/gui/data-editor.c:991 +#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1028 msgid "System Files (*.sav)" msgstr "" -#: src/ui/gui/data-editor.c:902 src/ui/gui/data-editor.c:997 +#: src/ui/gui/data-editor.c:939 src/ui/gui/data-editor.c:1034 msgid "Portable Files (*.por) " msgstr "" -#: src/ui/gui/data-editor.c:908 src/ui/gui/data-editor.c:1003 +#: src/ui/gui/data-editor.c:945 src/ui/gui/data-editor.c:1040 #: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:524 msgid "All Files" msgstr "" -#: src/ui/gui/data-editor.c:916 +#: src/ui/gui/data-editor.c:953 msgid "System File" msgstr "" -#: src/ui/gui/data-editor.c:921 +#: src/ui/gui/data-editor.c:958 msgid "Portable File" msgstr "" @@ -4276,8 +4292,8 @@ msgstr "" msgid "Grid Lines" msgstr "" -#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:614 -#: src/ui/gui/data-editor.glade:1324 src/ui/gui/data-editor.glade:1502 +#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:623 +#: src/ui/gui/data-editor.glade:1333 src/ui/gui/data-editor.glade:1511 msgid "Value Labels" msgstr "" @@ -4285,11 +4301,11 @@ msgstr "" msgid "Data" msgstr "" -#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:497 +#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:507 msgid "Variables" msgstr "" -#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:550 +#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:560 msgid "Insert Variable" msgstr "" @@ -4297,225 +4313,228 @@ msgstr "" msgid "Insert Cases" msgstr "" -#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:486 -#: src/ui/gui/data-editor.glade:1868 +#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:496 +#: src/ui/gui/data-editor.glade:1877 msgid "Go To Case" msgstr "" -#: src/ui/gui/data-editor.glade:286 src/ui/gui/data-editor.glade:1933 +#: src/ui/gui/data-editor.glade:285 src/ui/gui/data-editor.glade:1942 msgid "Sort Cases" msgstr "" -#: src/ui/gui/data-editor.glade:302 +#: src/ui/gui/data-editor.glade:301 msgid "Restructure" msgstr "" -#: src/ui/gui/data-editor.glade:310 +#: src/ui/gui/data-editor.glade:309 msgid "Merge Files" msgstr "" -#: src/ui/gui/data-editor.glade:318 +#: src/ui/gui/data-editor.glade:317 msgid "Aggregate" msgstr "" -#: src/ui/gui/data-editor.glade:332 src/ui/gui/data-editor.glade:571 +#: src/ui/gui/data-editor.glade:330 src/ui/gui/data-editor.glade:580 msgid "Split File" msgstr "" -#: src/ui/gui/data-editor.glade:340 src/ui/gui/data-editor.glade:594 +#: src/ui/gui/data-editor.glade:338 src/ui/gui/data-editor.glade:603 msgid "Select Cases" msgstr "" -#: src/ui/gui/data-editor.glade:347 src/ui/gui/data-editor.glade:582 +#: src/ui/gui/data-editor.glade:345 src/ui/gui/data-editor.glade:591 msgid "Weight Cases" msgstr "" -#: src/ui/gui/data-editor.glade:358 src/ui/gui/syntax-editor.glade:233 +#: src/ui/gui/data-editor.glade:356 src/ui/gui/syntax-editor.glade:233 msgid "_Windows" msgstr "" -#: src/ui/gui/data-editor.glade:365 src/ui/gui/syntax-editor.glade:242 +#: src/ui/gui/data-editor.glade:363 src/ui/gui/syntax-editor.glade:242 msgid "_Minimise All Windows" msgstr "" -#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:254 +#: src/ui/gui/data-editor.glade:374 src/ui/gui/syntax-editor.glade:254 msgid "_Help" msgstr "" -#: src/ui/gui/data-editor.glade:383 src/ui/gui/syntax-editor.glade:263 +#: src/ui/gui/data-editor.glade:381 src/ui/gui/syntax-editor.glade:263 msgid "_Reference Manual" msgstr "" -#: src/ui/gui/data-editor.glade:390 src/ui/gui/syntax-editor.glade:271 +#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:271 msgid "_About" msgstr "" -#: src/ui/gui/data-editor.glade:435 +#: src/ui/gui/data-editor.glade:433 msgid "Print" msgstr "" -#: src/ui/gui/data-editor.glade:455 +#: src/ui/gui/data-editor.glade:444 +msgid "Recall" +msgstr "" + +#: src/ui/gui/data-editor.glade:465 msgid "Undo" msgstr "" -#: src/ui/gui/data-editor.glade:466 +#: src/ui/gui/data-editor.glade:476 msgid "Redo" msgstr "" -#: src/ui/gui/data-editor.glade:518 +#: src/ui/gui/data-editor.glade:528 msgid "Find" msgstr "" -#: src/ui/gui/data-editor.glade:538 +#: src/ui/gui/data-editor.glade:548 msgid "Insert Case" msgstr "" -#: src/ui/gui/data-editor.glade:626 +#: src/ui/gui/data-editor.glade:635 msgid "Use Sets" msgstr "" -#: src/ui/gui/data-editor.glade:708 +#: src/ui/gui/data-editor.glade:717 msgid "Data View" msgstr "" -#: src/ui/gui/data-editor.glade:735 +#: src/ui/gui/data-editor.glade:744 msgid "Variable View" msgstr "" -#: src/ui/gui/data-editor.glade:765 +#: src/ui/gui/data-editor.glade:774 msgid "Information Area" msgstr "" -#: src/ui/gui/data-editor.glade:784 +#: src/ui/gui/data-editor.glade:793 msgid "Processor Area" msgstr "" -#: src/ui/gui/data-editor.glade:809 +#: src/ui/gui/data-editor.glade:818 msgid "OMS Area" msgstr "" -#: src/ui/gui/data-editor.glade:834 +#: src/ui/gui/data-editor.glade:843 msgid "Case Counter Area" msgstr "" -#: src/ui/gui/data-editor.glade:859 +#: src/ui/gui/data-editor.glade:868 msgid "Filter Use Status Area" msgstr "" -#: src/ui/gui/data-editor.glade:885 +#: src/ui/gui/data-editor.glade:894 msgid "Weight Status Area" msgstr "" -#: src/ui/gui/data-editor.glade:911 +#: src/ui/gui/data-editor.glade:920 msgid "Split File Status Area" msgstr "" -#: src/ui/gui/data-editor.glade:941 +#: src/ui/gui/data-editor.glade:950 msgid "Variable Type" msgstr "" -#: src/ui/gui/data-editor.glade:976 src/ui/gui/psppire-var-store.c:475 +#: src/ui/gui/data-editor.glade:985 src/ui/gui/psppire-var-store.c:475 msgid "Comma" msgstr "" -#: src/ui/gui/data-editor.glade:991 src/ui/gui/psppire-var-store.c:476 +#: src/ui/gui/data-editor.glade:1000 src/ui/gui/psppire-var-store.c:476 msgid "Dot" msgstr "" -#: src/ui/gui/data-editor.glade:1006 +#: src/ui/gui/data-editor.glade:1015 msgid "Scientific notation" msgstr "" -#: src/ui/gui/data-editor.glade:1021 src/ui/gui/psppire-var-store.c:478 +#: src/ui/gui/data-editor.glade:1030 src/ui/gui/psppire-var-store.c:478 msgid "Date" msgstr "" -#: src/ui/gui/data-editor.glade:1036 src/ui/gui/psppire-var-store.c:479 +#: src/ui/gui/data-editor.glade:1045 src/ui/gui/psppire-var-store.c:479 msgid "Dollar" msgstr "" -#: src/ui/gui/data-editor.glade:1051 +#: src/ui/gui/data-editor.glade:1060 msgid "Custom currency" msgstr "" -#: src/ui/gui/data-editor.glade:1143 +#: src/ui/gui/data-editor.glade:1152 msgid "positive" msgstr "" -#: src/ui/gui/data-editor.glade:1149 +#: src/ui/gui/data-editor.glade:1158 msgid "negative" msgstr "" -#: src/ui/gui/data-editor.glade:1162 +#: src/ui/gui/data-editor.glade:1171 msgid "Sample" msgstr "" -#: src/ui/gui/data-editor.glade:1212 +#: src/ui/gui/data-editor.glade:1221 msgid "Width:" msgstr "" -#: src/ui/gui/data-editor.glade:1256 +#: src/ui/gui/data-editor.glade:1265 msgid "Decimal Places:" msgstr "" -#: src/ui/gui/data-editor.glade:1422 +#: src/ui/gui/data-editor.glade:1431 msgid "Value Label:" msgstr "" -#: src/ui/gui/data-editor.glade:1435 +#: src/ui/gui/data-editor.glade:1444 msgid "Value:" msgstr "" -#: src/ui/gui/data-editor.glade:1566 +#: src/ui/gui/data-editor.glade:1575 msgid "Missing Values" msgstr "" -#: src/ui/gui/data-editor.glade:1584 +#: src/ui/gui/data-editor.glade:1593 msgid "_Range plus one optional discrete missing value" msgstr "" -#: src/ui/gui/data-editor.glade:1608 +#: src/ui/gui/data-editor.glade:1617 msgid "_Low:" msgstr "" -#: src/ui/gui/data-editor.glade:1637 +#: src/ui/gui/data-editor.glade:1646 msgid "_High:" msgstr "" -#: src/ui/gui/data-editor.glade:1678 +#: src/ui/gui/data-editor.glade:1687 msgid "Di_screte value:" msgstr "" -#: src/ui/gui/data-editor.glade:1725 +#: src/ui/gui/data-editor.glade:1734 msgid "_No missing values" msgstr "" -#: src/ui/gui/data-editor.glade:1742 +#: src/ui/gui/data-editor.glade:1751 msgid "_Discrete missing values" msgstr "" -#: src/ui/gui/data-editor.glade:1885 +#: src/ui/gui/data-editor.glade:1894 msgid "Case Number:" msgstr "" -#: src/ui/gui/data-editor.glade:1994 +#: src/ui/gui/data-editor.glade:2003 src/ui/gui/psppire.glade:1187 msgid "Sort by:" msgstr "" -#: src/ui/gui/data-editor.glade:2043 src/ui/gui/sort-cases-dialog.c:279 +#: src/ui/gui/data-editor.glade:2052 src/ui/gui/psppire.glade:1240 msgid "Ascending" msgstr "" -#: src/ui/gui/data-editor.glade:2056 src/ui/gui/sort-cases-dialog.c:281 +#: src/ui/gui/data-editor.glade:2065 src/ui/gui/psppire.glade:1250 msgid "Descending" msgstr "" -#: src/ui/gui/data-editor.glade:2072 +#: src/ui/gui/data-editor.glade:2081 src/ui/gui/psppire.glade:1266 msgid "Sort Order" msgstr "" -#: src/ui/gui/dict-display.c:92 src/ui/gui/sort-cases-dialog.c:339 -#: src/ui/gui/transpose-dialog.c:123 +#: src/ui/gui/dict-display.c:92 msgid "Var" msgstr "" @@ -4578,11 +4597,11 @@ msgstr "" msgid "%d" msgstr "" -#: src/ui/gui/psppire.glade:9 +#: src/ui/gui/psppire.glade:11 msgid "This is pre-alpha software. Use at your own risk." msgstr "" -#: src/ui/gui/psppire.glade:10 +#: src/ui/gui/psppire.glade:12 msgid "" " This program is free software; you can redistribute it and/or modify\n" " it under the terms of the GNU General Public License as published by\n" @@ -4600,11 +4619,12 @@ msgid "" " 02110-1301, USA.\n" msgstr "" -#: src/ui/gui/psppire.glade:90 src/ui/gui/psppire.glade:170 +#: src/ui/gui/psppire.glade:89 src/ui/gui/psppire.glade:170 +#: src/ui/gui/weight-cases-dialog.c:85 msgid "Do not weight cases" msgstr "" -#: src/ui/gui/psppire.glade:100 +#: src/ui/gui/psppire.glade:99 msgid "Weight cases by" msgstr "" @@ -4616,14 +4636,110 @@ msgstr "" msgid "Current Status: " msgstr "" -#: src/ui/gui/psppire.glade:257 +#: src/ui/gui/psppire.glade:258 msgid "Name Variable:" msgstr "" -#: src/ui/gui/psppire.glade:290 +#: src/ui/gui/psppire.glade:291 msgid "Variable(s):" msgstr "" +#: src/ui/gui/psppire.glade:444 +msgid "Analyse all cases. Do not create groups." +msgstr "" + +#: src/ui/gui/psppire.glade:454 +msgid "Compare groups." +msgstr "" + +#: src/ui/gui/psppire.glade:467 +msgid "Organise output by groups." +msgstr "" + +#: src/ui/gui/psppire.glade:514 +msgid "Groups based on:" +msgstr "" + +#: src/ui/gui/psppire.glade:579 +msgid "Sort the file by grouping variables." +msgstr "" + +#: src/ui/gui/psppire.glade:590 +msgid "File is already sorted." +msgstr "" + +#: src/ui/gui/psppire.glade:634 +msgid "Current Status : " +msgstr "" + +#: src/ui/gui/psppire.glade:642 +msgid "Analysis by groups is off" +msgstr "" + +#: src/ui/gui/psppire.glade:740 +msgid "All Cases" +msgstr "" + +#: src/ui/gui/psppire.glade:761 +msgid "If condition is satisfied" +msgstr "" + +#: src/ui/gui/psppire.glade:780 +msgid "If..." +msgstr "" + +#: src/ui/gui/psppire.glade:816 +msgid "Random Sample of cases" +msgstr "" + +#: src/ui/gui/psppire.glade:830 +msgid "Sample..." +msgstr "" + +#: src/ui/gui/psppire.glade:841 +msgid "Approximately 23% of cases" +msgstr "" + +#: src/ui/gui/psppire.glade:876 +msgid "Based on time or case range" +msgstr "" + +#: src/ui/gui/psppire.glade:890 +msgid "Range..." +msgstr "" + +#: src/ui/gui/psppire.glade:901 +msgid "2 thru 3" +msgstr "" + +#: src/ui/gui/psppire.glade:936 +msgid "Use filter variable" +msgstr "" + +#: src/ui/gui/psppire.glade:983 +msgid "Select" +msgstr "" + +#: src/ui/gui/psppire.glade:1012 +msgid "Filtered" +msgstr "" + +#: src/ui/gui/psppire.glade:1022 +msgid "Deleted" +msgstr "" + +#: src/ui/gui/psppire.glade:1039 +msgid "Unselected Cases Are" +msgstr "" + +#: src/ui/gui/psppire.glade:1067 +msgid "Curent Status : " +msgstr "" + +#: src/ui/gui/psppire.glade:1079 +msgid "Do not filter cases" +msgstr "" + #: src/ui/gui/psppire-var-store.c:470 msgid "None" msgstr "" @@ -4636,10 +4752,6 @@ msgstr "" msgid "Custom" msgstr "" -#: src/ui/gui/sort-cases-dialog.c:367 -msgid "Criteria" -msgstr "" - #: src/ui/gui/syntax-editor.c:80 #, c-format msgid "Save contents of syntax editor to %s?" @@ -4729,6 +4841,11 @@ msgstr "" msgid "Scale" msgstr "" +#: src/ui/gui/weight-cases-dialog.c:91 +#, c-format +msgid "Weight cases by %s" +msgstr "" + #: src/ui/gui/window-manager.c:141 #, c-format msgid "Syntax%d" diff --git a/src/data/case.c b/src/data/case.c index c085571563..b09a10f206 100644 --- a/src/data/case.c +++ b/src/data/case.c @@ -334,7 +334,7 @@ case_data_rw_idx (struct ccase *c, size_t idx) in cases A and B and returns a strcmp()-type result. */ int case_compare (const struct ccase *a, const struct ccase *b, - struct variable *const *vp, size_t var_cnt) + const struct variable *const *vp, size_t var_cnt) { return case_compare_2dict (a, b, vp, vp, var_cnt); } @@ -344,7 +344,8 @@ case_compare (const struct ccase *a, const struct ccase *b, and returns a strcmp()-type result. */ int case_compare_2dict (const struct ccase *ca, const struct ccase *cb, - struct variable *const *vap, struct variable *const *vbp, + const struct variable *const *vap, + const struct variable *const *vbp, size_t var_cnt) { for (; var_cnt-- > 0; vap++, vbp++) diff --git a/src/data/case.h b/src/data/case.h index 3d9181192c..587ab28ac4 100644 --- a/src/data/case.h +++ b/src/data/case.h @@ -69,9 +69,10 @@ const char *case_str_idx (const struct ccase *, size_t idx); union value *case_data_rw_idx (struct ccase *, size_t idx); int case_compare (const struct ccase *, const struct ccase *, - struct variable *const *, size_t var_cnt); + const struct variable *const *, size_t var_cnt); int case_compare_2dict (const struct ccase *, const struct ccase *, - struct variable *const *, struct variable *const *, + const struct variable *const *, + const struct variable *const *, size_t var_cnt); const union value *case_data_all (const struct ccase *); diff --git a/src/data/casefilter.c b/src/data/casefilter.c index fb23e4f674..2c6336d658 100644 --- a/src/data/casefilter.c +++ b/src/data/casefilter.c @@ -67,7 +67,7 @@ casefilter_variable_missing (const struct casefilter *filter, N_VARS is the size of VARS. */ struct casefilter * -casefilter_create (enum mv_class class, struct variable **vars, int n_vars) +casefilter_create (enum mv_class class, const struct variable **vars, int n_vars) { int i; struct casefilter * filter = xmalloc (sizeof (*filter)) ; @@ -88,7 +88,7 @@ casefilter_create (enum mv_class class, struct variable **vars, int n_vars) filter considers. N_VARS is the size of VARS */ void casefilter_add_variables (struct casefilter *filter, - struct variable *const *vars, int n_vars) + const struct variable *const *vars, int n_vars) { int i; diff --git a/src/data/casefilter.h b/src/data/casefilter.h index 083322ee58..6afad6a9d3 100644 --- a/src/data/casefilter.h +++ b/src/data/casefilter.h @@ -32,12 +32,12 @@ struct variable ; N_VARS is the size of VARS. */ struct casefilter * casefilter_create (enum mv_class class, - struct variable **, int); + const struct variable **, int); /* Add the variables in VARS to the list of variables for which the filter considers. N_VARS is the size of VARS */ void casefilter_add_variables (struct casefilter *, - struct variable *const*, int); + const struct variable *const*, int); /* Destroy the filter FILTER */ void casefilter_destroy (struct casefilter *); diff --git a/src/data/cat-routines.h b/src/data/cat-routines.h index 654ef44dea..4fed886b56 100644 --- a/src/data/cat-routines.h +++ b/src/data/cat-routines.h @@ -43,11 +43,11 @@ size_t cat_value_find (const struct variable *, const union value *); union value *cat_subscript_to_value (const size_t, struct variable *); -void cat_stored_values_create (struct variable *); +void cat_stored_values_create (const struct variable *); -void cat_value_update (struct variable *, const union value *); +void cat_value_update (const struct variable *, const union value *); -void cat_create_value_matrix (struct variable *); +void cat_create_value_matrix (const struct variable *); void cat_stored_values_destroy (struct cat_vals *); #endif diff --git a/src/data/category.c b/src/data/category.c index d320cea2a1..9e5c6b0c11 100644 --- a/src/data/category.c +++ b/src/data/category.c @@ -48,7 +48,7 @@ #define N_INITIAL_CATEGORIES 1 void -cat_stored_values_create (struct variable *v) +cat_stored_values_create (const struct variable *v) { if (!var_has_obs_vals (v)) { @@ -97,7 +97,7 @@ cat_value_find (const struct variable *v, const union value *val) Add the new value unless it is already present. */ void -cat_value_update (struct variable *v, const union value *val) +cat_value_update (const struct variable *v, const union value *val) { if (var_is_alpha (v)) { diff --git a/src/data/dictionary.c b/src/data/dictionary.c index ca1a286c4d..845a46e362 100644 --- a/src/data/dictionary.c +++ b/src/data/dictionary.c @@ -52,7 +52,7 @@ struct dictionary size_t var_cnt, var_cap; /* Number of variables, capacity. */ struct hsh_table *name_tab; /* Variable index by name. */ int next_value_idx; /* Index of next `union value' to allocate. */ - struct variable **split; /* SPLIT FILE vars. */ + const struct variable **split; /* SPLIT FILE vars. */ size_t split_cnt; /* SPLIT FILE count. */ struct variable *weight; /* WEIGHT variable. */ struct variable *filter; /* FILTER variable. */ @@ -233,13 +233,20 @@ dict_get_var (const struct dictionary *d, size_t idx) return d->var[idx]; } +inline void +dict_get_vars (const struct dictionary *d, const struct variable ***vars, + size_t *cnt, unsigned exclude_classes) +{ + dict_get_vars_mutable (d, (struct variable ***) vars, cnt, exclude_classes); +} + /* Sets *VARS to an array of pointers to variables in D and *CNT to the number of variables in *D. All variables are returned if EXCLUDE_CLASSES is 0, or it may contain one or more of (1u << DC_ORDINARY), (1u << DC_SYSTEM), or (1u << DC_SCRATCH) to exclude the corresponding type of variable. */ void -dict_get_vars (const struct dictionary *d, struct variable ***vars, +dict_get_vars_mutable (const struct dictionary *d, struct variable ***vars, size_t *cnt, unsigned exclude_classes) { size_t count; @@ -1009,7 +1016,7 @@ dict_compactor_destroy (struct dict_compactor *compactor) dict_get_split_cnt() to determine how many SPLIT FILE vars there are. Returns a null pointer if and only if there are no SPLIT FILE vars. */ -struct variable *const * +const struct variable *const * dict_get_split_vars (const struct dictionary *d) { assert (d != NULL); diff --git a/src/data/dictionary.h b/src/data/dictionary.h index 860fdaa6df..29f8d7caa3 100644 --- a/src/data/dictionary.h +++ b/src/data/dictionary.h @@ -51,7 +51,10 @@ void dict_destroy (struct dictionary *); size_t dict_get_var_cnt (const struct dictionary *); struct variable *dict_get_var (const struct dictionary *, size_t idx); -void dict_get_vars (const struct dictionary *, +inline void dict_get_vars (const struct dictionary *, + const struct variable ***vars, size_t *cnt, + unsigned exclude_classes); +void dict_get_vars_mutable (const struct dictionary *, struct variable ***vars, size_t *cnt, unsigned exclude_classes); @@ -110,7 +113,7 @@ void dict_compactor_compact (const struct dict_compactor *, struct ccase *, const struct ccase *); void dict_compactor_destroy (struct dict_compactor *); -struct variable *const *dict_get_split_vars (const struct dictionary *); +const struct variable *const *dict_get_split_vars (const struct dictionary *); size_t dict_get_split_cnt (const struct dictionary *); void dict_set_split_vars (struct dictionary *, struct variable *const *, size_t cnt); diff --git a/src/data/variable.c b/src/data/variable.c index 266d0c2b7a..28065cafa1 100644 --- a/src/data/variable.c +++ b/src/data/variable.c @@ -867,9 +867,10 @@ var_get_aux (const struct variable *v) cleared, AUX_DTOR(V) will be called. (var_dtor_free, below, may be appropriate for use as AUX_DTOR.) */ void * -var_attach_aux (struct variable *v, +var_attach_aux (const struct variable *v_, void *aux, void (*aux_dtor) (struct variable *)) { + struct variable *v = (struct variable *) v_ ; /* cast away const */ assert (v->aux == NULL); assert (aux != NULL); v->aux = aux; @@ -924,8 +925,9 @@ var_get_obs_vals (const struct variable *v) /* Sets V's observed categorical values to CAT_VALS. */ void -var_set_obs_vals (struct variable *v, struct cat_vals *cat_vals) +var_set_obs_vals (const struct variable *v_, struct cat_vals *cat_vals) { + struct variable *v = (struct variable *) v_ ; /* cast away const */ cat_stored_values_destroy (v->obs_vals); v->obs_vals = cat_vals; } diff --git a/src/data/variable.h b/src/data/variable.h index e487ac5118..abdc92b13d 100644 --- a/src/data/variable.h +++ b/src/data/variable.h @@ -155,7 +155,7 @@ size_t var_get_case_index (const struct variable *); /* Variable auxiliary data. */ void *var_get_aux (const struct variable *); -void *var_attach_aux (struct variable *, +void *var_attach_aux (const struct variable *, void *aux, void (*aux_dtor) (struct variable *)); void var_clear_aux (struct variable *); void *var_detach_aux (struct variable *); @@ -163,7 +163,7 @@ void var_dtor_free (struct variable *); /* Observed categorical values. */ struct cat_vals *var_get_obs_vals (const struct variable *); -void var_set_obs_vals (struct variable *, struct cat_vals *); +void var_set_obs_vals (const struct variable *, struct cat_vals *); bool var_has_obs_vals (const struct variable *); /* Classes of variables. */ diff --git a/src/language/data-io/get.c b/src/language/data-io/get.c index 425e8c5120..c3b0b176a3 100644 --- a/src/language/data-io/get.c +++ b/src/language/data-io/get.c @@ -746,7 +746,7 @@ struct mtf_file struct mtf_file *next_min; /* Next in the chain of minimums. */ int type; /* One of MTF_*. */ - struct variable **by; /* List of BY variables for this file. */ + const struct variable **by; /* List of BY variables for this file. */ struct file_handle *handle; /* File handle. */ struct any_reader *reader; /* File reader. */ struct dictionary *dict; /* Dictionary from system file. */ @@ -943,7 +943,7 @@ cmd_match_files (struct lexer *lexer, struct dataset *ds) { if (lex_match (lexer, T_BY)) { - struct variable **by; + const struct variable **by; if (mtf.by_cnt) { @@ -952,7 +952,7 @@ cmd_match_files (struct lexer *lexer, struct dataset *ds) } lex_match (lexer, '='); - if (!parse_variables (lexer, mtf.dict, &by, &mtf.by_cnt, + if (!parse_variables_const (lexer, mtf.dict, &by, &mtf.by_cnt, PV_NO_DUPLICATE | PV_NO_SCRATCH)) goto error; diff --git a/src/language/data-io/list.q b/src/language/data-io/list.q index d10a49d172..50fe1201f8 100644 --- a/src/language/data-io/list.q +++ b/src/language/data-io/list.q @@ -311,7 +311,7 @@ write_header (struct outp_driver *d) /* Put in vertical names. */ for (i = x = 0; i < prc->n_vertical; i++) { - struct variable *v = cmd.v_variables[i]; + const struct variable *v = cmd.v_variables[i]; const char *name = var_get_name (v); size_t name_len = strlen (name); const struct fmt_spec *print = var_get_print_format (v); @@ -327,7 +327,7 @@ write_header (struct outp_driver *d) /* Put in horizontal names. */ for (; i < cmd.n_variables; i++) { - struct variable *v = cmd.v_variables[i]; + const struct variable *v = cmd.v_variables[i]; const char *name = var_get_name (v); size_t name_len = strlen (name); const struct fmt_spec *print = var_get_print_format (v); @@ -550,7 +550,7 @@ determine_layout (void) /* Try layout #1. */ for (width = cmd.n_variables - 1, column = 0; column < cmd.n_variables; column++) { - struct variable *v = cmd.v_variables[column]; + const struct variable *v = cmd.v_variables[column]; int fmt_width = var_get_print_format (v)->w; int name_len = strlen (var_get_name (v)); width += MAX (fmt_width, name_len); @@ -566,7 +566,7 @@ determine_layout (void) column < cmd.n_variables && width <= max_width; column++) { - struct variable *v = cmd.v_variables[column]; + const struct variable *v = cmd.v_variables[column]; int fmt_width = var_get_print_format (v)->w; size_t name_len = strlen (var_get_name (v)); width += fmt_width; @@ -583,7 +583,7 @@ determine_layout (void) #endif for (column = cmd.n_variables; column-- != 0; ) { - struct variable *v = cmd.v_variables[column]; + const struct variable *v = cmd.v_variables[column]; int name_len = strlen (var_get_name (v)); int fmt_width = var_get_print_format (v)->w; int trial_width = width - fmt_width + MAX (fmt_width, name_len); @@ -602,7 +602,7 @@ determine_layout (void) column < prc->n_vertical; column++) { - struct variable *var = cmd.v_variables[column]; + const struct variable *var = cmd.v_variables[column]; size_t name_len = strlen (var_get_name (var)); prc->header_rows = MAX (prc->header_rows, name_len); } @@ -649,7 +649,7 @@ list_cases (const struct ccase *c, void *aux UNUSED, const struct dataset *ds) for (column = 0; column < cmd.n_variables; column++) { - struct variable *v = cmd.v_variables[column]; + const struct variable *v = cmd.v_variables[column]; const struct fmt_spec *print = var_get_print_format (v); int width; @@ -715,7 +715,7 @@ list_cases (const struct ccase *c, void *aux UNUSED, const struct dataset *ds) for (column = 0; column < cmd.n_variables; column++) { - struct variable *v = cmd.v_variables[column]; + const struct variable *v = cmd.v_variables[column]; const struct fmt_spec *print = var_get_print_format (v); char buf[256]; diff --git a/src/language/data-io/print.c b/src/language/data-io/print.c index bdc9ff6150..f48be0fcfd 100644 --- a/src/language/data-io/print.c +++ b/src/language/data-io/print.c @@ -62,7 +62,7 @@ struct prt_out_spec int first_column; /* 0-based first column. */ /* PRT_VAR only. */ - struct variable *var; /* Associated variable. */ + const struct variable *var; /* Associated variable. */ struct fmt_spec format; /* Output spec. */ bool add_space; /* Add trailing space? */ bool sysmis_as_spaces; /* Output SYSMIS as spaces? */ @@ -305,13 +305,13 @@ parse_variable_argument (struct lexer *lexer, const struct dictionary *dict, int *record, int *column, enum which_formats which_formats) { - struct variable **vars; + const struct variable **vars; size_t var_cnt, var_idx; struct fmt_spec *formats, *f; size_t format_cnt; bool add_space; - if (!parse_variables_pool (lexer, tmp_pool, dict, + if (!parse_variables_const_pool (lexer, tmp_pool, dict, &vars, &var_cnt, PV_DUPLICATE)) return false; @@ -332,7 +332,7 @@ parse_variable_argument (struct lexer *lexer, const struct dictionary *dict, format_cnt = var_cnt; for (i = 0; i < var_cnt; i++) { - struct variable *v = vars[i]; + const struct variable *v = vars[i]; formats[i] = (which_formats == PRINT ? *var_get_print_format (v) : *var_get_write_format (v)); @@ -344,7 +344,7 @@ parse_variable_argument (struct lexer *lexer, const struct dictionary *dict, for (f = formats; f < &formats[format_cnt]; f++) if (!execute_placement_format (f, record, column)) { - struct variable *var; + const struct variable *var; struct prt_out_spec *spec; var = vars[var_idx++]; diff --git a/src/language/dictionary/delete-variables.c b/src/language/dictionary/delete-variables.c index b9cbe70d68..bd26a7d1f2 100644 --- a/src/language/dictionary/delete-variables.c +++ b/src/language/dictionary/delete-variables.c @@ -41,7 +41,8 @@ cmd_delete_variables (struct lexer *lexer, struct dataset *ds) msg (SE, _("DELETE VARIABLES may not be used after TEMPORARY. " "Temporary transformations will be made permanent.")); - if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt, PV_NONE)) + if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt, + PV_NONE)) goto error; if (var_cnt == dict_get_var_cnt (dataset_dict (ds))) { diff --git a/src/language/dictionary/modify-variables.c b/src/language/dictionary/modify-variables.c index c1f71538b4..f3a1832581 100644 --- a/src/language/dictionary/modify-variables.c +++ b/src/language/dictionary/modify-variables.c @@ -141,7 +141,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds) "of variables.")); goto done; } - dict_get_vars (dataset_dict (ds), &v, &nv, 1u << DC_SYSTEM); + dict_get_vars_mutable (dataset_dict (ds), &v, &nv, 1u << DC_SYSTEM); } else { @@ -250,7 +250,7 @@ cmd_modify_vars (struct lexer *lexer, struct dataset *ds) sort (keep_vars, keep_cnt, sizeof *keep_vars, compare_variables_given_ordering, &forward_positional_ordering); - dict_get_vars (dataset_dict (ds), &all_vars, &all_cnt, 0); + dict_get_vars_mutable (dataset_dict (ds), &all_vars, &all_cnt, 0); assert (all_cnt >= keep_cnt); drop_cnt = all_cnt - keep_cnt; @@ -408,7 +408,7 @@ validate_var_modification (const struct dictionary *d, size_t i; /* All variables, in index order. */ - dict_get_vars (d, &all_vars, &all_cnt, 0); + dict_get_vars_mutable (d, &all_vars, &all_cnt, 0); /* Drop variables, in index order. */ drop_cnt = vm->drop_cnt; diff --git a/src/language/dictionary/split-file.c b/src/language/dictionary/split-file.c index 0dcf2a4918..01df29e26b 100644 --- a/src/language/dictionary/split-file.c +++ b/src/language/dictionary/split-file.c @@ -69,7 +69,7 @@ void output_split_file_values (const struct dataset *ds, const struct ccase *c) { const struct dictionary *dict = dataset_dict (ds); - struct variable *const *split; + const struct variable *const *split; struct tab_table *t; size_t split_cnt; int i; @@ -88,7 +88,7 @@ output_split_file_values (const struct dataset *ds, const struct ccase *c) split = dict_get_split_vars (dict); for (i = 0; i < split_cnt; i++) { - struct variable *v = split[i]; + const struct variable *v = split[i]; char temp_buf[80]; const char *val_lab; const struct fmt_spec *print = var_get_print_format (v); diff --git a/src/language/dictionary/sys-file-info.c b/src/language/dictionary/sys-file-info.c index a13dda37d7..21909a96ec 100644 --- a/src/language/dictionary/sys-file-info.c +++ b/src/language/dictionary/sys-file-info.c @@ -62,7 +62,7 @@ enum AS_VECTOR }; -static int describe_variable (struct variable *v, struct tab_table *t, int r, int as); +static int describe_variable (const struct variable *v, struct tab_table *t, int r, int as); /* Sets the widths of all the columns and heights of all the rows in table T for driver D. */ @@ -193,7 +193,7 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED) static void display_macros (void); static void display_documents (const struct dictionary *dict); -static void display_variables (struct variable **, size_t, int); +static void display_variables (const struct variable **, size_t, int); static void display_vectors (const struct dictionary *dict, int sorted); int @@ -204,7 +204,7 @@ cmd_display (struct lexer *lexer, struct dataset *ds) /* Variables to display. */ size_t n; - struct variable **vl; + const struct variable **vl; if (lex_match_id (lexer, "MACROS")) display_macros (); @@ -258,7 +258,7 @@ cmd_display (struct lexer *lexer, struct dataset *ds) if (lex_token (lexer) != '.') { - if (!parse_variables (lexer, dataset_dict (ds), &vl, &n, PV_NONE)) + if (!parse_variables_const (lexer, dataset_dict (ds), &vl, &n, PV_NONE)) { free (vl); return CMD_FAILURE; @@ -364,9 +364,9 @@ variables_dim (struct tab_table *t, struct outp_driver *d) } static void -display_variables (struct variable **vl, size_t n, int as) +display_variables (const struct variable **vl, size_t n, int as) { - struct variable **vp = vl; /* Variable pointer. */ + const struct variable **vp = vl; /* Variable pointer. */ struct tab_table *t; int nc; /* Number of columns. */ int nr; /* Number of rows. */ @@ -404,7 +404,7 @@ display_variables (struct variable **vl, size_t n, int as) for (i = r = 1; i <= n; i++) { - struct variable *v; + const struct variable *v; while (*vp == NULL) vp++; @@ -458,7 +458,7 @@ display_variables (struct variable **vl, size_t n, int as) The variable will be described in the format AS. Returns the next row available for use in the table. */ static int -describe_variable (struct variable *v, struct tab_table *t, int r, int as) +describe_variable (const struct variable *v, struct tab_table *t, int r, int as) { const struct fmt_spec *print = var_get_print_format (v); const struct fmt_spec *write = var_get_write_format (v); diff --git a/src/language/dictionary/value-labels.c b/src/language/dictionary/value-labels.c index a0d59c2285..a1585a8a90 100644 --- a/src/language/dictionary/value-labels.c +++ b/src/language/dictionary/value-labels.c @@ -38,7 +38,7 @@ /* Declarations. */ static int do_value_labels (struct lexer *, - const struct dictionary *dict, int); + const struct dictionary *dict, bool); static int verify_val_labs (struct variable **vars, size_t var_cnt); static void erase_labels (struct variable **vars, size_t var_cnt); static int get_label (struct lexer *, struct variable **vars, size_t var_cnt); @@ -48,19 +48,19 @@ static int get_label (struct lexer *, struct variable **vars, size_t var_cnt); int cmd_value_labels (struct lexer *lexer, struct dataset *ds) { - return do_value_labels (lexer, dataset_dict (ds), 1); + return do_value_labels (lexer, dataset_dict (ds), true); } int cmd_add_value_labels (struct lexer *lexer, struct dataset *ds) { - return do_value_labels (lexer, dataset_dict (ds), 0); + return do_value_labels (lexer, dataset_dict (ds), false); } /* Do it. */ static int -do_value_labels (struct lexer *lexer, const struct dictionary *dict, int erase) +do_value_labels (struct lexer *lexer, const struct dictionary *dict, bool erase) { struct variable **vars; /* Variable list. */ size_t var_cnt; /* Number of variables. */ @@ -115,7 +115,7 @@ verify_val_labs (struct variable **vars, size_t var_cnt) for (i = 0; i < var_cnt; i++) { - struct variable *vp = vars[i]; + const struct variable *vp = vars[i]; if (var_is_long_string (vp)) { diff --git a/src/language/expressions/optimize.c b/src/language/expressions/optimize.c index 90d90c676c..0425a7adb7 100644 --- a/src/language/expressions/optimize.c +++ b/src/language/expressions/optimize.c @@ -247,7 +247,7 @@ emit_format (struct expression *e, const struct fmt_spec *f) } static void -emit_variable (struct expression *e, struct variable *v) +emit_variable (struct expression *e, const struct variable *v) { allocate_aux (e, OP_variable)->variable = v; } diff --git a/src/language/expressions/parse.c b/src/language/expressions/parse.c index 695d3caf6d..329a740960 100644 --- a/src/language/expressions/parse.c +++ b/src/language/expressions/parse.c @@ -61,7 +61,7 @@ static struct expression *finish_expression (union any_node *, static bool type_check (struct expression *, union any_node **, enum expr_type expected_type); static union any_node *allocate_unary_variable (struct expression *, - struct variable *); + const struct variable *); /* Public functions. */ @@ -1219,11 +1219,11 @@ parse_function (struct lexer *lexer, struct expression *e) if (lex_token (lexer) == T_ID && toupper (lex_look_ahead (lexer)) == 'T') { - struct variable **vars; + const struct variable **vars; size_t var_cnt; size_t i; - if (!parse_variables (lexer, dataset_dict (e->ds), &vars, &var_cnt, PV_SINGLE)) + if (!parse_variables_const (lexer, dataset_dict (e->ds), &vars, &var_cnt, PV_SINGLE)) goto fail; for (i = 0; i < var_cnt; i++) add_arg (&args, &arg_cnt, &arg_cap, @@ -1481,7 +1481,7 @@ expr_allocate_string (struct expression *e, struct substring s) } union any_node * -expr_allocate_variable (struct expression *e, struct variable *v) +expr_allocate_variable (struct expression *e, const struct variable *v) { union any_node *n = pool_alloc (e->expr_pool, sizeof n->variable); n->type = var_is_numeric (v) ? OP_num_var : OP_str_var; @@ -1501,7 +1501,7 @@ expr_allocate_format (struct expression *e, const struct fmt_spec *format) /* Allocates a unary composite node that represents the value of variable V in expression E. */ static union any_node * -allocate_unary_variable (struct expression *e, struct variable *v) +allocate_unary_variable (struct expression *e, const struct variable *v) { assert (v != NULL); return expr_allocate_unary (e, var_is_numeric (v) ? OP_NUM_VAR : OP_STR_VAR, diff --git a/src/language/expressions/private.h b/src/language/expressions/private.h index 6173b4f481..48cece73f6 100644 --- a/src/language/expressions/private.h +++ b/src/language/expressions/private.h @@ -100,7 +100,7 @@ struct string_node struct variable_node { operation_type type; /* OP_variable. */ - struct variable *v; + const struct variable *v; }; struct integer_node @@ -148,7 +148,7 @@ union operation_data operation_type operation; double number; struct substring string; - struct variable *variable; + const struct variable *variable; const struct vector *vector; struct fmt_spec *format; int integer; @@ -194,7 +194,7 @@ union any_node *expr_allocate_string_buffer (struct expression *e, union any_node *expr_allocate_string (struct expression *e, struct substring); union any_node *expr_allocate_variable (struct expression *e, - struct variable *); + const struct variable *); union any_node *expr_allocate_format (struct expression *e, const struct fmt_spec *); union any_node *expr_allocate_vector (struct expression *e, diff --git a/src/language/lexer/q2c.c b/src/language/lexer/q2c.c index f187d2427f..90357ebf95 100644 --- a/src/language/lexer/q2c.c +++ b/src/language/lexer/q2c.c @@ -1134,12 +1134,12 @@ dump_declarations (void) case SBC_VARLIST: dump (0, "size_t %sn_%s;", st_lower (sbc->prefix), st_lower (sbc->name)); - dump (0, "struct variable **%sv_%s;", st_lower (sbc->prefix), + dump (0, "const struct variable **%sv_%s;", st_lower (sbc->prefix), st_lower (sbc->name)); break; case SBC_VAR: - dump (0, "struct variable *%sv_%s;", st_lower (sbc->prefix), + dump (0, "const struct variable *%sv_%s;", st_lower (sbc->prefix), st_lower (sbc->name)); break; @@ -1597,7 +1597,7 @@ dump_subcommand (const subcommand *sbc) } else if (sbc->type == SBC_VARLIST) { - dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, " + dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, " "PV_APPEND%s%s))", st_lower (sbc->prefix), st_lower (sbc->name), st_lower (sbc->prefix), st_lower (sbc->name), @@ -1765,7 +1765,7 @@ dump_parser (int persistent) } dump (1, "{"); dump (0, "p->sbc_%s++;", st_lower (def->name)); - dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, " + dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, " "PV_APPEND))", st_lower (def->prefix), st_lower (def->name), st_lower (def->prefix), st_lower (def->name)); diff --git a/src/language/lexer/variable-parser.c b/src/language/lexer/variable-parser.c index 731873dca1..26b2e1bfd2 100644 --- a/src/language/lexer/variable-parser.c +++ b/src/language/lexer/variable-parser.c @@ -40,26 +40,36 @@ #include "gettext.h" #define _(msgid) gettext (msgid) +static struct variable * var_set_get_var (const struct var_set *, size_t ); + +static struct variable *var_set_lookup_var (const struct var_set *, + const char *); + +static bool var_set_lookup_var_idx (const struct var_set *, const char *, + size_t *); + + + /* Parses a name as a variable within VS. Sets *IDX to the variable's index and returns true if successful. On failure emits an error message and returns false. */ static bool -parse_vs_variable_idx (struct lexer *lexer, const struct var_set *vs, +parse_vs_variable_idx (struct lexer *lexer, const struct var_set *vs, size_t *idx) { assert (idx != NULL); - + if (lex_token (lexer) != T_ID) { lex_error (lexer, _("expecting variable name")); return false; } - else if (var_set_lookup_var_idx (vs, lex_tokid (lexer), idx)) + else if (var_set_lookup_var_idx (vs, lex_tokid (lexer), idx)) { lex_get (lexer); return true; } - else + else { msg (SE, _("%s is not a variable name."), lex_tokid (lexer)); return false; @@ -80,7 +90,7 @@ parse_vs_variable (struct lexer *lexer, const struct var_set *vs) variable if successful. On failure emits an error message and returns a null pointer. */ struct variable * -parse_variable (struct lexer *lexer, const struct dictionary *d) +parse_variable (struct lexer *lexer, const struct dictionary *d) { struct var_set *vs = var_set_create_from_dict (d); struct variable *var = parse_vs_variable (lexer, vs); @@ -93,9 +103,9 @@ parse_variable (struct lexer *lexer, const struct dictionary *d) number of variables into *CNT. Returns true only if successful. */ bool -parse_variables (struct lexer *lexer, const struct dictionary *d, +parse_variables (struct lexer *lexer, const struct dictionary *d, struct variable ***var, - size_t *cnt, int opts) + size_t *cnt, int opts) { struct var_set *vs; int success; @@ -106,7 +116,7 @@ parse_variables (struct lexer *lexer, const struct dictionary *d, vs = var_set_create_from_dict (d); success = parse_var_set_vars (lexer, vs, var, cnt, opts); - if ( success == 0 ) + if ( success == 0 ) { free ( *var ) ; *var = NULL; @@ -122,9 +132,9 @@ parse_variables (struct lexer *lexer, const struct dictionary *d, successful. Same behavior as parse_variables, except that all allocations are taken from the given POOL. */ bool -parse_variables_pool (struct lexer *lexer, struct pool *pool, +parse_variables_pool (struct lexer *lexer, struct pool *pool, const struct dictionary *dict, - struct variable ***vars, size_t *var_cnt, int opts) + struct variable ***vars, size_t *var_cnt, int opts) { int retval; @@ -133,7 +143,7 @@ parse_variables_pool (struct lexer *lexer, struct pool *pool, already in the pool, which would attempt to re-free it later. */ assert (!(opts & PV_APPEND)); - + retval = parse_variables (lexer, dict, vars, var_cnt, opts); if (retval) pool_register (pool, free, *vars); @@ -145,7 +155,7 @@ parse_variables_pool (struct lexer *lexer, struct pool *pool, dictionary class, and returns true. Returns false on failure. */ static bool -parse_var_idx_class (struct lexer *lexer, const struct var_set *vs, +parse_var_idx_class (struct lexer *lexer, const struct var_set *vs, size_t *idx, enum dict_class *class) { @@ -169,10 +179,10 @@ add_variable (struct variable ***v, size_t *nv, size_t *mv, struct variable *add = var_set_get_var (vs, idx); const char *add_name = var_get_name (add); - if ((pv_opts & PV_NUMERIC) && !var_is_numeric (add)) + if ((pv_opts & PV_NUMERIC) && !var_is_numeric (add)) msg (SW, _("%s is not a numeric variable. It will not be " "included in the variable list."), add_name); - else if ((pv_opts & PV_STRING) && !var_is_alpha (add)) + else if ((pv_opts & PV_STRING) && !var_is_alpha (add)) msg (SE, _("%s is not a string variable. It will not be " "included in the variable list."), add_name); else if ((pv_opts & PV_NO_SCRATCH) @@ -180,7 +190,7 @@ add_variable (struct variable ***v, size_t *nv, size_t *mv, msg (SE, _("Scratch variables (such as %s) are not allowed " "here."), add_name); else if ((pv_opts & (PV_SAME_TYPE | PV_SAME_WIDTH)) && *nv - && var_get_type (add) != var_get_type ((*v)[0])) + && var_get_type (add) != var_get_type ((*v)[0])) msg (SE, _("%s and %s are not the same type. All variables in " "this variable list must be of the same type. %s " "will be omitted from the list."), @@ -191,7 +201,7 @@ add_variable (struct variable ***v, size_t *nv, size_t *mv, "All variables in this variable list must have the " "same width. %s will be omttied from the list."), var_get_name ((*v)[0]), add_name, add_name); - else if ((pv_opts & PV_NO_DUPLICATE) && included[idx]) + else if ((pv_opts & PV_NO_DUPLICATE) && included[idx]) msg (SE, _("Variable %s appears twice in variable list."), add_name); else if ((pv_opts & PV_DUPLICATE) || !included[idx]) { @@ -215,10 +225,10 @@ static void add_variables (struct variable ***v, size_t *nv, size_t *mv, char *included, int pv_opts, const struct var_set *vs, int first_idx, int last_idx, - enum dict_class class) + enum dict_class class) { size_t i; - + for (i = first_idx; i <= last_idx; i++) if (dict_class_from_id (var_get_name (var_set_get_var (vs, i))) == class) add_variable (v, nv, mv, included, pv_opts, vs, i); @@ -228,7 +238,7 @@ add_variables (struct variable ***v, size_t *nv, size_t *mv, char *included, Conversely, if parse_variables() returns true, then *nv is nonzero and *v is non-NULL. */ bool -parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, +parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, struct variable ***v, size_t *nv, int pv_opts) { @@ -261,14 +271,14 @@ parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, if (!(pv_opts & PV_DUPLICATE)) { size_t i; - + included = xcalloc (var_set_get_cnt (vs), sizeof *included); - for (i = 0; i < *nv; i++) + for (i = 0; i < *nv; i++) { size_t index; if (!var_set_lookup_var_idx (vs, var_get_name ((*v)[i]), &index)) NOT_REACHED (); - included[index] = 1; + included[index] = 1; } } else @@ -279,7 +289,7 @@ parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, if (lex_match (lexer, T_ALL)) add_variables (v, nv, &mv, included, pv_opts, vs, 0, var_set_get_cnt (vs) - 1, DC_ORDINARY); - else + else { enum dict_class class; size_t first_idx; @@ -289,7 +299,7 @@ parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, if (!lex_match (lexer, T_TO)) add_variable (v, nv, &mv, included, pv_opts, vs, first_idx); - else + else { size_t last_idx; enum dict_class last_class; @@ -326,7 +336,7 @@ parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, add_variables (v, nv, &mv, included, pv_opts, vs, first_idx, last_idx, class); - } + } } if (pv_opts & PV_SINGLE) @@ -335,7 +345,7 @@ parse_var_set_vars (struct lexer *lexer, const struct var_set *vs, } while (lex_token (lexer) == T_ALL || (lex_token (lexer) == T_ID && var_set_lookup_var (vs, lex_tokid (lexer)) != NULL)); - + if (*nv == 0) goto fail; @@ -536,7 +546,7 @@ parse_DATA_LIST_vars_pool (struct lexer *lexer, struct pool *pool, presumably already in the pool, which would attempt to re-free it later. */ assert (!(pv_opts & PV_APPEND)); - + retval = parse_DATA_LIST_vars (lexer, names, nnames, pv_opts); if (retval) register_vars_pool (pool, *names, *nnames); @@ -547,7 +557,7 @@ parse_DATA_LIST_vars_pool (struct lexer *lexer, struct pool *pool, existing and the rest are to be created. Same args as parse_DATA_LIST_vars(). */ bool -parse_mixed_vars (struct lexer *lexer, const struct dictionary *dict, +parse_mixed_vars (struct lexer *lexer, const struct dictionary *dict, char ***names, size_t *nnames, int pv_opts) { size_t i; @@ -613,7 +623,7 @@ parse_mixed_vars_pool (struct lexer *lexer, const struct dictionary *dict, struc } /* A set of variables. */ -struct var_set +struct var_set { size_t (*get_cnt) (const struct var_set *); struct variable *(*get_var) (const struct var_set *, size_t idx); @@ -624,7 +634,7 @@ struct var_set /* Returns the number of variables in VS. */ size_t -var_set_get_cnt (const struct var_set *vs) +var_set_get_cnt (const struct var_set *vs) { assert (vs != NULL); @@ -633,8 +643,8 @@ var_set_get_cnt (const struct var_set *vs) /* Return variable with index IDX in VS. IDX must be less than the number of variables in VS. */ -struct variable * -var_set_get_var (const struct var_set *vs, size_t idx) +static struct variable * +var_set_get_var (const struct var_set *vs, size_t idx) { assert (vs != NULL); assert (idx < var_set_get_cnt (vs)); @@ -645,7 +655,7 @@ var_set_get_var (const struct var_set *vs, size_t idx) /* Returns the variable in VS named NAME, or a null pointer if VS contains no variable with that name. */ struct variable * -var_set_lookup_var (const struct var_set *vs, const char *name) +var_set_lookup_var (const struct var_set *vs, const char *name) { size_t idx; return (var_set_lookup_var_idx (vs, name, &idx) @@ -668,7 +678,7 @@ var_set_lookup_var_idx (const struct var_set *vs, const char *name, /* Destroys VS. */ void -var_set_destroy (struct var_set *vs) +var_set_destroy (struct var_set *vs) { if (vs != NULL) vs->destroy (vs); @@ -676,7 +686,7 @@ var_set_destroy (struct var_set *vs) /* Returns the number of variables in VS. */ static size_t -dict_var_set_get_cnt (const struct var_set *vs) +dict_var_set_get_cnt (const struct var_set *vs) { struct dictionary *d = vs->aux; @@ -686,7 +696,7 @@ dict_var_set_get_cnt (const struct var_set *vs) /* Return variable with index IDX in VS. IDX must be less than the number of variables in VS. */ static struct variable * -dict_var_set_get_var (const struct var_set *vs, size_t idx) +dict_var_set_get_var (const struct var_set *vs, size_t idx) { struct dictionary *d = vs->aux; @@ -697,11 +707,11 @@ dict_var_set_get_var (const struct var_set *vs, size_t idx) and returns true. Otherwise, returns false. */ static bool dict_var_set_lookup_var_idx (const struct var_set *vs, const char *name, - size_t *idx) + size_t *idx) { struct dictionary *d = vs->aux; struct variable *v = dict_lookup_var (d, name); - if (v != NULL) + if (v != NULL) { *idx = var_get_dict_index (v); return true; @@ -712,14 +722,14 @@ dict_var_set_lookup_var_idx (const struct var_set *vs, const char *name, /* Destroys VS. */ static void -dict_var_set_destroy (struct var_set *vs) +dict_var_set_destroy (struct var_set *vs) { free (vs); } /* Returns a variable set based on D. */ struct var_set * -var_set_create_from_dict (const struct dictionary *d) +var_set_create_from_dict (const struct dictionary *d) { struct var_set *vs = xmalloc (sizeof *vs); vs->get_cnt = dict_var_set_get_cnt; @@ -731,7 +741,7 @@ var_set_create_from_dict (const struct dictionary *d) } /* A variable set based on an array. */ -struct array_var_set +struct array_var_set { struct variable *const *var;/* Array of variables. */ size_t var_cnt; /* Number of elements in var. */ @@ -740,7 +750,7 @@ struct array_var_set /* Returns the number of variables in VS. */ static size_t -array_var_set_get_cnt (const struct var_set *vs) +array_var_set_get_cnt (const struct var_set *vs) { struct array_var_set *avs = vs->aux; @@ -750,7 +760,7 @@ array_var_set_get_cnt (const struct var_set *vs) /* Return variable with index IDX in VS. IDX must be less than the number of variables in VS. */ static struct variable * -array_var_set_get_var (const struct var_set *vs, size_t idx) +array_var_set_get_var (const struct var_set *vs, size_t idx) { struct array_var_set *avs = vs->aux; @@ -761,7 +771,7 @@ array_var_set_get_var (const struct var_set *vs, size_t idx) and returns true. Otherwise, returns false. */ static bool array_var_set_lookup_var_idx (const struct var_set *vs, const char *name, - size_t *idx) + size_t *idx) { struct array_var_set *avs = vs->aux; struct variable *v, *const *vpp; @@ -769,8 +779,8 @@ array_var_set_lookup_var_idx (const struct var_set *vs, const char *name, v = var_create (name, 0); vpp = hsh_find (avs->name_tab, &v); var_destroy (v); - - if (vpp != NULL) + + if (vpp != NULL) { *idx = vpp - avs->var; return true; @@ -781,7 +791,7 @@ array_var_set_lookup_var_idx (const struct var_set *vs, const char *name, /* Destroys VS. */ static void -array_var_set_destroy (struct var_set *vs) +array_var_set_destroy (struct var_set *vs) { struct array_var_set *avs = vs->aux; @@ -793,7 +803,7 @@ array_var_set_destroy (struct var_set *vs) /* Returns a variable set based on the VAR_CNT variables in VAR. */ struct var_set * -var_set_create_from_array (struct variable *const *var, size_t var_cnt) +var_set_create_from_array (struct variable *const *var, size_t var_cnt) { struct var_set *vs; struct array_var_set *avs; @@ -811,11 +821,12 @@ var_set_create_from_array (struct variable *const *var, size_t var_cnt) compare_var_ptrs_by_name, hash_var_ptr_by_name, NULL, NULL); for (i = 0; i < var_cnt; i++) - if (hsh_insert (avs->name_tab, (void *) &var[i]) != NULL) + if (hsh_insert (avs->name_tab, (void *) &var[i]) != NULL) { var_set_destroy (vs); return NULL; } - + return vs; } + diff --git a/src/language/lexer/variable-parser.h b/src/language/lexer/variable-parser.h index 409aea9537..08c9902d8c 100644 --- a/src/language/lexer/variable-parser.h +++ b/src/language/lexer/variable-parser.h @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -25,6 +25,7 @@ struct pool; struct dictionary; struct var_set; +struct const_var_set; struct variable; struct lexer ; @@ -33,12 +34,9 @@ struct var_set *var_set_create_from_array (struct variable *const *var, size_t); size_t var_set_get_cnt (const struct var_set *vs); -struct variable *var_set_get_var (const struct var_set *vs, size_t idx); -struct variable *var_set_lookup_var (const struct var_set *vs, - const char *name); -bool var_set_lookup_var_idx (const struct var_set *vs, const char *name, - size_t *idx); + void var_set_destroy (struct var_set *vs); + /* Variable parsers. */ @@ -72,4 +70,60 @@ bool parse_mixed_vars_pool (struct lexer *, const struct dictionary *dict, struct pool *, char ***names, size_t *cnt, int opts); + +/* Const wrappers */ + +static inline const struct variable * +parse_variable_const (struct lexer *l, const struct dictionary *d) +{ + return parse_variable (l, d); +} + +static inline bool +parse_variables_const (struct lexer *l, const struct dictionary *d, + const struct variable ***v, size_t *s, + int opts) +{ + return parse_variables (l, d, (struct variable ***) v, s, opts); +} + +static inline bool +parse_variables_const_pool (struct lexer *l, struct pool *p, + const struct dictionary *d, + const struct variable ***v, size_t *s, int opts) +{ + return parse_variables_pool (l, p, d, (struct variable ***) v, s, opts); +} + + + +static inline struct const_var_set * +const_var_set_create_from_dict (const struct dictionary *d) +{ + return (struct const_var_set *) var_set_create_from_dict (d); +} + +static inline struct const_var_set * +const_var_set_create_from_array (const struct variable *const *var, + size_t s) +{ + return (struct const_var_set *) var_set_create_from_array ((struct variable *const *) var, s); +} + + +static inline bool +parse_const_var_set_vars (struct lexer *l, const struct const_var_set *vs, + const struct variable ***v, size_t *s, int opts) +{ + return parse_var_set_vars (l, (const struct var_set *) vs, + (struct variable ***) v, s, opts); +} + +static inline void +const_var_set_destroy (struct const_var_set *vs) +{ + var_set_destroy ( (struct var_set *) vs); +} + + #endif /* variable-parser.h */ diff --git a/src/language/stats/aggregate.c b/src/language/stats/aggregate.c index 57dce0800e..044297462c 100644 --- a/src/language/stats/aggregate.c +++ b/src/language/stats/aggregate.c @@ -64,7 +64,7 @@ struct agr_var struct agr_var *next; /* Next in list. */ /* Collected during parsing. */ - struct variable *src; /* Source variable. */ + const struct variable *src; /* Source variable. */ struct variable *dest; /* Target variable. */ int function; /* Function. */ enum mv_class exclude; /* Classes of missing values to exclude. */ @@ -141,7 +141,7 @@ struct agr_proc /* Break variables. */ struct sort_criteria *sort; /* Sort criteria. */ - struct variable **break_vars; /* Break variables. */ + const struct variable **break_vars; /* Break variables. */ size_t break_var_cnt; /* Number of break variables. */ struct ccase break_case; /* Last values of break variables. */ @@ -396,7 +396,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s union agr_argument arg[2]; - struct variable **src; + const struct variable **src; size_t n_src; size_t i; @@ -496,7 +496,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s else if (function->n_args) pv_opts |= PV_SAME_TYPE; - if (!parse_variables (lexer, dict, &src, &n_src, pv_opts)) + if (!parse_variables_const (lexer, dict, &src, &n_src, pv_opts)) goto error; } @@ -959,7 +959,7 @@ dump_aggregate_info (struct agr_proc *agr, struct ccase *output) for (i = 0; i < agr->break_var_cnt; i++) { - struct variable *v = agr->break_vars[i]; + const struct variable *v = agr->break_vars[i]; size_t value_cnt = var_get_value_cnt (v); memcpy (case_data_rw_idx (output, value_idx), case_data (&agr->break_case, v), diff --git a/src/language/stats/autorecode.c b/src/language/stats/autorecode.c index a84528af3c..2944f91218 100644 --- a/src/language/stats/autorecode.c +++ b/src/language/stats/autorecode.c @@ -57,7 +57,7 @@ struct arc_item /* Explains how to recode an AUTORECODE variable. */ struct arc_spec { - struct variable *src; /* Source variable. */ + const struct variable *src; /* Source variable. */ struct variable *dest; /* Target variable. */ struct hsh_table *items; /* Hash table of `freq's. */ }; @@ -80,7 +80,7 @@ enum direction /* AUTORECODE data. */ struct autorecode_pgm { - struct variable **src_vars; /* Source variables. */ + const struct variable **src_vars; /* Source variables. */ char **dst_names; /* Target variable names. */ struct variable **dst_vars; /* Target variables. */ struct hsh_table **src_values; /* `union arc_value's of source vars. */ @@ -120,7 +120,8 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) lex_match_id (lexer, "VARIABLES"); lex_match (lexer, '='); - if (!parse_variables (lexer, dataset_dict (ds), &arc.src_vars, &arc.var_cnt, + if (!parse_variables_const (lexer, dataset_dict (ds), &arc.src_vars, + &arc.var_cnt, PV_NO_DUPLICATE)) goto lossage; if (!lex_force_match_id (lexer, "INTO")) @@ -177,12 +178,15 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) arc.dst_vars = xnmalloc (arc.var_cnt, sizeof *arc.dst_vars); arc.src_values = xnmalloc (arc.var_cnt, sizeof *arc.src_values); for (i = 0; i < dst_cnt; i++) + { + /* FIXME: consolodate this hsh_create */ if (var_is_alpha (arc.src_vars[i])) arc.src_values[i] = hsh_create (10, compare_alpha_value, hash_alpha_value, NULL, arc.src_vars[i]); else arc.src_values[i] = hsh_create (10, compare_numeric_value, hash_numeric_value, NULL, NULL); + } proc_open (ds); while (proc_read (ds, &c)) diff --git a/src/language/stats/correlations.q b/src/language/stats/correlations.q index 1cdc247f74..2a1b22ddfb 100644 --- a/src/language/stats/correlations.q +++ b/src/language/stats/correlations.q @@ -36,7 +36,7 @@ struct cor_set { struct cor_set *next; - struct variable **v1, **v2; + const struct variable **v1, **v2; size_t nv1, nv2; }; @@ -88,7 +88,7 @@ internal_cmd_correlations (struct lexer *lexer, struct dataset *ds) static int cor_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_correlations *cmd UNUSED, void *aux UNUSED) { - struct variable **v1, **v2; + const struct variable **v1, **v2; size_t nv1, nv2; struct cor_set *cor; @@ -99,13 +99,13 @@ cor_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_correl return 2; lex_match (lexer, '='); - if (!parse_variables (lexer, dataset_dict (ds), &v1, &nv1, + if (!parse_variables_const (lexer, dataset_dict (ds), &v1, &nv1, PV_NO_DUPLICATE | PV_NUMERIC)) return 0; if (lex_match (lexer, T_WITH)) { - if (!parse_variables (lexer, dataset_dict (ds), &v2, &nv2, + if (!parse_variables_const (lexer, dataset_dict (ds), &v2, &nv2, PV_NO_DUPLICATE | PV_NUMERIC)) { free (v1); diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q index 4d8a2b7bdd..e54fa2d7a2 100644 --- a/src/language/stats/crosstabs.q +++ b/src/language/stats/crosstabs.q @@ -116,7 +116,7 @@ struct crosstab int nvar; /* Number of variables. */ double missing; /* Missing cases count. */ int ofs; /* Integer mode: Offset into sorted_tab[]. */ - struct variable *vars[2]; /* At least two variables; sorted by + const struct variable *vars[2]; /* At least two variables; sorted by larger indices first. */ }; @@ -129,7 +129,7 @@ struct var_range }; static inline struct var_range * -get_var_range (struct variable *v) +get_var_range (const struct variable *v) { return var_get_aux (v); } @@ -147,7 +147,7 @@ static int n_sorted_tab; /* Number of entries in sorted_tab. */ static struct table_entry **sorted_tab; /* Sorted table. */ /* Variables specifies on VARIABLES. */ -static struct variable **variables; +static const struct variable **variables; static size_t variables_cnt; /* TABLES. */ @@ -305,31 +305,32 @@ internal_cmd_crosstabs (struct lexer *lexer, struct dataset *ds) static int crs_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_crosstabs *cmd UNUSED, void *aux UNUSED) { - struct var_set *var_set; + struct const_var_set *var_set; int n_by; - struct variable ***by = NULL; + const struct variable ***by = NULL; size_t *by_nvar = NULL; size_t nx = 1; int success = 0; /* Ensure that this is a TABLES subcommand. */ if (!lex_match_id (lexer, "TABLES") - && (lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL) + && (lex_token (lexer) != T_ID || + dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL) && lex_token (lexer) != T_ALL) return 2; lex_match (lexer, '='); if (variables != NULL) - var_set = var_set_create_from_array (variables, variables_cnt); + var_set = const_var_set_create_from_array (variables, variables_cnt); else - var_set = var_set_create_from_dict (dataset_dict (ds)); + var_set = const_var_set_create_from_dict (dataset_dict (ds)); assert (var_set != NULL); for (n_by = 0; ;) { by = xnrealloc (by, n_by + 1, sizeof *by); by_nvar = xnrealloc (by_nvar, n_by + 1, sizeof *by_nvar); - if (!parse_var_set_vars (lexer, var_set, &by[n_by], &by_nvar[n_by], + if (!parse_const_var_set_vars (lexer, var_set, &by[n_by], &by_nvar[n_by], PV_NO_DUPLICATE | PV_NO_SCRATCH)) goto done; if (xalloc_oversized (nx, by_nvar[n_by])) @@ -400,7 +401,7 @@ crs_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_crosstabs free (by_nvar); } - var_set_destroy (var_set); + const_var_set_destroy (var_set); return success; } @@ -424,7 +425,7 @@ crs_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_crosst long min, max; - if (!parse_variables (lexer, dataset_dict (ds), + if (!parse_variables_const (lexer, dataset_dict (ds), &variables, &variables_cnt, (PV_APPEND | PV_NUMERIC | PV_NO_DUPLICATE | PV_NO_SCRATCH))) @@ -660,7 +661,7 @@ calc_integer (const struct ccase *c, void *aux UNUSED, const struct dataset *ds) ofs = x->ofs; for (i = 0; i < x->nvar; i++) { - struct variable *const v = x->vars[i]; + const struct variable *const v = x->vars[i]; struct var_range *vr = get_var_range (v); double value = case_num (c, v); @@ -681,10 +682,10 @@ calc_integer (const struct ccase *c, void *aux UNUSED, const struct dataset *ds) } { - struct variable *row_var = x->vars[ROW_VAR]; + const struct variable *row_var = x->vars[ROW_VAR]; const int row = case_num (c, row_var) - get_var_range (row_var)->min; - struct variable *col_var = x->vars[COL_VAR]; + const struct variable *col_var = x->vars[COL_VAR]; const int col = case_num (c, col_var) - get_var_range (col_var)->min; const int col_dim = get_var_range (col_var)->count; @@ -1633,7 +1634,7 @@ static void enum_var_values (struct table_entry **entries, int entry_cnt, int var_idx, union value **values, int *value_cnt) { - struct variable *v = xtab[(*entries)->table]->vars[var_idx]; + const struct variable *v = xtab[(*entries)->table]->vars[var_idx]; if (mode == GENERAL) { diff --git a/src/language/stats/descriptives.c b/src/language/stats/descriptives.c index edfcca08e4..8b06aa5212 100644 --- a/src/language/stats/descriptives.c +++ b/src/language/stats/descriptives.c @@ -63,7 +63,7 @@ enum dsc_missing_type calculating a Z-score. */ struct dsc_z_score { - struct variable *src_var; /* Variable on which z-score is based. */ + const struct variable *src_var; /* Variable on which z-score is based. */ struct variable *z_var; /* New z-score variable. */ double mean; /* Distribution mean. */ double std_dev; /* Distribution standard deviation. */ @@ -74,7 +74,7 @@ struct dsc_trns { struct dsc_z_score *z_scores; /* Array of Z-scores. */ int z_score_cnt; /* Number of Z-scores. */ - struct variable **vars; /* Variables for listwise missing checks. */ + const struct variable **vars; /* Variables for listwise missing checks. */ size_t var_cnt; /* Number of variables. */ enum dsc_missing_type missing_type; /* Treatment of missing values. */ enum mv_class exclude; /* Classes of missing values to exclude. */ @@ -126,7 +126,7 @@ static const struct dsc_statistic_info dsc_info[DSC_N_STATS] = /* A variable specified on DESCRIPTIVES. */ struct dsc_var { - struct variable *v; /* Variable to calculate on. */ + const struct variable *v; /* Variable to calculate on. */ char z_name[LONG_NAME_LEN + 1]; /* Name for z-score variable. */ double valid, missing; /* Valid, missing counts. */ struct moments *moments; /* Moments. */ @@ -193,7 +193,7 @@ cmd_descriptives (struct lexer *lexer, struct dataset *ds) { struct dictionary *dict = dataset_dict (ds); struct dsc_proc *dsc; - struct variable **vars = NULL; + const struct variable **vars = NULL; size_t var_cnt = 0; int save_z_scores = 0; int z_cnt = 0; @@ -316,11 +316,12 @@ cmd_descriptives (struct lexer *lexer, struct dataset *ds) { int i; - if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt, + if (!parse_variables_const (lexer, dataset_dict (ds), + &vars, &var_cnt, PV_APPEND | PV_NO_DUPLICATE | PV_NUMERIC)) goto error; - dsc->vars = xnrealloc (dsc->vars, var_cnt, sizeof *dsc->vars); + dsc->vars = xnrealloc ((void *)dsc->vars, var_cnt, sizeof *dsc->vars); for (i = dsc->var_cnt; i < var_cnt; i++) { struct dsc_var *dv = &dsc->vars[i]; @@ -586,7 +587,7 @@ descriptives_trns_proc (void *trns_, struct ccase * c, { struct dsc_trns *t = trns_; struct dsc_z_score *z; - struct variable **vars; + const struct variable **vars; int all_sysmis = 0; if (t->missing_type == DSC_LISTWISE) diff --git a/src/language/stats/examine.q b/src/language/stats/examine.q index abbf9fc389..b040e19bc7 100644 --- a/src/language/stats/examine.q +++ b/src/language/stats/examine.q @@ -84,7 +84,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA static struct cmd_examine cmd; -static struct variable **dependent_vars; +static const struct variable **dependent_vars; static size_t n_dependent_vars; @@ -116,19 +116,19 @@ static int examine_parse_independent_vars (struct lexer *lexer, const struct dic /* Output functions */ -static void show_summary (struct variable **dependent_var, int n_dep_var, +static void show_summary (const struct variable **dependent_var, int n_dep_var, const struct factor *f); -static void show_extremes (struct variable **dependent_var, +static void show_extremes (const struct variable **dependent_var, int n_dep_var, const struct factor *factor, int n_extremities); -static void show_descriptives (struct variable **dependent_var, +static void show_descriptives (const struct variable **dependent_var, int n_dep_var, struct factor *factor); -static void show_percentiles (struct variable **dependent_var, +static void show_percentiles (const struct variable **dependent_var, int n_dep_var, struct factor *factor); @@ -525,7 +525,7 @@ xmn_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_examin return 2; } - if (!parse_variables (lexer, dict, &dependent_vars, &n_dependent_vars, + if (!parse_variables_const (lexer, dict, &dependent_vars, &n_dependent_vars, PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) ) { free (dependent_vars); @@ -899,7 +899,7 @@ run_examine (const struct ccase *first, const struct casefile *cf, static void -show_summary (struct variable **dependent_var, int n_dep_var, +show_summary (const struct variable **dependent_var, int n_dep_var, const struct factor *fctr) { static const char *subtitle[]= @@ -1124,7 +1124,7 @@ populate_summary (struct tab_table *t, int col, int row, static void -show_extremes (struct variable **dependent_var, int n_dep_var, +show_extremes (const struct variable **dependent_var, int n_dep_var, const struct factor *fctr, int n_extremities) { int i; @@ -1361,7 +1361,7 @@ populate_extremes (struct tab_table *t, /* Show the descriptives table */ void -show_descriptives (struct variable **dependent_var, +show_descriptives (const struct variable **dependent_var, int n_dep_var, struct factor *fctr) { @@ -1947,7 +1947,7 @@ np_plot (const struct metrics *m, const char *factorname) /* Show the percentiles */ void -show_percentiles (struct variable **dependent_var, +show_percentiles (const struct variable **dependent_var, int n_dep_var, struct factor *fctr) { diff --git a/src/language/stats/flip.c b/src/language/stats/flip.c index 8b7e2ffec8..5c6e774048 100644 --- a/src/language/stats/flip.c +++ b/src/language/stats/flip.c @@ -64,7 +64,7 @@ struct varname struct flip_pgm { struct pool *pool; /* Pool containing FLIP data. */ - struct variable **var; /* Variables to transpose. */ + const struct variable **var; /* Variables to transpose. */ int *idx_to_fv; /* var[]->index to compacted sink case fv. */ size_t var_cnt; /* Number of elements in `var'. */ int case_cnt; /* Pre-flip case count. */ @@ -122,7 +122,7 @@ cmd_flip (struct lexer *lexer, struct dataset *ds) if (lex_match_id (lexer, "VARIABLES")) { lex_match (lexer, '='); - if (!parse_variables (lexer, dict, &flip->var, &flip->var_cnt, + if (!parse_variables_const (lexer, dict, &flip->var, &flip->var_cnt, PV_NO_DUPLICATE)) goto error; lex_match (lexer, '/'); diff --git a/src/language/stats/frequencies.q b/src/language/stats/frequencies.q index 34223e104f..29e85babd3 100644 --- a/src/language/stats/frequencies.q +++ b/src/language/stats/frequencies.q @@ -197,7 +197,7 @@ static int normal; /* FIXME */ /* Variables for which to calculate statistics. */ static size_t n_variables; -static struct variable **v_variables; +static const struct variable **v_variables; /* Arenas used to store semi-permanent storage. */ static struct pool *int_pool; /* Integer mode. */ @@ -269,17 +269,17 @@ get_var_freqs (const struct variable *v) static void determine_charts (void); -static void calc_stats (struct variable *v, double d[frq_n_stats]); +static void calc_stats (const struct variable *v, double d[frq_n_stats]); static void precalc (const struct ccase *, void *, const struct dataset *); static bool calc (const struct ccase *, void *, const struct dataset *); static bool postcalc (void *, const struct dataset *); -static void postprocess_freq_tab (struct variable *); -static void dump_full (struct variable *); -static void dump_condensed (struct variable *); -static void dump_statistics (struct variable *, int show_varname); -static void cleanup_freq_tab (struct variable *); +static void postprocess_freq_tab (const struct variable *); +static void dump_full (const struct variable *); +static void dump_condensed (const struct variable *); +static void dump_statistics (const struct variable *, int show_varname); +static void cleanup_freq_tab (const struct variable *); static hsh_compare_func compare_value_numeric_a, compare_value_alpha_a; static hsh_compare_func compare_value_numeric_d, compare_value_alpha_d; @@ -569,7 +569,7 @@ precalc (const struct ccase *first, void *aux UNUSED, const struct dataset *ds) for (i = 0; i < n_variables; i++) { - struct variable *v = v_variables[i]; + const struct variable *v = v_variables[i]; struct freq_tab *ft = &get_var_freqs (v)->tab; if (ft->mode == FRQM_GENERAL) @@ -597,7 +597,7 @@ postcalc (void *aux UNUSED, const struct dataset *ds UNUSED) for (i = 0; i < n_variables; i++) { - struct variable *v = v_variables[i]; + const struct variable *v = v_variables[i]; struct var_freqs *vf = get_var_freqs (v); struct freq_tab *ft = &vf->tab; int n_categories; @@ -705,7 +705,7 @@ not_missing (const void *f_, const void *v_) /* Summarizes the frequency table data for variable V. */ static void -postprocess_freq_tab (struct variable *v) +postprocess_freq_tab (const struct variable *v) { hsh_compare_func *compare; struct freq_tab *ft; @@ -760,7 +760,7 @@ postprocess_freq_tab (struct variable *v) /* Frees the frequency table for variable V. */ static void -cleanup_freq_tab (struct variable *v) +cleanup_freq_tab (const struct variable *v) { struct freq_tab *ft = &get_var_freqs (v)->tab; assert (ft->mode == FRQM_GENERAL); @@ -784,7 +784,7 @@ frq_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_freque || dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL)) return 2; - if (!parse_variables (lexer, dataset_dict (ds), &v_variables, &n_variables, + if (!parse_variables_const (lexer, dataset_dict (ds), &v_variables, &n_variables, PV_APPEND | PV_NO_SCRATCH)) return 0; @@ -815,7 +815,7 @@ frq_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_freque for (i = old_n_variables; i < n_variables; i++) { - struct variable *v = v_variables[i]; + const struct variable *v = v_variables[i]; struct var_freqs *vf; if (var_get_aux (v) != NULL) @@ -875,9 +875,9 @@ frq_custom_grouped (struct lexer *lexer, struct dataset *ds, struct cmd_frequenc /* Variable list. */ size_t n; - struct variable **v; + const struct variable **v; - if (!parse_variables (lexer, dataset_dict (ds), &v, &n, + if (!parse_variables_const (lexer, dataset_dict (ds), &v, &n, PV_NO_DUPLICATE | PV_NUMERIC)) return 0; if (lex_match (lexer, '(')) @@ -1119,7 +1119,7 @@ full_dim (struct tab_table *t, struct outp_driver *d) /* Displays a full frequency table for variable V. */ static void -dump_full (struct variable *v) +dump_full (const struct variable *v) { int n_categories; struct var_freqs *vf; @@ -1250,7 +1250,7 @@ condensed_dim (struct tab_table *t, struct outp_driver *d) /* Display condensed frequency table for variable V. */ static void -dump_condensed (struct variable *v) +dump_condensed (const struct variable *v) { int n_categories; struct var_freqs *vf; @@ -1310,7 +1310,7 @@ dump_condensed (struct variable *v) /* Calculates all the pertinent statistics for variable V, putting them in array D[]. FIXME: This could be made much more optimal. */ static void -calc_stats (struct variable *v, double d[frq_n_stats]) +calc_stats (const struct variable *v, double d[frq_n_stats]) { struct freq_tab *ft = &get_var_freqs (v)->tab; double W = ft->valid_cases; @@ -1472,7 +1472,7 @@ calc_stats (struct variable *v, double d[frq_n_stats]) /* Displays a table of all the statistics requested for variable V. */ static void -dump_statistics (struct variable *v, int show_varname) +dump_statistics (const struct variable *v, int show_varname) { struct freq_tab *ft; double stat_value[frq_n_stats]; diff --git a/src/language/stats/means.q b/src/language/stats/means.q index b952df19a4..10c6d3c11a 100644 --- a/src/language/stats/means.q +++ b/src/language/stats/means.q @@ -53,7 +53,7 @@ /* TABLES: Variable lists for each dimension. */ static int n_dim; /* Number of dimensions. */ static size_t *nv_dim; /* Number of variables in each dimension. */ -static struct variable ***v_dim; /* Variables in each dimension. */ +static const struct variable ***v_dim; /* Variables in each dimension. */ /* VARIABLES: List of variables. */ static struct variable **v_var; @@ -123,7 +123,7 @@ free: static int mns_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_means *cmd, void *aux UNUSED) { - struct var_set *var_set; + struct const_var_set *var_set; if (!lex_match_id (lexer, "TABLES") && (lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL) @@ -138,15 +138,15 @@ mns_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_means *cm return 0; } - var_set = var_set_create_from_dict (dataset_dict (ds)); + var_set = const_var_set_create_from_dict (dataset_dict (ds)); assert (var_set != NULL); do { size_t nvl; - struct variable **vl; + const struct variable **vl; - if (!parse_var_set_vars (lexer, var_set, &vl, &nvl, + if (!parse_const_var_set_vars (lexer, var_set, &vl, &nvl, PV_NO_DUPLICATE | PV_NO_SCRATCH)) goto lossage; @@ -159,11 +159,11 @@ mns_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_means *cm } while (lex_match (lexer, T_BY)); - var_set_destroy (var_set); + const_var_set_destroy (var_set); return 1; lossage: - var_set_destroy (var_set); + const_var_set_destroy (var_set); return 0; } diff --git a/src/language/stats/npar.h b/src/language/stats/npar.h index 1cb0ef7b9b..3907bb2671 100644 --- a/src/language/stats/npar.h +++ b/src/language/stats/npar.h @@ -19,10 +19,11 @@ #if !npar_h #define npar_h 1 -typedef struct variable *var_ptr; +typedef const struct variable *var_ptr; typedef var_ptr variable_pair[2]; struct hsh_table; +struct const_hsh_table; struct casefilter ; struct npar_test @@ -34,13 +35,13 @@ struct npar_test ); void (*insert_variables) (const struct npar_test *, - struct hsh_table *); + struct const_hsh_table *); }; struct one_sample_test { struct npar_test parent; - struct variable **vars; + const struct variable **vars; size_t n_vars; }; diff --git a/src/language/stats/npar.q b/src/language/stats/npar.q index 581452a286..ab5047cf0d 100644 --- a/src/language/stats/npar.q +++ b/src/language/stats/npar.q @@ -82,7 +82,7 @@ struct npar_specs }; void one_sample_insert_variables (const struct npar_test *test, - struct hsh_table *variables); + struct const_hsh_table *variables); static bool npar_execute(const struct ccase *first UNUSED, @@ -130,10 +130,10 @@ cmd_npar_tests (struct lexer *lexer, struct dataset *ds) bool ok; int i; struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0}; - struct hsh_table *var_hash; + struct const_hsh_table *var_hash; npar_specs.pool = pool_create (); - var_hash = hsh_create_pool (npar_specs.pool, 0, + var_hash = const_hsh_create_pool (npar_specs.pool, 0, compare_vars_by_name, hash_var_by_name, NULL, NULL); @@ -143,24 +143,24 @@ cmd_npar_tests (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - for (i = 0; i < npar_specs.n_tests; ++i ) + for (i = 0; i < npar_specs.n_tests; ++i ) { const struct npar_test *test = npar_specs.test[i]; test->insert_variables (test, var_hash); } - npar_specs.vv = (const struct variable *const *) hsh_data (var_hash); - npar_specs.n_vars = hsh_count (var_hash); - - if ( cmd.sbc_statistics ) + npar_specs.vv = (const struct variable *const *) const_hsh_data (var_hash); + npar_specs.n_vars = const_hsh_count (var_hash); + + if ( cmd.sbc_statistics ) { int i; - for ( i = 0 ; i < NPAR_ST_count; ++i ) + for ( i = 0 ; i < NPAR_ST_count; ++i ) { - if ( cmd.a_statistics[i] ) + if ( cmd.a_statistics[i] ) { - switch ( i ) + switch ( i ) { case NPAR_ST_DESCRIPTIVES: npar_specs.descriptives = true; @@ -191,7 +191,7 @@ cmd_npar_tests (struct lexer *lexer, struct dataset *ds) casefilter_destroy (npar_specs.filter); - hsh_destroy (var_hash); + const_hsh_destroy (var_hash); pool_destroy (npar_specs.pool); @@ -209,7 +209,7 @@ npar_custom_chisquare(struct lexer *lexer, struct dataset *ds, struct cmd_npar_t ((struct npar_test *)tp)->execute = chisquare_execute; ((struct npar_test *)tp)->insert_variables = one_sample_insert_variables; - if (!parse_variables_pool (lexer, specs->pool, dataset_dict (ds), + if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), &tp->vars, &tp->n_vars, PV_NO_SCRATCH | PV_NO_DUPLICATE)) { @@ -329,7 +329,7 @@ npar_custom_binomial(struct lexer *lexer, struct dataset *ds, struct cmd_npar_te if ( lex_match (lexer, '=') ) { - if (parse_variables_pool (lexer, specs->pool, dataset_dict (ds), + if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), &tp->vars, &tp->n_vars, PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) { @@ -389,13 +389,13 @@ parse_two_sample_related_test (struct lexer *lexer, int n = 0; bool paired = false; bool with = false; - struct variable **vlist1; + const struct variable **vlist1; size_t n_vlist1; - struct variable **vlist2; + const struct variable **vlist2; size_t n_vlist2; - if (!parse_variables_pool (lexer, pool, + if (!parse_variables_const_pool (lexer, pool, dict, &vlist1, &n_vlist1, PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) @@ -404,7 +404,7 @@ parse_two_sample_related_test (struct lexer *lexer, if ( lex_match(lexer, T_WITH)) { with = true; - if ( !parse_variables_pool (lexer, pool, dict, + if ( !parse_variables_const_pool (lexer, pool, dict, &vlist2, &n_vlist2, PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) return false; @@ -558,12 +558,12 @@ npar_custom_sign (struct lexer *lexer, struct dataset *ds, /* Insert the variables for TEST into VAR_HASH */ void one_sample_insert_variables (const struct npar_test *test, - struct hsh_table *var_hash) + struct const_hsh_table *var_hash) { int i; struct one_sample_test *ost = (struct one_sample_test *) test; - for ( i = 0 ; i < ost->n_vars ; ++i ) - hsh_insert (var_hash, ost->vars[i]); + for ( i = 0 ; i < ost->n_vars ; ++i ) + const_hsh_insert (var_hash, ost->vars[i]); } diff --git a/src/language/stats/oneway.q b/src/language/stats/oneway.q index 7664f607a4..9b45119f86 100644 --- a/src/language/stats/oneway.q +++ b/src/language/stats/oneway.q @@ -71,13 +71,13 @@ static bool bad_weight_warn = true; static struct cmd_oneway cmd; /* The independent variable */ -static struct variable *indep_var; +static const struct variable *indep_var; /* Number of dependent variables */ static size_t n_vars; /* The dependent variables */ -static struct variable **vars; +static const struct variable **vars; /* A hash table containing all the distinct values of the independent @@ -225,7 +225,7 @@ oneway_custom_variables (struct lexer *lexer, && lex_token (lexer) != T_ALL) return 2; - if (!parse_variables (lexer, dict, &vars, &n_vars, + if (!parse_variables_const (lexer, dict, &vars, &n_vars, PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) ) { diff --git a/src/language/stats/rank.q b/src/language/stats/rank.q index 8efc816efe..3f1dd3a9e9 100644 --- a/src/language/stats/rank.q +++ b/src/language/stats/rank.q @@ -154,10 +154,10 @@ static size_t n_rank_specs; static struct sort_criteria *sc; -static struct variable **group_vars; +static const struct variable **group_vars; static size_t n_group_vars; -static struct variable **src_vars; +static const struct variable **src_vars; static size_t n_src_vars; @@ -245,7 +245,7 @@ rank_cmd (struct dataset *ds, const struct sort_criteria *sc, criteria.crits = xnmalloc (criteria.crit_cnt, sizeof *criteria.crits); for (i = 0; i < n_splits ; i++) { - struct variable *v = dict_get_split_vars (dataset_dict (ds))[i]; + const struct variable *v = dict_get_split_vars (dataset_dict (ds))[i]; criteria.crits[i].fv = var_get_case_index (v); criteria.crits[i].width = var_get_width (v); criteria.crits[i].dir = SRT_ASCEND; @@ -946,7 +946,7 @@ rank_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_rank return 2; } - if (!parse_variables (lexer, dataset_dict (ds), + if (!parse_variables_const (lexer, dataset_dict (ds), &group_vars, &n_group_vars, PV_NO_DUPLICATE | PV_NO_SCRATCH) ) { diff --git a/src/language/stats/regression.q b/src/language/stats/regression.q index 80f9c0293c..995c862006 100644 --- a/src/language/stats/regression.q +++ b/src/language/stats/regression.q @@ -89,7 +89,7 @@ static struct cmd_regression cmd; struct moments_var { struct moments1 *m; - struct variable *v; + const struct variable *v; }; /* Linear regression models. */ @@ -108,7 +108,7 @@ struct reg_trns /* Variables used (both explanatory and response). */ -static struct variable **v_variables; +static const struct variable **v_variables; /* Number of variables. @@ -974,8 +974,9 @@ is_depvar (size_t k, const struct variable *v) Compute the first two moments. */ static size_t -mark_missing_cases (const struct casefile *cf, struct variable *v, - int *is_missing_case, double n_data, struct moments_var *mom) +mark_missing_cases (const struct casefile *cf, const struct variable *v, + int *is_missing_case, double n_data, + struct moments_var *mom) { struct casereader *r; struct ccase c; @@ -1024,7 +1025,7 @@ regression_custom_variables (struct lexer *lexer, struct dataset *ds, return 2; - if (!parse_variables (lexer, dict, &v_variables, &n_variables, PV_NONE)) + if (!parse_variables_const (lexer, dict, &v_variables, &n_variables, PV_NONE)) { free (v_variables); return 0; @@ -1064,8 +1065,9 @@ get_n_indep (const struct variable *v) */ static int prepare_data (int n_data, int is_missing_case[], - struct variable **indep_vars, - struct variable *depvar, const struct casefile *cf, struct moments_var *mom) + const struct variable **indep_vars, + const struct variable *depvar, const struct casefile *cf, + struct moments_var *mom) { int i; int j; @@ -1153,7 +1155,7 @@ run_regression (const struct ccase *first, const union value *val; struct casereader *r; struct ccase c; - struct variable **indep_vars; + const struct variable **indep_vars; struct design_matrix *X; struct moments_var *mom; gsl_vector *Y; diff --git a/src/language/stats/sort-criteria.c b/src/language/stats/sort-criteria.c index bbb33f2388..81b68eab6c 100644 --- a/src/language/stats/sort-criteria.c +++ b/src/language/stats/sort-criteria.c @@ -50,13 +50,13 @@ static bool is_terminator(int tok, const int *terminators); */ struct sort_criteria * sort_parse_criteria (struct lexer *lexer, const struct dictionary *dict, - struct variable ***vars, size_t *var_cnt, + const struct variable ***vars, size_t *var_cnt, bool *saw_direction, const int *terminators ) { struct sort_criteria *criteria; - struct variable **local_vars = NULL; + const struct variable **local_vars = NULL; size_t local_var_cnt; assert ((vars == NULL) == (var_cnt == NULL)); @@ -81,7 +81,7 @@ sort_parse_criteria (struct lexer *lexer, const struct dictionary *dict, enum sort_direction direction; /* Variables. */ - if (!parse_variables (lexer, dict, vars, var_cnt, + if (!parse_variables_const (lexer, dict, vars, var_cnt, PV_NO_DUPLICATE | PV_APPEND | PV_NO_SCRATCH)) goto error; diff --git a/src/language/stats/sort-criteria.h b/src/language/stats/sort-criteria.h index a222cbc743..1c44cc586e 100644 --- a/src/language/stats/sort-criteria.h +++ b/src/language/stats/sort-criteria.h @@ -28,7 +28,7 @@ struct dictionary; struct lexer ; struct sort_criteria *sort_parse_criteria (struct lexer *, const struct dictionary *, - struct variable ***, size_t *, + const struct variable ***, size_t *, bool *saw_direction, const int *terminators ); diff --git a/src/language/stats/t-test.q b/src/language/stats/t-test.q index 088bc2b1c5..9fd09e7be0 100644 --- a/src/language/stats/t-test.q +++ b/src/language/stats/t-test.q @@ -110,7 +110,7 @@ static int n_pairs = 0 ; struct pair { /* The variables comprising the pair */ - struct variable *v[2]; + const struct variable *v[2]; /* The number of valid variable pairs */ double n; @@ -304,30 +304,29 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) int i; struct hsh_iterator hi; - struct hsh_table *hash; - struct variable *v; + struct const_hsh_table *hash; + const struct variable *v; - hash = hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name, + hash = const_hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name, 0, 0); for (i=0; i < n_pairs; ++i) { - hsh_insert(hash,pairs[i].v[0]); - hsh_insert(hash,pairs[i].v[1]); + const_hsh_insert (hash, pairs[i].v[0]); + const_hsh_insert (hash, pairs[i].v[1]); } assert(cmd.n_variables == 0); - cmd.n_variables = hsh_count(hash); + cmd.n_variables = const_hsh_count (hash); cmd.v_variables = xnrealloc (cmd.v_variables, cmd.n_variables, sizeof *cmd.v_variables); /* Iterate through the hash */ - for (i=0,v = (struct variable *) hsh_first(hash,&hi); + for (i=0,v = const_hsh_first (hash, &hi); v != 0; - v=hsh_next(hash,&hi) ) + v = const_hsh_next (hash, &hi) ) cmd.v_variables[i++]=v; - - hsh_destroy(hash); + const_hsh_destroy(hash); } } else if ( !cmd.sbc_variables) @@ -441,7 +440,7 @@ tts_custom_groups (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *c static int tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED) { - struct variable **vars; + const struct variable **vars; size_t n_vars; size_t n_pairs_local; @@ -452,7 +451,7 @@ tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cm lex_match (lexer, '='); n_vars=0; - if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars, + if (!parse_variables_const (lexer, dataset_dict (ds), &vars, &n_vars, PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH)) { free (vars); @@ -464,7 +463,7 @@ tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cm if (lex_match (lexer, T_WITH)) { n_before_WITH = n_vars; - if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars, + if (!parse_variables_const (lexer, dataset_dict (ds), &vars, &n_vars, PV_DUPLICATE | PV_APPEND | PV_NUMERIC | PV_NO_SCRATCH)) { @@ -749,7 +748,7 @@ ssbox_independent_samples_populate(struct ssbox *ssb, for (i=0; i < cmd->n_variables; ++i) { - struct variable *var = cmd->v_variables[i]; + const struct variable *var = cmd->v_variables[i]; struct hsh_table *grp_hash = group_proc_get (var)->group_hash; int count=0; @@ -1012,7 +1011,7 @@ trbox_independent_samples_populate(struct trbox *self, double std_err_diff; double mean_diff; - struct variable *var = cmd->v_variables[i]; + const struct variable *var = cmd->v_variables[i]; struct group_proc *grp_data = group_proc_get (var); struct hsh_table *grp_hash = grp_data->group_hash; @@ -1429,7 +1428,7 @@ common_calc (const struct dictionary *dict, for(i = 0; i < cmd->n_variables ; ++i) { - struct variable *v = cmd->v_variables[i]; + const struct variable *v = cmd->v_variables[i]; if (! casefilter_variable_missing (filter, c, v) ) { @@ -1505,7 +1504,7 @@ one_sample_calc (const struct dictionary *dict, for(i=0; i< cmd->n_variables ; ++i) { struct group_statistics *gs; - struct variable *v = cmd->v_variables[i]; + const struct variable *v = cmd->v_variables[i]; const union value *val = case_data (c, v); gs= &group_proc_get (cmd->v_variables[i])->ugs; @@ -1578,8 +1577,8 @@ paired_calc (const struct dictionary *dict, const struct ccase *c, for(i=0; i < n_pairs ; ++i ) { - struct variable *v0 = pairs[i].v[0]; - struct variable *v1 = pairs[i].v[1]; + const struct variable *v0 = pairs[i].v[0]; + const struct variable *v1 = pairs[i].v[1]; const union value *val0 = case_data (c, v0); const union value *val1 = case_data (c, v1); @@ -1711,7 +1710,7 @@ group_calc (const struct dictionary *dict, for(i=0; i< cmd->n_variables ; ++i) { - struct variable *var = cmd->v_variables[i]; + const struct variable *var = cmd->v_variables[i]; const union value *val = case_data (c, var); struct hsh_table *grp_hash = group_proc_get (var)->group_hash; struct group_statistics *gs; @@ -1742,7 +1741,7 @@ group_postcalc ( struct cmd_t_test *cmd ) for (i = 0; i < cmd->n_variables ; ++i) { - struct variable *var = cmd->v_variables[i]; + const struct variable *var = cmd->v_variables[i]; struct hsh_table *grp_hash = group_proc_get (var)->group_hash; struct hsh_iterator g; struct group_statistics *gs; diff --git a/src/language/xforms/count.c b/src/language/xforms/count.c index 5cfc051519..39f0457497 100644 --- a/src/language/xforms/count.c +++ b/src/language/xforms/count.c @@ -58,7 +58,7 @@ struct criteria struct criteria *next; /* Variables to count. */ - struct variable **vars; + const struct variable **vars; size_t var_cnt; /* Count special values? */ @@ -136,10 +136,11 @@ cmd_count (struct lexer *lexer, struct dataset *ds) for (;;) { bool ok; - + crit->next = NULL; crit->vars = NULL; - if (!parse_variables (lexer, dataset_dict (ds), &crit->vars, &crit->var_cnt, + if (!parse_variables_const (lexer, dataset_dict (ds), &crit->vars, + &crit->var_cnt, PV_DUPLICATE | PV_SAME_TYPE)) goto fail; pool_register (trns->pool, free, crit->vars); diff --git a/src/language/xforms/recode.c b/src/language/xforms/recode.c index 7af72efaff..18f724432f 100644 --- a/src/language/xforms/recode.c +++ b/src/language/xforms/recode.c @@ -97,8 +97,8 @@ struct recode_trns enum var_type dst_type; /* dst_vars[*]->type. */ /* Variables. */ - struct variable **src_vars; /* Source variables. */ - struct variable **dst_vars; /* Destination variables. */ + const struct variable **src_vars; /* Source variables. */ + const struct variable **dst_vars; /* Destination variables. */ char **dst_names; /* Name of dest variables, if they're new. */ size_t var_cnt; /* Number of variables. */ @@ -181,7 +181,7 @@ static bool parse_src_vars (struct lexer *lexer, struct recode_trns *trns, const struct dictionary *dict) { - if (!parse_variables (lexer, dict, &trns->src_vars, &trns->var_cnt, + if (!parse_variables_const (lexer, dict, &trns->src_vars, &trns->var_cnt, PV_SAME_TYPE)) return false; pool_register (trns->pool, free, trns->src_vars); @@ -443,7 +443,7 @@ parse_dst_vars (struct lexer *lexer, struct recode_trns *trns, trns->var_cnt, sizeof *trns->dst_vars); for (i = 0; i < trns->var_cnt; i++) { - struct variable *v; + const struct variable *v; v = trns->dst_vars[i] = dict_lookup_var (dict, trns->dst_names[i]); if (v == NULL && trns->dst_type == VAR_STRING) { @@ -472,7 +472,7 @@ parse_dst_vars (struct lexer *lexer, struct recode_trns *trns, for (i = 0; i < trns->var_cnt; i++) { - struct variable *v = trns->dst_vars[i]; + const struct variable *v = trns->dst_vars[i]; if (v != NULL && var_get_type (v) != trns->dst_type) { msg (SE, _("Type mismatch. Cannot store %s data in " @@ -498,7 +498,7 @@ enlarge_dst_widths (struct recode_trns *trns) max_dst_width = 0; for (i = 0; i < trns->var_cnt; i++) { - struct variable *v = trns->dst_vars[i]; + const struct variable *v = trns->dst_vars[i]; if (var_get_width (v) > max_dst_width) max_dst_width = var_get_width (v); } @@ -523,7 +523,7 @@ create_dst_vars (struct recode_trns *trns, struct dictionary *dict) for (i = 0; i < trns->var_cnt; i++) { - struct variable **var = &trns->dst_vars[i]; + const struct variable **var = &trns->dst_vars[i]; const char *name = trns->dst_names[i]; *var = dict_lookup_var (dict, name); @@ -538,7 +538,7 @@ create_dst_vars (struct recode_trns *trns, struct dictionary *dict) /* Returns the output mapping in TRNS for an input of VALUE on variable V, or a null pointer if there is no mapping. */ static const struct map_out * -find_src_numeric (struct recode_trns *trns, double value, struct variable *v) +find_src_numeric (struct recode_trns *trns, double value, const struct variable *v) { struct mapping *m; @@ -627,8 +627,8 @@ recode_trns_proc (void *trns_, struct ccase *c, casenumber case_idx UNUSED) for (i = 0; i < trns->var_cnt; i++) { - struct variable *src_var = trns->src_vars[i]; - struct variable *dst_var = trns->dst_vars[i]; + const struct variable *src_var = trns->src_vars[i]; + const struct variable *dst_var = trns->dst_vars[i]; const union value *src_data = case_data (c, src_var); union value *dst_data = case_data_rw (c, dst_var); diff --git a/src/libpspp/hash.h b/src/libpspp/hash.h index 06e4d084ed..c0bc5687ea 100644 --- a/src/libpspp/hash.h +++ b/src/libpspp/hash.h @@ -87,4 +87,109 @@ size_t hsh_count (struct hsh_table *); void hsh_dump (struct hsh_table *); #endif + +/* Const Wrappers for the above */ + +static inline struct const_hsh_table * +const_hsh_create (int m, + hsh_compare_func *hcf, + hsh_hash_func *hhf, hsh_free_func *hff, + const void *aux) +{ + return (struct const_hsh_table *) hsh_create (m, hcf, hhf, hff, aux); +} + + + +static inline struct const_hsh_table * +const_hsh_create_pool (struct pool *pool, int m, + hsh_compare_func *cf, + hsh_hash_func *hf, hsh_free_func *ff, + const void *aux) +{ + return (struct const_hsh_table *) hsh_create_pool (pool, m, cf, hf, ff, aux); +} + + +static inline void +const_hsh_clear (struct const_hsh_table *h) +{ + hsh_clear ( (struct hsh_table *) h); +} + +static inline void +const_hsh_destroy (struct const_hsh_table *h) +{ + hsh_destroy ( (struct hsh_table *) h); +} + +static inline void *const * +const_hsh_sort (struct const_hsh_table *h) +{ + return hsh_sort ( (struct hsh_table *) h); +} + +static inline void *const * +const_hsh_data (struct const_hsh_table *h) +{ + return hsh_data ( (struct hsh_table *) h); +} + +static inline void ** +const_hsh_sort_copy (struct const_hsh_table *h) +{ + return hsh_sort_copy ( (struct hsh_table *) h); +} + +static inline void ** +const_hsh_data_copy (struct const_hsh_table *h) +{ + return hsh_data_copy ( (struct hsh_table *) h); +} + + +static inline size_t +const_hsh_count (struct const_hsh_table *h) +{ + return hsh_count ( (struct hsh_table *) h); +} + +static inline void * +const_hsh_insert (struct const_hsh_table *h, const void *item) +{ + return hsh_insert ( (struct hsh_table *) h, (void *) item); +} + +static inline void * +const_hsh_replace (struct const_hsh_table *h, const void *item) +{ + return hsh_replace ( (struct hsh_table *) h, (void *) item); +} + +static inline void * +const_hsh_find (struct const_hsh_table *h, const void *item) +{ + return hsh_find ( (struct hsh_table *) h, (void *) item); +} + +static inline bool +const_hsh_delete (struct const_hsh_table *h, const void *item) +{ + return hsh_delete ( (struct hsh_table *)h, (void *) item); +} + + +static inline void * +const_hsh_first (struct const_hsh_table *h, struct hsh_iterator *i) +{ + return hsh_first ( (struct hsh_table *) h, i); +} + +static inline void * +const_hsh_next (struct const_hsh_table *h, struct hsh_iterator *i) +{ + return hsh_next ( (struct hsh_table *) h, i); +} + + #endif /* hash_h */ diff --git a/src/math/group-proc.h b/src/math/group-proc.h index 421585be39..cdb360507d 100644 --- a/src/math/group-proc.h +++ b/src/math/group-proc.h @@ -45,6 +45,6 @@ struct group_proc }; struct variable; -struct group_proc *group_proc_get (struct variable *); +struct group_proc *group_proc_get (const struct variable *); #endif diff --git a/src/math/group.c b/src/math/group.c index 3978f2fb94..105b643a1c 100644 --- a/src/math/group.c +++ b/src/math/group.c @@ -59,7 +59,7 @@ free_group(struct group_statistics *v, void *aux UNUSED) struct group_proc * -group_proc_get (struct variable *v) +group_proc_get (const struct variable *v) { /* This is not ideal, obviously. */ struct group_proc *group = var_get_aux (v); diff --git a/src/math/levene.c b/src/math/levene.c index acb1cebfc0..a325138b14 100644 --- a/src/math/levene.c +++ b/src/math/levene.c @@ -65,13 +65,13 @@ struct levene_info struct t_test_proc **group_stats; /* The independent variable */ - struct variable *v_indep; + const struct variable *v_indep; /* Number of dependent variables */ size_t n_dep; /* The dependent variables */ - struct variable **v_dep; + const struct variable **v_dep; /* Filter for missing values */ struct casefilter *filter; @@ -94,7 +94,8 @@ static void levene2_postcalc (void *); void levene(const struct dictionary *dict, const struct casefile *cf, - struct variable *v_indep, size_t n_dep, struct variable **v_dep, + const struct variable *v_indep, size_t n_dep, + const struct variable **v_dep, struct casefilter *filter) { struct casereader *r; @@ -159,7 +160,7 @@ levene_precalc (const struct levene_info *l) for(i = 0; i < l->n_dep ; ++i ) { - struct variable *var = l->v_dep[i]; + const struct variable *var = l->v_dep[i]; struct group_proc *gp = group_proc_get (var); struct group_statistics *gs; struct hsh_iterator hi; @@ -194,7 +195,7 @@ levene_calc (const struct dictionary *dict, const struct ccase *c, for (i = 0; i < l->n_dep; ++i) { - struct variable *var = l->v_dep[i]; + const struct variable *var = l->v_dep[i]; struct group_proc *gp = group_proc_get (var); double levene_z; const union value *v = case_data (c, var); @@ -254,7 +255,7 @@ levene2_precalc (struct levene_info *l) struct hsh_iterator hi; struct group_statistics *g; - struct variable *var = l->v_dep[v] ; + const struct variable *var = l->v_dep[v] ; struct hsh_table *hash = group_proc_get (var)->group_hash; @@ -285,7 +286,7 @@ levene2_calc (const struct dictionary *dict, const struct ccase *c, for (i = 0; i < l->n_dep; ++i) { double levene_z; - struct variable *var = l->v_dep[i] ; + const struct variable *var = l->v_dep[i] ; const union value *v = case_data (c, var); struct group_statistics *gs; @@ -319,7 +320,7 @@ levene2_postcalc (void *_l) struct hsh_iterator hi; struct group_statistics *g; - struct variable *var = l->v_dep[v] ; + const struct variable *var = l->v_dep[v] ; struct group_proc *gp = group_proc_get (var); struct hsh_table *hash = gp->group_hash; diff --git a/src/math/levene.h b/src/math/levene.h index d0e44283cd..66944dafb4 100644 --- a/src/math/levene.h +++ b/src/math/levene.h @@ -40,7 +40,8 @@ struct dictionary ; struct casefilter ; void levene(const struct dictionary *dict, const struct casefile *cf, - struct variable *v_indep, size_t n_dep, struct variable **v_dep, + const struct variable *v_indep, size_t n_dep, + const struct variable **v_dep, struct casefilter *filter); diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index 111a8327c3..81ebfb3c60 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -712,7 +712,7 @@ on_split_change (PsppireDict *dict, gpointer data) { gint i; GString *text; - struct variable *const * split_vars = dict_get_split_vars (dict->dict); + const struct variable *const * split_vars = dict_get_split_vars (dict->dict); text = g_string_new (_("Split by ")); diff --git a/src/ui/gui/split-file-dialog.c b/src/ui/gui/split-file-dialog.c index 731995ca55..b0b470bd40 100644 --- a/src/ui/gui/split-file-dialog.c +++ b/src/ui/gui/split-file-dialog.c @@ -27,6 +27,7 @@ #include "dict-display.h" #include #include "syntax-editor.h" +#include #include #include @@ -147,7 +148,7 @@ refresh (PsppireDialog *dialog, struct split_file_dialog *d) { GtkTreeIter iter; gint i; - struct variable *const *vars = dict_get_split_vars (d->dict->dict); + const struct variable *const *vars = dict_get_split_vars (d->dict->dict); for (i = 0 ; i < n_vars; ++i ) { @@ -172,6 +173,7 @@ split_file_dialog (GObject *o, gpointer data) gint response; struct data_editor *de = data; struct split_file_dialog sfd; + PsppireVarStore *vs ; GtkWidget *dialog ; GtkWidget *source ; @@ -191,7 +193,7 @@ split_file_dialog (GObject *o, gpointer data) var_sheet = GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); - PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); + vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); sfd.dict = vs->dict; sfd.tv = GTK_TREE_VIEW (dest); diff --git a/src/ui/gui/transpose-dialog.c b/src/ui/gui/transpose-dialog.c index aa6ed5c583..45daa0f321 100644 --- a/src/ui/gui/transpose-dialog.c +++ b/src/ui/gui/transpose-dialog.c @@ -52,7 +52,7 @@ refresh (PsppireDialog *dialog, gpointer data) GladeXML *xml = data; GtkWidget *dest = get_widget_assert (xml, "variables-treeview"); GtkWidget *entry = get_widget_assert (xml, "new-name-entry"); - GtkTreeModel *dmodel = gtk_tree_view_get_model (dest); + GtkTreeModel *dmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest)); gtk_list_store_clear (GTK_LIST_STORE (dmodel)); gtk_entry_set_text (GTK_ENTRY (entry), "");