Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TInterpreterValue.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/core/meta:$Id$e
0002 // Author: Vassil Vassilev   13/03/2013
0003 
0004 /*******************************************************************************
0005  * Copyright (C) 1995-2013, Rene Brun and Fons Rademakers.                     *
0006  * All rights reserved.                                                        *
0007  *                                                                             *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                               *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.                   *
0010  ******************************************************************************/
0011 
0012 ////////////////////////////////////////////////////////////////////////////////
0013 //                                                                            //
0014 //  Class representing a value coming from the interpreter. Its main use case //
0015 //  is to TCallFunc. When TCallFunc returns by-value, i.e. a temporary        //
0016 //  variable, its lifetime has to be extended. TInterpreterValue provides a   //
0017 //  way to extend the temporaries lifetime and gives the user to control it.  //
0018 //                                                                            //
0019 //  The class needs to be derived from for the actual interpreter,            //
0020 //  see TClingValue.                                                          //
0021 //                                                                            //
0022 ////////////////////////////////////////////////////////////////////////////////
0023 
0024 #ifndef ROOT_TInterpreterValue
0025 #define ROOT_TInterpreterValue
0026 
0027 #include "RtypesCore.h"
0028 
0029 #include <string>
0030 #include <utility>
0031 
0032 class TInterpreterValue {
0033 private:
0034    TInterpreterValue(const TInterpreterValue &) = delete;
0035    TInterpreterValue& operator=(TInterpreterValue &) = delete;
0036 public:
0037    TInterpreterValue() { }
0038    virtual ~TInterpreterValue() { }
0039 
0040    virtual const void* GetValAddr() const = 0;
0041    virtual void* GetValAddr() = 0;
0042    virtual std::pair<std::string, std::string> ToTypeAndValueString() const = 0;
0043 
0044    virtual Bool_t      IsValid() const = 0;
0045    virtual Double_t    GetAsDouble() const = 0;
0046    virtual Long_t      GetAsLong() const = 0;
0047    virtual ULong_t     GetAsUnsignedLong() const = 0;
0048    virtual void*       GetAsPointer() const = 0;
0049    virtual std::string ToString() const = 0;
0050 };
0051 
0052 #endif // ROOT_TInterpreterValue