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 short fTypeKind;
42 void* fType;
45
46 cling::Value& ToCV() {
47 return reinterpret_cast<cling::Value&>(fValue); }
48 const cling::Value& ToCV() const {
49 return reinterpret_cast<const cling::Value&>(fValue); }
50
51public:
53 TClingValue(const TClingValue& Other);
56
57 const void* GetValAddr() const override { return &fValue; }
58 void* GetValAddr() override { return &fValue; }
59
60 std::pair<std::string, std::string> ToTypeAndValueString() const override;
61 Bool_t IsValid() const override;
62 Double_t GetAsDouble() const override;
63 Long_t GetAsLong() const override;
64 ULong_t GetAsUnsignedLong() const override;
65 void* GetAsPointer() const override;
66 std::string ToString() const override;
67};
68
69#endif // ROOT_TClingValue
bool Bool_t
Definition RtypesCore.h:63
unsigned long ULong_t
Definition RtypesCore.h:55
long Long_t
Definition RtypesCore.h:54
double Double_t
Definition RtypesCore.h:59
Bridge between cling::Value and ROOT.
Definition TClingValue.h:36
ULong_t GetAsUnsignedLong() const override
std::pair< std::string, std::string > ToTypeAndValueString() const override
TClingValue & operator=(TClingValue &Other)
struct TClingValue::HasTheSameSizeAsClingValue fValue
Bool_t IsValid() const override
const void * GetValAddr() const override
Definition TClingValue.h:57
void * GetAsPointer() const override
const cling::Value & ToCV() const
Definition TClingValue.h:48
Long_t GetAsLong() const override
Double_t GetAsDouble() const override
std::string ToString() const override
cling::Value & ToCV()
Definition TClingValue.h:46
void * GetValAddr() override
Definition TClingValue.h:58