view examples/fortdemo.cc @ 17796:6b51f5f44aea

find symbols in proper scope when debugging (bug #40397) * lex.h (lexical_feedback::symbol_table_context::init_scope): Delete member variable and all uses. (lexical_feedback::symbol_table_context::pop): Assert that the context is not empty before popping. (lexical_feedback::symbol_table_context::push): Use default argument. (lexical_feedback::symbol_table_context::curr_scope): If empty, return symbol_table::current_scope, not the initial scope in effect when the object is created. * oct-parse.in.yy (octave_base_parser::make_anon_fcn_handle, octave_base_parser::recover_from_parsing_function): Don't check for empty lexer.symtab_context here.
author John W. Eaton <jwe@octave.org>
date Tue, 29 Oct 2013 16:29:46 -0400
parents 224e76250443
children
line wrap: on
line source

#include <octave/oct.h>
#include <octave/f77-fcn.h>

extern "C"
{
  F77_RET_T
  F77_FUNC (fortsub, FORTSUB)
    (const int&, double*, F77_CHAR_ARG_DECL F77_CHAR_ARG_LEN_DECL);
}

DEFUN_DLD (fortdemo, args, , "Fortran Demo")
{
  octave_value_list retval;
  int nargin = args.length ();

  if (nargin != 1)
    print_usage ();
  else
    {
      NDArray a = args(0).array_value ();
      if (! error_state)
        {
          double *av = a.fortran_vec ();
          octave_idx_type na = a.numel ();
          OCTAVE_LOCAL_BUFFER (char, ctmp, 128);

          F77_XFCN (fortsub, FORTSUB,
                    (na, av, ctmp F77_CHAR_ARG_LEN (128)));

          retval(1) = std::string (ctmp);
          retval(0) = a;
        }
    }
  return retval;
}