Mercurial > octave
annotate build-aux/mk-opts.pl @ 25054:6652d3823428 stable
maint: Update copyright dates in all source files.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 30 Mar 2018 09:19:05 -0400 |
parents | 194eb4bd202b |
children | cb1606f78f6b |
rev | line source |
---|---|
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1 #! /usr/bin/perl -w |
7019 | 2 # |
25054
6652d3823428
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
3 # Copyright (C) 2002-2018 John W. Eaton |
7019 | 4 # |
5 # This file is part of Octave. | |
12174 | 6 # |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23796
diff
changeset
|
7 # Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
8 # under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23796
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
10 # (at your option) any later version. |
12174 | 11 # |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
12 # Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
13 # WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22720
diff
changeset
|
15 # GNU General Public License for more details. |
12174 | 16 # |
7019 | 17 # You should have received a copy of the GNU General Public License |
18 # along with Octave; see the file COPYING. If not, see | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23796
diff
changeset
|
19 # <https://www.gnu.org/licenses/>. |
3998 | 20 |
21 # Generate option handling code from a simpler input files for | |
22 # Octave's functions like lsode, dassl, etc. | |
23 | |
8202
cf59d542f33e
replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents:
7806
diff
changeset
|
24 # FIXME: |
3999 | 25 # |
26 # * Improve default documentation and/or individual documentation | |
12174 | 27 # in data files. |
3999 | 28 # |
29 # * Fix print/show code to display/return something more informative | |
30 # for special values (for example, -1 ==> infinite in some cases). | |
31 # Probably need more information in the data files for this. | |
32 | |
3998 | 33 # Input file format: |
34 # | |
35 # CLASS = string | |
36 # FCN_NAME = string | |
4044 | 37 # INCLUDE = file |
3998 | 38 # DOC_STRING doc END_DOC_STRING |
39 # OPTION | |
40 # NAME = string | |
4050 | 41 # DOC_ITEM doc END_DOC_ITEM |
3998 | 42 # TYPE = string |
43 # SET_ARG_TYPE = string (optional, defaults to TYPE) | |
44 # INIT_VALUE = string | INIT_BODY code END_INIT_BODY | |
45 # SET_EXPR = string | SET_BODY code END_SET_BODY | SET_CODE code END_SET_CODE | |
46 # END_OPTION | |
47 # | |
48 # END_* must appear at beginning of line (whitespace ignored). | |
49 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
50 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
51 # Load packages to |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
52 # 1) process command line options |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
53 ################################################################################ |
3998 | 54 use Getopt::Long; |
55 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
56 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
57 # Extract command line arguments |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
58 &parse_options; |
3998 | 59 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
60 $DEFN_FILE = shift @ARGV; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
61 open (DEFN_FILE) or die "unable to open input definition file $DEFN_FILE"; |
3998 | 62 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
63 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
64 # Initialize variables |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
65 $BLANK_LINE = qr/^\s*$/; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
66 $COMMENT = qr/^\s*#/; |
3998 | 67 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
68 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
69 # Process file |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
70 $OPT_NUM = 0; |
3998 | 71 |
72 &parse_input; | |
73 | |
74 &process_data; | |
75 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
76 # Produce desired style of output |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
77 &emit_opt_class_header if $opt_class_header; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
78 &emit_opt_handler_fcns if $opt_handler_fcns; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
79 &emit_options_debug if $opt_debug; |
3998 | 80 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
81 # End of main code |
3998 | 82 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
83 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
84 # Subroutines |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
85 ################################################################################ |
3998 | 86 |
87 sub parse_input | |
88 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
89 LINE: while (<DEFN_FILE>) |
3998 | 90 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
91 next LINE if /$BLANK_LINE/; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
92 next LINE if /$COMMENT/; |
3998 | 93 |
94 if (/^\s*OPTION\s*$/) | |
95 { | |
96 &parse_option_block; | |
97 } | |
98 elsif (/^\s*CLASS\s*=\s*"(\w+)"\s*$/) | |
99 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
100 die "duplicate CLASS" if defined $CLASS; |
3998 | 101 $CLASS = $1; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
102 $CLASS_NAME = "${CLASS}_options"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
103 $STRUCT_NAME = "${CLASS_NAME}_struct"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
104 $STATIC_TABLE_NAME = "${CLASS_NAME}_table"; |
3998 | 105 } |
106 elsif (/^\s*FCN_NAME\s*=\s*"(\w+)"\s*$/) | |
107 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
108 die "duplicate FCN_NAME" if defined $FCN_NAME; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
109 $FCN_NAME = $1; |
3998 | 110 } |
4044 | 111 elsif (/^\s*INCLUDE\s*=\s*"(\S+)"\s*$/) |
112 { | |
23475
d691ed308237
maint: Clean up #includes in liboctave/numeric directory.
Rik <rik@octave.org>
parents:
23443
diff
changeset
|
113 $INCLUDE .= qq (#include "$1"\n); |
12174 | 114 } |
3998 | 115 elsif (/^\s*DOC_STRING\s*$/) |
116 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
117 die "duplicate DOC_STRING" if defined $DOC_STRING; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
118 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_DOC_STRING\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
119 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
120 $DOC_STRING .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
121 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
122 $DOC_STRING =~ s/\n/\\n\\\n/g; |
3998 | 123 } |
4044 | 124 else |
125 { | |
12174 | 126 die "mk-opts.pl: unknown command: $_\n" |
127 } | |
3998 | 128 } |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12504
diff
changeset
|
129 $INCLUDE = "" if not defined $INCLUDE; # Initialize value if required |
3998 | 130 } |
131 | |
132 sub parse_option_block | |
133 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
134 while (<DEFN_FILE>) |
3998 | 135 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
136 next if /$BLANK_LINE/; |
3998 | 137 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
138 die "missing END_OPTION" if /^\s*OPTION\s*$/; |
3998 | 139 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
140 last if /^\s*END_OPTION\s*$/; |
3998 | 141 |
142 if (/^\s*NAME\s*=\s*"(.*)"\s*$/) | |
143 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
144 die "duplicate NAME" if defined $NAME[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
145 $NAME[$OPT_NUM] = $1; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
146 ($OPT[$OPT_NUM] = $NAME[$OPT_NUM]) =~ s/\s+/_/g; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
147 $OPTVAR[$OPT_NUM] = 'x_' . $OPT[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
148 $KW_TOK[$OPT_NUM] = [ split (' ', $NAME[$OPT_NUM]) ]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
149 $N_TOKS[$OPT_NUM] = @{$KW_TOK[$OPT_NUM]}; |
3998 | 150 } |
4050 | 151 elsif (/^\s*DOC_ITEM\s*$/) |
152 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
153 die "duplicate DOC_ITEM" if defined $DOC_ITEM[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
154 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_DOC_ITEM\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
155 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
156 $DOC_ITEM[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
157 } |
4050 | 158 } |
3998 | 159 elsif (/^\s*TYPE\s*=\s*"(.*)"\s*$/) |
160 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
161 die "duplicate TYPE" if defined $TYPE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
162 $TYPE[$OPT_NUM] = $1; |
3998 | 163 } |
164 elsif (/^\s*SET_ARG_TYPE\s*=\s*"(.*)"\s*$/) | |
165 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
166 die "duplicate SET_ARG_TYPE" if defined $SET_ARG_TYPE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
167 $SET_ARG_TYPE[$OPT_NUM] = $1; |
3998 | 168 } |
169 elsif (/^\s*INIT_VALUE\s*=\s*"(.*)"\s*$/) | |
170 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
171 die "duplicate INIT_VALUE" if defined $INIT_VALUE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
172 $INIT_VALUE[$OPT_NUM] = $1; |
3998 | 173 } |
174 elsif (/^\s*SET_EXPR\s*=\s*"(.*)"\s*$/) | |
175 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
176 die "duplicate SET_EXPR" if defined $SET_EXPR[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
177 $SET_EXPR[$OPT_NUM] = $1; |
3998 | 178 } |
179 elsif (/^\s*INIT_BODY\s*$/) | |
180 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
181 die "duplicate INIT_BODY" if defined $INIT_BODY[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
182 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_INIT_BODY\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
183 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
184 $INIT_BODY[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
185 } |
3998 | 186 } |
187 elsif (/^\s*SET_BODY\s*$/) | |
188 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
189 die "duplicate SET_BODY" if defined $INIT_BODY[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
190 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_SET_BODY\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
191 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
192 $SET_BODY[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
193 } |
3998 | 194 } |
195 elsif (/^\s*SET_CODE\s*$/) | |
196 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
197 die "duplicate SET_CODE" if defined $SET_CODE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
198 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_SET_CODE\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
199 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
200 $SET_CODE[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
201 } |
3998 | 202 } |
203 } | |
204 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
205 if (not defined $SET_ARG_TYPE[$OPT_NUM]) |
3998 | 206 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
207 $SET_ARG_TYPE[$OPT_NUM] = $TYPE[$OPT_NUM]; |
3998 | 208 } |
209 else | |
210 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
211 $SET_ARG_TYPE[$OPT_NUM] |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
212 = substopt ($SET_ARG_TYPE[$OPT_NUM], $OPTVAR[$OPT_NUM], |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
213 $OPT[$OPT_NUM], $TYPE[$OPT_NUM]); |
3998 | 214 } |
215 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
216 $OPT_NUM++; |
3998 | 217 } |
218 | |
219 sub process_data | |
220 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
221 $MAX_TOKENS = max (@N_TOKS); |
3998 | 222 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
223 &get_min_match_len_info; |
3998 | 224 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
225 $FCN_NAME = lc ($CLASS) if not defined $FCN_NAME; |
12174 | 226 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
227 $OPT_FCN_NAME = "${FCN_NAME}_options" if not defined $OPT_FCN_NAME; |
3998 | 228 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
229 $STATIC_OBJECT_NAME = "${FCN_NAME}_opts"; |
3998 | 230 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
231 if (not defined $DOC_STRING) |
3998 | 232 { |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
233 $DOC_STRING = "Query or set options for the function \@code{$FCN_NAME}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
234 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
235 When called with no arguments, the names of all available options and |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
236 their current values are displayed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
237 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
238 Given one argument, return the value of the option \@var{opt}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
239 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
240 When called with two arguments, \@code{$OPT_FCN_NAME} sets the option |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12504
diff
changeset
|
241 \@var{opt} to value \@var{val}."; |
3998 | 242 } |
243 } | |
244 | |
17513
fedcd3717ebc
doc: grammarcheck of documentation before 3.8 release.
Rik <rik@octave.org>
parents:
15039
diff
changeset
|
245 ## FIXME: What does this routine do? And can it be simpler to understand? |
3998 | 246 sub get_min_match_len_info |
247 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
248 my ($i, $j, $k); |
3998 | 249 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
250 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 251 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
252 for ($j = 0; $j < $MAX_TOKENS; $j++) |
3998 | 253 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
254 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 0; |
3998 | 255 } |
256 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
257 $MIN_TOKS_TO_MATCH[$i] = 1; |
3998 | 258 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
259 L1: for ($k = 0; $k < $OPT_NUM; $k++) |
3998 | 260 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
261 my $duplicate = 1; |
3998 | 262 |
263 if ($i != $k) | |
264 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
265 L2: for ($j = 0; $j < $MAX_TOKENS; $j++) |
3998 | 266 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
267 if ($j < $N_TOKS[$i]) |
3998 | 268 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
269 if ($KW_TOK[$i][$j] eq $KW_TOK[$k][$j]) |
3998 | 270 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
271 if ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
3998 | 272 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
273 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
3998 | 274 } |
275 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
276 $MIN_TOKS_TO_MATCH[$i]++; |
3998 | 277 } |
278 else | |
279 { | |
12174 | 280 $duplicate = 0; |
3998 | 281 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
282 if ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
12174 | 283 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
284 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
12174 | 285 } |
3998 | 286 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
287 my @s = split (//, $KW_TOK[$i][$j]); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
288 my @t = split (//, $KW_TOK[$k][$j]); |
3998 | 289 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
290 my ($n, $ii); |
3998 | 291 $n = scalar (@s); |
292 $n = scalar (@t) if (@t < $n); | |
293 | |
294 for ($ii = 0; $ii < $n; $ii++) | |
295 { | |
296 if ("$s[$ii]" eq "$t[$ii]") | |
297 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
298 if ($ii + 2 > $MIN_TOK_LEN_TO_MATCH[$i][$j]) |
12174 | 299 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
300 $MIN_TOK_LEN_TO_MATCH[$i][$j]++; |
12174 | 301 } |
3998 | 302 } |
303 else | |
304 { | |
305 last L2; | |
306 } | |
307 } | |
308 | |
309 last L1; | |
310 } | |
311 } | |
12174 | 312 else |
313 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
314 die qq|ambiguous options "$NAME[$i]" and "$NAME[$k]"| if $duplicate; |
12174 | 315 } |
3998 | 316 } |
317 } | |
318 } | |
319 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
320 } # end of get_min_match_len_info |
4050 | 321 |
3998 | 322 |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
323 sub emit_copy_body |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
324 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
325 my ($pfx, $var) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
326 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
327 for (my $i = 0; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
328 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
329 print "${pfx}$OPTVAR[$i] = ${var}.$OPTVAR[$i];\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
330 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
331 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
332 print "${pfx}reset = ${var}.reset;\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
333 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
334 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
335 ## To silence GCC warnings, we create an initialization list even |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
336 ## though the init function actually does the work of initialization. |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
337 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
338 sub emit_default_init_list |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
339 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
340 my ($prefix) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
341 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
342 print "$OPTVAR[0] (),\n" unless ($OPT_NUM == 0); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
343 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
344 for (my $i = 1; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
345 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
346 print "${prefix}$OPTVAR[$i] (),\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
347 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
348 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
349 print "${prefix}reset ()\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
350 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
351 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
352 sub emit_copy_ctor_init_list |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
353 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
354 my ($prefix, $var) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
355 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
356 print "$OPTVAR[0] ($var.$OPTVAR[0]),\n" unless ($OPT_NUM == 0); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
357 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
358 for (my $i = 1; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
359 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
360 print "${prefix}$OPTVAR[$i] ($var.$OPTVAR[$i]),\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
361 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
362 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
363 print "${prefix}reset ($var.reset)\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
364 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
365 |
3998 | 366 sub emit_opt_class_header |
367 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
368 my ($i, $s); |
3998 | 369 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
370 print <<"_END_EMIT_OPT_CLASS_HEADER_"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
371 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
372 // Generated automatically from $DEFN_FILE. |
3998 | 373 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
20733
diff
changeset
|
374 #if ! defined (octave_${CLASS_NAME}_h) |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
375 #define octave_${CLASS_NAME}_h 1 |
3998 | 376 |
23662
bd77ab816e43
eliminate obsolete file lo-math.h
John W. Eaton <jwe@octave.org>
parents:
23475
diff
changeset
|
377 #include <cmath> |
bd77ab816e43
eliminate obsolete file lo-math.h
John W. Eaton <jwe@octave.org>
parents:
23475
diff
changeset
|
378 |
23442
53f5f8231c37
allow most header files to be compiled separately
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
379 #include <limits> |
53f5f8231c37
allow most header files to be compiled separately
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
380 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
381 $INCLUDE |
4044 | 382 |
3998 | 383 class |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
384 $CLASS_NAME |
3998 | 385 { |
386 public: | |
387 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
388 $CLASS_NAME (void) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
389 _END_EMIT_OPT_CLASS_HEADER_ |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
390 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
391 print ' : '; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
392 emit_default_init_list (" "); |
3998 | 393 |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
394 print " { |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
395 init (); |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
396 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
397 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
398 $CLASS_NAME (const ${CLASS_NAME}& opt) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
399 : "; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
400 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
401 emit_copy_ctor_init_list (" ", "opt"); |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
402 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
403 print " { } |
3998 | 404 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
405 ${CLASS_NAME}& operator = (const ${CLASS_NAME}& opt) |
3998 | 406 { |
407 if (this != &opt) | |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
408 {\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
409 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
410 emit_copy_body (' ', 'opt'); |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
411 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
412 print " } |
3998 | 413 |
414 return *this; | |
415 } | |
416 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
417 ~$CLASS_NAME (void) { }\n"; |
3998 | 418 |
419 print "\n void init (void)\n {\n"; | |
420 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
421 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 422 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
423 if ($INIT_VALUE[$i]) |
3998 | 424 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
425 print " $OPTVAR[$i] = $INIT_VALUE[$i];\n"; |
3998 | 426 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
427 elsif ($INIT_BODY[$i]) |
3998 | 428 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
429 $s = substopt ($INIT_BODY[$i], $OPTVAR[$i], $OPT[$i], $TYPE[$i]); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
430 chomp ($s); |
3998 | 431 $s =~ s/^\s*/ /g; |
432 $s =~ s/\n\s*/\n /g; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
433 print $s,"\n"; |
3998 | 434 } |
435 } | |
436 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
437 print " reset = true;\n", |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
438 " }\n"; |
3998 | 439 |
4122 | 440 ## For backward compatibility and because set_options is probably |
441 ## a better name in some contexts: | |
442 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
443 print "\n void set_options (const ${CLASS_NAME}& opt)\n", |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
444 " {\n"; |
4122 | 445 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
446 emit_copy_body (' ', 'opt'); |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
447 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
448 print " }\n\n void set_default_options (void) { init (); }\n"; |
3998 | 449 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
450 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 451 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
452 if ($SET_EXPR[$i]) |
3998 | 453 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
454 emit_set_decl ($i); |
3998 | 455 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
456 print "\n { $OPTVAR[$i] = $SET_EXPR[$i]; reset = true; }\n"; |
3998 | 457 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
458 elsif ($SET_BODY[$i]) |
3998 | 459 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
460 emit_set_decl ($i); |
3998 | 461 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
462 $s = substopt ($SET_BODY[$i], $OPTVAR[$i], $OPT[$i], $TYPE[$i]); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
463 chomp ($s); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
464 $s = ' ' . $s; |
3998 | 465 $s =~ s/\n/\n /g; |
4049 | 466 print "\n {\n$s\n reset = true;\n }\n"; |
3998 | 467 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
468 elsif ($SET_CODE[$i]) |
3998 | 469 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
470 $s = substopt ($SET_CODE[$i], $OPTVAR[$i], $OPT[$i], $TYPE[$i]); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
471 chomp ($s); |
3998 | 472 $s =~ s/^ //g; |
473 $s =~ s/\n /\n/g; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
474 print "\n",$s,"\n"; |
3998 | 475 } |
476 } | |
477 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
478 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 479 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
480 print " $TYPE[$i] $OPT[$i] (void) const\n { return $OPTVAR[$i]; }\n\n"; |
3998 | 481 } |
482 | |
483 print "private:\n\n"; | |
484 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
485 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 486 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
487 print " $TYPE[$i] $OPTVAR[$i];\n"; |
3998 | 488 } |
489 | |
4049 | 490 print "\nprotected:\n\n bool reset;\n};\n\n#endif\n"; |
3998 | 491 } |
492 | |
493 sub emit_set_decl | |
494 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
495 my ($i) = @_; |
3998 | 496 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
497 print "\n void set_$OPT[$i] ($SET_ARG_TYPE[$i] val)"; |
3998 | 498 } |
499 | |
500 sub emit_opt_handler_fcns | |
501 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
502 my $header = $DEFN_FILE; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
503 $header =~ s/[.]\w*$/.h/; # replace .in with .h |
4044 | 504 $header =~ s|^.*/([^/]*)$|$1|; # strip directory part |
3998 | 505 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
506 print <<"_END_EMIT_OPT_HANDLER_FCNS_"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
507 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
508 // Generated automatically from $DEFN_FILE. |
3998 | 509 |
21690
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
510 // This file should not include config.h. It is only included in other |
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
511 // C++ source files that should have included config.h before including |
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
512 // this file. |
3998 | 513 |
514 #include <iomanip> | |
515 #include <iostream> | |
516 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
517 #include "$header" |
4044 | 518 |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
519 #include "defun.h" |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
520 #include "pr-output.h" |
3998 | 521 |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20895
diff
changeset
|
522 #include "ovl.h" |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
523 #include "utils.h" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
524 #include "pager.h" |
4044 | 525 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
526 static $CLASS_NAME $STATIC_OBJECT_NAME; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
527 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
528 _END_EMIT_OPT_HANDLER_FCNS_ |
3998 | 529 |
530 &emit_struct_decl; | |
531 | |
532 &emit_struct_def; | |
533 | |
534 &emit_print_function; | |
535 | |
536 &emit_set_functions; | |
537 | |
538 &emit_show_function; | |
539 | |
540 &emit_options_function; | |
541 } | |
542 | |
543 sub emit_struct_decl | |
544 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
545 print <<"_END_PRINT_STRUCT_DECL_"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
546 #define MAX_TOKENS $MAX_TOKENS |
3998 | 547 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
548 struct $STRUCT_NAME |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
549 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
550 const char *keyword; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
551 const char *kw_tok[MAX_TOKENS + 1]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
552 int min_len[MAX_TOKENS + 1]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
553 int min_toks_to_match; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
554 }; |
3998 | 555 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
556 _END_PRINT_STRUCT_DECL_ |
3998 | 557 } |
558 | |
559 sub emit_struct_def | |
560 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
561 my $i; |
3998 | 562 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
563 print "#define NUM_OPTIONS $OPT_NUM\n\n"; |
3998 | 564 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
565 print "static $STRUCT_NAME $STATIC_TABLE_NAME [] =\n{\n"; |
3998 | 566 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
567 for ($i = 0; $i < ($OPT_NUM - 1); $i++) |
3998 | 568 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
569 emit_option_table_entry ($i, 0); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
570 print "\n"; |
3998 | 571 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
572 emit_option_table_entry ($i, 0); |
3998 | 573 |
574 print "};\n\n"; | |
575 } | |
576 | |
577 sub emit_option_table_entry | |
578 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
579 my ($i, $empty) = @_; |
3998 | 580 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
581 my $k; |
3998 | 582 |
583 if ($empty) | |
584 { | |
23796
4f12819a634f
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23662
diff
changeset
|
585 print " { nullptr,\n"; |
3998 | 586 } |
587 else | |
588 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
589 print " { \"$NAME[$i]\",\n"; |
3998 | 590 } |
591 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
592 my $n = scalar $#{$KW_TOK[$i]}; |
3998 | 593 print " {"; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
594 for $k (0 .. $MAX_TOKENS) |
3998 | 595 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
596 if ($empty or $k > $n) |
3998 | 597 { |
23796
4f12819a634f
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23662
diff
changeset
|
598 print " nullptr,"; |
3998 | 599 } |
600 else | |
601 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
602 print " \"$KW_TOK[$i][$k]\","; |
3998 | 603 } |
604 } | |
605 print " },\n"; | |
606 | |
607 print " {"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
608 for $k (0 .. $MAX_TOKENS) |
3998 | 609 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
610 if ($empty or $k > $n) |
3998 | 611 { |
612 print " 0,"; | |
613 } | |
614 else | |
615 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
616 print " $MIN_TOK_LEN_TO_MATCH[$i][$k],"; |
3998 | 617 } |
618 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
619 print " }, $MIN_TOKS_TO_MATCH[$i], "; |
3998 | 620 |
621 print "},\n"; | |
622 } | |
623 | |
624 sub emit_print_function | |
625 { | |
21092
429f83903400
maint: Use "FIXME:" more places in code base.
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
626 ## FIXME: determine the width of the table automatically. |
4047 | 627 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
628 print qq|static void |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
629 print_$CLASS_NAME (std::ostream& os) |
3998 | 630 { |
5765 | 631 std::ostringstream buf; |
3998 | 632 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
633 os << "\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
634 << "Options for $CLASS include:\\n\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
635 << " keyword value\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
636 << " ------- -----\\n"; |
3998 | 637 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
638 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n|; |
3998 | 639 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
640 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 641 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
642 print qq| {\n os << " " |
5667 | 643 << std::setiosflags (std::ios::left) << std::setw (50) |
644 << list[$i].keyword | |
645 << std::resetiosflags (std::ios::left) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
646 << " ";\n\n|; |
3998 | 647 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
648 if ($TYPE[$i] eq "double") |
3998 | 649 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
650 print qq| double val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
651 print qq| os << val << "\\n";\n|; |
3998 | 652 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
653 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
654 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
655 print qq| float val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
656 print qq| os << val << "\\n";\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
657 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
658 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 659 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
660 print qq| int val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
661 print qq| os << val << "\\n";\n|; |
3998 | 662 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
663 elsif ($TYPE[$i] eq "std::string") |
3998 | 664 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
665 print qq| os << $STATIC_OBJECT_NAME.$OPT[$i] () << "\\n";\n|; |
3998 | 666 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
667 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 668 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
669 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
670 if ($TYPE[$i] eq "Array<int>") |
5275 | 671 { |
672 $elt_type = "int"; | |
673 } | |
674 else | |
675 { | |
676 $elt_type = "octave_idx_type"; | |
677 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
678 print qq| Array<$elt_type> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
679 print qq| if (val.numel () == 1) |
4044 | 680 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
681 os << val(0) << "\\n"; |
4044 | 682 } |
683 else | |
684 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
685 os << "\\n\\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
686 octave_idx_type len = val.numel (); |
12174 | 687 Matrix tmp (len, 1); |
688 for (octave_idx_type i = 0; i < len; i++) | |
689 tmp(i,0) = val(i); | |
6755 | 690 octave_print_internal (os, tmp, false, 2); |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
691 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
692 }\n|; |
4044 | 693 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
694 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 695 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
696 print qq| Array<double> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
697 print qq| if (val.numel () == 1) |
3998 | 698 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
699 os << val(0) << "\\n"; |
3998 | 700 } |
701 else | |
702 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
703 os << "\\n\\n"; |
3998 | 704 Matrix tmp = Matrix (ColumnVector (val)); |
6755 | 705 octave_print_internal (os, tmp, false, 2); |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
706 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
707 }\n|; |
3998 | 708 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
709 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
710 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
711 print qq| Array<float> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
712 print qq| if (val.numel () == 1) |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
713 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
714 os << val(0) << "\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
715 } |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
716 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
717 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
718 os << "\\n\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
719 FloatMatrix tmp = FloatMatrix (FloatColumnVector (val)); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
720 octave_print_internal (os, tmp, false, 2); |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
721 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
722 }\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
723 } |
3998 | 724 else |
725 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
726 die ("unknown type $TYPE[$i]"); |
3998 | 727 } |
728 | |
729 print " }\n\n"; | |
730 } | |
731 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
732 print qq| os << "\\n";\n}\n\n|; |
3998 | 733 } |
734 | |
735 sub emit_set_functions | |
736 { | |
737 print "static void | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
738 set_$CLASS_NAME (const std::string& keyword, const octave_value& val) |
3998 | 739 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
740 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
3998 | 741 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
742 my $iftok = "if"; |
3998 | 743 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
744 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 745 { |
746 $iftok = "else if" if ($i > 0); | |
747 | |
748 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
749 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
750 {\n"; | |
751 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
752 if ($TYPE[$i] eq "double") |
3998 | 753 { |
754 print " double tmp = val.double_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
755 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 756 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
757 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
758 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
759 print " float tmp = val.float_value ();\n\n"; |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
760 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
761 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
762 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 763 { |
764 print " int tmp = val.int_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
765 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 766 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
767 elsif ($TYPE[$i] eq "std::string") |
3998 | 768 { |
769 print " std::string tmp = val.string_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
770 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 771 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
772 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 773 { |
774 print " Array<int> tmp = val.int_vector_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
775 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
4044 | 776 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
777 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 778 { |
779 print " Array<double> tmp = val.vector_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
780 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 781 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
782 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
783 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
784 print " Array<float> tmp = val.float_vector_value ();\n\n"; |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
785 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
786 } |
3998 | 787 else |
788 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
789 die ("unknown type $TYPE[$i]"); |
3998 | 790 } |
791 | |
792 print " }\n"; | |
793 } | |
794 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
795 print qq| else |
3998 | 796 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
797 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 798 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
799 }\n\n|; |
3998 | 800 } |
801 | |
802 sub emit_show_function | |
803 { | |
804 print "static octave_value_list | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
805 show_$CLASS_NAME (const std::string& keyword) |
3998 | 806 { |
807 octave_value retval; | |
808 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
809 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
3998 | 810 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
811 my $iftok = "if"; |
3998 | 812 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
813 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 814 { |
815 $iftok = "else if" if ($i > 0); | |
816 | |
817 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
818 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
819 {\n"; | |
820 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
821 if ($TYPE[$i] eq "double") |
3998 | 822 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
823 print " double val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 824 print " retval = val;\n"; |
825 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
826 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
827 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
828 print " float val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
829 print " retval = val;\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
830 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
831 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 832 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
833 print " int val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 834 print " retval = static_cast<double> (val);\n"; |
835 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
836 elsif ($TYPE[$i] eq "std::string") |
3998 | 837 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
838 print " retval = $STATIC_OBJECT_NAME.$OPT[$i] ();\n"; |
3998 | 839 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
840 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 841 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
842 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
843 if ($TYPE[$i] eq "Array<int>") |
5275 | 844 { |
845 $elt_type = "int"; | |
846 } | |
847 else | |
848 { | |
849 $elt_type = "octave_idx_type"; | |
850 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
851 print " Array<$elt_type> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
852 print " if (val.numel () == 1) |
4044 | 853 { |
854 retval = static_cast<double> (val(0)); | |
855 } | |
856 else | |
857 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
858 octave_idx_type len = val.numel (); |
12174 | 859 ColumnVector tmp (len); |
860 for (octave_idx_type i = 0; i < len; i++) | |
861 tmp(i) = val(i); | |
4044 | 862 retval = tmp; |
863 }\n"; | |
864 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
865 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 866 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
867 print " Array<double> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
868 print " if (val.numel () == 1) |
3998 | 869 { |
870 retval = val(0); | |
871 } | |
872 else | |
873 { | |
874 retval = ColumnVector (val); | |
875 }\n"; | |
876 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
877 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
878 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
879 print " Array<float> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
880 print " if (val.numel () == 1) |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
881 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
882 retval = val(0); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
883 } |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
884 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
885 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
886 retval = FloatColumnVector (val); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
887 }\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
888 } |
3998 | 889 else |
890 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
891 die ("unknown type $TYPE[$i]"); |
3998 | 892 } |
893 | |
894 print " }\n"; | |
895 } | |
896 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
897 print qq| else |
3998 | 898 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
899 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 900 } |
901 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
902 return retval;\n}\n\n|; |
3998 | 903 } |
904 | |
905 sub emit_options_function | |
906 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
907 print <<"_END_EMIT_OPTIONS_FUNCTION_HDR_"; |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
908 DEFUN ($OPT_FCN_NAME, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
909 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
910 \@deftypefn {} {} $OPT_FCN_NAME () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
911 \@deftypefnx {} {val =} $OPT_FCN_NAME (\@var{opt}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
912 \@deftypefnx {} {} $OPT_FCN_NAME (\@var{opt}, \@var{val}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
913 $DOC_STRING |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
914 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
915 Options include |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
916 |
22720
766b0163b3b7
doc: Don't create @tables of type @code with @qcode entries.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
917 \@table \@asis |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
918 _END_EMIT_OPTIONS_FUNCTION_HDR_ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
919 # FIXME: Add extra newline above |
4050 | 920 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
921 for (my $i = 0; $i < $OPT_NUM; $i++) |
4050 | 922 { |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
923 print '@item @qcode{"', $NAME[$i], '"}', "\n"; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
924 print $DOC_ITEM[$i] if $DOC_ITEM[$i]; |
4050 | 925 } |
926 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
927 print <<"_END_EMIT_OPTIONS_FUNCTION_BODY_"; |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
928 \@end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
929 \@end deftypefn */) |
3998 | 930 { |
931 octave_value_list retval; | |
932 | |
933 int nargin = args.length (); | |
934 | |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
935 if (nargin > 2) |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
936 print_usage (); |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
937 |
3998 | 938 if (nargin == 0) |
939 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
940 print_$CLASS_NAME (octave_stdout); |
3998 | 941 } |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
942 else |
3998 | 943 { |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
944 std::string keyword = args(0).xstring_value ("$OPT_FCN_NAME: expecting keyword as first argument"); |
3998 | 945 |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
946 if (nargin == 1) |
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
947 retval = show_$CLASS_NAME (keyword); |
3998 | 948 else |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
949 set_$CLASS_NAME (keyword, args(1)); |
3998 | 950 } |
951 | |
952 return retval; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
953 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
954 _END_EMIT_OPTIONS_FUNCTION_BODY_ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
955 |
3998 | 956 } |
957 | |
958 sub emit_options_debug | |
959 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
960 print qq|CLASS = "$CLASS"\n|; |
3998 | 961 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
962 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 963 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
964 print "\nOPTION\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
965 print qq| NAME = "$NAME[$i]"\n|; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
966 print qq| TYPE = "$TYPE[$i]"\n|; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
967 if ($SET_ARG_TYPE[$i]) |
3998 | 968 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
969 print eval ("\" SET_ARG_TYPE = \\\"$SET_ARG_TYPE[$i]\\\"\"") . "\n"; |
3998 | 970 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
971 if ($INIT_VALUE[$i]) |
3998 | 972 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
973 print qq| INIT_VALUE = "$INIT_VALUE[$i]"\n|; |
3998 | 974 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
975 if ($INIT_BODY[$i]) |
3998 | 976 { |
977 print " INIT_BODY\n"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
978 print &substopt ($INIT_BODY[$i]); |
3998 | 979 print " END_INIT_BODY\n"; |
980 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
981 if ($SET_EXPR[$i]) |
3998 | 982 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
983 print qq| SET_EXPR = "$SET_EXPR[$i]"\n|; |
3998 | 984 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
985 if ($SET_BODY[$i]) |
3998 | 986 { |
987 print " SET_BODY\n"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
988 print &substopt ($SET_BODY[$i]); |
3998 | 989 print " END_SET_BODY\n"; |
990 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
991 if ($SET_CODE[$i]) |
3998 | 992 { |
993 print " SET_CODE\n"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
994 print &substopt ($SET_CODE[$i]); |
3998 | 995 print " END_SET_CODE\n"; |
996 } | |
997 print "END_OPTION\n"; | |
998 } | |
999 } | |
1000 | |
1001 sub substopt | |
1002 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1003 my ($string, $optvar, $opt, $type) = @_; |
3998 | 1004 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1005 $string =~ s/\$OPTVAR/$optvar/g; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1006 $string =~ s/\$OPT/$opt/g; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1007 $string =~ s/\$TYPE/$type/g; |
3998 | 1008 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1009 return $string; |
3998 | 1010 } |
1011 | |
1012 sub max | |
1013 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1014 my $max = shift; |
3998 | 1015 |
1016 foreach (@_) | |
1017 { | |
1018 $max = $_ if $max < $_; | |
1019 } | |
1020 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1021 return $max; |
3998 | 1022 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1023 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1024 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1025 # Subroutine processes any command line arguments |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1026 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1027 sub parse_options |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1028 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1029 my $result; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1030 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1031 $opt_help = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1032 $opt_class_header = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1033 $opt_handler_fcns = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1034 $opt_debug = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1035 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1036 $result = GetOptions ("opt-class-header" => \$opt_class_header, |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1037 "opt-handler-fcns" => \$opt_handler_fcns, |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1038 "debug" => \$opt_debug, |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1039 "help" => \$opt_help); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1040 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1041 # give user info if options incorrect or -h(elp) given |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1042 &usage_info if (!$result or (@ARGV != 1) or $opt_help); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1043 if ($opt_class_header and $opt_handler_fcns) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1044 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1045 die "Only one of [-opt-class-header | -opt-handler-fcns ] may be specified"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1046 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1047 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1048 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1049 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1050 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1051 # Subroutine displays usage information |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1052 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1053 sub usage_info |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1054 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1055 warn <<_END_OF_USAGE_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1056 ////////////////////////////////////////////////////////////////////////////// |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1057 USAGE : mk-opts.pl -opt-class-header|-opt-handler-fcns [-debug] [-help] DEFN_FILE |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1058 ////////////////////////////////////////////////////////////////////////////// |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1059 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1060 Automatically generate C++ code for option handling code (DASSL, DASRT, etc.) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1061 from definition file. |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1062 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1063 See the head of mk-opts.pl for a description of the format that is parsed. |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1064 _END_OF_USAGE_ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1065 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1066 exit(1); # exit with error code |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1067 } |