ROOT logo
// @(#)root/reflex:$Id: NamespaceBuilder.cxx 22729 2008-03-19 10:20:10Z pcanal $
// 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 REFLEX_BUILD
#define REFLEX_BUILD
#endif

#include "Reflex/Builder/NamespaceBuilder.h"

#include "Reflex/PropertyList.h"
#include "Reflex/Scope.h"

#include "Namespace.h"

#include "Reflex/internal/OwnedMember.h"

//-------------------------------------------------------------------------------
Reflex::NamespaceBuilder::NamespaceBuilder( const char * nam ) {
//-------------------------------------------------------------------------------
// Create dictionary info for a namespace.
   Scope sc = Scope::ByName( nam );
   if ( sc && sc.IsNamespace() ) {
      fNamespace       = sc;
   }
   else {
      fNamespace       = (new Namespace( nam ))->ThisScope();
   }
}


//-------------------------------------------------------------------------------
Reflex::NamespaceBuilder & 
Reflex::NamespaceBuilder::AddProperty( const char * key, 
                                             const char * value ) {
//-------------------------------------------------------------------------------
// Add property to this namespace as string.
   fNamespace.Properties().AddProperty( key , value );
   return * this;
}


//-------------------------------------------------------------------------------
Reflex::NamespaceBuilder & 
Reflex::NamespaceBuilder::AddProperty( const char * key, 
                                             Any value ) {
//-------------------------------------------------------------------------------
// Add property to this namespace as Any object.
   fNamespace.Properties().AddProperty( key , value );
   return * this;
}
    

//-------------------------------------------------------------------------------
Reflex::Scope Reflex::NamespaceBuilder::ToScope() {
//-------------------------------------------------------------------------------
// Return the scope currently being built.
   return fNamespace;
}
 NamespaceBuilder.cxx:1
 NamespaceBuilder.cxx:2
 NamespaceBuilder.cxx:3
 NamespaceBuilder.cxx:4
 NamespaceBuilder.cxx:5
 NamespaceBuilder.cxx:6
 NamespaceBuilder.cxx:7
 NamespaceBuilder.cxx:8
 NamespaceBuilder.cxx:9
 NamespaceBuilder.cxx:10
 NamespaceBuilder.cxx:11
 NamespaceBuilder.cxx:12
 NamespaceBuilder.cxx:13
 NamespaceBuilder.cxx:14
 NamespaceBuilder.cxx:15
 NamespaceBuilder.cxx:16
 NamespaceBuilder.cxx:17
 NamespaceBuilder.cxx:18
 NamespaceBuilder.cxx:19
 NamespaceBuilder.cxx:20
 NamespaceBuilder.cxx:21
 NamespaceBuilder.cxx:22
 NamespaceBuilder.cxx:23
 NamespaceBuilder.cxx:24
 NamespaceBuilder.cxx:25
 NamespaceBuilder.cxx:26
 NamespaceBuilder.cxx:27
 NamespaceBuilder.cxx:28
 NamespaceBuilder.cxx:29
 NamespaceBuilder.cxx:30
 NamespaceBuilder.cxx:31
 NamespaceBuilder.cxx:32
 NamespaceBuilder.cxx:33
 NamespaceBuilder.cxx:34
 NamespaceBuilder.cxx:35
 NamespaceBuilder.cxx:36
 NamespaceBuilder.cxx:37
 NamespaceBuilder.cxx:38
 NamespaceBuilder.cxx:39
 NamespaceBuilder.cxx:40
 NamespaceBuilder.cxx:41
 NamespaceBuilder.cxx:42
 NamespaceBuilder.cxx:43
 NamespaceBuilder.cxx:44
 NamespaceBuilder.cxx:45
 NamespaceBuilder.cxx:46
 NamespaceBuilder.cxx:47
 NamespaceBuilder.cxx:48
 NamespaceBuilder.cxx:49
 NamespaceBuilder.cxx:50
 NamespaceBuilder.cxx:51
 NamespaceBuilder.cxx:52
 NamespaceBuilder.cxx:53
 NamespaceBuilder.cxx:54
 NamespaceBuilder.cxx:55
 NamespaceBuilder.cxx:56
 NamespaceBuilder.cxx:57
 NamespaceBuilder.cxx:58
 NamespaceBuilder.cxx:59
 NamespaceBuilder.cxx:60
 NamespaceBuilder.cxx:61
 NamespaceBuilder.cxx:62
 NamespaceBuilder.cxx:63
 NamespaceBuilder.cxx:64
 NamespaceBuilder.cxx:65
 NamespaceBuilder.cxx:66