GNU Octave
3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
Main Page
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
libinterp
corefcn
oct-lvalue.cc
Go to the documentation of this file.
1
/*
2
3
Copyright (C) 1996-2013 John W. Eaton
4
5
This file is part of Octave.
6
7
Octave is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by the
9
Free Software Foundation; either version 3 of the License, or (at your
10
option) any later version.
11
12
Octave is distributed in the hope that it will be useful, but WITHOUT
13
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with Octave; see the file COPYING. If not, see
19
<http://www.gnu.org/licenses/>.
20
21
*/
22
23
#ifdef HAVE_CONFIG_H
24
#include <config.h>
25
#endif
26
27
#include "
error.h
"
28
#include "
oct-obj.h
"
29
#include "
oct-lvalue.h
"
30
#include "
ov.h
"
31
32
void
33
octave_lvalue::assign
(
octave_value::assign_op
op,
const
octave_value
& rhs)
34
{
35
if
(!
is_black_hole
())
36
{
37
if
(
idx
.empty ())
38
sym
->
assign
(op, rhs);
39
else
40
sym
->
assign
(op,
type
,
idx
, rhs);
41
}
42
}
43
44
void
45
octave_lvalue::set_index
(
const
std::string& t,
46
const
std::list<octave_value_list>& i)
47
{
48
if
(
idx
.empty ())
49
{
50
type
= t;
51
idx
= i;
52
}
53
else
54
error
(
"invalid index expression in assignment"
);
55
}
56
57
void
58
octave_lvalue::do_unary_op
(
octave_value::unary_op
op)
59
{
60
if
(!
is_black_hole
())
61
{
62
if
(
idx
.empty ())
63
sym
->
do_non_const_unary_op
(op);
64
else
65
sym
->
do_non_const_unary_op
(op,
type
,
idx
);
66
}
67
}
68
69
octave_value
70
octave_lvalue::value
(
void
)
const
71
{
72
octave_value
retval;
73
74
if
(!
is_black_hole
())
75
{
76
octave_value
val =
sym
->
varval
();
77
78
if
(
idx
.empty ())
79
retval = val;
80
else
81
{
82
if
(val.
is_constant
())
83
retval = val.
subsref
(
type
,
idx
);
84
else
85
{
86
octave_value_list
t = val.
subsref
(
type
,
idx
, 1);
87
if
(t.
length
() > 0)
88
retval = t(0);
89
}
90
}
91
}
92
93
return
retval;
94
}
Generated on Mon Dec 30 2013 03:04:27 for GNU Octave by
1.8.1.2