AERA
submodules
AERA
r_exec
hlp_context.h
1
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
2
//_/_/
3
//_/_/ AERA
4
//_/_/ Autocatalytic Endogenous Reflective Architecture
5
//_/_/
6
//_/_/ Copyright (c) 2018-2025 Jeff Thompson
7
//_/_/ Copyright (c) 2018-2025 Kristinn R. Thorisson
8
//_/_/ Copyright (c) 2018-2025 Icelandic Institute for Intelligent Machines
9
//_/_/ http://www.iiim.is
10
//_/_/
11
//_/_/ Copyright (c) 2010-2012 Eric Nivel
12
//_/_/ Center for Analysis and Design of Intelligent Agents
13
//_/_/ Reykjavik University, Menntavegur 1, 102 Reykjavik, Iceland
14
//_/_/ http://cadia.ru.is
15
//_/_/
16
//_/_/ Part of this software was developed by Eric Nivel
17
//_/_/ in the HUMANOBS EU research project, which included
18
//_/_/ the following parties:
19
//_/_/
20
//_/_/ Autonomous Systems Laboratory
21
//_/_/ Technical University of Madrid, Spain
22
//_/_/ http://www.aslab.org/
23
//_/_/
24
//_/_/ Communicative Machines
25
//_/_/ Edinburgh, United Kingdom
26
//_/_/ http://www.cmlabs.com/
27
//_/_/
28
//_/_/ Istituto Dalle Molle di Studi sull'Intelligenza Artificiale
29
//_/_/ University of Lugano and SUPSI, Switzerland
30
//_/_/ http://www.idsia.ch/
31
//_/_/
32
//_/_/ Institute of Cognitive Sciences and Technologies
33
//_/_/ Consiglio Nazionale delle Ricerche, Italy
34
//_/_/ http://www.istc.cnr.it/
35
//_/_/
36
//_/_/ Dipartimento di Ingegneria Informatica
37
//_/_/ University of Palermo, Italy
38
//_/_/ http://diid.unipa.it/roboticslab/
39
//_/_/
40
//_/_/
41
//_/_/ --- HUMANOBS Open-Source BSD License, with CADIA Clause v 1.0 ---
42
//_/_/
43
//_/_/ Redistribution and use in source and binary forms, with or without
44
//_/_/ modification, is permitted provided that the following conditions
45
//_/_/ are met:
46
//_/_/ - Redistributions of source code must retain the above copyright
47
//_/_/ and collaboration notice, this list of conditions and the
48
//_/_/ following disclaimer.
49
//_/_/ - Redistributions in binary form must reproduce the above copyright
50
//_/_/ notice, this list of conditions and the following disclaimer
51
//_/_/ in the documentation and/or other materials provided with
52
//_/_/ the distribution.
53
//_/_/
54
//_/_/ - Neither the name of its copyright holders nor the names of its
55
//_/_/ contributors may be used to endorse or promote products
56
//_/_/ derived from this software without specific prior
57
//_/_/ written permission.
58
//_/_/
59
//_/_/ - CADIA Clause: The license granted in and to the software
60
//_/_/ under this agreement is a limited-use license.
61
//_/_/ The software may not be used in furtherance of:
62
//_/_/ (i) intentionally causing bodily injury or severe emotional
63
//_/_/ distress to any person;
64
//_/_/ (ii) invading the personal privacy or violating the human
65
//_/_/ rights of any person; or
66
//_/_/ (iii) committing or preparing for any act of war.
67
//_/_/
68
//_/_/ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
69
//_/_/ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
70
//_/_/ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
71
//_/_/ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
72
//_/_/ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
73
//_/_/ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
74
//_/_/ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
75
//_/_/ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
76
//_/_/ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
77
//_/_/ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
78
//_/_/ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
79
//_/_/ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
80
//_/_/ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
81
//_/_/ OF SUCH DAMAGE.
82
//_/_/
83
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
84
85
#ifndef hlp_context_h
86
#define hlp_context_h
87
88
#include "../r_code/object.h"
89
90
#include "_context.h"
91
#include "hlp_overlay.h"
92
93
94
namespace
r_exec {
95
96
class
dll_export
HLPContext
:
97
public
_Context
{
98
public
:
99
HLPContext
();
100
HLPContext
(
Atom
*code, uint16 index,
HLPOverlay
*
const
overlay, Data data = STEM);
101
102
HLPContext
dereference()
const
;
103
104
HLPContext
&operator =(
const
HLPContext
&c) {
105
106
code_ = c.code_;
107
index_ = c.index_;
108
return
*
this
;
109
}
110
111
Atom
&operator [](uint16 i)
const
{
return
code_[index_ + i]; }
112
113
bool
operator ==(
const
HLPContext
&c)
const
;
114
bool
operator !=(
const
HLPContext
&c)
const
;
115
116
HLPContext
get_child(uint16 index)
const
{
117
118
return
HLPContext
(code_, index_ + index, (
HLPOverlay
*)overlay_);
119
}
120
124
HLPContext
get_child_deref
(uint16 index)
const
{
125
return
get_child(index).dereference();
126
}
127
128
bool
evaluate()
const
{
129
if
(data_ == BINDING_MAP || data_ == VALUE_ARRAY)
130
return
true
;
131
132
HLPContext
c = dereference();
133
return
c.evaluate_no_dereference();
134
}
135
136
bool
evaluate_no_dereference()
const
;
137
138
// _Context implementation.
139
_Context *clone()
override
{
return
new
HLPContext(*
this
); }
140
141
bool
equal(
const
_Context *c)
const override
{
return
*
this
== *(HLPContext *)c; }
142
143
Atom &get_atom(uint16 i)
const override
{
return
this->operator [](i); }
144
145
uint16 get_object_code_size()
const override
;
146
147
uint16 get_children_count()
const override
{
148
149
return
code_[index_].getAtomCount();
150
}
151
155
_Context
*
get_child_new
(uint16 index)
const override
{
156
157
HLPContext
*_c =
new
HLPContext
(get_child(index));
158
return
_c;
159
}
160
164
_Context
*
dereference_new
()
const override
{
165
166
HLPContext
*_c =
new
HLPContext
(dereference());
167
return
_c;
168
}
169
};
170
}
171
172
173
#endif
r_exec::HLPContext::dereference_new
_Context * dereference_new() const override
Definition:
hlp_context.h:164
r_exec::HLPContext::get_child_deref
HLPContext get_child_deref(uint16 index) const
Definition:
hlp_context.h:124
r_exec::HLPContext::get_child_new
_Context * get_child_new(uint16 index) const override
Definition:
hlp_context.h:155
r_code::Atom
Definition:
atom.h:104
r_exec::HLPOverlay
Definition:
hlp_overlay.h:98
r_exec::_Context
Definition:
_context.h:96
r_exec::HLPContext
Definition:
hlp_context.h:97
Generated by
1.8.18