⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enumbuilder.h

📁 cint...昨天看到有个c++解释器,叫CINT,down下来一用,很爽,推荐大家也去看一看。 相信不少朋友们早就知道这个东西了
💻 H
字号:
// @(#)root/reflex:$Name:  $:$Id: EnumBuilder.h,v 1.8 2006/08/01 09:14:32 roiser Exp $// Author: Stefan Roiser 2004// Copyright CERN, CH-1211 Geneva 23, 2004-2006, All rights reserved.//// Permission to use, copy, modify, and distribute this software for any// purpose is hereby granted without fee, provided that this copyright and// permissions notice appear in all copies and derivatives.//// This software is provided "as is" without express or implied warranty.#ifndef ROOT_Reflex_EnumBuilder#define ROOT_Reflex_EnumBuilder// Include files#include "Reflex/Builder/TypeBuilder.h"#include "Reflex/Member.h"namespace ROOT{   namespace Reflex{      // forward declarations      class Enum;      /**       * @class EnumBuilder EnumBuilder.h Reflex/Builder/EnumBuilder.h       * @author Stefan Roiser       * @date 14/3/2005       * @ingroup RefBld       */      class RFLX_API EnumBuilder {      public:               /** constructor */         EnumBuilder( const char * name,                      const std::type_info & ti,                      unsigned int modifiers = 0 );         /** destructor */        virtual ~EnumBuilder();         /**           * AddProperty will add a PropertyNth to the PropertyNth stack          * which will be emptied with the next enum / item build          * @param  key the PropertyNth key          * @param  value the value of the PropertyNth          * @return a reference to the building class          */         EnumBuilder &  AddItem ( const char * nam,                                  long value );         /**           * AddProperty will add a PropertyNth           * @param  key the PropertyNth key          * @param  value the value of the PropertyNth          */         EnumBuilder & AddProperty( const char * key,                            Any value );         /**           * AddProperty will add a PropertyNth           * @param  key the PropertyNth key          * @param  value the value of the PropertyNth          */         EnumBuilder &  AddProperty( const char * key,                                     const char * value );      private:         /** current enum being built */         Enum * fEnum;         /** last added enum item */         Member fLastMember;      }; // class EnumBuilder      /**        * @class EnumBuilder EnumBuilder.h Reflex/Builder/EnumBuilder.h       * @author Stefan Roiser       * @ingroup RefBld       * @date 30/3/2004       */      template < typename T >         class EnumBuilderT  {         public:                     /** constructor */         EnumBuilderT( unsigned int modifiers = 0 );         /** constructor */         EnumBuilderT( const char * nam,                        unsigned int modifiers = 0 );         /** destructor */         virtual ~EnumBuilderT() {}         /**           * AddItem add a new item in the enum          * @param  Name item Name          * @param  value the value of the item          * @return a reference to the building class          */         EnumBuilderT & AddItem( const char * nam,                                  long value );         /**           * AddProperty will add a PropertyNth to the PropertyNth stack          * which will be emptied with the next enum / item build          * @param  key the PropertyNth key          * @param  value the value of the PropertyNth          * @return a reference to the building class          */         template  < typename P >            EnumBuilderT & AddProperty( const char * key,                                         P value );         private:         /** the enums and values */         EnumBuilder fEnumBuilderImpl;      }; // class EnumBuilder   } // namespace Reflex} // namespace ROOT//-------------------------------------------------------------------------------template < typename T >inline ROOT::Reflex::EnumBuilderT<T>::EnumBuilderT( unsigned int modifiers ) //-------------------------------------------------------------------------------   : fEnumBuilderImpl( Tools::Demangle( typeid(T) ).c_str(),                        typeid(T),                       modifiers ) {}//-------------------------------------------------------------------------------template < typename T >inline ROOT::Reflex::EnumBuilderT<T>::EnumBuilderT( const char * nam,                                                     unsigned int modifiers )//-------------------------------------------------------------------------------   : fEnumBuilderImpl( nam,                        typeid(UnknownType),                       modifiers ) {}//-------------------------------------------------------------------------------template < typename T >inline ROOT::Reflex::EnumBuilderT<T> & ROOT::Reflex::EnumBuilderT<T>::AddItem( const char * nam,                                         long value ) {//-------------------------------------------------------------------------------   fEnumBuilderImpl.AddItem( nam, value );   return * this;}//-------------------------------------------------------------------------------template < typename T > template < typename P >inline ROOT::Reflex::EnumBuilderT<T> & ROOT::Reflex::EnumBuilderT<T>::AddProperty( const char * key,                                             P value ) {//-------------------------------------------------------------------------------   fEnumBuilderImpl.AddProperty( key, value );   return * this;}#endif // ROOT_Reflex_EnumBuilder

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -