#ifdef __cplusplus extern "C" { #endif #pragma once #include "HROOT-mathType.h" #include "HROOTCoreTNamed.h" #include "HROOTCoreTObject.h" #include "STDDeletable.h" #include "HROOT-coreType.h" #define TRANDOM_DECL_VIRT(Type) \ int Type##_GetSeed ( Type##_p p );\ double Type##_Gaus ( Type##_p p, double mean, double sigma );\ void Type##_SetSeed ( Type##_p p, int seed );\ double Type##_Uniform ( Type##_p p, double x1, double x2 ); #define TRANDOM_DECL_NONVIRT(Type) \ Type##_p Type##_newTRandom ( int seed ); #define TRANDOM_DECL_ACCESSOR(Type) \ #define TRANDOM_DEF_VIRT(Type) \ int Type##_GetSeed ( Type##_p p ) {\ return ((TYPECASTMETHOD(Type, GetSeed, TRandom))(p))->GetSeed();\ }\ \ double Type##_Gaus ( Type##_p p, double mean, double sigma ) {\ return ((TYPECASTMETHOD(Type, Gaus, TRandom))(p))->Gaus(mean, sigma);\ }\ \ void Type##_SetSeed ( Type##_p p, int seed ) {\ ((TYPECASTMETHOD(Type, SetSeed, TRandom))(p))->SetSeed(seed);\ }\ \ double Type##_Uniform ( Type##_p p, double x1, double x2 ) {\ return ((TYPECASTMETHOD(Type, Uniform, TRandom))(p))->Uniform(x1, x2);\ } #define TRANDOM_DEF_NONVIRT(Type) \ Type##_p Type##_newTRandom ( int seed ) {\ Type* newp=new Type(seed);return from_nonconst_to_nonconst(newp);\ } #define TRANDOM_DEF_ACCESSOR(Type) \ TNAMED_DECL_VIRT(TRandom) TOBJECT_DECL_VIRT(TRandom) DELETABLE_DECL_VIRT(TRandom) TRANDOM_DECL_VIRT(TRandom) TRANDOM_DECL_NONVIRT(TRandom) TRANDOM_DECL_ACCESSOR(TRandom) #ifdef __cplusplus } #endif