ROOT
6.06/09
Reference Guide
ROOT Home Page
Main Page
Related Pages
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
math
vc
include
Vc
common
operand.h
Go to the documentation of this file.
1
/* This file is part of the Vc library. {{{
2
3
Copyright (C) 2013 Matthias Kretz <kretz@kde.org>
4
5
Vc is free software: you can redistribute it and/or modify
6
it under the terms of the GNU Lesser General Public License as
7
published by the Free Software Foundation, either version 3 of
8
the License, or (at your option) any later version.
9
10
Vc is distributed in the hope that it will be useful, but
11
WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU Lesser General Public License for more details.
14
15
You should have received a copy of the GNU Lesser General Public
16
License along with Vc. If not, see <http://www.gnu.org/licenses/>.
17
18
}}}*/
19
20
#ifndef VC_COMMON_OPERAND_H
21
#define VC_COMMON_OPERAND_H
22
23
namespace
ROOT
{
24
namespace
Vc
25
{
26
template
<
typename
Parent>
class
Operand
27
{
28
public
:
29
Parent *
parent
() {
return
static_cast<
Parent *
>
(
this
); }
30
const
Parent *
parent
()
const
{
return
static_cast<
const
Parent *
>
(
this
); }
31
32
private
:
33
};
34
35
enum
BinaryOperation
{
36
AddOp
,
37
SubOp
,
38
MulOp
,
39
DivOp
40
};
41
42
template
<
typename
Result,
typename
Left,
typename
Right>
class
BinaryOperation
:
public
Operand
<BinaryOperation<Result, Left, Right> >
43
{
44
Left
m_left
;
45
Right
m_right
;
46
public
:
47
#if VC_CXX11
48
Vc_ALWAYS_INLINE
BinaryOperation
(Left &&
l
, Right &&
r
)
49
#endif
50
operator
Result()
51
};
52
53
}
// namespace Vc
54
}
// namespace ROOT
55
56
#endif // VC_COMMON_OPERAND_H
ROOT::Vc::Operand::parent
const Parent * parent() const
Definition:
operand.h:30
ROOT
Namespace for new ROOT classes and functions.
Definition:
ROOT.py:1
ROOT::Vc::AddOp
Definition:
operand.h:36
ROOT::Vc::BinaryOperation
BinaryOperation
Definition:
operand.h:35
ROOT::Vc::Operand::parent
Parent * parent()
Definition:
operand.h:29
ROOT::Vc::DivOp
Definition:
operand.h:39
ROOT::Vc::BinaryOperation::m_right
Right m_right
Definition:
operand.h:45
ROOT::Vc::BinaryOperation::m_left
Left m_left
Definition:
operand.h:44
ROOT::Vc::SubOp
Definition:
operand.h:37
r
ROOT::R::TRInterface & r
Definition:
Object.C:4
l
TLine * l
Definition:
textangle.C:4
ROOT::Vc::MulOp
Definition:
operand.h:38
Vc_ALWAYS_INLINE
#define Vc_ALWAYS_INLINE
Definition:
macros.h:130
ROOT::Vc::Operand
Definition:
operand.h:26
ROOT::Vc
Definition:
casts.h:28
ROOT::Vc::BinaryOperation
Definition:
operand.h:42