// @(#)root/reflex:$Id: MemberTemplate.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/MemberTemplate.h"
#include "Reflex/internal/OwnedMember.h"
#include "Reflex/internal/MemberTemplateName.h"


//-------------------------------------------------------------------------------
Reflex::MemberTemplate Reflex::MemberTemplate::ByName( const std::string & name,
                                                                   size_t nTemplateParams ) {
//-------------------------------------------------------------------------------
   // Return a member template by name.
   return MemberTemplateName::ByName( name, nTemplateParams );
}


//-------------------------------------------------------------------------------
Reflex::MemberTemplate Reflex::MemberTemplate::MemberTemplateAt( size_t nth ) {
//-------------------------------------------------------------------------------
   // Return the nth member template defined.
   return MemberTemplateName::MemberTemplateAt( nth );
}


//-------------------------------------------------------------------------------
Reflex::MemberTemplate_Iterator Reflex::MemberTemplate::MemberTemplate_Begin() {
//-------------------------------------------------------------------------------
   // Return the begin iterator of the member template container.
   return MemberTemplateName::MemberTemplate_Begin();
}
 
                                             
//-------------------------------------------------------------------------------
Reflex::MemberTemplate_Iterator Reflex::MemberTemplate::MemberTemplate_End() {
//-------------------------------------------------------------------------------
   // Return the end iterator of the member template container.
   return MemberTemplateName::MemberTemplate_End();
}
 
                                             
//-------------------------------------------------------------------------------
Reflex::Reverse_MemberTemplate_Iterator Reflex::MemberTemplate::MemberTemplate_RBegin() {
//-------------------------------------------------------------------------------
   // Return the rbegin iterator of the member template container.
   return MemberTemplateName::MemberTemplate_RBegin();
}
 
                                             
//-------------------------------------------------------------------------------
Reflex::Reverse_MemberTemplate_Iterator Reflex::MemberTemplate::MemberTemplate_REnd() {
//-------------------------------------------------------------------------------
   // Return the rend iterator of the member template container.
   return MemberTemplateName::MemberTemplate_REnd();
}
 
                                             
//-------------------------------------------------------------------------------
std::string Reflex::MemberTemplate::Name( unsigned int mod ) const {
//-------------------------------------------------------------------------------
   // Return the name of the member template.
   if ( fMemberTemplateName ) return fMemberTemplateName->Name( mod );
   else                       return "";
}


//-------------------------------------------------------------------------------
Reflex::Member_Iterator Reflex::MemberTemplate::TemplateInstance_Begin() const {
//-------------------------------------------------------------------------------
   // Return the begin iterator of the instance container of this member template.
   if ( * this ) return fMemberTemplateName->fMemberTemplateImpl->TemplateInstance_Begin();
   return Dummy::MemberCont().begin();
}

                                             
//-------------------------------------------------------------------------------
Reflex::Member_Iterator Reflex::MemberTemplate::TemplateInstance_End() const {
//-------------------------------------------------------------------------------
   // Return the end iterator of the instance container of this member template.
   if ( * this ) return fMemberTemplateName->fMemberTemplateImpl->TemplateInstance_End();
   return Dummy::MemberCont().end();
}

                                             
//-------------------------------------------------------------------------------
Reflex::Reverse_Member_Iterator Reflex::MemberTemplate::TemplateInstance_RBegin() const {
//-------------------------------------------------------------------------------
   // Return the rbegin iterator of the instance container of this member template.
   if ( * this ) return fMemberTemplateName->fMemberTemplateImpl->TemplateInstance_RBegin();
   return Dummy::MemberCont().rbegin();
}

                                             
//-------------------------------------------------------------------------------
Reflex::Reverse_Member_Iterator Reflex::MemberTemplate::TemplateInstance_REnd() const {
//-------------------------------------------------------------------------------
   // Return the rend iterator of the instance container of this member template.
   if ( * this ) return fMemberTemplateName->fMemberTemplateImpl->TemplateInstance_REnd();
   return Dummy::MemberCont().rend();
}

                                             
//-------------------------------------------------------------------------------
Reflex::Member Reflex::MemberTemplate::TemplateInstanceAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth template instance of this family.
   if ( * this ) return fMemberTemplateName->fMemberTemplateImpl->TemplateInstanceAt( nth );
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
void Reflex::MemberTemplate::AddTemplateInstance( const Member & templateInstance ) const {
//-------------------------------------------------------------------------------
// Add member templateInstance to this template family.
   if ( * this ) fMemberTemplateName->fMemberTemplateImpl->AddTemplateInstance( templateInstance );
}


Last change: Wed Jun 25 08:31:15 2008
Last generated: 2008-06-25 08:31

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.