17 #include "TClassEdit.h" 28 fAllRules( 0 ), fVersion(-3), fCheckSum( 0 )
53 std::cout <<
"TSchemaRuleSet for " <<
fClassName <<
":\n";
57 while ((
object = next())) {
58 object->ls(fClassName);
112 bool streamerInfosTest;
120 while( (obj = titer.Next()) ) {
125 errmsg->Form(
"the target member (%s) is unknown",str->
GetString().Data());
145 for(
auto r : rules) {
152 *errmsg =
"it conflicts with one of the other rules";
158 *errmsg =
"The existing rule is:\n ";
159 r->AsString(*errmsg,
"s");
160 *errmsg +=
"\nand the ignored rule is:\n ";
201 while( (obj = it.
Next()) ) {
233 if (!strncmp(source,
"std::pair<",10) || !strncmp(source,
"pair<",5)) {
238 Error(
"HasRuleWithSourceClass",
"Can not find the TClass for %s when matching with %s\n",source.Data(),
fClass->
GetName());
244 Error(
"HasRuleWithSourceClass",
"Can not find the StreamerInfo for %s when matching with %s\n",source.Data(),
fClass->
GetName());
248 Error(
"HasRuleWithSourceClass",
"Can not find the StreamerInfo for target class %s\n",
fClass->
GetName());
251 for(
int i = 0 ; i<2 ; ++i) {
265 }
else if (targetElement->
GetClass()) {
294 while( (obj = it.
Next()) ) {
297 arr.push_back( rule );
333 while( (obj = it.
Next()) ) {
336 arr.push_back( rule );
353 while( (obj = it.
Next()) ) {
356 arr.push_back( rule );
373 while( (obj = it.
Next()) ) {
376 arr.push_back( rule );
445 while( (obj = it.
Next()) ) {
468 for(
auto rule : *
this ) {
469 if( rule->HasSource( name ) )
return rule;
479 for(
auto rule : *
this ) {
480 if( rule->HasTarget( name ) )
return rule;
493 for(
auto rule : *
this ) {
494 if( rule->HasSource( name ) ) {
496 const TObjArray *targets = rule->GetTarget();
505 if (rule->GetReadFunctionPointer() || rule->GetReadRawFunctionPointer()) {
523 for(
auto rule : *
this) {
524 if( rule->HasTarget( name ) ) {
526 const TObjArray *targets = rule->GetTarget();
530 const TObjArray *sources = rule->GetSource();
539 if (rule->GetReadFunctionPointer() || rule->GetReadRawFunctionPointer()) {
553 void TSchemaRuleSet::Streamer(
TBuffer &R__b)
Bool_t HasRuleWithSourceClass(const TString &source) const
Return True if we have any rule whose source class is 'source'.
virtual const char * GetName() const
Returns name of object.
Bool_t IsValid() const
Return kTRUE if this rule is valid.
virtual Int_t GetCollectionType() const =0
Bool_t AddRule(TSchemaRule *rule, EConsistencyCheck checkConsistency=kCheckAll, TString *errmsg=0)
The consistency check always fails if the TClass object was not set! if checkConsistency is: kNoCheck...
const char * GetSourceClass() const
Get the source class of this rule (i.e. the onfile class).
TClassRef fClass
Array of all rules.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual Int_t GetProperties() const
Namespace for new ROOT classes and functions.
Bool_t HasRuleWithTarget(const TString &name, Bool_t willset) const
Return true if the set of rules has at least one rule that has the data member named 'name' as a targ...
Bool_t TestChecksum(UInt_t checksum) const
Check if given checksum is defined in this rule.
Collectable string class.
virtual void Clear(Option_t *option="")
Remove all objects from the array.
virtual TClass * GetValueClass() const =0
R__EXTERN TVirtualMutex * gInterpreterMutex
void RemoveRule(TSchemaRule *rule)
Remove given rule from the set - the rule is not being deleted!
Bool_t TestBit(UInt_t f) const
const TSchemaRule * GetRuleWithTarget(const TString &name) const
Return the rule that has 'name' as a target.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual ~TSchemaRuleSet()
Destructor.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist...
TSchemaRuleSet()
Default constructor.
virtual void AddAll(const TCollection *col)
Add all objects from collection col to this collection.
Buffer base class used for serializing objects.
void ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
TObjArray * fPersistentRules
virtual TObject * Remove(TObject *obj)
Remove object from array.
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
void RemoveRules(TObjArray *rules)
remove given array of rules from the set - the rules are not being deleted!
Iterator of object array.
TObject * At(Int_t idx) const
Bool_t SetVersion(const TString &version)
Set the version string - returns kFALSE if the format is incorrect.
void AsString(TString &out) const
Fill the string 'out' with the string representation of the rule.
void SetTargetClass(const TString &classname)
Set the target class of this rule (i.e. the in memory class).
TObject * Next()
Return next object in array. Returns 0 when no more objects in array.
Bool_t Conflicts(const TSchemaRule *rule) const
Check if this rule conflicts with the given one.
void AsString(TString &out, const char *options="") const
Add to the string 'out' the string representation of the rule.
Bool_t AddRules(TSchemaRuleSet *rules, EConsistencyCheck checkConsistency=kCheckAll, TString *errmsg=0)
const TObjArray * GetStreamerInfos() const
void SetSourceClass(const TString &classname)
Set the source class of this rule (i.e. the onfile class).
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
const TString & GetString() const
Int_t GetClassVersion() const
const TObjArray * GetRules() const
virtual Bool_t HasPointers() const =0
const TMatches FindRules(const TString &source) const
Return all the rules that are about the given 'source' class.
TString fClassName
Target class pointer (for consistency checking)
void SetClass(TClass *cls)
Set the TClass associated with this rule set.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
const TObjArray * GetTarget() const
Get the target data members of this rule (i.e. the in memory data member).
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
The ROOT global object gROOT contains a list of all defined classes.
TObjArray * fAllRules
Array of non-persisten rules - just for cleanup purposes - owns the elements.
Bool_t HasRuleWithSource(const TString &name, Bool_t needingAlloc) const
Return true if the set of rules has at least one rule that has the data member named 'name' as a sour...
TObjArray * fRemainingRules
#define R__LOCKGUARD2(mutex)
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Version_t GetClassVersion() const
TObject * UncheckedAt(Int_t i) const
virtual TObjArray * GetElements() const =0
Bool_t GetEmbed() const
Return true if this rule should be saved in the ROOT File.
const TSchemaRule * GetRuleWithSource(const TString &name) const
Return the rule that has 'name' as a source.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Mother of all ROOT objects.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
Bool_t TestVersion(Int_t version) const
Check if given version number is defined in this rule.
Int_t GetEntries() const
Return the number of objects in array (i.e.
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
virtual const char * GetName() const
Returns name of object.
Abstract Interface class describing Streamer information for one class.
TString GetClassName() const
UInt_t GetClassCheckSum() const
TClass * GetClass() const
const TObjArray * GetPersistentRules() const