27TSchemaRuleSet::TSchemaRuleSet(): fPersistentRules( 0 ), fRemainingRules( 0 ),
28 fAllRules( 0 ), fVersion(-3), fCheckSum( 0 )
53 std::cout <<
"TSchemaRuleSet for " <<
fClassName <<
":\n";
57 while ((
object = next())) {
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()) {
553void TSchemaRuleSet::Streamer(
TBuffer &R__b)
R__EXTERN TVirtualMutex * gInterpreterMutex
#define R__LOCKGUARD(mutex)
const TSchemaRule * GetRuleWithSource(const TString &name) const
Return the rule that has 'name' as a source.
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...
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...
const TSchemaRule * GetRuleWithTarget(const TString &name) const
Return the rule that has 'name' as a target.
TObjArray * fRemainingRules
Bool_t AddRules(TSchemaRuleSet *rules, EConsistencyCheck checkConsistency=kCheckAll, TString *errmsg=0)
TClassRef fClass
Array of all rules.
TString fClassName
Target class pointer (for consistency checking)
void RemoveRule(TSchemaRule *rule)
Remove given rule from the set - the rule is not being deleted!
const TMatches FindRules(const TString &source) const
Return all the rules that are about the given 'source' class.
const TObjArray * GetPersistentRules() const
void AsString(TString &out) const
Fill the string 'out' with the string representation of the rule.
UInt_t GetClassCheckSum() const
void ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
Int_t GetClassVersion() const
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...
TString GetClassName() const
TObjArray * fAllRules
Array of non-persisten rules - just for cleanup purposes - owns the elements.
void SetClass(TClass *cls)
Set the TClass associated with this rule set.
void RemoveRules(TObjArray *rules)
remove given array of rules from the set - the rules are not being deleted!
TObjArray * fPersistentRules
const TObjArray * GetRules() const
Bool_t HasRuleWithSourceClass(const TString &source) const
Return True if we have any rule whose source class is 'source'.
virtual ~TSchemaRuleSet()
Destructor.
void AsString(TString &out, const char *options="") const
Add to the string 'out' the string representation of the rule.
Bool_t TestVersion(Int_t version) const
Check if given version number is defined in this rule.
const TObjArray * GetTarget() const
Get the target data members of this rule (i.e. the in memory data member).
Bool_t Conflicts(const TSchemaRule *rule) const
Check if this rule conflicts with the given one.
void SetTargetClass(const TString &classname)
Set the target class of this rule (i.e. the in memory class).
const char * GetSourceClass() const
Get the source class of this rule (i.e. the onfile class).
Bool_t TestChecksum(UInt_t checksum) const
Check if given checksum is defined in this rule.
Bool_t SetVersion(const TString &version)
Set the version string - returns kFALSE if the format is incorrect.
Bool_t IsValid() const
Return kTRUE if this rule is valid.
Bool_t GetEmbed() const
Return true if this rule should be saved in the ROOT File.
void SetSourceClass(const TString &classname)
Set the source class of this rule (i.e. the onfile class).
Buffer base class used for serializing objects.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
The ROOT global object gROOT contains a list of all defined classes.
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
const TObjArray * GetStreamerInfos() const
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Version_t GetClassVersion() const
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.
virtual void AddAll(const TCollection *col)
Add all objects from collection col to this collection.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual const char * GetName() const
Returns name of object.
Iterator of object array.
TObject * Next()
Return next object in array. Returns 0 when no more objects in array.
Int_t GetEntries() const
Return the number of objects in array (i.e.
virtual void Clear(Option_t *option="")
Remove all objects from the array.
TObject * UncheckedAt(Int_t i) const
virtual TObject * Remove(TObject *obj)
Remove object from array.
TObject * At(Int_t idx) const
Collectable string class.
const TString & GetString() const
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
TClass * GetClass() const
virtual Int_t GetProperties() const
virtual TClass * GetValueClass() const =0
virtual Int_t GetCollectionType() const =0
virtual Bool_t HasPointers() const =0
Abstract Interface class describing Streamer information for one class.
virtual TObjArray * GetElements() const =0
Namespace for new ROOT classes and functions.