Mercurial > octave
annotate build-aux/mk-opts.pl @ 21966:112b20240c87
move docstrings in C++ files out of C strings and into comments
* __contourc__.cc, __dispatch__.cc, __dsearchn__.cc, __ichol__.cc,
__ilu__.cc, __lin_interpn__.cc, __luinc__.cc, __magick_read__.cc,
__pchip_deriv__.cc, __qp__.cc, balance.cc, besselj.cc, betainc.cc,
bitfcns.cc, bsxfun.cc, cellfun.cc, colloc.cc, conv2.cc, daspk.cc,
dasrt.cc, dassl.cc, data.cc, debug.cc, defaults.cc, det.cc, dirfns.cc,
dlmread.cc, dot.cc, eig.cc, ellipj.cc, error.cc, fft.cc, fft2.cc,
fftn.cc, file-io.cc, filter.cc, find.cc, gammainc.cc, gcd.cc,
getgrent.cc, getpwent.cc, getrusage.cc, givens.cc, graphics.cc,
hash.cc, help.cc, hess.cc, hex2num.cc, input.cc, inv.cc, kron.cc,
load-path.cc, load-save.cc, lookup.cc, ls-oct-text.cc, lsode.cc,
lu.cc, mappers.cc, matrix_type.cc, max.cc, mgorth.cc, nproc.cc,
oct-hist.cc, octave-link.cc, ordschur.cc, pager.cc, pinv.cc,
pr-output.cc, profiler.cc, psi.cc, pt-jit.cc, quad.cc, quadcc.cc,
qz.cc, rand.cc, rcond.cc, regexp.cc, schur.cc, sighandlers.cc,
sparse.cc, spparms.cc, sqrtm.cc, str2double.cc, strfind.cc, strfns.cc,
sub2ind.cc, svd.cc, sylvester.cc, symtab.cc, syscalls.cc, sysdep.cc,
time.cc, toplev.cc, tril.cc, tsearch.cc, typecast.cc, urlwrite.cc,
utils.cc, variables.cc, __delaunayn__.cc, __eigs__.cc,
__fltk_uigetfile__.cc, __glpk__.cc, __init_fltk__.cc,
__init_gnuplot__.cc, __osmesa_print__.cc, __voronoi__.cc, amd.cc,
audiodevinfo.cc, audioread.cc, ccolamd.cc, chol.cc, colamd.cc,
convhulln.cc, dmperm.cc, fftw.cc, qr.cc, symbfact.cc, symrcm.cc,
ov-base.cc, ov-bool-mat.cc, ov-cell.cc, ov-class.cc, ov-classdef.cc,
ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc, ov-int16.cc,
ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-java.cc, ov-null-mat.cc,
ov-oncleanup.cc, ov-range.cc, ov-re-mat.cc, ov-struct.cc,
ov-typeinfo.cc, ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc,
ov-usr-fcn.cc, ov.cc, octave.cc, pt-arg-list.cc, pt-binop.cc,
pt-eval.cc, pt-mat.cc, lex.ll, oct-parse.in.yy:
Docstrings are now comments instead of C strings.
* build-aux/mk-opts.pl: Emit docstrings as comments instead of C
strings.
* DASPK-opts.in, LSODE-opts.in: Don't quote " in docstring fragments.
* builtins.h: Include builtin-defun-decls.h unconditionally.
* defun.h (DEFUN, DEFUNX, DEFCONSTFUN): Simply emit declaration.
(DEFALIAS): Always expand to nothing.
* defun-dld.h: No special macro expansions for MAKE_BUILTINS.
(DEFUN_DLD): Use FORWARD_DECLARE_FUN.
(DEFUNX_DLD): Use FORWARD_DECLARE_FUNX.
* defun-int.h: No special macro expansions for MAKE_BUILTINS.
(FORWARD_DECLARE_FUN, FORWARD_DECLARE_FUNX): New macros.
(DEFINE_FUN_INSTALLER_FUN): If compiling an Octave source file, pass
"external-doc" to DEFINE_FUNX_INSTALLER_FUN.
(DEFUN_INTERNAL, DEFCONSTFUN_INTERNAL, DEFUNX_INTERNAL,
DEFALIAS_INTERNAL): Delete.
* common.mk (move_if_change_rule): New macro.
(simple_move_if_change_rule): Define using move_if_change_rule.
* find-defun-files.sh (DEFUN_PATTERN): Update. Don't transform file
name extension to ".df".
* libinterp/mk-pkg-add, gendoc.pl: Operate directly on source files.
* mkbuiltins: New argument, SRCDIR. Operate directly on source files.
* mkdefs: Delete.
* libinterp/module.mk (BUILT_SOURCES): Update list to contain only
files included in other source files.
(GENERATED_MAKE_BUILTINS_INCS, DEF_FILES): Delete.
(LIBINTERP_BUILT_DISTFILES): Include $(OPT_HANDLERS) here.
(LIBINTERP_BUILT_NODISTFILES): Not here. Remove $(ALL_DEF_FILES from
the list.
(libinterp_EXTRA_DIST): Remove mkdefs from the list.
(FOUND_DEFUN_FILES): Rename from SRC_DEF_FILES.
(DLDFCN_DEFUN_FILES): Rename from DLDFCN_DEF_FILES.
(SRC_DEFUN_FILES): Rename from SRC_DEF_FILES.
(ALL_DEFUN_FILES): Rename from ALL_DEF_FILES.
(%.df: %.cc): Delete pattern rule.
(libinterp/build-env-features.cc, libinterp/builtins.cc,
libinterp/dldfcn/PKG_ADD): Use mv instead of move-if-change.
(libinterp/builtins.cc, libinterp/builtin-defun-decls.h):
Update mkbuiltins command.
($(srcdir)/libinterp/DOCSTRINGS): Update gendoc.pl command.
* liboctave/module.mk (BUILT_SOURCES): Don't include
liboctave-build-info.cc in the list.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 21 Jun 2016 16:07:51 -0400 |
parents | b6a686543080 |
children | bac0d6f07a3e |
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 # |
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
3 # Copyright (C) 2002-2015 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 } |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12504
diff
changeset
|
129 $INCLUDE = "" if not defined $INCLUDE; # Initialize value if required |
3998 | 130 } |
131 | |
132 sub parse_option_block | |
133 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
134 while (<DEFN_FILE>) |
3998 | 135 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
136 next if /$BLANK_LINE/; |
3998 | 137 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
138 die "missing END_OPTION" if /^\s*OPTION\s*$/; |
3998 | 139 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
140 last if /^\s*END_OPTION\s*$/; |
3998 | 141 |
142 if (/^\s*NAME\s*=\s*"(.*)"\s*$/) | |
143 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
144 die "duplicate NAME" if defined $NAME[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
145 $NAME[$OPT_NUM] = $1; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
146 ($OPT[$OPT_NUM] = $NAME[$OPT_NUM]) =~ s/\s+/_/g; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
147 $OPTVAR[$OPT_NUM] = 'x_' . $OPT[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
148 $KW_TOK[$OPT_NUM] = [ split (' ', $NAME[$OPT_NUM]) ]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
149 $N_TOKS[$OPT_NUM] = @{$KW_TOK[$OPT_NUM]}; |
3998 | 150 } |
4050 | 151 elsif (/^\s*DOC_ITEM\s*$/) |
152 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
153 die "duplicate DOC_ITEM" if defined $DOC_ITEM[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
154 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_DOC_ITEM\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
155 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
156 $DOC_ITEM[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
157 } |
4050 | 158 } |
3998 | 159 elsif (/^\s*TYPE\s*=\s*"(.*)"\s*$/) |
160 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
161 die "duplicate TYPE" if defined $TYPE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
162 $TYPE[$OPT_NUM] = $1; |
3998 | 163 } |
164 elsif (/^\s*SET_ARG_TYPE\s*=\s*"(.*)"\s*$/) | |
165 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
166 die "duplicate SET_ARG_TYPE" if defined $SET_ARG_TYPE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
167 $SET_ARG_TYPE[$OPT_NUM] = $1; |
3998 | 168 } |
169 elsif (/^\s*INIT_VALUE\s*=\s*"(.*)"\s*$/) | |
170 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
171 die "duplicate INIT_VALUE" if defined $INIT_VALUE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
172 $INIT_VALUE[$OPT_NUM] = $1; |
3998 | 173 } |
174 elsif (/^\s*SET_EXPR\s*=\s*"(.*)"\s*$/) | |
175 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
176 die "duplicate SET_EXPR" if defined $SET_EXPR[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
177 $SET_EXPR[$OPT_NUM] = $1; |
3998 | 178 } |
179 elsif (/^\s*INIT_BODY\s*$/) | |
180 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
181 die "duplicate INIT_BODY" if defined $INIT_BODY[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
182 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_INIT_BODY\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
183 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
184 $INIT_BODY[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
185 } |
3998 | 186 } |
187 elsif (/^\s*SET_BODY\s*$/) | |
188 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
189 die "duplicate SET_BODY" if defined $INIT_BODY[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
190 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_SET_BODY\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
191 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
192 $SET_BODY[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
193 } |
3998 | 194 } |
195 elsif (/^\s*SET_CODE\s*$/) | |
196 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
197 die "duplicate SET_CODE" if defined $SET_CODE[$OPT_NUM]; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
198 while (defined ($_ = <DEFN_FILE>) and not /^\s*END_SET_CODE\s*$/) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
199 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
200 $SET_CODE[$OPT_NUM] .= $_; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
201 } |
3998 | 202 } |
203 } | |
204 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
205 if (not defined $SET_ARG_TYPE[$OPT_NUM]) |
3998 | 206 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
207 $SET_ARG_TYPE[$OPT_NUM] = $TYPE[$OPT_NUM]; |
3998 | 208 } |
209 else | |
210 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
211 $SET_ARG_TYPE[$OPT_NUM] |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
212 = substopt ($SET_ARG_TYPE[$OPT_NUM], $OPTVAR[$OPT_NUM], |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
213 $OPT[$OPT_NUM], $TYPE[$OPT_NUM]); |
3998 | 214 } |
215 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
216 $OPT_NUM++; |
3998 | 217 } |
218 | |
219 sub process_data | |
220 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
221 $MAX_TOKENS = max (@N_TOKS); |
3998 | 222 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
223 &get_min_match_len_info; |
3998 | 224 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
225 $FCN_NAME = lc ($CLASS) if not defined $FCN_NAME; |
12174 | 226 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
227 $OPT_FCN_NAME = "${FCN_NAME}_options" if not defined $OPT_FCN_NAME; |
3998 | 228 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
229 $STATIC_OBJECT_NAME = "${FCN_NAME}_opts"; |
3998 | 230 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
231 if (not defined $DOC_STRING) |
3998 | 232 { |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
233 $DOC_STRING = "Query or set options for the function \@code{$FCN_NAME}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
234 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
235 When called with no arguments, the names of all available options and |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
236 their current values are displayed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
237 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
238 Given one argument, return the value of the option \@var{opt}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
239 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
240 When called with two arguments, \@code{$OPT_FCN_NAME} sets the option |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12504
diff
changeset
|
241 \@var{opt} to value \@var{val}."; |
3998 | 242 } |
243 } | |
244 | |
17513
fedcd3717ebc
doc: grammarcheck of documentation before 3.8 release.
Rik <rik@octave.org>
parents:
15039
diff
changeset
|
245 ## FIXME: What does this routine do? And can it be simpler to understand? |
3998 | 246 sub get_min_match_len_info |
247 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
248 my ($i, $j, $k); |
3998 | 249 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
250 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 251 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
252 for ($j = 0; $j < $MAX_TOKENS; $j++) |
3998 | 253 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
254 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 0; |
3998 | 255 } |
256 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
257 $MIN_TOKS_TO_MATCH[$i] = 1; |
3998 | 258 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
259 L1: for ($k = 0; $k < $OPT_NUM; $k++) |
3998 | 260 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
261 my $duplicate = 1; |
3998 | 262 |
263 if ($i != $k) | |
264 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
265 L2: for ($j = 0; $j < $MAX_TOKENS; $j++) |
3998 | 266 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
267 if ($j < $N_TOKS[$i]) |
3998 | 268 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
269 if ($KW_TOK[$i][$j] eq $KW_TOK[$k][$j]) |
3998 | 270 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
271 if ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
3998 | 272 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
273 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
3998 | 274 } |
275 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
276 $MIN_TOKS_TO_MATCH[$i]++; |
3998 | 277 } |
278 else | |
279 { | |
12174 | 280 $duplicate = 0; |
3998 | 281 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
282 if ($MIN_TOK_LEN_TO_MATCH[$i][$j] == 0) |
12174 | 283 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
284 $MIN_TOK_LEN_TO_MATCH[$i][$j] = 1; |
12174 | 285 } |
3998 | 286 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
287 my @s = split (//, $KW_TOK[$i][$j]); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
288 my @t = split (//, $KW_TOK[$k][$j]); |
3998 | 289 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
290 my ($n, $ii); |
3998 | 291 $n = scalar (@s); |
292 $n = scalar (@t) if (@t < $n); | |
293 | |
294 for ($ii = 0; $ii < $n; $ii++) | |
295 { | |
296 if ("$s[$ii]" eq "$t[$ii]") | |
297 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
298 if ($ii + 2 > $MIN_TOK_LEN_TO_MATCH[$i][$j]) |
12174 | 299 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
300 $MIN_TOK_LEN_TO_MATCH[$i][$j]++; |
12174 | 301 } |
3998 | 302 } |
303 else | |
304 { | |
305 last L2; | |
306 } | |
307 } | |
308 | |
309 last L1; | |
310 } | |
311 } | |
12174 | 312 else |
313 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
314 die qq|ambiguous options "$NAME[$i]" and "$NAME[$k]"| if $duplicate; |
12174 | 315 } |
3998 | 316 } |
317 } | |
318 } | |
319 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
320 } # end of get_min_match_len_info |
4050 | 321 |
3998 | 322 |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
323 sub emit_copy_body |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
324 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
325 my ($pfx, $var) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
326 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
327 for (my $i = 0; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
328 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
329 print "${pfx}$OPTVAR[$i] = ${var}.$OPTVAR[$i];\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
330 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
331 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
332 print "${pfx}reset = ${var}.reset;\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
333 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
334 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
335 ## To silence GCC warnings, we create an initialization list even |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
336 ## though the init function actually does the work of initialization. |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
337 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
338 sub emit_default_init_list |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
339 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
340 my ($prefix) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
341 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
342 print "$OPTVAR[0] (),\n" unless ($OPT_NUM == 0); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
343 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
344 for (my $i = 1; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
345 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
346 print "${prefix}$OPTVAR[$i] (),\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
347 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
348 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
349 print "${prefix}reset ()\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
350 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
351 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
352 sub emit_copy_ctor_init_list |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
353 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
354 my ($prefix, $var) = @_; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
355 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
356 print "$OPTVAR[0] ($var.$OPTVAR[0]),\n" unless ($OPT_NUM == 0); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
357 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
358 for (my $i = 1; $i < $OPT_NUM; $i++) |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
359 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
360 print "${prefix}$OPTVAR[$i] ($var.$OPTVAR[$i]),\n"; |
11497
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
361 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
362 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
363 print "${prefix}reset ($var.reset)\n"; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
364 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
365 |
3998 | 366 sub emit_opt_class_header |
367 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
368 my ($i, $s); |
3998 | 369 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
370 print <<"_END_EMIT_OPT_CLASS_HEADER_"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
371 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
372 // Generated automatically from $DEFN_FILE. |
3998 | 373 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
20733
diff
changeset
|
374 #if ! defined (octave_${CLASS_NAME}_h) |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
375 #define octave_${CLASS_NAME}_h 1 |
3998 | 376 |
377 #include <cfloat> | |
378 #include <cmath> | |
379 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
380 $INCLUDE |
4044 | 381 |
3998 | 382 class |
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 |
3998 | 384 { |
385 public: | |
386 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
387 $CLASS_NAME (void) |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
388 _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
|
389 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
390 print ' : '; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
391 emit_default_init_list (" "); |
3998 | 392 |
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
|
393 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
|
394 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
|
395 } |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
396 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
397 $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
|
398 : "; |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
399 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
400 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
|
401 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
402 print " { } |
3998 | 403 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
404 ${CLASS_NAME}& operator = (const ${CLASS_NAME}& opt) |
3998 | 405 { |
406 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
|
407 {\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
|
408 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
409 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
|
410 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
411 print " } |
3998 | 412 |
413 return *this; | |
414 } | |
415 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
416 ~$CLASS_NAME (void) { }\n"; |
3998 | 417 |
418 print "\n void init (void)\n {\n"; | |
419 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
420 for ($i = 0; $i < $OPT_NUM; $i++) |
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 if ($INIT_VALUE[$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 print " $OPTVAR[$i] = $INIT_VALUE[$i];\n"; |
3998 | 425 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
426 elsif ($INIT_BODY[$i]) |
3998 | 427 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
428 $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
|
429 chomp ($s); |
3998 | 430 $s =~ s/^\s*/ /g; |
431 $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
|
432 print $s,"\n"; |
3998 | 433 } |
434 } | |
435 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
436 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
|
437 " }\n"; |
3998 | 438 |
4122 | 439 ## For backward compatibility and because set_options is probably |
440 ## a better name in some contexts: | |
441 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
442 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
|
443 " {\n"; |
4122 | 444 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
445 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
|
446 |
7bddd70bc838
mk-opts.pl: generate initialization lists and in-line code for copy method
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
447 print " }\n\n void set_default_options (void) { init (); }\n"; |
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 for ($i = 0; $i < $OPT_NUM; $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 if ($SET_EXPR[$i]) |
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 emit_set_decl ($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 print "\n { $OPTVAR[$i] = $SET_EXPR[$i]; reset = true; }\n"; |
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 elsif ($SET_BODY[$i]) |
3998 | 458 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
459 emit_set_decl ($i); |
3998 | 460 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
461 $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
|
462 chomp ($s); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
463 $s = ' ' . $s; |
3998 | 464 $s =~ s/\n/\n /g; |
4049 | 465 print "\n {\n$s\n reset = true;\n }\n"; |
3998 | 466 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
467 elsif ($SET_CODE[$i]) |
3998 | 468 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
469 $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
|
470 chomp ($s); |
3998 | 471 $s =~ s/^ //g; |
472 $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
|
473 print "\n",$s,"\n"; |
3998 | 474 } |
475 } | |
476 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
477 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 478 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
479 print " $TYPE[$i] $OPT[$i] (void) const\n { return $OPTVAR[$i]; }\n\n"; |
3998 | 480 } |
481 | |
482 print "private:\n\n"; | |
483 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
484 for ($i = 0; $i < $OPT_NUM; $i++) |
3998 | 485 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
486 print " $TYPE[$i] $OPTVAR[$i];\n"; |
3998 | 487 } |
488 | |
4049 | 489 print "\nprotected:\n\n bool reset;\n};\n\n#endif\n"; |
3998 | 490 } |
491 | |
492 sub emit_set_decl | |
493 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
494 my ($i) = @_; |
3998 | 495 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
496 print "\n void set_$OPT[$i] ($SET_ARG_TYPE[$i] val)"; |
3998 | 497 } |
498 | |
499 sub emit_opt_handler_fcns | |
500 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
501 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
|
502 $header =~ s/[.]\w*$/.h/; # replace .in with .h |
4044 | 503 $header =~ s|^.*/([^/]*)$|$1|; # strip directory part |
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 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
|
506 // DO NOT EDIT! |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
507 // Generated automatically from $DEFN_FILE. |
3998 | 508 |
21690
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
509 // This file should not include config.h. It is only included in other |
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
510 // C++ source files that should have included config.h before including |
b6a686543080
Only include config.h in files that are compiled separately.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
511 // this file. |
3998 | 512 |
513 #include <iomanip> | |
514 #include <iostream> | |
515 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
516 #include "$header" |
4044 | 517 |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
518 #include "defun.h" |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
519 #include "pr-output.h" |
3998 | 520 |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20895
diff
changeset
|
521 #include "ovl.h" |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
522 #include "utils.h" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
523 #include "pager.h" |
4044 | 524 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
525 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
|
526 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
527 _END_EMIT_OPT_HANDLER_FCNS_ |
3998 | 528 |
529 &emit_struct_decl; | |
530 | |
531 &emit_struct_def; | |
532 | |
533 &emit_print_function; | |
534 | |
535 &emit_set_functions; | |
536 | |
537 &emit_show_function; | |
538 | |
539 &emit_options_function; | |
540 } | |
541 | |
542 sub emit_struct_decl | |
543 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
544 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
|
545 #define MAX_TOKENS $MAX_TOKENS |
3998 | 546 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
547 struct $STRUCT_NAME |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
548 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
549 const char *keyword; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
550 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
|
551 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
|
552 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
|
553 }; |
3998 | 554 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
555 _END_PRINT_STRUCT_DECL_ |
3998 | 556 } |
557 | |
558 sub emit_struct_def | |
559 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
560 my $i; |
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 print "#define NUM_OPTIONS $OPT_NUM\n\n"; |
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 print "static $STRUCT_NAME $STATIC_TABLE_NAME [] =\n{\n"; |
3998 | 565 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
566 for ($i = 0; $i < ($OPT_NUM - 1); $i++) |
3998 | 567 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
568 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
|
569 print "\n"; |
3998 | 570 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
571 emit_option_table_entry ($i, 0); |
3998 | 572 |
573 print "};\n\n"; | |
574 } | |
575 | |
576 sub emit_option_table_entry | |
577 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
578 my ($i, $empty) = @_; |
3998 | 579 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
580 my $k; |
3998 | 581 |
582 if ($empty) | |
583 { | |
584 print " { 0,\n"; | |
585 } | |
586 else | |
587 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
588 print " { \"$NAME[$i]\",\n"; |
3998 | 589 } |
590 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
591 my $n = scalar $#{$KW_TOK[$i]}; |
3998 | 592 print " {"; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
593 for $k (0 .. $MAX_TOKENS) |
3998 | 594 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
595 if ($empty or $k > $n) |
3998 | 596 { |
597 print " 0,"; | |
598 } | |
599 else | |
600 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
601 print " \"$KW_TOK[$i][$k]\","; |
3998 | 602 } |
603 } | |
604 print " },\n"; | |
605 | |
606 print " {"; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
607 for $k (0 .. $MAX_TOKENS) |
3998 | 608 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
609 if ($empty or $k > $n) |
3998 | 610 { |
611 print " 0,"; | |
612 } | |
613 else | |
614 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
615 print " $MIN_TOK_LEN_TO_MATCH[$i][$k],"; |
3998 | 616 } |
617 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
618 print " }, $MIN_TOKS_TO_MATCH[$i], "; |
3998 | 619 |
620 print "},\n"; | |
621 } | |
622 | |
623 sub emit_print_function | |
624 { | |
21092
429f83903400
maint: Use "FIXME:" more places in code base.
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
625 ## FIXME: determine the width of the table automatically. |
4047 | 626 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
627 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
|
628 print_$CLASS_NAME (std::ostream& os) |
3998 | 629 { |
5765 | 630 std::ostringstream buf; |
3998 | 631 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
632 os << "\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
633 << "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
|
634 << " keyword value\\n" |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
635 << " ------- -----\\n"; |
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 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n|; |
3998 | 638 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
639 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 640 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
641 print qq| {\n os << " " |
5667 | 642 << std::setiosflags (std::ios::left) << std::setw (50) |
643 << list[$i].keyword | |
644 << 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
|
645 << " ";\n\n|; |
3998 | 646 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
647 if ($TYPE[$i] eq "double") |
3998 | 648 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
649 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
|
650 print qq| os << val << "\\n";\n|; |
3998 | 651 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
652 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
653 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
654 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
|
655 print qq| os << val << "\\n";\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
656 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
657 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 658 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
659 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
|
660 print qq| os << val << "\\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 "std::string") |
3998 | 663 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
664 print qq| os << $STATIC_OBJECT_NAME.$OPT[$i] () << "\\n";\n|; |
3998 | 665 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
666 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 667 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
668 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
669 if ($TYPE[$i] eq "Array<int>") |
5275 | 670 { |
671 $elt_type = "int"; | |
672 } | |
673 else | |
674 { | |
675 $elt_type = "octave_idx_type"; | |
676 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
677 print qq| Array<$elt_type> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
678 print qq| if (val.numel () == 1) |
4044 | 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 << val(0) << "\\n"; |
4044 | 681 } |
682 else | |
683 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
684 os << "\\n\\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
685 octave_idx_type len = val.numel (); |
12174 | 686 Matrix tmp (len, 1); |
687 for (octave_idx_type i = 0; i < len; i++) | |
688 tmp(i,0) = val(i); | |
6755 | 689 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
|
690 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
691 }\n|; |
4044 | 692 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
693 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 694 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
695 print qq| Array<double> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
696 print qq| if (val.numel () == 1) |
3998 | 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 << val(0) << "\\n"; |
3998 | 699 } |
700 else | |
701 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
702 os << "\\n\\n"; |
3998 | 703 Matrix tmp = Matrix (ColumnVector (val)); |
6755 | 704 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
|
705 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
706 }\n|; |
3998 | 707 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
708 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
709 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
710 print qq| Array<float> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n|; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
711 print qq| if (val.numel () == 1) |
7806
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 << val(0) << "\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
714 } |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
715 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
716 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
717 os << "\\n\\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
718 FloatMatrix tmp = FloatMatrix (FloatColumnVector (val)); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
719 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
|
720 os << "\\n\\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
721 }\n|; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
722 } |
3998 | 723 else |
724 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
725 die ("unknown type $TYPE[$i]"); |
3998 | 726 } |
727 | |
728 print " }\n\n"; | |
729 } | |
730 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
731 print qq| os << "\\n";\n}\n\n|; |
3998 | 732 } |
733 | |
734 sub emit_set_functions | |
735 { | |
736 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
|
737 set_$CLASS_NAME (const std::string& keyword, const octave_value& val) |
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 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
3998 | 740 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
741 my $iftok = "if"; |
3998 | 742 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
743 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 744 { |
745 $iftok = "else if" if ($i > 0); | |
746 | |
747 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
748 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
749 {\n"; | |
750 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
751 if ($TYPE[$i] eq "double") |
3998 | 752 { |
753 print " double tmp = val.double_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
754 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 755 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
756 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
757 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
758 print " float tmp = val.float_value ();\n\n"; |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
759 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
760 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
761 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 762 { |
763 print " int tmp = val.int_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
764 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 765 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
766 elsif ($TYPE[$i] eq "std::string") |
3998 | 767 { |
768 print " std::string tmp = val.string_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
769 print " $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"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
774 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
4044 | 775 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
776 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 777 { |
778 print " Array<double> tmp = val.vector_value ();\n\n"; | |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
779 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
3998 | 780 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
781 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
782 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
783 print " Array<float> tmp = val.float_vector_value ();\n\n"; |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
784 print " $STATIC_OBJECT_NAME.set_$OPT[$i] (tmp);\n"; |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
785 } |
3998 | 786 else |
787 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
788 die ("unknown type $TYPE[$i]"); |
3998 | 789 } |
790 | |
791 print " }\n"; | |
792 } | |
793 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
794 print qq| else |
3998 | 795 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
796 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 797 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
798 }\n\n|; |
3998 | 799 } |
800 | |
801 sub emit_show_function | |
802 { | |
803 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
|
804 show_$CLASS_NAME (const std::string& keyword) |
3998 | 805 { |
806 octave_value retval; | |
807 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
808 $STRUCT_NAME *list = $STATIC_TABLE_NAME;\n\n"; |
3998 | 809 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
810 my $iftok = "if"; |
3998 | 811 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
812 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 813 { |
814 $iftok = "else if" if ($i > 0); | |
815 | |
816 print " $iftok (keyword_almost_match (list[$i].kw_tok, list[$i].min_len, | |
817 keyword, list[$i].min_toks_to_match, MAX_TOKENS)) | |
818 {\n"; | |
819 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
820 if ($TYPE[$i] eq "double") |
3998 | 821 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
822 print " double val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 823 print " retval = val;\n"; |
824 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
825 elsif ($TYPE[$i] eq "float") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
826 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
827 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
|
828 print " retval = val;\n"; |
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 elsif ($TYPE[$i] eq "int" or $TYPE[$i] eq "octave_idx_type") |
3998 | 831 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
832 print " int val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
3998 | 833 print " retval = static_cast<double> (val);\n"; |
834 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
835 elsif ($TYPE[$i] eq "std::string") |
3998 | 836 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
837 print " retval = $STATIC_OBJECT_NAME.$OPT[$i] ();\n"; |
3998 | 838 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
839 elsif ($TYPE[$i] eq "Array<int>" or $TYPE[$i] eq "Array<octave_idx_type>") |
4044 | 840 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
841 my $elt_type; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
842 if ($TYPE[$i] eq "Array<int>") |
5275 | 843 { |
844 $elt_type = "int"; | |
845 } | |
846 else | |
847 { | |
848 $elt_type = "octave_idx_type"; | |
849 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
850 print " Array<$elt_type> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
851 print " if (val.numel () == 1) |
4044 | 852 { |
853 retval = static_cast<double> (val(0)); | |
854 } | |
855 else | |
856 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
857 octave_idx_type len = val.numel (); |
12174 | 858 ColumnVector tmp (len); |
859 for (octave_idx_type i = 0; i < len; i++) | |
860 tmp(i) = val(i); | |
4044 | 861 retval = tmp; |
862 }\n"; | |
863 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
864 elsif ($TYPE[$i] eq "Array<double>") |
3998 | 865 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
866 print " Array<double> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
867 print " if (val.numel () == 1) |
3998 | 868 { |
869 retval = val(0); | |
870 } | |
871 else | |
872 { | |
873 retval = ColumnVector (val); | |
874 }\n"; | |
875 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
876 elsif ($TYPE[$i] eq "Array<float>") |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
877 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
878 print " Array<float> val = $STATIC_OBJECT_NAME.$OPT[$i] ();\n\n"; |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
879 print " if (val.numel () == 1) |
7806
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
880 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
881 retval = val(0); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
882 } |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
883 else |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
884 { |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
885 retval = FloatColumnVector (val); |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
886 }\n"; |
edc25a3fb2bc
handle floats in mk-opts.pl
Jaroslav Hajek <highegg@gmail.com>
parents:
7019
diff
changeset
|
887 } |
3998 | 888 else |
889 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
890 die ("unknown type $TYPE[$i]"); |
3998 | 891 } |
892 | |
893 print " }\n"; | |
894 } | |
895 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
896 print qq| else |
3998 | 897 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
898 warning ("$OPT_FCN_NAME: no match for `%s'", keyword.c_str ()); |
3998 | 899 } |
900 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
901 return retval;\n}\n\n|; |
3998 | 902 } |
903 | |
904 sub emit_options_function | |
905 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
906 print <<"_END_EMIT_OPTIONS_FUNCTION_HDR_"; |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
907 DEFUN ($OPT_FCN_NAME, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
908 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
909 \@deftypefn {} {} $OPT_FCN_NAME () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
910 \@deftypefnx {} {val =} $OPT_FCN_NAME (\@var{opt}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
911 \@deftypefnx {} {} $OPT_FCN_NAME (\@var{opt}, \@var{val}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
912 $DOC_STRING |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
913 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
914 Options include |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
915 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
916 \@table \@code |
12504
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 { |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
922 print '@item @qcode{"', $NAME[$i], '"}', "\n"; |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
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_"; |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
927 \@end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21690
diff
changeset
|
928 \@end deftypefn */) |
3998 | 929 { |
930 octave_value_list retval; | |
931 | |
932 int nargin = args.length (); | |
933 | |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
934 if (nargin > 2) |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
935 print_usage (); |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
936 |
3998 | 937 if (nargin == 0) |
938 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
939 print_$CLASS_NAME (octave_stdout); |
3998 | 940 } |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
941 else |
3998 | 942 { |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
943 std::string keyword = args(0).xstring_value ("$OPT_FCN_NAME: expecting keyword as first argument"); |
3998 | 944 |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
945 if (nargin == 1) |
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
946 retval = show_$CLASS_NAME (keyword); |
3998 | 947 else |
20733
c6464d78da69
eliminate error_state from generated code
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
948 set_$CLASS_NAME (keyword, args(1)); |
3998 | 949 } |
950 | |
951 return retval; | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
952 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
953 _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
|
954 |
3998 | 955 } |
956 | |
957 sub emit_options_debug | |
958 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
959 print qq|CLASS = "$CLASS"\n|; |
3998 | 960 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
961 for (my $i = 0; $i < $OPT_NUM; $i++) |
3998 | 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 "\nOPTION\n"; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
964 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
|
965 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
|
966 if ($SET_ARG_TYPE[$i]) |
3998 | 967 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
968 print eval ("\" SET_ARG_TYPE = \\\"$SET_ARG_TYPE[$i]\\\"\"") . "\n"; |
3998 | 969 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
970 if ($INIT_VALUE[$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 qq| INIT_VALUE = "$INIT_VALUE[$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_BODY[$i]) |
3998 | 975 { |
976 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
|
977 print &substopt ($INIT_BODY[$i]); |
3998 | 978 print " END_INIT_BODY\n"; |
979 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
980 if ($SET_EXPR[$i]) |
3998 | 981 { |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
982 print qq| SET_EXPR = "$SET_EXPR[$i]"\n|; |
3998 | 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_BODY[$i]) |
3998 | 985 { |
986 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
|
987 print &substopt ($SET_BODY[$i]); |
3998 | 988 print " END_SET_BODY\n"; |
989 } | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
990 if ($SET_CODE[$i]) |
3998 | 991 { |
992 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
|
993 print &substopt ($SET_CODE[$i]); |
3998 | 994 print " END_SET_CODE\n"; |
995 } | |
996 print "END_OPTION\n"; | |
997 } | |
998 } | |
999 | |
1000 sub substopt | |
1001 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1002 my ($string, $optvar, $opt, $type) = @_; |
3998 | 1003 |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1004 $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
|
1005 $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
|
1006 $string =~ s/\$TYPE/$type/g; |
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 return $string; |
3998 | 1009 } |
1010 | |
1011 sub max | |
1012 { | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1013 my $max = shift; |
3998 | 1014 |
1015 foreach (@_) | |
1016 { | |
1017 $max = $_ if $max < $_; | |
1018 } | |
1019 | |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1020 return $max; |
3998 | 1021 } |
12504
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1022 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1023 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1024 # 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
|
1025 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1026 sub parse_options |
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 my $result; |
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 $opt_help = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1031 $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
|
1032 $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
|
1033 $opt_debug = 0; |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1034 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1035 $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
|
1036 "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
|
1037 "debug" => \$opt_debug, |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1038 "help" => \$opt_help); |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1039 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1040 # 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
|
1041 &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
|
1042 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
|
1043 { |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1044 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
|
1045 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1046 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1047 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1048 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1049 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1050 # 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
|
1051 ################################################################################ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1052 sub usage_info |
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 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
|
1055 ////////////////////////////////////////////////////////////////////////////// |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1056 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
|
1057 ////////////////////////////////////////////////////////////////////////////// |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1058 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1059 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
|
1060 from definition 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 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
|
1063 _END_OF_USAGE_ |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1064 |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1065 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
|
1066 } |
d1758f03a2ec
Recode mk-opts.pl to use clearer, more modern, Perl syntax.
Rik <octave@nomad.inbox5.com>
parents:
12174
diff
changeset
|
1067 |