00001 // @(#)root/reflex:$Id: NamespaceBuilder.h 29288 2009-07-01 13:03:35Z axel $ 00002 // Author: Stefan Roiser 2004 00003 00004 // Copyright CERN, CH-1211 Geneva 23, 2004-2006, All rights reserved. 00005 // 00006 // Permission to use, copy, modify, and distribute this software for any 00007 // purpose is hereby granted without fee, provided that this copyright and 00008 // permissions notice appear in all copies and derivatives. 00009 // 00010 // This software is provided "as is" without express or implied warranty. 00011 00012 #ifndef Reflex_NamespaceBuilder 00013 #define Reflex_NamespaceBuilder 00014 00015 // Include files 00016 #include "Reflex/Scope.h" 00017 00018 00019 namespace Reflex { 00020 /** 00021 * @class NamespaceBuilder NamespaceBuilder.h Reflex/Builder/NamespaceBuilder.h 00022 * @author Stefan Roiser 00023 * @ingroup RefBld 00024 * @date 30/3/2004 00025 */ 00026 class RFLX_API NamespaceBuilder { 00027 public: 00028 /** constructor */ 00029 NamespaceBuilder(const char* nam); 00030 00031 00032 /** destructor */ 00033 virtual ~NamespaceBuilder() {} 00034 00035 /** AddProperty will add a PropertyNth 00036 * @param key the PropertyNth key 00037 * @param value the value of the PropertyNth 00038 * @return a reference to the building class 00039 */ 00040 NamespaceBuilder& AddProperty(const char* key, 00041 Any value); 00042 NamespaceBuilder& AddProperty(const char* key, 00043 const char* value); 00044 00045 /** 00046 * ToScope will return the currently being built namespace 00047 * @return namespace currently being built 00048 */ 00049 Scope ToScope(); 00050 00051 private: 00052 /** the namespace */ 00053 Scope fNamespace; 00054 00055 }; // class NamespaceBuilder 00056 00057 } // namespace Reflex 00058 00059 00060 #endif // Reflex_NamespaceBuilder