#ifndef REFLEX_BUILD
#define REFLEX_BUILD
#endif
#include "Reflex/Builder/VariableBuilder.h"
#include "Reflex/internal/OwnedMember.h"
#include "Namespace.h"
#include "DataMember.h"
ROOT::Reflex::VariableBuilderImpl::VariableBuilderImpl( const char * nam,
                                                        const Type & typ,
                                                        size_t offs,
                                                        unsigned int modifiers ) 
   : fDataMember(Member()) {
   std::string declScope = "";
   std::string memName = std::string( nam );
   size_t pos = memName.rfind( "::" );
   if ( pos != std::string::npos ) {
      declScope = memName.substr( 0, pos );
      memName = memName.substr( pos + 2 );
   }
   Scope sc = Scope::ByName(declScope);
  
   if ( ! sc ) {
      sc = (new Namespace(declScope.c_str()))->ThisScope();
   }
  
   if ( ! sc.IsNamespace()) throw RuntimeError("Declaring At is not a namespace");
   sc.AddDataMember( memName.c_str(),
                     typ,
                     offs,
                     modifiers );
}
ROOT::Reflex::VariableBuilderImpl::~VariableBuilderImpl() {
   FireFunctionCallback( fDataMember );
}
void ROOT::Reflex::VariableBuilderImpl::AddProperty( const char * key, 
                                                     const char * value ) {
   fDataMember.Properties().AddProperty( key , value );
}
void ROOT::Reflex::VariableBuilderImpl::AddProperty( const char * key, 
                                                     Any value ) {
   fDataMember.Properties().AddProperty( key , value );
}
ROOT::Reflex::Member ROOT::Reflex::VariableBuilderImpl::ToMember() {
   return fDataMember;
}
ROOT::Reflex::VariableBuilder::VariableBuilder( const char * nam, 
                                                const Type & typ,
                                                size_t offs,
                                                unsigned int modifiers) 
   : fDataMember( Member()) {
   std::string declScope = Tools::GetScopeName(nam);
   std::string memName = Tools::GetBaseName(nam);
   
   Scope sc = Scope::ByName(declScope);
  
   if ( ! sc ) {
      sc = (new Namespace(declScope.c_str()))->ThisScope();
   }
  
   if ( ! sc.IsNamespace()) throw RuntimeError("Declaring scope is not a namespace");
   DataMember* dm = new DataMember( memName.c_str(),
                                    typ,
                                    offs,
                                    modifiers );
   sc.AddDataMember(Member(dm));
   fDataMember = Member(dm);
}
ROOT::Reflex::VariableBuilder::~VariableBuilder() {
   FireFunctionCallback( fDataMember );
}
ROOT::Reflex::VariableBuilder & 
ROOT::Reflex::VariableBuilder::AddProperty( const char * key, 
                                            const char * value ) {
   fDataMember.Properties().AddProperty( key , value );
   return * this;
}
ROOT::Reflex::VariableBuilder & 
ROOT::Reflex::VariableBuilder::AddProperty( const char * key, 
                                            Any value ) {
   fDataMember.Properties().AddProperty( key , value );
   return * this;
}
ROOT::Reflex::Member ROOT::Reflex::VariableBuilder::ToMember() {
   return fDataMember;
}
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.