Wolframe, 0.0.3

formFunction.hpp
Go to the documentation of this file.
1 /************************************************************************
2 
3  Copyright (C) 2011 - 2014 Project Wolframe.
4  All rights reserved.
5 
6  This file is part of Project Wolframe.
7 
8  Commercial Usage
9  Licensees holding valid Project Wolframe Commercial licenses may
10  use this file in accordance with the Project Wolframe
11  Commercial License Agreement provided with the Software or,
12  alternatively, in accordance with the terms contained
13  in a written agreement between the licensee and Project Wolframe.
14 
15  GNU General Public License Usage
16  Alternatively, you can redistribute this file and/or modify it
17  under the terms of the GNU General Public License as published by
18  the Free Software Foundation, either version 3 of the License, or
19  (at your option) any later version.
20 
21  Wolframe is distributed in the hope that it will be useful,
22  but WITHOUT ANY WARRANTY; without even the implied warranty of
23  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24  GNU General Public License for more details.
25 
26  You should have received a copy of the GNU General Public License
27  along with Wolframe. If not, see <http://www.gnu.org/licenses/>.
28 
29  If you have questions regarding the use of this file, please contact
30  Project Wolframe.
31 
32 ************************************************************************/
35 
36 #ifndef _LANGBIND_FORM_FUNCTION_HPP_INCLUDED
37 #define _LANGBIND_FORM_FUNCTION_HPP_INCLUDED
38 #include "filter/typedfilter.hpp"
39 #include "serialize/flags.hpp"
40 #include <string>
41 #include <boost/shared_ptr.hpp>
42 
43 namespace _Wolframe {
44 namespace proc {
46 class ExecContext;
47 }
48 namespace langbind {
49 
53 {
54 public:
57 
60  virtual bool call()=0;
61 
67 
70  virtual TypedInputFilterR result() const=0;
71 };
72 
74 typedef boost::shared_ptr<FormFunctionClosure> FormFunctionClosureR;
75 
79 {
80 public:
82  virtual ~FormFunction(){}
84  virtual bool initializeContext(){return true;}
86  virtual FormFunctionClosure* createClosure() const=0;
87 };
88 
90 typedef boost::shared_ptr<FormFunction> FormFunctionR;
91 
92 }}//namespace
93 #endif
94 
virtual TypedInputFilterR result() const =0
Get the iterator for the function result.
boost::shared_ptr< FormFunctionClosure > FormFunctionClosureR
Shared form function execution context.
Definition: formFunction.hpp:74
virtual ~FormFunction()
Destructor.
Definition: formFunction.hpp:82
Form function execution context interface.
Definition: formFunction.hpp:52
Execution context passed to functions for referencing resources and to define authorization dependend...
Definition: execContext.hpp:47
boost::shared_ptr< TypedInputFilter > TypedInputFilterR
Shared input filter (langbind::TypedInputFilter) reference.
Definition: typedfilter.hpp:98
boost::shared_ptr< FormFunction > FormFunctionR
Shared form function interface.
Definition: formFunction.hpp:90
Form function interface.
Definition: formFunction.hpp:78
Enum
the enumeration that can also be interpreted as bit set
Definition: flags.hpp:47
virtual bool initializeContext()
Optional function to implement if there is anything to be initialized after creation of all functions...
Definition: formFunction.hpp:84
virtual void init(proc::ExecContext *c, const TypedInputFilterR &i, serialize::Flags::Enum f=serialize::Flags::None)=0
Initialization of call context for a new call.
Defines the flags for serialization behaviour.
virtual ~FormFunctionClosure()
Destructor.
Definition: formFunction.hpp:56
virtual FormFunctionClosure * createClosure() const =0
Creates and returns a closure to execute this function.
Empty flag set (no flags set)
Definition: flags.hpp:49
virtual bool call()=0
Calls the function with the input from the input filter specified.
Typed interface for input/output filter.