00001 // -*- C++ -*- 00002 // 00003 // ClassDocumentation.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad 00005 // 00006 // ThePEG is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef ThePEG_ClassDocumentation_H 00010 #define ThePEG_ClassDocumentation_H 00011 // This is the declaration of the ClassDocumentation class. 00012 00013 #include "ThePEG/Config/ThePEG.h" 00014 #include "ClassDocumentation.fh" 00015 00016 namespace ThePEG { 00017 00048 class ClassDocumentationBase { 00049 00050 protected: 00051 00063 ClassDocumentationBase(string newDocumentation, 00064 string newModelDescription, 00065 string newModelReferences, 00066 const type_info & newTypeInfo); 00067 00068 public: 00069 00073 virtual ~ClassDocumentationBase() {} 00074 00075 public: 00076 00080 string documentation() const { return theDocumentation; } 00081 00085 string modelDescription() const { return theModelDescription; } 00086 00090 string modelReferences() const { return theModelReferences; } 00091 00092 private: 00093 00097 string theDocumentation; 00098 00102 string theModelDescription; 00103 00107 string theModelReferences; 00108 00109 private: 00110 00114 ClassDocumentationBase(); 00115 00119 ClassDocumentationBase(const ClassDocumentationBase &); 00120 00124 ClassDocumentationBase & operator=(const ClassDocumentationBase &); 00125 00126 }; 00127 00128 00159 template <typename T> 00160 class ClassDocumentation: public ClassDocumentationBase { 00161 00162 public: 00163 00173 ClassDocumentation(string newDocumentation, 00174 string newModelDescription = "", 00175 string newModelReferences = "") 00176 : ClassDocumentationBase(newDocumentation, newModelDescription, 00177 newModelReferences, typeid(T)) {} 00178 00179 private: 00180 00184 ClassDocumentation(); 00185 00189 ClassDocumentation(const ClassDocumentation &); 00190 00194 ClassDocumentation & operator=(const ClassDocumentation &); 00195 00196 }; 00197 00198 } 00199 00200 #endif /* ThePEG_ClassDocumentation_H */