// @(#)root/meta:$Id$
// Author: Bianca-Cristina Cristescu   09/07/13

/*************************************************************************
 * Copyright (C) 1995-2013, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TEnumConstant
#define ROOT_TEnumConstant


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TEnumConstant                                                        //
//                                                                      //
// TEnumConstant class defines a constant in the TEnum type.            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TGlobal
#include "TGlobal.h"
#endif
#ifndef ROOT_TEnum
#include "TEnum.h"
#endif

class TEnum;

class TEnumConstant : public TGlobal {
private:
   const TEnum       *fEnum;  //the enum type
   Long64_t           fValue; //the value for the constant

public:
   TEnumConstant(): fEnum(0), fValue(-1) {}
   TEnumConstant(DataMemberInfo_t *info, const char* name, Long64_t value, TEnum* type);
   virtual ~TEnumConstant();

   void *GetAddress() const override { auto valPtr = &fValue; return (void*) const_cast<Long64_t*>(valPtr); }
   Long64_t      GetValue() const { return fValue; }
   const TEnum  *GetType() const { return fEnum; }

   const char *GetTypeName() const override { return fEnum->GetQualifiedName(); }
   const char *GetFullTypeName() const override { return GetTypeName(); }

   ClassDefOverride(TEnumConstant,2)  //Enum type constant
};

#endif
 TEnumConstant.h:1
 TEnumConstant.h:2
 TEnumConstant.h:3
 TEnumConstant.h:4
 TEnumConstant.h:5
 TEnumConstant.h:6
 TEnumConstant.h:7
 TEnumConstant.h:8
 TEnumConstant.h:9
 TEnumConstant.h:10
 TEnumConstant.h:11
 TEnumConstant.h:12
 TEnumConstant.h:13
 TEnumConstant.h:14
 TEnumConstant.h:15
 TEnumConstant.h:16
 TEnumConstant.h:17
 TEnumConstant.h:18
 TEnumConstant.h:19
 TEnumConstant.h:20
 TEnumConstant.h:21
 TEnumConstant.h:22
 TEnumConstant.h:23
 TEnumConstant.h:24
 TEnumConstant.h:25
 TEnumConstant.h:26
 TEnumConstant.h:27
 TEnumConstant.h:28
 TEnumConstant.h:29
 TEnumConstant.h:30
 TEnumConstant.h:31
 TEnumConstant.h:32
 TEnumConstant.h:33
 TEnumConstant.h:34
 TEnumConstant.h:35
 TEnumConstant.h:36
 TEnumConstant.h:37
 TEnumConstant.h:38
 TEnumConstant.h:39
 TEnumConstant.h:40
 TEnumConstant.h:41
 TEnumConstant.h:42
 TEnumConstant.h:43
 TEnumConstant.h:44
 TEnumConstant.h:45
 TEnumConstant.h:46
 TEnumConstant.h:47
 TEnumConstant.h:48
 TEnumConstant.h:49
 TEnumConstant.h:50
 TEnumConstant.h:51
 TEnumConstant.h:52
 TEnumConstant.h:53