#ifndef Reflex_FunctionBuilder
#define Reflex_FunctionBuilder
#include "Reflex/Reflex.h"
namespace Reflex {
class FunctionMember;
class Type;
class RFLX_API FunctionBuilder {
public:
FunctionBuilder( const Type & typ,
const char * nam,
StubFunction stubFP,
void * stubCtx,
const char * params,
unsigned char modifiers );
virtual ~FunctionBuilder();
FunctionBuilder & AddProperty( const char * key,
Any value );
FunctionBuilder & AddProperty( const char * key,
const char * value );
Member ToMember();
private:
Member fFunction;
};
class RFLX_API FunctionBuilderImpl {
public:
FunctionBuilderImpl( const char * nam,
const Type & typ,
StubFunction stubFP,
void * stubCtx,
const char * params,
unsigned char modifiers = 0 );
~FunctionBuilderImpl();
void AddProperty( const char * key,
Any value );
void AddProperty( const char * key,
const char * value );
Member ToMember();
private:
Member fFunction;
};
template < typename F > class FunctionBuilderT {
public:
FunctionBuilderT( const char * nam,
StubFunction stubFP,
void * stubCtx,
const char * params,
unsigned char modifiers );
virtual ~FunctionBuilderT() {}
template < typename P >
FunctionBuilderT & AddProperty( const char * key, P value );
Member ToMember();
private:
FunctionBuilderImpl fFunctionBuilderImpl;
};
}
#include "Reflex/Builder/TypeBuilder.h"
template < typename F >
inline Reflex::FunctionBuilderT<F>::FunctionBuilderT( const char * nam,
StubFunction stubFP,
void * stubCtx,
const char * params,
unsigned char modifiers )
: fFunctionBuilderImpl( nam,
FunctionDistiller<F>::Get(),
stubFP,
stubCtx,
params,
modifiers ) { }
template < typename F > template < typename P >
inline Reflex::FunctionBuilderT<F> &
Reflex::FunctionBuilderT<F>::AddProperty( const char * key,
P value )
{
fFunctionBuilderImpl.AddProperty(key , value);
return * this;
}
template < typename F > inline Reflex::Member
Reflex::FunctionBuilderT<F>::ToMember() {
return fFunctionBuilderImpl.ToMember();
}
#endif // Reflex_FunctionBuilder
Last change: Wed Jun 25 08:31:13 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.