Mercurial > hg > octave-lyh
view src/mappers.h @ 2163:8901e415035a
[project @ 1996-05-13 10:35:04 by jwe]
Initial revision
author | jwe |
---|---|
date | Mon, 13 May 1996 10:35:29 +0000 |
parents | 4dcc8b77e84a |
children | 38fea6d34daf |
line wrap: on
line source
/* Copyright (C) 1996 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 2, 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, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if !defined (octave_mappers_h) #define octave_mappers_h 1 #include <string> #include "lo-mappers.h" #include "oct-cmplx.h" typedef int (*ch_Mapper)(int); typedef double (*d_d_Mapper)(double); typedef double (*d_c_Mapper)(const Complex&); typedef Complex (*c_c_Mapper)(const Complex&); // ch_mapper is a kluge. // // If can_return_complex_for_real_arg is 1, lower_limit and // upper_limit specify the range of values for which a real arg // returns a real value. Outside that range, we have to convert args // to complex, and call the complex valued function. // // If can_return_complex_for_real_arg is 0, lower_limit and // upper_limit are ignored. struct builtin_mapper_function { builtin_mapper_function (ch_Mapper ch = 0, d_d_Mapper dd = 0, d_c_Mapper dc = 0, c_c_Mapper cc = 0, double l = 0.0, double u = 0.0, int cfr = 0, const string n = string (), const string& h = string ()) : ch_mapper (ch), d_d_mapper (dd), d_c_mapper (dc), c_c_mapper (cc), lower_limit (l), upper_limit (u), can_return_complex_for_real_arg (cfr), name (n), help_string (h) { } builtin_mapper_function (const builtin_mapper_function& mf) : ch_mapper (mf.ch_mapper), d_d_mapper (mf.d_d_mapper), d_c_mapper (mf.d_c_mapper), c_c_mapper (mf.c_c_mapper), lower_limit (mf.lower_limit), upper_limit (mf.upper_limit), can_return_complex_for_real_arg (mf.can_return_complex_for_real_arg), name (mf.name), help_string (mf.help_string) { } builtin_mapper_function& operator = (const builtin_mapper_function& mf) { if (&mf != this) { ch_mapper = mf.ch_mapper; d_d_mapper = mf.d_d_mapper; d_c_mapper = mf.d_c_mapper; c_c_mapper = mf.c_c_mapper; lower_limit = mf.lower_limit; upper_limit = mf.upper_limit; can_return_complex_for_real_arg = mf.can_return_complex_for_real_arg; name = mf.name; help_string = mf.help_string; } return *this; } ~builtin_mapper_function (void) { } ch_Mapper ch_mapper; d_d_Mapper d_d_mapper; d_c_Mapper d_c_mapper; c_c_Mapper c_c_mapper; double lower_limit; double upper_limit; int can_return_complex_for_real_arg; string name; string help_string; }; extern void install_mapper_functions (void); #endif /* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: *** */