7 #ifndef __KVCLASSFACTORY_H
8 #define __KVCLASSFACTORY_H
14 #include "KVNameValueList.h"
114 void WritePreProc(std::ofstream&);
115 void WriteWhoWhen(std::ofstream&);
117 void WriteClassDec(std::ofstream&);
118 void WriteClassHeader();
119 void WriteClassImp();
120 void WriteClassWithTemplateHeader();
121 void WriteClassWithTemplateImp();
123 const Char_t* templateFile);
127 void AddTObjectCopyMethod();
128 void AddCopyConstructor();
130 void GenerateGettersAndSetters();
131 void AddAssignmentOperator();
144 Bool_t fIsFundamental=
false;
181 return !strcmp(
GetAccess(),
"protected");
191 return fIsFundamental;
231 virtual void write_method_body(
KVString& decl);
239 void write_doxygen_format_method_comments(
KVString& decl);
262 :
KVClassMember(), fVirtual(Virtual), fConst(Const), fNargs(0), fInline(Inline)
288 if (strcmp(defaultvalue,
"")) {
292 if (strcmp(argname,
"")) {
374 void write_method_body(
KVString& decl)
override;
409 fFields.SetValue(
Form(
"Arg_%d_baseclass", i), 1);
414 fFields.SetValue(
Form(
"Arg_%d_memvar", i), memvar);
421 void AddMemberInitialiserConstructor(KVClassConstructor* =
nullptr);
450 const Char_t* base_class =
452 kFALSE,
const Char_t* templateFile =
"");
459 const Char_t* base_class =
461 kFALSE,
const Char_t* templateFile =
"");
468 const Char_t* argument_name =
"",
const Char_t* default_value =
"",
const Char_t* access =
"public");
472 void AddMethod(
const KVClassMethod& kvcm);
474 const Char_t* argument_name =
"",
const Char_t* default_value =
"");
504 return fClassName.
Data();
515 return fClassPath !=
"" ?
Form(
"%s%s.h", fClassPath.
Data(), fClassName.
Data()) :
Form(
"%s.h", fClassName.
Data());
522 return fClassPath !=
"" ?
Form(
"%s%s.cpp", fClassPath.
Data(), fClassName.
Data()) :
Form(
"%s.cpp", fClassName.
Data());
530 return fClassDesc.
Data();
535 fHasBaseClass = (fBaseClassName !=
"");
536 fBaseClassTObject =
kFALSE;
539 fBaseClassTObject = (fBaseClass && fBaseClass->
InheritsFrom(
"TObject"));
544 return fBaseClassName.
Data();
548 return fBaseClassName.
Contains(
",");
552 return fWithTemplate;
556 return fBaseClassTObject;
561 return fTemplateBase;
592 fInheritAllCtors = yes;
#define ClassDefOverride(name, id)
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
char * Form(const char *fmt,...)
Base class for KaliVeda framework.
void SetLabel(const Char_t *lab)
const Char_t * GetLabel() const
virtual Bool_t IsCalled(const Char_t *name) const
Constructor for a class generated with KVClassFactory.
Bool_t IsDefaultCtor() const
void SetBaseClassArgument(Int_t i)
Bool_t IsCopyCtor() const
Bool_t IsMoveCtor() const
void SetCopyCtor(Bool_t c=kTRUE)
KVClassConstructor(KVClassFactory *ParentClass)
void SetMemberVariableNameForArgument(Int_t i, const Char_t *memvar)
Bool_t IsConstructor() const override
void SetMoveCtor(Bool_t c=kTRUE)
Destructor for a class generated with KVClassFactory.
Bool_t IsDestructor() const override
Member variable in a class generated with KVClassFactory.
virtual void WriteDeclaration(KVString &)
void SetComment(const Char_t *c)
set comment for variable
void Print(Option_t *="") const override
print the KVClass member
void SetAccess(const Char_t *acc="public")
set access type : public, protected or private
void Copy(TObject &obj) const override
copy this to obj
Bool_t IsFundamental() const
const Char_t * GetRealName() const
get short name without leading 'f'
const Char_t * GetComment() const
get access type : public, protected or private
const Char_t * GetAccess() const
get access type : public, protected or private
Bool_t IsProtected() const
Method in a class generated with KVClassFactory.
void SetMethodComment(const KVString &com)
void Copy(TObject &obj) const override
copy this to obj
void WriteDeclaration(KVString &) override
const Char_t * GetReturnType()
void SetNoExcept(bool yes=true)
KVClassMethod(Bool_t Virtual=kFALSE, Bool_t Const=kFALSE, Bool_t Inline=kFALSE)
virtual Bool_t IsDestructor() const
void SetConst(Bool_t c=kTRUE)
void WriteImplementation(KVString &decl)
void SetBaseClass(const Char_t *name)
void Print(Option_t *="") const override
print the KVClass method
virtual Bool_t IsConstructor() const
void AddArgument(const Char_t *type, const Char_t *argname="", const Char_t *defaultvalue="")
void SetReturnType(const Char_t *type)
const Char_t * GetClassName()
void SetClassName(const Char_t *name)
void SetVirtual(Bool_t c=kTRUE)
Bool_t IsNormalMethod() const
void SetInline(Bool_t yes=kTRUE)
void SetMethodBody(const KVString &body)
Factory class for generating skeleton files for new classes.
void Print(Option_t *opt="") const override
Print infos on object.
void Copy(TObject &obj) const override
Copy the state of this KVClassFactory to the one referenced by 'obj'.
void SetOutputPath(const KVString &p)
const Char_t * GetClassDesc() const
Bool_t HasVirtualMethods() const
Bool_t WithMultipleBaseClasses() const
void SetTemplate(Bool_t temp, const Char_t *temp_file)
void AddMethodComment(const Char_t *method_name, const KVString &comment)
Set the comments for method 'method_name' added to the class using AddMethod.
Bool_t IsBaseClassTObject() const
void GenerateCode()
Generate header and implementation file for currently-defined class.
KVClassMethod * GetMethod(const Char_t *name) const
const Char_t * GetTemplateBase() const
void SetClassName(const Char_t *n)
void SetInheritAllConstructors(Bool_t yes=kTRUE)
const Char_t * GetImpFileName() const
const KVList * GetListOfMethods() const
const KVList * GetListOfMembers() const
Bool_t WithTemplate() const
const Char_t * GetHeaderFileName() const
KVClassFactory()
Default ctor.
KVClassConstructor * GetDefaultCtor() const
static void MakeClass(const Char_t *classname, const Char_t *classdesc, const Char_t *base_class="", Bool_t withTemplate=kFALSE, const Char_t *templateFile="")
void AddHeaderIncludeFile(const Char_t *filename)
void AddDestructor(const TString &access="public")
void AddImplIncludeFile(const Char_t *filename)
void AddDefaultConstructor()
const Char_t * GetClassName() const
void SetClassDesc(const Char_t *d)
Int_t GetNumberOfMemberVariables() const
void AddMethodBody(const Char_t *method_name, const KVString &body)
const Char_t * GetBaseClass() const
void InlineAllMethods(bool yes=true)
const Char_t * GetOutputPath() const
void AddMethodArgument(const Char_t *method_name, const Char_t *argument_type, const Char_t *argument_name="", const Char_t *default_value="")
void InlineAllConstructors(bool yes=true)
KVClassDestructor * GetDestructor() const
void SetBaseClass(const Char_t *b)
void AddGetSetMethods(const KVNameValueList &)
For each named parameter in the list, we add protected member variables with the name and type of the...
KVClassConstructor * AddConstructor(const Char_t *argument_type="", const Char_t *argument_name="", const Char_t *default_value="", const Char_t *access="public")
KVClassMember * AddMember(const Char_t *name, const Char_t *type, const Char_t *comment, const Char_t *access="protected")
void AddAllBaseConstructors()
KVClassMethod * AddMethod(const Char_t *name, const Char_t *return_type, const Char_t *access="public", Bool_t isVirtual=kFALSE, Bool_t isConst=kFALSE)
Extended TList class which owns its objects by default.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
void SetValue(const Char_t *name, value_type value)
const Char_t * GetStringValue(const Char_t *name) const
Bool_t HasParameter(const Char_t *name) const
T * get_object(const TString &name) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
static TClass * GetClass(Bool_t load=kTRUE, Bool_t silent=kFALSE)
Bool_t InheritsFrom(const char *cl) const override
virtual Int_t GetEntries() const
virtual void SetName(const char *name)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
const char * Data() const
TString & Append(char c, Ssiz_t rep=1)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const