view libinterp/mkbuiltins @ 16442:302157614308

deprecate symbol_table::varref functions * ov-usr-fcn.h (octave_user_function::argn_varref, octave_user_function::nargin_varref, octave_user_function::nargout_varref, octave_user_function::varargin_varref): Delete unused variables. * symtab.h (symbol_table::symbol_record::symbol_record_ref::assign, symbol_table::symbol_record::symbol_record_ref::do_non_const_unary_op, symbol_table::symbol_record::do_non_const_unary_op, (symbol_table::symbol_record::is_undefined, symbol_table::symbol_record::assign, symbol_table::assign, symbol_table::force_assign, symbol_table::global_assign, symbol_table::persistent_assign, symbol_table::top_level_assign, symbol_table::do_assign, symbol_table::do_persistent_assign): New functions. (symbol_table::symbol_record::symbol_record_ref::varref): Avoid calls to deprecated functions. (symbol_table::varref, symbol_table::force_varref, symbol_table::global_varref, symbol_table::persistent_varref, symbol_table::top_level_varref, symbol_table::do_varref, symbol_table::do_persistent_varref): Deprecate. (symbol_table::symbol_reference::is_black_hole): New function. * oct-lvalue.h, oct-lvalue.cc: Store symbol_reference instead of pointer to octave_value object. (octave_lvalue::value): Now const. (octave_lvalue::object): Delete. * pt-id.cc (tree_identifier::lvalue): Construct octave_lvalue from sym, not sym->varref. * ls-mat5.cc, oct-lvalue.cc, oct-lvalue.h, pt-jit.cc, error.cc, load-save.cc, symtab.cc, symtab.h, variables.cc, ov-fcn-handle.cc, ov-usr-fcn.cc, ov-usr-fcn.h, oct-parse.in.yy, pt-eval.cc, pt-id.h, pt-idx.cc, mex.cc: Change all uses of varref functions to use assign instead. Use varval instead of varref where appropriate. * load-save.cc (install_loaded_variable): Don't manipulate symbol_record directly.
author John W. Eaton <jwe@octave.org>
date Sat, 06 Apr 2013 11:51:23 -0400
parents bf0857c789f4
children
line wrap: on
line source

#! /bin/sh
#
# Copyright (C) 1996-2012 John W. Eaton
#
# This file is part of Octave.
# 
# Octave is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
# 
# Octave is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Octave; see the file COPYING.  If not, see
# <http://www.gnu.org/licenses/>.

if test $# -lt 2; then
  echo "usage: mkbuiltins --header|--source f1 f2 ..." 1>&2
  exit 1
fi

SED=${SED:-'sed'}

make_header=false
make_source=false
case "$1" in
  --header)
    make_header=true
    shift
  ;;
  --source)
    make_source=true
    shift
  ;;
  *)
    echo "mkbuiltins: unrecognized option: $1" 1>&2
    exit 1
  ;;
esac

if $make_header; then

  cat << \EOF
// DO NOT EDIT!  Generated automatically by mkbuiltins.

#if !defined (octave_builtin_defun_decls_h)
#define octave_builtin_defun_decls_h 1

#include "oct-obj.h"

#define DEFUN_DECL(name) \
  extern OCTINTERP_API octave_value_list \
  name (const octave_value_list& = octave_value_list (), int = 0);

EOF

 $SED -n -e 's/ *\(XDEFUN\|XDEFCONSTFUN\)_INTERNAL *( *\([_A-Za-z][_A-Za-z0-9]*\) *,.*$/DEFUN_DECL (F\2);/p; s/^ *XDEFUNX_INTERNAL *( *"\([_A-Za-z][_A-Za-z0-9]*\)" *,.*$/DEFUN_DECL (F\1);/p' "$@"

  cat << \EOF

#undef DEFUN_DECL

#endif

EOF

else

  cat << \EOF
// DO NOT EDIT!  Generated automatically by mkbuiltins.

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include "defun.h"
#include "help.h"
#include "oct-obj.h"
#include "variables.h"
#include "builtins.h"

#if defined (quad)
#undef quad
#endif

#if defined (ENABLE_DYNAMIC_LINKING)

#define XDEFUN_DLD_INTERNAL(name, args_name, nargout_name, doc)

#define XDEFUNX_DLD_INTERNAL(name, fname, args_name, nargout_name, doc)

#else

#define XDEFUN_DLD_INTERNAL(name, args_name, nargout_name, doc) \
  XDEFUN_INTERNAL(name, args_name, nargout_name, doc)

#define XDEFUNX_DLD_INTERNAL(name, fname, args_name, nargout_name, doc) \
  XDEFUNX_INTERNAL(name, fname, args_name, nargout_name, doc)

#endif

#define XDEFUN_FILE_NAME(name) \
  std::string file = name;

#define XDEFUN_INTERNAL(name, args_name, nargout_name, doc) \
  extern DECLARE_FUN (name, args_name, nargout_name); \
  install_builtin_function (F ## name, #name, file, doc); \

#define XDEFCONSTFUN_INTERNAL(name, args_name, nargout_name, doc) \
  extern DECLARE_FUN (name, args_name, nargout_name); \
  install_builtin_function (F ## name, #name, file, doc, false); \

#define XDEFUNX_INTERNAL(name, fname, args_name, nargout_name, doc) \
  extern DECLARE_FUNX (fname, args_name, nargout_name); \
  install_builtin_function (fname, name, file, doc); \

#define XDEFALIAS_INTERNAL(alias, name) \
  alias_builtin (#alias, #name);

#define XDEFCONST_INTERNAL(name, defn, doc)

EOF

  for arg
  do
    fcn=`echo "$arg" | $SED 's,.*/,,; s/\.df//; s/-/_/g;'`
    echo "static void"
    echo "install_${fcn}_fcns (void)"
    echo "{"
    cat "$arg"
    echo "}"
    echo ""
  done

  cat << \EOF

void
install_builtins (void)
{
EOF

  for arg
  do
    fcn=`echo "$arg" | $SED 's,.*/,,; s/\.df//; s/-/_/g;'`
    echo "  install_${fcn}_fcns ();"
  done

  cat << \EOF

  install_built_in_docstrings ();
}

EOF

fi

exit 0