? octave/Makeconf ? octave/Makefile ? octave/Makefrag.f77 ? octave/autom4te.cache ? octave/config.h ? octave/config.h.in ? octave/config.log ? octave/config.status ? octave/configure ? octave/install-octave ? octave/mkoctfile ? octave/octMakefile ? octave/octave-bug ? octave/octave-config ? octave/pr-output.h ? octave/dlfcn/Makefile ? octave/doc/Makefile ? octave/doc/faq/Makefile ? octave/doc/faq/Octave-FAQ.aux ? octave/doc/faq/Octave-FAQ.cp ? octave/doc/faq/Octave-FAQ.cps ? octave/doc/faq/Octave-FAQ.dvi ? octave/doc/faq/Octave-FAQ.fn ? octave/doc/faq/Octave-FAQ.html ? octave/doc/faq/Octave-FAQ.info ? octave/doc/faq/Octave-FAQ.ky ? octave/doc/faq/Octave-FAQ.log ? octave/doc/faq/Octave-FAQ.pg ? octave/doc/faq/Octave-FAQ.ps ? octave/doc/faq/Octave-FAQ.toc ? octave/doc/faq/Octave-FAQ.tp ? octave/doc/faq/Octave-FAQ.vr ? octave/doc/faq/Octave-FAQ_1.html ? octave/doc/faq/Octave-FAQ_10.html ? octave/doc/faq/Octave-FAQ_11.html ? octave/doc/faq/Octave-FAQ_12.html ? octave/doc/faq/Octave-FAQ_2.html ? octave/doc/faq/Octave-FAQ_3.html ? octave/doc/faq/Octave-FAQ_4.html ? octave/doc/faq/Octave-FAQ_5.html ? octave/doc/faq/Octave-FAQ_6.html ? octave/doc/faq/Octave-FAQ_7.html ? octave/doc/faq/Octave-FAQ_8.html ? octave/doc/faq/Octave-FAQ_9.html ? octave/doc/faq/Octave-FAQ_abt.html ? octave/doc/faq/Octave-FAQ_fot.html ? octave/doc/faq/Octave-FAQ_ovr.html ? octave/doc/faq/Octave-FAQ_toc.html ? octave/doc/interpreter/Makefile ? octave/doc/interpreter/arith.texi ? octave/doc/interpreter/audio.texi ? octave/doc/interpreter/basics.texi ? octave/doc/interpreter/bugs.texi ? octave/doc/interpreter/container.texi ? octave/doc/interpreter/control.texi ? octave/doc/interpreter/cp-idx.texi ? octave/doc/interpreter/data.texi ? octave/doc/interpreter/debug.texi ? octave/doc/interpreter/diffeq.texi ? octave/doc/interpreter/emacs.texi ? octave/doc/interpreter/errors.texi ? octave/doc/interpreter/eval.texi ? octave/doc/interpreter/expr.texi ? octave/doc/interpreter/finance.texi ? octave/doc/interpreter/fn-idx.texi ? octave/doc/interpreter/func.texi ? octave/doc/interpreter/gpl.texi ? octave/doc/interpreter/grammar.texi ? octave/doc/interpreter/image.texi ? octave/doc/interpreter/install.texi ? octave/doc/interpreter/intro.texi ? octave/doc/interpreter/io.texi ? octave/doc/interpreter/linalg.texi ? octave/doc/interpreter/matrix.texi ? octave/doc/interpreter/munge-texi ? octave/doc/interpreter/nonlin.texi ? octave/doc/interpreter/numbers.texi ? octave/doc/interpreter/octave.aux ? octave/doc/interpreter/octave.cp ? octave/doc/interpreter/octave.cps ? octave/doc/interpreter/octave.dvi ? octave/doc/interpreter/octave.fn ? octave/doc/interpreter/octave.fns ? octave/doc/interpreter/octave.html ? octave/doc/interpreter/octave.info ? octave/doc/interpreter/octave.info-1 ? octave/doc/interpreter/octave.info-10 ? octave/doc/interpreter/octave.info-11 ? octave/doc/interpreter/octave.info-12 ? octave/doc/interpreter/octave.info-13 ? octave/doc/interpreter/octave.info-14 ? octave/doc/interpreter/octave.info-15 ? octave/doc/interpreter/octave.info-16 ? octave/doc/interpreter/octave.info-2 ? octave/doc/interpreter/octave.info-3 ? octave/doc/interpreter/octave.info-4 ? octave/doc/interpreter/octave.info-5 ? octave/doc/interpreter/octave.info-6 ? octave/doc/interpreter/octave.info-7 ? octave/doc/interpreter/octave.info-8 ? octave/doc/interpreter/octave.info-9 ? octave/doc/interpreter/octave.ky ? octave/doc/interpreter/octave.log ? octave/doc/interpreter/octave.op ? octave/doc/interpreter/octave.ops ? octave/doc/interpreter/octave.pg ? octave/doc/interpreter/octave.ps ? octave/doc/interpreter/octave.toc ? octave/doc/interpreter/octave.tp ? octave/doc/interpreter/octave.vr ? octave/doc/interpreter/octave.vrs ? octave/doc/interpreter/octave_1.html ? octave/doc/interpreter/octave_10.html ? octave/doc/interpreter/octave_11.html ? octave/doc/interpreter/octave_12.html ? octave/doc/interpreter/octave_13.html ? octave/doc/interpreter/octave_14.html ? octave/doc/interpreter/octave_15.html ? octave/doc/interpreter/octave_16.html ? octave/doc/interpreter/octave_17.html ? octave/doc/interpreter/octave_18.html ? octave/doc/interpreter/octave_19.html ? octave/doc/interpreter/octave_2.html ? octave/doc/interpreter/octave_20.html ? octave/doc/interpreter/octave_21.html ? octave/doc/interpreter/octave_22.html ? octave/doc/interpreter/octave_23.html ? octave/doc/interpreter/octave_24.html ? octave/doc/interpreter/octave_25.html ? octave/doc/interpreter/octave_26.html ? octave/doc/interpreter/octave_27.html ? octave/doc/interpreter/octave_28.html ? octave/doc/interpreter/octave_29.html ? octave/doc/interpreter/octave_3.html ? octave/doc/interpreter/octave_30.html ? octave/doc/interpreter/octave_31.html ? octave/doc/interpreter/octave_32.html ? octave/doc/interpreter/octave_33.html ? octave/doc/interpreter/octave_34.html ? octave/doc/interpreter/octave_35.html ? octave/doc/interpreter/octave_36.html ? octave/doc/interpreter/octave_37.html ? octave/doc/interpreter/octave_38.html ? octave/doc/interpreter/octave_39.html ? octave/doc/interpreter/octave_4.html ? octave/doc/interpreter/octave_40.html ? octave/doc/interpreter/octave_41.html ? octave/doc/interpreter/octave_42.html ? octave/doc/interpreter/octave_43.html ? octave/doc/interpreter/octave_44.html ? octave/doc/interpreter/octave_45.html ? octave/doc/interpreter/octave_46.html ? octave/doc/interpreter/octave_47.html ? octave/doc/interpreter/octave_48.html ? octave/doc/interpreter/octave_49.html ? octave/doc/interpreter/octave_5.html ? octave/doc/interpreter/octave_50.html ? octave/doc/interpreter/octave_51.html ? octave/doc/interpreter/octave_52.html ? octave/doc/interpreter/octave_53.html ? octave/doc/interpreter/octave_54.html ? octave/doc/interpreter/octave_6.html ? octave/doc/interpreter/octave_7.html ? octave/doc/interpreter/octave_8.html ? octave/doc/interpreter/octave_9.html ? octave/doc/interpreter/octave_abt.html ? octave/doc/interpreter/octave_fot.html ? octave/doc/interpreter/octave_ovr.html ? octave/doc/interpreter/octave_toc.html ? octave/doc/interpreter/op-idx.texi ? octave/doc/interpreter/optim.texi ? octave/doc/interpreter/plot.texi ? octave/doc/interpreter/poly.texi ? octave/doc/interpreter/preface.texi ? octave/doc/interpreter/quad.texi ? octave/doc/interpreter/quaternion.texi ? octave/doc/interpreter/set.texi ? octave/doc/interpreter/signal.texi ? octave/doc/interpreter/stats.texi ? octave/doc/interpreter/stmt.texi ? octave/doc/interpreter/stream.texi ? octave/doc/interpreter/strings.texi ? octave/doc/interpreter/struct.texi ? octave/doc/interpreter/system.texi ? octave/doc/interpreter/tips.texi ? octave/doc/interpreter/var.texi ? octave/doc/interpreter/vr-idx.texi ? octave/doc/liboctave/Makefile ? octave/doc/liboctave/liboctave.aux ? octave/doc/liboctave/liboctave.cp ? octave/doc/liboctave/liboctave.cps ? octave/doc/liboctave/liboctave.dvi ? octave/doc/liboctave/liboctave.fn ? octave/doc/liboctave/liboctave.fns ? octave/doc/liboctave/liboctave.html ? octave/doc/liboctave/liboctave.info ? octave/doc/liboctave/liboctave.info-1 ? octave/doc/liboctave/liboctave.info-2 ? octave/doc/liboctave/liboctave.info-3 ? octave/doc/liboctave/liboctave.ky ? octave/doc/liboctave/liboctave.log ? octave/doc/liboctave/liboctave.op ? octave/doc/liboctave/liboctave.pg ? octave/doc/liboctave/liboctave.ps ? octave/doc/liboctave/liboctave.toc ? octave/doc/liboctave/liboctave.tp ? octave/doc/liboctave/liboctave.vr ? octave/doc/liboctave/liboctave_1.html ? octave/doc/liboctave/liboctave_10.html ? octave/doc/liboctave/liboctave_11.html ? octave/doc/liboctave/liboctave_12.html ? octave/doc/liboctave/liboctave_13.html ? octave/doc/liboctave/liboctave_14.html ? octave/doc/liboctave/liboctave_15.html ? octave/doc/liboctave/liboctave_16.html ? octave/doc/liboctave/liboctave_17.html ? octave/doc/liboctave/liboctave_18.html ? octave/doc/liboctave/liboctave_19.html ? octave/doc/liboctave/liboctave_2.html ? octave/doc/liboctave/liboctave_20.html ? octave/doc/liboctave/liboctave_21.html ? octave/doc/liboctave/liboctave_22.html ? octave/doc/liboctave/liboctave_23.html ? octave/doc/liboctave/liboctave_3.html ? octave/doc/liboctave/liboctave_4.html ? octave/doc/liboctave/liboctave_5.html ? octave/doc/liboctave/liboctave_6.html ? octave/doc/liboctave/liboctave_7.html ? octave/doc/liboctave/liboctave_8.html ? octave/doc/liboctave/liboctave_9.html ? octave/doc/liboctave/liboctave_abt.html ? octave/doc/liboctave/liboctave_ovr.html ? octave/doc/liboctave/liboctave_toc.html ? octave/doc/refcard/Makefile ? octave/doc/refcard/refcard-a4.dvi ? octave/doc/refcard/refcard-a4.log ? octave/doc/refcard/refcard-a4.pdf ? octave/doc/refcard/refcard-a4.ps ? octave/doc/refcard/refcard-legal.dvi ? octave/doc/refcard/refcard-legal.log ? octave/doc/refcard/refcard-legal.pdf ? octave/doc/refcard/refcard-legal.ps ? octave/doc/refcard/refcard-letter.dvi ? octave/doc/refcard/refcard-letter.log ? octave/doc/refcard/refcard-letter.pdf ? octave/doc/refcard/refcard-letter.ps ? octave/emacs/Makefile ? octave/examples/Makefile ? octave/glob/Makefile ? octave/glob/autom4te.cache ? octave/glob/config.h ? octave/glob/config.h.in ? octave/glob/config.log ? octave/glob/config.status ? octave/glob/configure ? octave/libcruft/Makefile ? octave/libcruft/Makerules ? octave/libcruft/amos/Makefile ? octave/libcruft/amos/pic ? octave/libcruft/blas/Makefile ? octave/libcruft/blas/pic ? octave/libcruft/blas-xtra/Makefile ? octave/libcruft/blas-xtra/pic ? octave/libcruft/daspk/Makefile ? octave/libcruft/daspk/pic ? octave/libcruft/dasrt/Makefile ? octave/libcruft/dasrt/pic ? octave/libcruft/dassl/Makefile ? octave/libcruft/dassl/pic ? octave/libcruft/fftpack/Makefile ? octave/libcruft/fftpack/pic ? octave/libcruft/lapack/Makefile ? octave/libcruft/lapack/pic ? octave/libcruft/lapack-xtra/Makefile ? octave/libcruft/lapack-xtra/pic ? octave/libcruft/minpack/Makefile ? octave/libcruft/minpack/pic ? octave/libcruft/misc/Makefile ? octave/libcruft/misc/cquit.d ? octave/libcruft/misc/f77-extern.d ? octave/libcruft/misc/f77-fcn.d ? octave/libcruft/misc/lo-error.d ? octave/libcruft/misc/machar.d ? octave/libcruft/misc/pic ? octave/libcruft/misc/quit.d ? octave/libcruft/odepack/Makefile ? octave/libcruft/odepack/pic ? octave/libcruft/odessa/Makefile ? octave/libcruft/odessa/pic ? octave/libcruft/ordered-qz/Makefile ? octave/libcruft/ordered-qz/pic ? octave/libcruft/quadpack/Makefile ? octave/libcruft/quadpack/pic ? octave/libcruft/ranlib/Makefile ? octave/libcruft/ranlib/pic ? octave/libcruft/slatec-err/Makefile ? octave/libcruft/slatec-err/pic ? octave/libcruft/slatec-fn/Makefile ? octave/libcruft/slatec-fn/pic ? octave/libcruft/villad/Makefile ? octave/libcruft/villad/pic ? octave/liboctave/Array-C.d ? octave/liboctave/Array-b.d ? octave/liboctave/Array-ch.d ? octave/liboctave/Array-d.d ? octave/liboctave/Array-flags.d ? octave/liboctave/Array-i.d ? octave/liboctave/Array-idx-vec.d ? octave/liboctave/Array-s.d ? octave/liboctave/Array-so.d ? octave/liboctave/Array-str.d ? octave/liboctave/Array-util.d ? octave/liboctave/Array.d ? octave/liboctave/ArrayN.d ? octave/liboctave/Bounds.d ? octave/liboctave/CColVector.d ? octave/liboctave/CDiagMatrix.d ? octave/liboctave/CMatrix.d ? octave/liboctave/CNDArray.d ? octave/liboctave/CRowVector.d ? octave/liboctave/CmplxAEPBAL.d ? octave/liboctave/CmplxCHOL.d ? octave/liboctave/CmplxDET.d ? octave/liboctave/CmplxHESS.d ? octave/liboctave/CmplxLU.d ? octave/liboctave/CmplxQR.d ? octave/liboctave/CmplxQRP.d ? octave/liboctave/CmplxSCHUR.d ? octave/liboctave/CmplxSVD.d ? octave/liboctave/CollocWt.d ? octave/liboctave/DASPK-opts.h ? octave/liboctave/DASPK.d ? octave/liboctave/DASRT-opts.h ? octave/liboctave/DASRT.d ? octave/liboctave/DASSL-opts.h ? octave/liboctave/DASSL.d ? octave/liboctave/DiagArray2.d ? octave/liboctave/EIG.d ? octave/liboctave/FEGrid.d ? octave/liboctave/LPsolve.d ? octave/liboctave/LSODE-opts.h ? octave/liboctave/LSODE.d ? octave/liboctave/LinConst.d ? octave/liboctave/MArray-C.d ? octave/liboctave/MArray-ch.d ? octave/liboctave/MArray-d.d ? octave/liboctave/MArray-i.d ? octave/liboctave/MArray-s.d ? octave/liboctave/MArray.d ? octave/liboctave/MArray2.d ? octave/liboctave/MArrayN.d ? octave/liboctave/MDiagArray2.d ? octave/liboctave/Makefile ? octave/liboctave/NLEqn-opts.h ? octave/liboctave/NLEqn.d ? octave/liboctave/ODES.d ? octave/liboctave/ODESSA-opts.h ? octave/liboctave/ODESSA.d ? octave/liboctave/Quad-opts.h ? octave/liboctave/Quad.d ? octave/liboctave/Range.d ? octave/liboctave/base-lu.d ? octave/liboctave/boolMatrix.d ? octave/liboctave/boolNDArray.d ? octave/liboctave/chMatrix.d ? octave/liboctave/chNDArray.d ? octave/liboctave/cmd-edit.d ? octave/liboctave/cmd-hist.d ? octave/liboctave/dColVector.d ? octave/liboctave/dDiagMatrix.d ? octave/liboctave/dMatrix.d ? octave/liboctave/dNDArray.d ? octave/liboctave/dRowVector.d ? octave/liboctave/data-conv.d ? octave/liboctave/dbleAEPBAL.d ? octave/liboctave/dbleCHOL.d ? octave/liboctave/dbleDET.d ? octave/liboctave/dbleHESS.d ? octave/liboctave/dbleLU.d ? octave/liboctave/dbleQR.d ? octave/liboctave/dbleQRP.d ? octave/liboctave/dbleSCHUR.d ? octave/liboctave/dbleSVD.d ? octave/liboctave/dir-ops.d ? octave/liboctave/f2c-main.d ? octave/liboctave/file-ops.d ? octave/liboctave/file-stat.d ? octave/liboctave/filemode.d ? octave/liboctave/getopt.d ? octave/liboctave/getopt1.d ? octave/liboctave/glob-match.d ? octave/liboctave/idx-vector.d ? octave/liboctave/kpse-xfns.d ? octave/liboctave/lo-cieee.d ? octave/liboctave/lo-cutils.d ? octave/liboctave/lo-ieee.d ? octave/liboctave/lo-mappers.d ? octave/liboctave/lo-specfun.d ? octave/liboctave/lo-sysdep.d ? octave/liboctave/lo-utils.d ? octave/liboctave/mach-info.d ? octave/liboctave/mkdir.d ? octave/liboctave/mx-cdm-cm.cc ? octave/liboctave/mx-cdm-cm.d ? octave/liboctave/mx-cdm-cm.h ? octave/liboctave/mx-cdm-cs.cc ? octave/liboctave/mx-cdm-cs.d ? octave/liboctave/mx-cdm-cs.h ? octave/liboctave/mx-cdm-dm.cc ? octave/liboctave/mx-cdm-dm.d ? octave/liboctave/mx-cdm-dm.h ? octave/liboctave/mx-cdm-m.cc ? octave/liboctave/mx-cdm-m.d ? octave/liboctave/mx-cdm-m.h ? octave/liboctave/mx-cdm-s.cc ? octave/liboctave/mx-cdm-s.d ? octave/liboctave/mx-cdm-s.h ? octave/liboctave/mx-cm-cdm.cc ? octave/liboctave/mx-cm-cdm.d ? octave/liboctave/mx-cm-cdm.h ? octave/liboctave/mx-cm-dm.cc ? octave/liboctave/mx-cm-dm.d ? octave/liboctave/mx-cm-dm.h ? octave/liboctave/mx-cm-m.cc ? octave/liboctave/mx-cm-m.d ? octave/liboctave/mx-cm-m.h ? octave/liboctave/mx-cm-s.cc ? octave/liboctave/mx-cm-s.d ? octave/liboctave/mx-cm-s.h ? octave/liboctave/mx-cnda-nda.cc ? octave/liboctave/mx-cnda-nda.d ? octave/liboctave/mx-cnda-nda.h ? octave/liboctave/mx-cnda-s.cc ? octave/liboctave/mx-cnda-s.d ? octave/liboctave/mx-cnda-s.h ? octave/liboctave/mx-cs-cdm.cc ? octave/liboctave/mx-cs-cdm.d ? octave/liboctave/mx-cs-cdm.h ? octave/liboctave/mx-cs-dm.cc ? octave/liboctave/mx-cs-dm.d ? octave/liboctave/mx-cs-dm.h ? octave/liboctave/mx-cs-m.cc ? octave/liboctave/mx-cs-m.d ? octave/liboctave/mx-cs-m.h ? octave/liboctave/mx-cs-nda.cc ? octave/liboctave/mx-cs-nda.d ? octave/liboctave/mx-cs-nda.h ? octave/liboctave/mx-dm-cdm.cc ? octave/liboctave/mx-dm-cdm.d ? octave/liboctave/mx-dm-cdm.h ? octave/liboctave/mx-dm-cm.cc ? octave/liboctave/mx-dm-cm.d ? octave/liboctave/mx-dm-cm.h ? octave/liboctave/mx-dm-cs.cc ? octave/liboctave/mx-dm-cs.d ? octave/liboctave/mx-dm-cs.h ? octave/liboctave/mx-dm-m.cc ? octave/liboctave/mx-dm-m.d ? octave/liboctave/mx-dm-m.h ? octave/liboctave/mx-dm-s.cc ? octave/liboctave/mx-dm-s.d ? octave/liboctave/mx-dm-s.h ? octave/liboctave/mx-m-cdm.cc ? octave/liboctave/mx-m-cdm.d ? octave/liboctave/mx-m-cdm.h ? octave/liboctave/mx-m-cm.cc ? octave/liboctave/mx-m-cm.d ? octave/liboctave/mx-m-cm.h ? octave/liboctave/mx-m-cs.cc ? octave/liboctave/mx-m-cs.d ? octave/liboctave/mx-m-cs.h ? octave/liboctave/mx-m-dm.cc ? octave/liboctave/mx-m-dm.d ? octave/liboctave/mx-m-dm.h ? octave/liboctave/mx-nda-cnda.cc ? octave/liboctave/mx-nda-cnda.d ? octave/liboctave/mx-nda-cnda.h ? octave/liboctave/mx-nda-cs.cc ? octave/liboctave/mx-nda-cs.d ? octave/liboctave/mx-nda-cs.h ? octave/liboctave/mx-ops.h ? octave/liboctave/mx-s-cdm.cc ? octave/liboctave/mx-s-cdm.d ? octave/liboctave/mx-s-cdm.h ? octave/liboctave/mx-s-cm.cc ? octave/liboctave/mx-s-cm.d ? octave/liboctave/mx-s-cm.h ? octave/liboctave/mx-s-cnda.cc ? octave/liboctave/mx-s-cnda.d ? octave/liboctave/mx-s-cnda.h ? octave/liboctave/mx-s-dm.cc ? octave/liboctave/mx-s-dm.d ? octave/liboctave/mx-s-dm.h ? octave/liboctave/oct-alloc.d ? octave/liboctave/oct-env.d ? octave/liboctave/oct-fftw.d ? octave/liboctave/oct-getopt.d ? octave/liboctave/oct-group.d ? octave/liboctave/oct-passwd.d ? octave/liboctave/oct-rand.d ? octave/liboctave/oct-rl-edit.d ? octave/liboctave/oct-rl-hist.d ? octave/liboctave/oct-shlib.d ? octave/liboctave/oct-syscalls.d ? octave/liboctave/oct-time.d ? octave/liboctave/pathsearch.d ? octave/liboctave/prog-args.d ? octave/liboctave/rename.d ? octave/liboctave/rmdir.d ? octave/liboctave/so-array.d ? octave/liboctave/stamp-prereq ? octave/liboctave/str-vec.d ? octave/liboctave/strftime.d ? octave/liboctave/strptime.d ? octave/liboctave/tempnam.d ? octave/liboctave/tempname.d ? octave/liboctave/vx-ccv-cv.cc ? octave/liboctave/vx-ccv-cv.d ? octave/liboctave/vx-ccv-cv.h ? octave/liboctave/vx-ccv-s.cc ? octave/liboctave/vx-ccv-s.d ? octave/liboctave/vx-ccv-s.h ? octave/liboctave/vx-crv-rv.cc ? octave/liboctave/vx-crv-rv.d ? octave/liboctave/vx-crv-rv.h ? octave/liboctave/vx-crv-s.cc ? octave/liboctave/vx-crv-s.d ? octave/liboctave/vx-crv-s.h ? octave/liboctave/vx-cs-cv.cc ? octave/liboctave/vx-cs-cv.d ? octave/liboctave/vx-cs-cv.h ? octave/liboctave/vx-cs-rv.cc ? octave/liboctave/vx-cs-rv.d ? octave/liboctave/vx-cs-rv.h ? octave/liboctave/vx-cv-ccv.cc ? octave/liboctave/vx-cv-ccv.d ? octave/liboctave/vx-cv-ccv.h ? octave/liboctave/vx-cv-cs.cc ? octave/liboctave/vx-cv-cs.d ? octave/liboctave/vx-cv-cs.h ? octave/liboctave/vx-rv-crv.cc ? octave/liboctave/vx-rv-crv.d ? octave/liboctave/vx-rv-crv.h ? octave/liboctave/vx-rv-cs.cc ? octave/liboctave/vx-rv-cs.d ? octave/liboctave/vx-rv-cs.h ? octave/liboctave/vx-s-ccv.cc ? octave/liboctave/vx-s-ccv.d ? octave/liboctave/vx-s-ccv.h ? octave/liboctave/vx-s-crv.cc ? octave/liboctave/vx-s-crv.d ? octave/liboctave/vx-s-crv.h ? octave/scripts/DOCSTRINGS ? octave/scripts/Makefile ? octave/scripts/autom4te.cache ? octave/scripts/config.log ? octave/scripts/config.status ? octave/scripts/configure ? octave/scripts/gethelp ? octave/scripts/audio/Makefile ? octave/scripts/control/Makefile ? octave/scripts/control/base/Makefile ? octave/scripts/control/hinf/Makefile ? octave/scripts/control/obsolete/Makefile ? octave/scripts/control/system/Makefile ? octave/scripts/control/util/Makefile ? octave/scripts/deprecated/Makefile ? octave/scripts/elfun/Makefile ? octave/scripts/finance/Makefile ? octave/scripts/general/Makefile ? octave/scripts/image/Makefile ? octave/scripts/io/Makefile ? octave/scripts/linear-algebra/Makefile ? octave/scripts/miscellaneous/Makefile ? octave/scripts/plot/Makefile ? octave/scripts/polynomial/Makefile ? octave/scripts/quaternion/Makefile ? octave/scripts/set/Makefile ? octave/scripts/signal/Makefile ? octave/scripts/specfun/Makefile ? octave/scripts/special-matrix/Makefile ? octave/scripts/startup/Makefile ? octave/scripts/statistics/Makefile ? octave/scripts/statistics/base/Makefile ? octave/scripts/statistics/distributions/Makefile ? octave/scripts/statistics/models/Makefile ? octave/scripts/statistics/tests/Makefile ? octave/scripts/strings/Makefile ? octave/scripts/time/Makefile ? octave/src/Array-oc.d ? octave/src/Array-os.d ? octave/src/Array-sym.d ? octave/src/Array-tc.d ? octave/src/Cell.d ? octave/src/DASPK-opts.cc ? octave/src/DASRT-opts.cc ? octave/src/DASSL-opts.cc ? octave/src/DOCSTRINGS ? octave/src/LSODE-opts.cc ? octave/src/Makefile ? octave/src/NLEqn-opts.cc ? octave/src/ODESSA-opts.cc ? octave/src/Quad-opts.cc ? octave/src/balance.d ? octave/src/balance.df ? octave/src/besselj.d ? octave/src/besselj.df ? octave/src/betainc.d ? octave/src/betainc.df ? octave/src/builtins.cc ? octave/src/builtins.d ? octave/src/c-file-ptr-stream.d ? octave/src/chol.d ? octave/src/chol.df ? octave/src/colloc.d ? octave/src/colloc.df ? octave/src/comment-list.d ? octave/src/cutils.d ? octave/src/daspk.d ? octave/src/daspk.df ? octave/src/dasrt.d ? octave/src/dasrt.df ? octave/src/dassl.d ? octave/src/dassl.df ? octave/src/data.d ? octave/src/data.df ? octave/src/debug.d ? octave/src/debug.df ? octave/src/def-files ? octave/src/defaults.d ? octave/src/defaults.df ? octave/src/defaults.h ? octave/src/defun.d ? octave/src/defun.df ? octave/src/det.d ? octave/src/det.df ? octave/src/dirfns.d ? octave/src/dirfns.df ? octave/src/doc-files ? octave/src/dynamic-ld.d ? octave/src/dynamic-ld.df ? octave/src/eig.d ? octave/src/eig.df ? octave/src/error.d ? octave/src/error.df ? octave/src/expm.d ? octave/src/expm.df ? octave/src/fft.d ? octave/src/fft.df ? octave/src/fft2.d ? octave/src/fft2.df ? octave/src/file-io.d ? octave/src/file-io.df ? octave/src/filter.d ? octave/src/filter.df ? octave/src/find.d ? octave/src/find.df ? octave/src/fn-cache.d ? octave/src/fsolve.d ? octave/src/fsolve.df ? octave/src/gammainc.d ? octave/src/gammainc.df ? octave/src/gendoc ? octave/src/gendoc.cc ? octave/src/getgrent.d ? octave/src/getgrent.df ? octave/src/getpwent.d ? octave/src/getpwent.df ? octave/src/getrusage.d ? octave/src/getrusage.df ? octave/src/givens.d ? octave/src/givens.df ? octave/src/gripes.d ? octave/src/help.d ? octave/src/help.df ? octave/src/hess.d ? octave/src/hess.df ? octave/src/ifft.d ? octave/src/ifft.df ? octave/src/ifft2.d ? octave/src/ifft2.df ? octave/src/input.d ? octave/src/input.df ? octave/src/inv.d ? octave/src/inv.df ? octave/src/kron.d ? octave/src/kron.df ? octave/src/lex.cc ? octave/src/lex.d ? octave/src/lex.df ? octave/src/load-save.d ? octave/src/load-save.df ? octave/src/lpsolve.d ? octave/src/lpsolve.df ? octave/src/ls-hdf5.d ? octave/src/ls-mat-ascii.d ? octave/src/ls-mat4.d ? octave/src/ls-mat5.d ? octave/src/ls-oct-ascii.d ? octave/src/ls-oct-ascii.df ? octave/src/ls-oct-binary.d ? octave/src/ls-utils.d ? octave/src/lsode.d ? octave/src/lsode.df ? octave/src/lu.d ? octave/src/lu.df ? octave/src/main.d ? octave/src/mappers.d ? octave/src/mappers.df ? octave/src/matherr.d ? octave/src/minmax.d ? octave/src/minmax.df ? octave/src/oct-conf.h ? octave/src/oct-fstrm.d ? octave/src/oct-gperf.h ? octave/src/oct-hist.d ? octave/src/oct-hist.df ? octave/src/oct-iostrm.d ? octave/src/oct-lvalue.d ? octave/src/oct-map.d ? octave/src/oct-obj.d ? octave/src/oct-prcstrm.d ? octave/src/oct-procbuf.d ? octave/src/oct-procbuf.df ? octave/src/oct-stdstrm.d ? octave/src/oct-stream.d ? octave/src/oct-strstrm.d ? octave/src/octave ? octave/src/octave.d ? octave/src/odessa.d ? octave/src/odessa.df ? octave/src/op-b-b.d ? octave/src/op-b-bm.d ? octave/src/op-bm-b.d ? octave/src/op-bm-bm.d ? octave/src/op-cell.d ? octave/src/op-chm.d ? octave/src/op-cm-cm.d ? octave/src/op-cm-cs.d ? octave/src/op-cm-m.d ? octave/src/op-cm-s.d ? octave/src/op-cs-cm.d ? octave/src/op-cs-cs.d ? octave/src/op-cs-m.d ? octave/src/op-cs-s.d ? octave/src/op-fcn-handle.d ? octave/src/op-fil-b.d ? octave/src/op-fil-bm.d ? octave/src/op-fil-cm.d ? octave/src/op-fil-cs.d ? octave/src/op-fil-lis.d ? octave/src/op-fil-m.d ? octave/src/op-fil-rec.d ? octave/src/op-fil-s.d ? octave/src/op-fil-str.d ? octave/src/op-list.d ? octave/src/op-m-cm.d ? octave/src/op-m-cs.d ? octave/src/op-m-m.d ? octave/src/op-m-s.d ? octave/src/op-range.d ? octave/src/op-s-cm.d ? octave/src/op-s-cs.d ? octave/src/op-s-m.d ? octave/src/op-s-s.d ? octave/src/op-str-m.d ? octave/src/op-str-s.d ? octave/src/op-str-str.d ? octave/src/op-streamoff.d ? octave/src/ops.cc ? octave/src/ops.d ? octave/src/ov-base-mat.d ? octave/src/ov-base-scalar.d ? octave/src/ov-base.d ? octave/src/ov-bool-mat.d ? octave/src/ov-bool.d ? octave/src/ov-builtin.d ? octave/src/ov-cell.d ? octave/src/ov-cell.df ? octave/src/ov-ch-mat.d ? octave/src/ov-colon.d ? octave/src/ov-complex.d ? octave/src/ov-cs-list.d ? octave/src/ov-cx-mat.d ? octave/src/ov-dld-fcn.d ? octave/src/ov-fcn-handle.d ? octave/src/ov-fcn-handle.df ? octave/src/ov-fcn.d ? octave/src/ov-file.d ? octave/src/ov-list.d ? octave/src/ov-list.df ? octave/src/ov-mapper.d ? octave/src/ov-range.d ? octave/src/ov-re-mat.d ? octave/src/ov-scalar.d ? octave/src/ov-str-mat.d ? octave/src/ov-streamoff.d ? octave/src/ov-streamoff.df ? octave/src/ov-struct.d ? octave/src/ov-struct.df ? octave/src/ov-typeinfo.d ? octave/src/ov-typeinfo.df ? octave/src/ov-usr-fcn.d ? octave/src/ov-usr-fcn.df ? octave/src/ov-va-args.d ? octave/src/ov.d ? octave/src/ov.df ? octave/src/pager.d ? octave/src/pager.df ? octave/src/parse.cc ? octave/src/parse.d ? octave/src/parse.df ? octave/src/pinv.d ? octave/src/pinv.df ? octave/src/pr-output.d ? octave/src/pr-output.df ? octave/src/procstream.d ? octave/src/pt-arg-list.d ? octave/src/pt-arg-list.df ? octave/src/pt-assign.d ? octave/src/pt-assign.df ? octave/src/pt-binop.d ? octave/src/pt-bp.d ? octave/src/pt-cell.d ? octave/src/pt-check.d ? octave/src/pt-cmd.d ? octave/src/pt-colon.d ? octave/src/pt-const.d ? octave/src/pt-decl.d ? octave/src/pt-except.d ? octave/src/pt-exp.d ? octave/src/pt-fcn-handle.d ? octave/src/pt-id.d ? octave/src/pt-idx.d ? octave/src/pt-jump.d ? octave/src/pt-loop.d ? octave/src/pt-mat.d ? octave/src/pt-mat.df ? octave/src/pt-misc.d ? octave/src/pt-misc.df ? octave/src/pt-plot.d ? octave/src/pt-plot.df ? octave/src/pt-pr-code.d ? octave/src/pt-select.d ? octave/src/pt-stmt.d ? octave/src/pt-unop.d ? octave/src/pt.d ? octave/src/qr.d ? octave/src/qr.df ? octave/src/quad.d ? octave/src/quad.df ? octave/src/qz.d ? octave/src/qz.df ? octave/src/rand.d ? octave/src/rand.df ? octave/src/schur.d ? octave/src/schur.df ? octave/src/sighandlers.d ? octave/src/sighandlers.df ? octave/src/siglist.d ? octave/src/sort.d ? octave/src/sort.df ? octave/src/sqrtm.d ? octave/src/sqrtm.df ? octave/src/stamp-liboctave-prereq ? octave/src/stamp-oct-links ? octave/src/stamp-prereq ? octave/src/strcasecmp.d ? octave/src/strfns.d ? octave/src/strfns.df ? octave/src/strncase.d ? octave/src/svd.d ? octave/src/svd.df ? octave/src/syl.d ? octave/src/syl.df ? octave/src/symtab.d ? octave/src/symtab.df ? octave/src/syscalls.d ? octave/src/syscalls.df ? octave/src/sysdep.d ? octave/src/sysdep.df ? octave/src/time.d ? octave/src/time.df ? octave/src/token.d ? octave/src/toplev.d ? octave/src/toplev.df ? octave/src/unwind-prot.d ? octave/src/utils.d ? octave/src/utils.df ? octave/src/var-files ? octave/src/variables.d ? octave/src/variables.df ? octave/src/xdiv.d ? octave/src/xpow.d ? octave/src/y.output ? octave/src/y.tab.h ? octave/test/Makefile Index: octave/ChangeLog =================================================================== RCS file: /cvs/octave/ChangeLog,v retrieving revision 1.396 diff -c -r1.396 ChangeLog *** octave/ChangeLog 2004/01/29 18:38:49 1.396 --- octave/ChangeLog 2004/02/03 23:07:49 *************** *** 1,3 **** --- 1,44 ---- + 2004-02-04 Øyvind Kristiansen + * ov-base-nd-array.cc + (octave_base_nd_array::print_name_tag): Modified (machine_readable) + + * ov-base-scalar.cc, ov-base_scalar.h + (octave_base_scalar::print): Modified (machine_readable) + (octave_base_scalar::print_raw): Modified (machine_readable) + (octave_base_scalar::print_name_tag): Modified (machine_readable) + + * ov-base.cc + New include: pr-output.h + (octave_base_value::print_name_tag): Modified (machine_readable) + + * ov-file.cc, ov-file.h + New include: pr-output.h + (octave_file::print_name_tag): Modified (machine_readable) + + * ov-list.cc + New include: pr-output.h + (octave_list::print_name_tag): Modified (machine_readable) + + * ov-range.cc + (octave_range::print): Modified (machine_readable) + (octave_range::print_name_tag): Modified (machine_readable) + + * ov-struct.cc, ov-struct.h + New include: pr-output.h + (octave_struct::print): Modified (machine_readable) + (octave_struct::print_machine_readable): New method + (octave_struct::print_name_tag): Modified (machine_readable) + + * pr-output.cc + (pr_complex): Modified (machine_readable) + (print_empty_matrix): Modified (machine_readable) + (print_empty_nd_array): Modified (machine_readable) + (octave_print_internal): 11 functions modified (double, Matrix, + NDArray, Complex, ComplexMatrix, ComplexNDArray, Range, + boolNDArray, charMatrix, charNDArray, ArrayN). (machine_readable) + (machine_readable_print_bool_nd_array): New function (machine_readable) + (machine_readable, Vmachine_readable): New built-in variable + 2004-01-29 John W. Eaton * emacs/octave-mod.el: If line-end-position is not defined, Index: octave/src/ov-base-mat.cc =================================================================== RCS file: /cvs/octave/src/ov-base-mat.cc,v retrieving revision 1.25 diff -c -r1.25 ov-base-mat.cc *** octave/src/ov-base-mat.cc 2003/11/24 18:56:35 1.25 --- octave/src/ov-base-mat.cc 2004/02/03 23:07:50 *************** *** 215,221 **** octave_base_matrix::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! newline (os); } template --- 215,222 ---- octave_base_matrix::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! if (! Vmachine_readable) ! newline (os); } template Index: octave/src/ov-base-nd-array.cc =================================================================== RCS file: /cvs/octave/src/ov-base-nd-array.cc,v retrieving revision 1.6 diff -c -r1.6 ov-base-nd-array.cc *** octave/src/ov-base-nd-array.cc 2002/11/20 16:56:48 1.6 --- octave/src/ov-base-nd-array.cc 2004/02/03 23:07:50 *************** *** 129,135 **** indent (os); ! if (print_as_scalar ()) os << name << " = "; else { --- 129,137 ---- indent (os); ! if (Vmachine_readable) ! os << name << "="; ! else if (print_as_scalar ()) os << name << " = "; else { Index: octave/src/ov-base-scalar.cc =================================================================== RCS file: /cvs/octave/src/ov-base-scalar.cc,v retrieving revision 1.10 diff -c -r1.10 ov-base-scalar.cc *** octave/src/ov-base-scalar.cc 2002/12/30 23:05:27 1.10 --- octave/src/ov-base-scalar.cc 2004/02/03 23:07:51 *************** *** 115,121 **** octave_base_scalar::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! newline (os); } template --- 115,122 ---- octave_base_scalar::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! if (! Vmachine_readable) ! newline (os); } template *************** *** 123,129 **** octave_base_scalar::print_raw (std::ostream& os, bool pr_as_read_syntax) const { ! indent (os); octave_print_internal (os, scalar, pr_as_read_syntax); } --- 124,131 ---- octave_base_scalar::print_raw (std::ostream& os, bool pr_as_read_syntax) const { ! if (! Vmachine_readable) ! indent (os); octave_print_internal (os, scalar, pr_as_read_syntax); } *************** *** 132,140 **** octave_base_scalar::print_name_tag (std::ostream& os, const std::string& name) const { ! indent (os); ! os << name << " = "; ! return false; } /* --- 134,145 ---- octave_base_scalar::print_name_tag (std::ostream& os, const std::string& name) const { ! if (! Vmachine_readable) indent (os); ! os << name << (Vmachine_readable ? "=" : " = "); ! if (Vmachine_readable) ! return true; ! else ! return false; } /* Index: octave/src/ov-base.cc =================================================================== RCS file: /cvs/octave/src/ov-base.cc,v retrieving revision 1.58 diff -c -r1.58 ov-base.cc *** octave/src/ov-base.cc 2004/01/21 03:28:31 1.58 --- octave/src/ov-base.cc 2004/02/03 23:07:51 *************** *** 54,59 **** --- 54,61 ---- #include "ov-fcn-handle.h" #include "variables.h" + #include "pr-output.h" + DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_base_value, "", "unknown"); *************** *** 224,230 **** indent (os); ! if (print_as_scalar ()) os << name << " = "; else { --- 226,237 ---- indent (os); ! if (Vmachine_readable) ! { ! os << name << "="; ! retval = true; ! } ! else if (print_as_scalar ()) os << name << " = "; else { Index: octave/src/ov-file.cc =================================================================== RCS file: /cvs/octave/src/ov-file.cc,v retrieving revision 1.14 diff -c -r1.14 ov-file.cc *** octave/src/ov-file.cc 2003/11/22 12:25:44 1.14 --- octave/src/ov-file.cc 2004/02/03 23:07:51 *************** *** 37,42 **** --- 37,44 ---- #include "ov-scalar.h" #include "unwind-prot.h" + #include "pr-output.h" + DEFINE_OCTAVE_ALLOCATOR (octave_file); DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_file, "file", "file"); *************** *** 88,93 **** --- 90,96 ---- indent (os); os << "status = " << (stream.is_open () ? "open" : "closed"); + newline (os); decrement_indent_level (); *************** *** 98,106 **** bool octave_file::print_name_tag (std::ostream& os, const std::string& name) const { ! indent (os); ! os << name << " ="; ! newline (os); return false; } --- 101,115 ---- bool octave_file::print_name_tag (std::ostream& os, const std::string& name) const { ! if (Vmachine_readable) ! os << name << "="; ! else ! { ! indent (os); ! os << name << " ="; ! newline (os); ! } ! return false; } Index: octave/src/ov-list.cc =================================================================== RCS file: /cvs/octave/src/ov-list.cc,v retrieving revision 1.34 diff -c -r1.34 ov-list.cc *** octave/src/ov-list.cc 2004/01/15 02:11:59 1.34 --- octave/src/ov-list.cc 2004/02/03 23:07:51 *************** *** 45,50 **** --- 45,52 ---- #include "ls-hdf5.h" #include "ls-utils.h" + #include "pr-output.h" + DEFINE_OCTAVE_ALLOCATOR (octave_list); DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_list, "list", "list"); *************** *** 301,313 **** bool octave_list::print_name_tag (std::ostream& os, const std::string& name) const { ! indent (os); ! if (data.length () == 0) ! os << name << " = "; else { ! os << name << " ="; ! newline (os); } return false; } --- 303,324 ---- bool octave_list::print_name_tag (std::ostream& os, const std::string& name) const { ! bool retval = false; ! ! if (Vmachine_readable) ! os << name << "="; else { ! indent (os); ! ! if (data.length () == 0) ! os << name << " = "; ! else ! { ! os << name << " ="; ! ! newline (os); ! } } return false; } Index: octave/src/ov-range.cc =================================================================== RCS file: /cvs/octave/src/ov-range.cc,v retrieving revision 1.35 diff -c -r1.35 ov-range.cc *** octave/src/ov-range.cc 2004/01/06 21:53:34 1.35 --- octave/src/ov-range.cc 2004/02/03 23:07:51 *************** *** 222,228 **** octave_range::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! newline (os); } void --- 222,229 ---- octave_range::print (std::ostream& os, bool pr_as_read_syntax) const { print_raw (os, pr_as_read_syntax); ! if (! Vmachine_readable) ! newline (os); } void *************** *** 241,247 **** indent (os); ! if (n == 0 || n == 1) os << name << " = "; else { --- 242,253 ---- indent (os); ! if (Vmachine_readable) ! { ! os << name << "="; ! retval = true; ! } ! else if (n == 0 || n == 1) os << name << " = "; else { Index: octave/src/ov-struct.cc =================================================================== RCS file: /cvs/octave/src/ov-struct.cc,v retrieving revision 1.39 diff -c -r1.39 ov-struct.cc *** octave/src/ov-struct.cc 2004/01/15 02:11:59 1.39 --- octave/src/ov-struct.cc 2004/02/03 23:07:51 *************** *** 46,51 **** --- 46,53 ---- #include "ls-hdf5.h" #include "ls-utils.h" + #include "pr-output.h" + DEFINE_OCTAVE_ALLOCATOR(octave_struct); DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_struct, "struct", "struct"); *************** *** 354,363 **** void octave_struct::print (std::ostream& os, bool) const { ! print_raw (os); } void octave_struct::print_raw (std::ostream& os, bool) const { // XXX FIXME XXX -- would be nice to print the output in some --- 356,394 ---- void octave_struct::print (std::ostream& os, bool) const { ! if (Vmachine_readable) ! print_machine_readable (os); ! else ! print_raw (os); } void + octave_struct::print_machine_readable (std::ostream& os) const + { + // XXX FIXME XXX -- would be nice to print the output in some + // standard order. Maybe all substructures first, maybe + // alphabetize entries, etc. + + os << MACHINE_READABLE_STRUCT_START_TAG; + + int n = map.numel (); + + for (Octave_map::const_iterator p = map.begin (); p != map.end (); p++) + { + std::string key = map.key (p); + Cell val = map.contents (p); + + octave_value tmp = (n == 1) ? val(0) : octave_value (val, true); + + // Not using print_with_name because we don't want additional newlines + tmp.print_name_tag (os, key); + tmp.print (os, false); + } + + os << MACHINE_READABLE_STRUCT_END_TAG; + } + + void octave_struct::print_raw (std::ostream& os, bool) const { // XXX FIXME XXX -- would be nice to print the output in some *************** *** 441,447 **** indent (os); ! if (Vstruct_levels_to_print < 0) os << name << " = "; else { --- 472,483 ---- indent (os); ! if (Vmachine_readable) ! { ! os << name << "="; ! retval = true; ! } ! else if (Vstruct_levels_to_print < 0) os << name << " = "; else { Index: octave/src/ov-struct.h =================================================================== RCS file: /cvs/octave/src/ov-struct.h,v retrieving revision 1.27 diff -c -r1.27 ov-struct.h *** octave/src/ov-struct.h 2004/01/06 21:53:34 1.27 --- octave/src/ov-struct.h 2004/02/03 23:07:52 *************** *** 103,108 **** --- 103,110 ---- void print (std::ostream& os, bool pr_as_read_syntax = false) const; + void print_machine_readable (std::ostream& os) const; + void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const; bool print_name_tag (std::ostream& os, const std::string& name) const; Index: octave/src/pr-output.cc =================================================================== RCS file: /cvs/octave/src/pr-output.cc,v retrieving revision 1.119 diff -c -r1.119 pr-output.cc *** octave/src/pr-output.cc 2003/11/25 06:07:28 1.119 --- octave/src/pr-output.cc 2004/02/03 23:07:53 *************** *** 57,66 **** --- 57,71 ---- #include "utils.h" #include "variables.h" + #include "pr-output.h" + // TRUE means use a scaled fixed point format for `format long' and // `format short'. static bool Vfixed_point_format; + // If TRUE, make output easier to parse + bool Vmachine_readable = false; + // The maximum field width for a number printed by the default output // routines. static int Voutput_max_field_width; *************** *** 1238,1248 **** double r = tmp.real (); ! pr_float (os, r, r_fw); ! if (! bank_format) { double i = tmp.imag (); if (! (hex_format || bit_format) && lo_ieee_signbit (i)) { os << " - "; --- 1243,1267 ---- double r = tmp.real (); ! if (Vmachine_readable) ! { ! os << "("; ! ! pr_float (os, r, 0); ! } ! else ! pr_float (os, r, r_fw); ! if (Vmachine_readable) { double i = tmp.imag (); + os << ","; + pr_float (os, i, 0); + os << ")"; + } + else if (! bank_format) + { + double i = tmp.imag (); if (! (hex_format || bit_format) && lo_ieee_signbit (i)) { os << " - "; *************** *** 1267,1273 **** { assert (nr == 0 || nc == 0); ! if (pr_as_read_syntax) { if (nr == 0 && nc == 0) os << "[]"; --- 1286,1294 ---- { assert (nr == 0 || nc == 0); ! if (Vmachine_readable) ! os << MACHINE_READABLE_EMPTY_TAG; ! else if (pr_as_read_syntax) { if (nr == 0 && nc == 0) os << "[]"; *************** *** 1289,1294 **** --- 1310,1317 ---- { assert (dims.any_zero ()); + if (Vmachine_readable) + os << MACHINE_READABLE_EMPTY_TAG; if (pr_as_read_syntax) os << "zeros (" << dims.str (',') << ")"; else *************** *** 1357,1364 **** octave_print_internal (std::ostream& os, double d, bool /* pr_as_read_syntax */) { ! if (plus_format) { pr_plus_format (os, d); } else --- 1380,1403 ---- octave_print_internal (std::ostream& os, double d, bool /* pr_as_read_syntax */) { ! if (Vmachine_readable) { + float_format fmt; + curr_real_fmt = &fmt; + + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->scientific (); + + pr_float (os, d); + os << MACHINE_READABLE_ELEMENT_END_TAG; + + curr_real_fmt = 0; + } + else if (plus_format) + { pr_plus_format (os, d); } else *************** *** 1378,1384 **** int nr = m.rows (); int nc = m.columns (); ! if (nr == 0 || nc == 0) print_empty_matrix (os, nr, nc, pr_as_read_syntax); else if (plus_format && ! pr_as_read_syntax) { --- 1417,1425 ---- int nr = m.rows (); int nc = m.columns (); ! if (Vmachine_readable) ! machine_readable_print_nd_array (os, m); ! else if (nr == 0 || nc == 0) print_empty_matrix (os, nr, nc, pr_as_read_syntax); else if (plus_format && ! pr_as_read_syntax) { *************** *** 1389,1398 **** OCTAVE_QUIT; pr_plus_format (os, m(i,j)); - } ! if (i < nr - 1) ! os << "\n"; } } else --- 1430,1439 ---- OCTAVE_QUIT; pr_plus_format (os, m(i,j)); ! if (i < nr - 1) ! os << "\n"; ! } } } else *************** *** 1505,1510 **** --- 1546,1762 ---- } } + void machine_readable_print_bool_nd_array (std::ostream& os, + const boolNDArray& nda) + { + // Print a multi-dimensional matrix in a machine-readable way. + // The matrix consists of boolean values + os << MACHINE_READABLE_MATRIX_START_TAG; + + if (nda.is_empty ()) + print_empty_nd_array (os, nda.dims (), false); + else + { + int ndims = nda.ndims (); + dim_vector dims = nda.dims (); + Array ra_idx (ndims, 0); + int m = nda.numel(); + float_format fmt; + + curr_real_fmt = &fmt; + + // Special settings for machine_readable ... + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->fixed (); + + for (int i = 0; i < m; i++) + { + OCTAVE_QUIT; + + if (m > 1) + { + for (int k = 0; k < ndims; k++) + { + os << ra_idx(k) + 1; + if (k < ndims - 1) + os << ","; + else + os << MACHINE_READABLE_EQUIVALENT_TAG; + } + } + + os << nda(ra_idx) << MACHINE_READABLE_ELEMENT_END_TAG; + + if (i < m) + increment_index (ra_idx, dims, 0); + } + + curr_real_fmt = 0; + } + os << MACHINE_READABLE_MATRIX_END_TAG; + } + + void machine_readable_print_char_nd_array (std::ostream& os, + const charNDArray& nda) + { + + // Print a multi-dimensional matrix in a machine-readable way. + // The matrix consists of characters + os << MACHINE_READABLE_MATRIX_START_TAG; + + if (nda.is_empty ()) + print_empty_nd_array (os, nda.dims (), false); + else + { + int ndims = nda.ndims (); + dim_vector dims = nda.dims (); + Array ra_idx (ndims, 0); + int m = nda.numel(); + + for (int i = 0; i < m; i++) + { + OCTAVE_QUIT; + + if (m > 1) + { + for (int k = 0; k < ndims; k++) + { + os << ra_idx(k) + 1; + if (k < ndims - 1) + os << ","; + else + os << MACHINE_READABLE_EQUIVALENT_TAG; + } + } + + os << "\"" << undo_string_escape (nda(ra_idx)) << "\""; + os << MACHINE_READABLE_ELEMENT_END_TAG; + + if (i < m) + increment_index (ra_idx, dims, 0); + } + } + os << MACHINE_READABLE_MATRIX_END_TAG; + } + + void machine_readable_print_complex_nd_array (std::ostream& os, + const ComplexNDArray& nda) + { + // Print a multi-dimensional matrix in a machine-readable way. + // The matrix consists of complex numbers + os << MACHINE_READABLE_MATRIX_START_TAG; + + if (nda.is_empty ()) + print_empty_nd_array (os, nda.dims (), false); + else + { + int ndims = nda.ndims (); + dim_vector dims = nda.dims (); + Array ra_idx (ndims, 0); + int m = nda.numel(); + float_format fmt, ifmt; + + curr_real_fmt = &fmt; + curr_imag_fmt = &ifmt; + + // Special settings for machine_readable ... + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->scientific (); + curr_imag_fmt->lowercase (); + curr_imag_fmt->trailing_zeros (true); + curr_imag_fmt->precision (current_output_precision ()); + curr_imag_fmt->width (0); + curr_imag_fmt->scientific (); + + for (int i = 0; i < m; i++) + { + OCTAVE_QUIT; + + if (m > 1) + { + for (int k = 0; k < ndims; k++) + { + os << ra_idx(k) + 1; + if (k < ndims - 1) + os << ","; + else + os << MACHINE_READABLE_EQUIVALENT_TAG; + } + } + + pr_complex (os, nda(ra_idx), 0, 0, 1.0); + os << MACHINE_READABLE_ELEMENT_END_TAG; + + if (i < m) + increment_index (ra_idx, dims, 0); + } + + curr_real_fmt = 0; + curr_imag_fmt = 0; + } + os << MACHINE_READABLE_MATRIX_END_TAG; + } + + void machine_readable_print_nd_array (std::ostream& os, const NDArray& nda) + { + // Print a multi-dimensional matrix in a machine-readable way. + // The matrix consists of real numbers + + os << MACHINE_READABLE_MATRIX_START_TAG; + + if (nda.is_empty ()) + print_empty_nd_array (os, nda.dims (), false); + else + { + int ndims = nda.ndims (); + dim_vector dims = nda.dims (); + Array ra_idx (ndims, 0); + int m = nda.numel(); + float_format fmt; + + curr_real_fmt = &fmt; + + // Special settings for machine_readable ... + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->scientific (); + + for (int i = 0; i < m; i++) + { + OCTAVE_QUIT; + + if (m > 1) + { + for (int k = 0; k < ndims; k++) + { + os << ra_idx(k) + 1; + if (k < ndims - 1) + os << ","; + else + os << MACHINE_READABLE_EQUIVALENT_TAG; + } + } + + pr_float (os, nda(ra_idx), 0, 1.0); + os << MACHINE_READABLE_ELEMENT_END_TAG; + + if (i < m) + increment_index (ra_idx, dims, 0); + } + + curr_real_fmt = 0; + } + os << MACHINE_READABLE_MATRIX_END_TAG; + } + #define PRINT_ND_ARRAY(os, nda, NDA_T, ELT_T, MAT_T) \ do \ { \ *************** *** 1584,1595 **** { case 1: case 2: ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! PRINT_ND_ARRAY (os, nda, NDArray, double, Matrix); break; } } --- 1836,1853 ---- { case 1: case 2: ! if (Vmachine_readable) ! machine_readable_print_nd_array (os, nda); ! else ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! if (Vmachine_readable) ! machine_readable_print_nd_array (os, nda); ! else ! PRINT_ND_ARRAY (os, nda, NDArray, double, Matrix); break; } } *************** *** 1617,1624 **** octave_print_internal (std::ostream& os, const Complex& c, bool /* pr_as_read_syntax */) { ! if (plus_format) { pr_plus_format (os, c); } else --- 1875,1906 ---- octave_print_internal (std::ostream& os, const Complex& c, bool /* pr_as_read_syntax */) { ! if (Vmachine_readable) { + float_format fmt, ifmt; + + curr_real_fmt = &fmt; + curr_imag_fmt = &ifmt; + + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->scientific (); + + curr_imag_fmt->lowercase (); + curr_imag_fmt->trailing_zeros (true); + curr_imag_fmt->precision (current_output_precision ()); + curr_imag_fmt->width (0); + curr_imag_fmt->scientific (); + + pr_complex (os, c); + + curr_real_fmt = 0; + curr_imag_fmt = 0; + } + else if (plus_format) + { pr_plus_format (os, c); } else *************** *** 1638,1644 **** int nr = cm.rows (); int nc = cm.columns (); ! if (nr == 0 || nc == 0) print_empty_matrix (os, nr, nc, pr_as_read_syntax); else if (plus_format && ! pr_as_read_syntax) { --- 1920,1928 ---- int nr = cm.rows (); int nc = cm.columns (); ! if (Vmachine_readable) ! machine_readable_print_complex_nd_array (os, cm); ! else if (nr == 0 || nc == 0) print_empty_matrix (os, nr, nc, pr_as_read_syntax); else if (plus_format && ! pr_as_read_syntax) { *************** *** 1774,1785 **** { case 1: case 2: ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! PRINT_ND_ARRAY (os, nda, ComplexNDArray, Complex, ComplexMatrix); break; } } --- 2058,2075 ---- { case 1: case 2: ! if (Vmachine_readable) ! machine_readable_print_complex_nd_array (os, nda); ! else ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! if (Vmachine_readable) ! machine_readable_print_complex_nd_array (os, nda); ! else ! PRINT_ND_ARRAY (os, nda, ComplexNDArray, Complex, ComplexMatrix); break; } } *************** *** 1792,1799 **** double increment = r.inc (); double limit = r.limit (); int num_elem = r.nelem (); ! if (plus_format && ! pr_as_read_syntax) { for (int i = 0; i < num_elem; i++) { --- 2082,2119 ---- double increment = r.inc (); double limit = r.limit (); int num_elem = r.nelem (); + + if (Vmachine_readable) + { + double val; + float_format fmt; + + curr_real_fmt = &fmt; + + // Special settings for machine_readable ... + curr_real_fmt->lowercase (); + curr_real_fmt->trailing_zeros (true); + curr_real_fmt->precision (current_output_precision ()); + curr_real_fmt->width (0); + curr_real_fmt->scientific (); + + os << MACHINE_READABLE_MATRIX_START_TAG; + + for (int i = 0; i < num_elem; i++) + { + OCTAVE_QUIT; + + val = base + i * increment; + os << "1," << i + 1 << MACHINE_READABLE_EQUIVALENT_TAG; + pr_float(os, val, 0); + os << MACHINE_READABLE_ELEMENT_END_TAG; + } ! os << MACHINE_READABLE_MATRIX_END_TAG; ! ! curr_real_fmt = 0; ! } ! else if (plus_format && ! pr_as_read_syntax) { for (int i = 0; i < num_elem; i++) { *************** *** 1906,1917 **** { case 1: case 2: ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! PRINT_ND_ARRAY (os, nda, boolNDArray, bool, boolMatrix); break; } } --- 2226,2243 ---- { case 1: case 2: ! if (Vmachine_readable) ! machine_readable_print_bool_nd_array (os, nda); ! else ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent); break; default: ! if (Vmachine_readable) ! machine_readable_print_bool_nd_array (os, nda); ! else ! PRINT_ND_ARRAY (os, nda, boolNDArray, bool, boolMatrix); break; } } *************** *** 1922,1948 **** int /* extra_indent XXX FIXME XXX */, bool pr_as_string) { ! if (pr_as_string) { int nstr = chm.rows (); ! if (pr_as_read_syntax && nstr > 1) os << "[ "; ! if (nstr != 0) { for (int i = 0; i < nstr; i++) { OCTAVE_QUIT; std::string row = chm.row_as_string (i); ! if (pr_as_read_syntax) { ! os << "\"" << undo_string_escapes (row) << "\""; ! if (i < nstr - 1) ! os << "; "; } else { --- 2248,2286 ---- int /* extra_indent XXX FIXME XXX */, bool pr_as_string) { ! if (pr_as_string || Vmachine_readable) { int nstr = chm.rows (); ! if (! Vmachine_readable && pr_as_read_syntax && nstr > 1) os << "[ "; ! if (nstr != 0 || Vmachine_readable) { + if (Vmachine_readable) + os << MACHINE_READABLE_MATRIX_START_TAG; + for (int i = 0; i < nstr; i++) { OCTAVE_QUIT; std::string row = chm.row_as_string (i); ! if (pr_as_read_syntax || Vmachine_readable) { ! if (Vmachine_readable) ! os << i << ",:" << MACHINE_READABLE_EQUIVALENT_TAG ! << "\"" << undo_string_escapes (row) << "\""; ! if (Vmachine_readable) ! { ! os << MACHINE_READABLE_ELEMENT_END_TAG; ! } ! else ! { ! if (i < nstr - 1) ! os << "; "; ! } } else { *************** *** 1952,1965 **** os << "\n"; } } } ! if (pr_as_read_syntax && nstr > 1) os << " ]"; } else { ! os << "sorry, printing char matrices not implemented yet\n"; } } --- 2290,2324 ---- os << "\n"; } } + if (Vmachine_readable) + os << MACHINE_READABLE_MATRIX_END_TAG; } ! if (! Vmachine_readable && pr_as_read_syntax && nstr > 1) os << " ]"; } else { ! int nc = chm.columns (); ! int nr = chm.rows (); ! ! if (Vmachine_readable) ! { ! os << MACHINE_READABLE_MATRIX_START_TAG; ! ! for (int i = 0; i < nr; i++) ! { ! for (int j = 0; i < nc; i++) ! { ! os << i + 1 << "," << j + 1 << "='" << chm(i,j) ! << "'" << MACHINE_READABLE_ELEMENT_END_TAG; ! } ! } ! ! os << MACHINE_READABLE_MATRIX_END_TAG; ! } ! else ! os << "sorry, printing char matrices not implemented yet\n"; } } *************** *** 1972,1983 **** { case 1: case 2: ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent, pr_as_string); break; default: ! PRINT_ND_ARRAY (os, nda, charNDArray, char, charMatrix); break; } } --- 2331,2345 ---- { case 1: case 2: ! octave_print_internal (os, nda.matrix_value (), ! pr_as_read_syntax, extra_indent, pr_as_string); break; default: ! if (Vmachine_readable) ! machine_readable_print_char_nd_array (os, nda); ! else ! PRINT_ND_ARRAY (os, nda, charNDArray, char, charMatrix); break; } } *************** *** 1989,1995 **** // XXX FIXME XXX -- this mostly duplicates the code in the // PRINT_ND_ARRAY macro. ! if (nda.is_empty ()) print_empty_nd_array (os, nda.dims (), pr_as_read_syntax); else if (nda.length () == 1) { --- 2351,2361 ---- // XXX FIXME XXX -- this mostly duplicates the code in the // PRINT_ND_ARRAY macro. ! // XXX FIXME XXX -- not fixed with regards to the machine_readable option ! ! if (Vmachine_readable) ! os << "sorry, printing string-arrays with option machine_readable not implemented yet..."; ! else if (nda.is_empty ()) print_empty_nd_array (os, nda.dims (), pr_as_read_syntax); else if (nda.length () == 1) { *************** *** 2519,2524 **** --- 2885,2898 ---- } static int + machine_readable (void) + { + Vmachine_readable = check_preference ("machine_readable"); + + return 0; + } + + static int output_max_field_width (void) { double val; *************** *** 2601,2606 **** --- 2975,2997 ---- @code{fixed_point_format} to a nonzero value.\n\ \n\ The default value of @code{fixed_point_format} is 0.\n\ + @end defvr"); + + DEFVAR (machine_readable, false, machine_readable, + "-*- texinfo -*-\n\ + @defvr {Built-in Variable} machine_readable\n\ + If the value of @code{machine_readable} is @code{FALSE}, the output is easy\n\ + to read (for humans). Otherwise, the output is easier to interpret from\n\ + another program (and harder to read for humans).\n\ + \n\ + The output from whos uses the following syntax:\n\ + :\n\ + ,,,,,;\n\ + ...\n\ + \n\ + \n\ + This variable overrides some other variables, like @code{who_traditional}\n\ + and @code{who_print_dims}.\n\ @end defvr"); DEFVAR (output_max_field_width, 10.0, output_max_field_width, Index: octave/src/pr-output.h =================================================================== RCS file: /cvs/octave/src/pr-output.h,v retrieving revision 1.28 diff -c -r1.28 pr-output.h *** octave/src/pr-output.h 2003/11/24 21:24:37 1.28 --- octave/src/pr-output.h 2004/02/03 23:07:53 *************** *** 27,32 **** --- 27,40 ---- #include "oct-cmplx.h" + #define MACHINE_READABLE_EMPTY_TAG "" + #define MACHINE_READABLE_ELEMENT_END_TAG ";" + #define MACHINE_READABLE_STRUCT_START_TAG "{" + #define MACHINE_READABLE_STRUCT_END_TAG "};" + #define MACHINE_READABLE_MATRIX_START_TAG "[" + #define MACHINE_READABLE_MATRIX_END_TAG "];" + #define MACHINE_READABLE_EQUIVALENT_TAG ":" + template class ArrayN; class ComplexMatrix; class ComplexNDArray; *************** *** 39,44 **** --- 47,60 ---- class charNDArray; class Cell; + void machine_readable_print_nd_array (std::ostream& os, const NDArray& nda); + + void machine_readable_print_complex_nd_array (std::ostream& os, const ComplexNDArray& nda); + + void machine_readable_print_char_nd_array (std::ostream& os, const charNDArray& nda); + + void machine_readable_print_bool_nd_array (std::ostream& os, const boolNDArray& nda); + extern void octave_print_internal (std::ostream& os, double d, bool pr_as_read_syntax = false); *************** *** 104,109 **** --- 120,128 ---- bool pr_as_read_syntax = false, int extra_indent = 0, bool pr_as_string = false); + + // If TRUE, make output easier to parse + extern bool Vmachine_readable; #endif