CXXR (C++ R)
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
current-release
src
include
CXXR
FunctionContext.hpp
Go to the documentation of this file.
1
/*CXXR $Id: FunctionContext.hpp 1348 2013-02-25 17:49:03Z arr $
2
*CXXR
3
*CXXR This file is part of CXXR, a project to refactor the R interpreter
4
*CXXR into C++. It may consist in whole or in part of program code and
5
*CXXR documentation taken from the R project itself, incorporated into
6
*CXXR CXXR (and possibly MODIFIED) under the terms of the GNU General Public
7
*CXXR Licence.
8
*CXXR
9
*CXXR CXXR is Copyright (C) 2008-13 Andrew R. Runnalls, subject to such other
10
*CXXR copyrights and copyright restrictions as may be stated below.
11
*CXXR
12
*CXXR CXXR is not part of the R project, and bugs and other issues should
13
*CXXR not be reported via r-bugs or other R project channels; instead refer
14
*CXXR to the CXXR website.
15
*CXXR */
16
17
/*
18
* R : A Computer Language for Statistical Data Analysis
19
*
20
* This program is free software; you can redistribute it and/or modify
21
* it under the terms of the GNU General Public License as published by
22
* the Free Software Foundation; either version 2.1 of the License, or
23
* (at your option) any later version.
24
*
25
* This program is distributed in the hope that it will be useful,
26
* but WITHOUT ANY WARRANTY; without even the implied warranty of
27
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
* GNU Lesser General Public License for more details.
29
*
30
* You should have received a copy of the GNU General Public License
31
* along with this program; if not, a copy is available at
32
* http://www.r-project.org/Licenses/
33
*/
34
40
#ifndef FUNCTIONCONTEXT_HPP
41
#define FUNCTIONCONTEXT_HPP 1
42
43
#include "
CXXR/Evaluator_Context.hpp
"
44
#include "
CXXR/Expression.h
"
45
#include "
CXXR/FunctionBase.h
"
46
#include "
CXXR/GCStackRoot.hpp
"
47
48
extern
"C"
{
49
// Parked here temporarily:
50
extern
CXXR::RObject
* R_Srcref;
51
}
52
53
namespace
CXXR {
64
class
FunctionContext
:
public
Evaluator::Context
{
65
public
:
77
FunctionContext
(
const
Expression
* the_call,
Environment
* call_env,
78
const
FunctionBase
*
function
);
79
80
~
FunctionContext
();
81
87
const
Expression
*
call
()
const
88
{
89
return
m_call;
90
}
91
97
Environment
*
callEnvironment
()
const
98
{
99
return
m_call_env;
100
}
101
107
const
FunctionBase
*
function
()
const
108
{
109
return
m_function;
110
}
111
124
static
FunctionContext
*
innermost
(
Evaluator::Context
* start
125
=
Evaluator::Context::innermost
());
126
132
RObject
*
sourceLocation
()
const
133
{
134
return
m_srcref;
135
}
136
137
private
:
138
GCStackRoot<>
m_srcref;
139
GCStackRoot<const Expression>
m_call;
140
GCStackRoot<Environment>
m_call_env;
141
GCStackRoot<const FunctionBase>
m_function;
142
};
143
}
// namespace CXXR
144
145
#endif // FUNCTIONCONTEXT_HPP
Generated by
1.8.1