Mercurial > fem-fenics-eugenio
diff src/function.h @ 46:a64e195d0611
Wrapper class for dolfin::Function
* function.h: definition of the new clas function which derives from
octave_base_value
* fem_func.cc: take as input a functionspace and a vector and creates
an object of type function
* fem_init_env: register also the class function
author | gedeone-octave <marco.vassallo@outlook.com> |
---|---|
date | Mon, 22 Jul 2013 14:56:51 +0200 |
parents | |
children | 93e538063278 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/function.h Mon Jul 22 14:56:51 2013 +0200 @@ -0,0 +1,64 @@ +/* + Copyright (C) 2013 Marco Vassallo + + This program 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 of the License, or (at your option) any later + version. + + This program 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 + this program; if not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _FUNCTION_OCTAVE_ +#define _FUNCTION_OCTAVE_ + +#include <memory> +#include <vector> +#include <dolfin.h> +#include <octave/oct.h> + +class function : public octave_base_value +{ + + public: + + function () : octave_base_value (), fun () { } + + function (boost::shared_ptr <const dolfin::Function> _fun) : + octave_base_value (), fun (_fun) { } + + void print (std::ostream& os, bool pr_as_read_syntax = false) const + { os << "Function : " << (*fun).str(true) << std::endl; } + + ~function(void) {} + + bool is_defined (void) const { return true; } + + const dolfin::Function & get_fun (void) const + { return (*fun); } + + const boost::shared_ptr <const dolfin::Function> & get_pfun (void) const + { return fun; } + + void set_fun (dolfin::Function & _fun) + { + dolfin::Function * p = new dolfin::Function (_fun); + fun = boost::shared_ptr<const dolfin::Function> (p); + } + + private: + + boost::shared_ptr <const dolfin::Function> fun; + + DECLARE_OCTAVE_ALLOCATOR; + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; + +}; + static bool function_type_loaded = false; +#endif