ROOT logo
// @(#)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 );
}

 MemberTemplate.cxx:1
 MemberTemplate.cxx:2
 MemberTemplate.cxx:3
 MemberTemplate.cxx:4
 MemberTemplate.cxx:5
 MemberTemplate.cxx:6
 MemberTemplate.cxx:7
 MemberTemplate.cxx:8
 MemberTemplate.cxx:9
 MemberTemplate.cxx:10
 MemberTemplate.cxx:11
 MemberTemplate.cxx:12
 MemberTemplate.cxx:13
 MemberTemplate.cxx:14
 MemberTemplate.cxx:15
 MemberTemplate.cxx:16
 MemberTemplate.cxx:17
 MemberTemplate.cxx:18
 MemberTemplate.cxx:19
 MemberTemplate.cxx:20
 MemberTemplate.cxx:21
 MemberTemplate.cxx:22
 MemberTemplate.cxx:23
 MemberTemplate.cxx:24
 MemberTemplate.cxx:25
 MemberTemplate.cxx:26
 MemberTemplate.cxx:27
 MemberTemplate.cxx:28
 MemberTemplate.cxx:29
 MemberTemplate.cxx:30
 MemberTemplate.cxx:31
 MemberTemplate.cxx:32
 MemberTemplate.cxx:33
 MemberTemplate.cxx:34
 MemberTemplate.cxx:35
 MemberTemplate.cxx:36
 MemberTemplate.cxx:37
 MemberTemplate.cxx:38
 MemberTemplate.cxx:39
 MemberTemplate.cxx:40
 MemberTemplate.cxx:41
 MemberTemplate.cxx:42
 MemberTemplate.cxx:43
 MemberTemplate.cxx:44
 MemberTemplate.cxx:45
 MemberTemplate.cxx:46
 MemberTemplate.cxx:47
 MemberTemplate.cxx:48
 MemberTemplate.cxx:49
 MemberTemplate.cxx:50
 MemberTemplate.cxx:51
 MemberTemplate.cxx:52
 MemberTemplate.cxx:53
 MemberTemplate.cxx:54
 MemberTemplate.cxx:55
 MemberTemplate.cxx:56
 MemberTemplate.cxx:57
 MemberTemplate.cxx:58
 MemberTemplate.cxx:59
 MemberTemplate.cxx:60
 MemberTemplate.cxx:61
 MemberTemplate.cxx:62
 MemberTemplate.cxx:63
 MemberTemplate.cxx:64
 MemberTemplate.cxx:65
 MemberTemplate.cxx:66
 MemberTemplate.cxx:67
 MemberTemplate.cxx:68
 MemberTemplate.cxx:69
 MemberTemplate.cxx:70
 MemberTemplate.cxx:71
 MemberTemplate.cxx:72
 MemberTemplate.cxx:73
 MemberTemplate.cxx:74
 MemberTemplate.cxx:75
 MemberTemplate.cxx:76
 MemberTemplate.cxx:77
 MemberTemplate.cxx:78
 MemberTemplate.cxx:79
 MemberTemplate.cxx:80
 MemberTemplate.cxx:81
 MemberTemplate.cxx:82
 MemberTemplate.cxx:83
 MemberTemplate.cxx:84
 MemberTemplate.cxx:85
 MemberTemplate.cxx:86
 MemberTemplate.cxx:87
 MemberTemplate.cxx:88
 MemberTemplate.cxx:89
 MemberTemplate.cxx:90
 MemberTemplate.cxx:91
 MemberTemplate.cxx:92
 MemberTemplate.cxx:93
 MemberTemplate.cxx:94
 MemberTemplate.cxx:95
 MemberTemplate.cxx:96
 MemberTemplate.cxx:97
 MemberTemplate.cxx:98
 MemberTemplate.cxx:99
 MemberTemplate.cxx:100
 MemberTemplate.cxx:101
 MemberTemplate.cxx:102
 MemberTemplate.cxx:103
 MemberTemplate.cxx:104
 MemberTemplate.cxx:105
 MemberTemplate.cxx:106
 MemberTemplate.cxx:107
 MemberTemplate.cxx:108
 MemberTemplate.cxx:109
 MemberTemplate.cxx:110
 MemberTemplate.cxx:111
 MemberTemplate.cxx:112
 MemberTemplate.cxx:113
 MemberTemplate.cxx:114
 MemberTemplate.cxx:115
 MemberTemplate.cxx:116
 MemberTemplate.cxx:117
 MemberTemplate.cxx:118
 MemberTemplate.cxx:119
 MemberTemplate.cxx:120
 MemberTemplate.cxx:121
 MemberTemplate.cxx:122
 MemberTemplate.cxx:123
 MemberTemplate.cxx:124
 MemberTemplate.cxx:125
 MemberTemplate.cxx:126
 MemberTemplate.cxx:127
 MemberTemplate.cxx:128
 MemberTemplate.cxx:129
 MemberTemplate.cxx:130