Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TClingValue.h
Go to the documentation of this file.
1// @(#)root/core/meta:$Id$e
2// Author: Vassil Vassilev 13/03/2013
3
4/*******************************************************************************
5 * Copyright (C) 1995-2013, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 ******************************************************************************/
11
12////////////////////////////////////////////////////////////////////////////////
13// //
14// Class representing a value coming from cling. Its main use case //
15// is to TCallFunc. When TCallFunc returns by-value, i.e. a temporary //
16// variable, its lifetime has to be extended. TClingValue provides a //
17// way to extend the temporaries lifetime and gives the user to control it. //
18// //
19// The class is used to hide the implementation details of //
20// cling::Value. //
21// //
22////////////////////////////////////////////////////////////////////////////////
23
24#ifndef ROOT_TClingValue
25#define ROOT_TClingValue
26
27#include "RtypesCore.h"
28#include "TInterpreterValue.h"
29#include <string>
30#include <utility>
31
32namespace cling {
33 class Value;
34}
35
37private:
41 void* fType;
44
45 cling::Value& ToCV() {
46 return reinterpret_cast<cling::Value&>(fValue); }
47 const cling::Value& ToCV() const {
48 return reinterpret_cast<const cling::Value&>(fValue); }
49
50public:
52 TClingValue(const TClingValue& Other);
55
56 const void* GetValAddr() const { return &fValue; }
57 void* GetValAddr() { return &fValue; }
58
59 std::pair<std::string, std::string> ToTypeAndValueString() const;
60 Bool_t IsValid() const;
61 Double_t GetAsDouble() const;
62 Long_t GetAsLong() const;
64 void* GetAsPointer() const;
65 std::string ToString() const;
66};
67
68#endif // ROOT_TClingValue
unsigned long ULong_t
Definition RtypesCore.h:55
long Long_t
Definition RtypesCore.h:54
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
Bridge between cling::Value and ROOT.
Definition TClingValue.h:36
void * GetAsPointer() const
std::pair< std::string, std::string > ToTypeAndValueString() const
ULong_t GetAsUnsignedLong() const
const void * GetValAddr() const
Definition TClingValue.h:56
TClingValue & operator=(TClingValue &Other)
struct TClingValue::HasTheSameSizeAsClingValue fValue
Double_t GetAsDouble() const
void * GetValAddr()
Definition TClingValue.h:57
const cling::Value & ToCV() const
Definition TClingValue.h:47
cling::Value & ToCV()
Definition TClingValue.h:45
std::string ToString() const
Long_t GetAsLong() const
Bool_t IsValid() const