Mercurial > hg > octave-lyh
annotate mk-opts.pl @ 12504:d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Tue, 08 Mar 2011 12:11:57 -0800 |
parents | db1f49eaba6b |
children | 16cca721117b |
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 # |
11523 | 3 # Copyright (C) 2002-2011 John W. Eaton |
7019 | 4 # |
5 # This file is part of Octave. | |
12174 | 6 # |
7019 | 7 # Octave is free software; you can redistribute it and/or modify it |
8 # under the terms of the GNU General Public License as published by the | |
9 # Free Software Foundation; either version 3 of the License, or (at | |
10 # your option) any later version. | |
12174 | 11 # |
7019 | 12 # Octave is distributed in the hope that it will be useful, but WITHOUT |
13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 # 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 | |
19 # <http://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 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
113 $INCLUDE .= "#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 } |
129 } | |
130 | |
131 sub parse_option_block | |
132 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
133 while (<DEFN_FILE>) |
3998 | 134 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
135 next if /$BLANK_LINE/; |
3998 | 136 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
137 die "missing END_OPTION" if /^\s*OPTION\s*$/; |
3998 | 138 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
139 last if /^\s*END_OPTION\s*$/; |
3998 | 140 |
141 if (/^\s*NAME\s*=\s*"(.*)"\s*$/) | |
142 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
143 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
|
144 $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
|
145 ($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
|
146 $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
|
147 $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
|
148 $N_TOKS[$OPT_NUM] = @{$KW_TOK[$OPT_NUM]}; |
3998 | 149 } |
4050 | 150 elsif (/^\s*DOC_ITEM\s*$/) |
151 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
152 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
|
153 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
|
154 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
155 $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
|
156 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
157 $DOC_ITEM[$OPT_NUM] =~ s/\n/\\n\\\n/g; |
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 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
233 $DOC_STRING = "When called with two arguments, this function\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
234 allows you set options parameters for the function \@code{$FCN_NAME}.\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
235 Given one argument, \@code{$OPT_FCN_NAME} returns the value of the\\n\\ |
3998 | 236 corresponding option. If no arguments are supplied, the names of all\\n\\ |
237 the available options and their current values are displayed.\\n\\\n"; | |
238 } | |
239 } | |
240 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
241 #FIXME: What does this routine do? And can it be simpler to understand? |
3998 | 242 sub get_min_match_len_info |
243 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
244 my ($i, $j, $k); |
3998 | 245 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
246 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 247 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
248 for ($j = 0; $j < $MAX_TOKENS; $j++) |
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 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 0; |
3998 | 251 } |
252 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
253 $MIN_TOKS_TO_MATCH[$i] = 1; |
3998 | 254 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
255 L1: for ($k = 0; $k < $OPT_NUM; $k++) |
3998 | 256 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
257 my $duplicate = 1; |
3998 | 258 |
259 if ($i != $k) | |
260 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
261 L2: for ($j = 0; $j < $MAX_TOKENS; $j++) |
3998 | 262 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
263 if ($j < $N_TOKS[$i]) |
3998 | 264 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
265 if ($KW_TOK[$i][$j] eq $KW_TOK[$k][$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 ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
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 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
3998 | 270 } |
271 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
272 $MIN_TOKS_TO_MATCH[$i]++; |
3998 | 273 } |
274 else | |
275 { | |
12174 | 276 $duplicate = 0; |
3998 | 277 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
278 if ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
12174 | 279 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
280 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
12174 | 281 } |
3998 | 282 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
283 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
|
284 my @t = split (//, $KW_TOK[$k][$j]); |
3998 | 285 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
286 my ($n, $ii); |
3998 | 287 $n = scalar (@s); |
288 $n = scalar (@t) if (@t < $n); | |
289 | |
290 for ($ii = 0; $ii < $n; $ii++) | |
291 { | |
292 if ("$s[$ii]" eq "$t[$ii]") | |
293 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
294 if ($ii + 2 > $MIN_TOK_LEN_TO_MATCH[$i][$j]) |
12174 | 295 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
296 $MIN_TOK_LEN_TO_MATCH[$i][$j]++; |
12174 | 297 } |
3998 | 298 } |
299 else | |
300 { | |
301 last L2; | |
302 } | |
303 } | |
304 | |
305 last L1; | |
306 } | |
307 } | |
12174 | 308 else |
309 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
310 die qq|ambiguous options "$NAME[$i]" and "$NAME[$k]"| if $duplicate; |
12174 | 311 } |
3998 | 312 } |
313 } | |
314 } | |
315 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
316 } # end of get_min_match_len_info |
4050 | 317 |
3998 | 318 |
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
|
319 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
|
320 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
321 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
|
322 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
323 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
|
324 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
325 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
|
326 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
327 |
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 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
|
329 } |
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 ## 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
|
332 ## 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
|
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 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
|
335 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
336 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
|
337 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
338 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
|
339 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
340 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
|
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 "${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
|
343 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
344 |
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 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
|
346 } |
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 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
|
349 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
350 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
|
351 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
352 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
|
353 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
354 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
|
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 "${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
|
357 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
358 |
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 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
|
360 } |
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 |
3998 | 362 sub emit_opt_class_header |
363 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
364 my ($i, $s); |
3998 | 365 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
366 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
|
367 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
368 // Generated automatically from $DEFN_FILE. |
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 #if !defined (octave_${CLASS_NAME}_h) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
371 #define octave_${CLASS_NAME}_h 1 |
3998 | 372 |
373 #include <cfloat> | |
374 #include <cmath> | |
375 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
376 $INCLUDE |
4044 | 377 |
3998 | 378 class |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
379 $CLASS_NAME |
3998 | 380 { |
381 public: | |
382 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
383 $CLASS_NAME (void) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
384 _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
|
385 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
386 print ' : '; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
387 emit_default_init_list (" "); |
3998 | 388 |
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
|
389 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
|
390 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
|
391 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
392 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
393 $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
|
394 : "; |
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 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
396 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
|
397 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
398 print " { } |
3998 | 399 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
400 ${CLASS_NAME}& operator = (const ${CLASS_NAME}& opt) |
3998 | 401 { |
402 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
|
403 {\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
|
404 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
405 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
|
406 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
407 print " } |
3998 | 408 |
409 return *this; | |
410 } | |
411 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
412 ~$CLASS_NAME (void) { }\n"; |
3998 | 413 |
414 print "\n void init (void)\n {\n"; | |
415 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
416 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 417 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
418 if ($INIT_VALUE[$i]) |
3998 | 419 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
420 print " $OPTVAR[$i] = $INIT_VALUE[$i];\n"; |
3998 | 421 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
422 elsif ($INIT_BODY[$i]) |
3998 | 423 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
424 $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
|
425 chomp ($s); |
3998 | 426 $s =~ s/^\s*/ /g; |
427 $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
|
428 print $s,"\n"; |
3998 | 429 } |
430 } | |
431 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
432 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
|
433 " }\n"; |
3998 | 434 |
4122 | 435 ## For backward compatibility and because set_options is probably |
436 ## a better name in some contexts: | |
437 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
438 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
|
439 " {\n"; |
4122 | 440 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
441 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
|
442 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
443 print " }\n\n void set_default_options (void) { init (); }\n"; |
3998 | 444 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
445 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 446 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
447 if ($SET_EXPR[$i]) |
3998 | 448 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
449 emit_set_decl ($i); |
3998 | 450 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
451 print "\n { $OPTVAR[$i] = $SET_EXPR[$i]; reset = true; }\n"; |
3998 | 452 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
453 elsif ($SET_BODY[$i]) |
3998 | 454 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
455 emit_set_decl ($i); |
3998 | 456 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
457 $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
|
458 chomp ($s); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
459 $s = ' ' . $s; |
3998 | 460 $s =~ s/\n/\n /g; |
4049 | 461 print "\n {\n$s\n reset = true;\n }\n"; |
3998 | 462 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
463 elsif ($SET_CODE[$i]) |
3998 | 464 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
465 $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
|
466 chomp ($s); |
3998 | 467 $s =~ s/^ //g; |
468 $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
|
469 print "\n",$s,"\n"; |
3998 | 470 } |
471 } | |
472 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
473 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 474 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
475 print " $TYPE[$i] $OPT[$i] (void) const\n { return $OPTVAR[$i]; }\n\n"; |
3998 | 476 } |
477 | |
478 print "private:\n\n"; | |
479 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
480 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 481 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
482 print " $TYPE[$i] $OPTVAR[$i];\n"; |
3998 | 483 } |
484 | |
4049 | 485 print "\nprotected:\n\n bool reset;\n};\n\n#endif\n"; |
3998 | 486 } |
487 | |
488 sub emit_set_decl | |
489 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
490 my ($i) = @_; |
3998 | 491 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
492 print "\n void set_$OPT[$i] ($SET_ARG_TYPE[$i] val)"; |
3998 | 493 } |
494 | |
495 sub emit_opt_handler_fcns | |
496 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
497 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
|
498 $header =~ s/[.]\w*$/.h/; # replace .in with .h |
4044 | 499 $header =~ s|^.*/([^/]*)$|$1|; # strip directory part |
3998 | 500 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
501 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
|
502 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
503 // Generated automatically from $DEFN_FILE. |
3998 | 504 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
505 #ifdef HAVE_CONFIG_H |
3998 | 506 #include <config.h> |
507 #endif | |
508 | |
509 #include <iomanip> | |
510 #include <iostream> | |
511 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
512 #include "$header" |
4044 | 513 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
514 #include "defun-dld.h" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
515 #include "pr-output.h" |
3998 | 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 "oct-obj.h" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
518 #include "utils.h" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
519 #include "pager.h" |
4044 | 520 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
521 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
|
522 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
523 _END_EMIT_OPT_HANDLER_FCNS_ |
3998 | 524 |
525 &emit_struct_decl; | |
526 | |
527 &emit_struct_def; | |
528 | |
529 &emit_print_function; | |
530 | |
531 &emit_set_functions; | |
532 | |
533 &emit_show_function; | |
534 | |
535 &emit_options_function; | |
536 } | |
537 | |
538 sub emit_struct_decl | |
539 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
540 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
|
541 #define MAX_TOKENS $MAX_TOKENS |
3998 | 542 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
543 struct $STRUCT_NAME |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
544 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
545 const char *keyword; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
546 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
|
547 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
|
548 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
|
549 }; |
3998 | 550 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
551 _END_PRINT_STRUCT_DECL_ |
3998 | 552 } |
553 | |
554 sub emit_struct_def | |
555 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
556 my $i; |
3998 | 557 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
558 print "#define NUM_OPTIONS $OPT_NUM\n\n"; |
3998 | 559 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
560 print "static $STRUCT_NAME $STATIC_TABLE_NAME [] =\n{\n"; |
3998 | 561 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
562 for ($i = 0; $i < ($OPT_NUM - 1); $i++) |
3998 | 563 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
564 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
|
565 print "\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 emit_option_table_entry ($i, 0); |
3998 | 568 |
569 print "};\n\n"; | |
570 } | |
571 | |
572 sub emit_option_table_entry | |
573 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
574 my ($i, $empty) = @_; |
3998 | 575 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
576 my $k; |
3998 | 577 |
578 if ($empty) | |
579 { | |
580 print " { 0,\n"; | |
581 } | |
582 else | |
583 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
584 print " { \"$NAME[$i]\",\n"; |
3998 | 585 } |
586 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
587 my $n = scalar $#{$KW_TOK[$i]}; |
3998 | 588 print " {"; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
589 for $k (0 .. $MAX_TOKENS) |
3998 | 590 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
591 if ($empty or $k > $n) |
3998 | 592 { |
593 print " 0,"; | |
594 } | |
595 else | |
596 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
597 print " \"$KW_TOK[$i][$k]\","; |
3998 | 598 } |
599 } | |
600 print " },\n"; | |
601 | |
602 print " {"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
603 for $k (0 .. $MAX_TOKENS) |
3998 | 604 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
605 if ($empty or $k > $n) |
3998 | 606 { |
607 print " 0,"; | |
608 } | |
609 else | |
610 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
611 print " $MIN_TOK_LEN_TO_MATCH[$i][$k],"; |
3998 | 612 } |
613 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
614 print " }, $MIN_TOKS_TO_MATCH[$i], "; |
3998 | 615 |
616 print "},\n"; | |
617 } | |
618 | |
619 sub emit_print_function | |
620 { | |
5775 | 621 ## FIXME -- determine the width of the table automatically. |
4047 | 622 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
623 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
|
624 print_$CLASS_NAME (std::ostream& os) |
3998 | 625 { |
5765 | 626 std::ostringstream buf; |
3998 | 627 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
628 os << "\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
629 << "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
|
630 << " keyword value\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
631 << " ------- -----\\n"; |
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 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n|; |
3998 | 634 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
635 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 636 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
637 print qq| {\n os << " " |
5667 | 638 << std::setiosflags (std::ios::left) << std::setw (50) |
639 << list[$i].keyword | |
640 << 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
|
641 << " ";\n\n|; |
3998 | 642 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
643 if ($TYPE[$i] eq "double") |
3998 | 644 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
645 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
|
646 print qq| os << val << "\\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 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
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| 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
|
651 print qq| os << val << "\\n";\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
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 "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 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| 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
|
656 print qq| os << val << "\\n";\n|; |
3998 | 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 "std::string") |
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| os << $STATIC_OBJECT_NAME.$OPT[$i] () << "\\n";\n|; |
3998 | 661 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
662 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 663 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
664 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
665 if ($TYPE[$i] eq "Array<int>") |
5275 | 666 { |
667 $elt_type = "int"; | |
668 } | |
669 else | |
670 { | |
671 $elt_type = "octave_idx_type"; | |
672 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
673 print qq| Array<$elt_type> 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
|
674 print qq| if (val.length () == 1) |
4044 | 675 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
676 os << val(0) << "\\n"; |
4044 | 677 } |
678 else | |
679 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
680 os << "\\n\\n"; |
12174 | 681 octave_idx_type len = val.length (); |
682 Matrix tmp (len, 1); | |
683 for (octave_idx_type i = 0; i < len; i++) | |
684 tmp(i,0) = val(i); | |
6755 | 685 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
|
686 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
687 }\n|; |
4044 | 688 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
689 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 690 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
691 print qq| Array<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
|
692 print qq| if (val.length () == 1) |
3998 | 693 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
694 os << val(0) << "\\n"; |
3998 | 695 } |
696 else | |
697 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
698 os << "\\n\\n"; |
3998 | 699 Matrix tmp = Matrix (ColumnVector (val)); |
6755 | 700 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
|
701 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
702 }\n|; |
3998 | 703 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
704 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
705 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
706 print qq| Array<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
|
707 print qq| if (val.length () == 1) |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
708 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
709 os << val(0) << "\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
710 } |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
711 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
712 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
713 os << "\\n\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
714 FloatMatrix tmp = FloatMatrix (FloatColumnVector (val)); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
715 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
|
716 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
717 }\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
718 } |
3998 | 719 else |
720 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
721 die ("unknown type $TYPE[$i]"); |
3998 | 722 } |
723 | |
724 print " }\n\n"; | |
725 } | |
726 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
727 print qq| os << "\\n";\n}\n\n|; |
3998 | 728 } |
729 | |
730 sub emit_set_functions | |
731 { | |
732 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
|
733 set_$CLASS_NAME (const std::string& keyword, const octave_value& val) |
3998 | 734 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
735 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
3998 | 736 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
737 my $iftok = "if"; |
3998 | 738 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
739 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 740 { |
741 $iftok = "else if" if ($i > 0); | |
742 | |
743 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
744 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
745 {\n"; | |
746 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
747 if ($TYPE[$i] eq "double") |
3998 | 748 { |
749 print " double tmp = val.double_value ();\n\n"; | |
750 print " if (! error_state) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
751 $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 752 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
753 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
754 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
755 print " float tmp = val.float_value ();\n\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
756 print " if (! error_state) |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
757 $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
|
758 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
759 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 760 { |
761 print " int tmp = val.int_value ();\n\n"; | |
762 print " if (! error_state) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
763 $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 764 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
765 elsif ($TYPE[$i] eq "std::string") |
3998 | 766 { |
767 print " std::string tmp = val.string_value ();\n\n"; | |
768 print " if (! error_state) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
769 $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 770 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
771 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 772 { |
773 print " Array<int> tmp = val.int_vector_value ();\n\n"; | |
774 print " if (! error_state) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
775 $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"; | |
780 print " if (! error_state) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
781 $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 782 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
783 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
784 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
785 print " Array<float> tmp = val.float_vector_value ();\n\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
786 print " if (! error_state) |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
787 $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
|
788 } |
3998 | 789 else |
790 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
791 die ("unknown type $TYPE[$i]"); |
3998 | 792 } |
793 | |
794 print " }\n"; | |
795 } | |
796 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
797 print qq| else |
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 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 800 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
801 }\n\n|; |
3998 | 802 } |
803 | |
804 sub emit_show_function | |
805 { | |
806 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
|
807 show_$CLASS_NAME (const std::string& keyword) |
3998 | 808 { |
809 octave_value retval; | |
810 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
811 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
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 my $iftok = "if"; |
3998 | 814 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
815 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 816 { |
817 $iftok = "else if" if ($i > 0); | |
818 | |
819 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
820 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
821 {\n"; | |
822 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
823 if ($TYPE[$i] eq "double") |
3998 | 824 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
825 print " double val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 826 print " retval = val;\n"; |
827 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
828 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
829 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
830 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
|
831 print " retval = val;\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
832 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
833 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 834 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
835 print " int val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 836 print " retval = static_cast<double> (val);\n"; |
837 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
838 elsif ($TYPE[$i] eq "std::string") |
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 print " retval = $STATIC_OBJECT_NAME.$OPT[$i] ();\n"; |
3998 | 841 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
842 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 843 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
844 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
845 if ($TYPE[$i] eq "Array<int>") |
5275 | 846 { |
847 $elt_type = "int"; | |
848 } | |
849 else | |
850 { | |
851 $elt_type = "octave_idx_type"; | |
852 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
853 print " Array<$elt_type> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
4044 | 854 print " if (val.length () == 1) |
855 { | |
856 retval = static_cast<double> (val(0)); | |
857 } | |
858 else | |
859 { | |
12174 | 860 octave_idx_type len = val.length (); |
861 ColumnVector tmp (len); | |
862 for (octave_idx_type i = 0; i < len; i++) | |
863 tmp(i) = val(i); | |
4044 | 864 retval = tmp; |
865 }\n"; | |
866 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
867 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 868 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
869 print " Array<double> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 870 print " if (val.length () == 1) |
871 { | |
872 retval = val(0); | |
873 } | |
874 else | |
875 { | |
876 retval = ColumnVector (val); | |
877 }\n"; | |
878 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
879 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
880 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
881 print " Array<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
|
882 print " if (val.length () == 1) |
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 retval = val(0); |
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 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
887 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
888 retval = FloatColumnVector (val); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
889 }\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
890 } |
3998 | 891 else |
892 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
893 die ("unknown type $TYPE[$i]"); |
3998 | 894 } |
895 | |
896 print " }\n"; | |
897 } | |
898 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
899 print qq| else |
3998 | 900 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
901 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 902 } |
903 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
904 return retval;\n}\n\n|; |
3998 | 905 } |
906 | |
907 sub emit_options_function | |
908 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
909 print <<"_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
|
910 DEFUN_DLD ($OPT_FCN_NAME, args, , |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
911 "-*- texinfo -*-\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
912 \@deftypefn {Loadable Function} {} $OPT_FCN_NAME (\@var{opt}, \@var{val})\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
913 $DOC_STRING\\n\\ |
4050 | 914 Options include\\n\\ |
915 \\n\\ | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
916 \@table \@code\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
917 _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
|
918 # FIXME: Add extra newline above |
4050 | 919 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
920 for (my $i = 0; $i < $OPT_NUM; $i++) |
4050 | 921 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
922 print '@item \"', $NAME[$i], '\"\n\\', "\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
923 print $DOC_ITEM[$i] if $DOC_ITEM[$i]; |
4050 | 924 } |
925 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
926 print <<"_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
|
927 \@end table\\n\\ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
928 \@end deftypefn") |
3998 | 929 { |
930 octave_value_list retval; | |
931 | |
932 int nargin = args.length (); | |
933 | |
934 if (nargin == 0) | |
935 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
936 print_$CLASS_NAME (octave_stdout); |
3998 | 937 } |
938 else if (nargin == 1 || nargin == 2) | |
939 { | |
940 std::string keyword = args(0).string_value (); | |
941 | |
942 if (! error_state) | |
943 { | |
944 if (nargin == 1) | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
945 retval = show_$CLASS_NAME (keyword); |
3998 | 946 else |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
947 set_$CLASS_NAME (keyword, args(1)); |
3998 | 948 } |
949 else | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
950 error ("$OPT_FCN_NAME: expecting keyword as first argument"); |
3998 | 951 } |
952 else | |
5823 | 953 print_usage (); |
3998 | 954 |
955 return retval; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
956 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
957 _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
|
958 |
3998 | 959 } |
960 | |
961 sub emit_options_debug | |
962 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
963 print qq|CLASS = "$CLASS"\n|; |
3998 | 964 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
965 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 966 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
967 print "\nOPTION\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
968 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
|
969 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
|
970 if ($SET_ARG_TYPE[$i]) |
3998 | 971 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
972 print eval ("\" SET_ARG_TYPE = \\\"$SET_ARG_TYPE[$i]\\\"\"") . "\n"; |
3998 | 973 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
974 if ($INIT_VALUE[$i]) |
3998 | 975 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
976 print qq| INIT_VALUE = "$INIT_VALUE[$i]"\n|; |
3998 | 977 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
978 if ($INIT_BODY[$i]) |
3998 | 979 { |
980 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
|
981 print &substopt ($INIT_BODY[$i]); |
3998 | 982 print " END_INIT_BODY\n"; |
983 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
984 if ($SET_EXPR[$i]) |
3998 | 985 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
986 print qq| SET_EXPR = "$SET_EXPR[$i]"\n|; |
3998 | 987 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
988 if ($SET_BODY[$i]) |
3998 | 989 { |
990 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
|
991 print &substopt ($SET_BODY[$i]); |
3998 | 992 print " END_SET_BODY\n"; |
993 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
994 if ($SET_CODE[$i]) |
3998 | 995 { |
996 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
|
997 print &substopt ($SET_CODE[$i]); |
3998 | 998 print " END_SET_CODE\n"; |
999 } | |
1000 print "END_OPTION\n"; | |
1001 } | |
1002 } | |
1003 | |
1004 sub substopt | |
1005 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1006 my ($string, $optvar, $opt, $type) = @_; |
3998 | 1007 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1008 $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
|
1009 $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
|
1010 $string =~ s/\$TYPE/$type/g; |
3998 | 1011 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1012 return $string; |
3998 | 1013 } |
1014 | |
1015 sub max | |
1016 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1017 my $max = shift; |
3998 | 1018 |
1019 foreach (@_) | |
1020 { | |
1021 $max = $_ if $max < $_; | |
1022 } | |
1023 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1024 return $max; |
3998 | 1025 } |
12504
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 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1028 # 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
|
1029 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1030 sub parse_options |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1031 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1032 my $result; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1033 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1034 $opt_help = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1035 $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
|
1036 $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
|
1037 $opt_debug = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1038 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1039 $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
|
1040 "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
|
1041 "debug" => \$opt_debug, |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1042 "help" => \$opt_help); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1043 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1044 # 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
|
1045 &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
|
1046 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
|
1047 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1048 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
|
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 } |
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 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1054 # 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
|
1055 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1056 sub usage_info |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1057 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1058 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
|
1059 ////////////////////////////////////////////////////////////////////////////// |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1060 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
|
1061 ////////////////////////////////////////////////////////////////////////////// |
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 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
|
1064 from definition file. |
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 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
|
1067 _END_OF_USAGE_ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1068 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1069 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
|
1070 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1071 |