Skip to content
Snippets Groups Projects
Commit cb1f4c20 authored by Paul Russo's avatar Paul Russo
Browse files

Cleanup handling of cache variables during initialization,

copying, and iteration.

-- Paul Russo


git-svn-id: http://root.cern.ch/svn/root/trunk@24528 27541ba8-7e3a-0410-8455-c3a389f83636
parent b6d33f47
No related merge requests found
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
* *
************************************************************************/ ************************************************************************/
#ifndef G__DATAMEMBER_H #ifndef G__DATAMEMBER_H
#define G__DATAMEMBER_H #define G__DATAMEMBER_H
...@@ -21,106 +20,60 @@ ...@@ -21,106 +20,60 @@
namespace Cint { namespace Cint {
/*********************************************************************
* class G__DataMemberInfo
*
*
*********************************************************************/
class class
#ifndef __CINT__ #ifndef __CINT__
G__EXPORT G__EXPORT
#endif #endif
G__DataMemberInfo { G__DataMemberInfo { // class to iterate over data members in a scope and return info about each one
// -- Types.
public:
enum error_code { VALID, NOT_INT, NOT_DEF, IS_PRIVATE, UNKNOWN };
// -- Data Members.
private:
Reflex::Scope m_scope;
Reflex::Member m_datambr;
int m_memberiter;
// -- Backward compatibility
G__TypeInfo *m_typeinfo;
G__ClassInfo *m_memberof;
std::string m_name;
// -- Member Functions.
public:
~G__DataMemberInfo();
G__DataMemberInfo() public: // -- Types.
: m_memberiter(-1), m_typeinfo(0), m_memberof(0) enum error_code { VALID, NOT_INT, NOT_DEF, IS_PRIVATE, UNKNOWN };
{
Init();
}
G__DataMemberInfo(const G__DataMemberInfo& dmi)
: m_scope(dmi.m_scope)
, m_datambr(dmi.m_datambr)
, m_memberiter(dmi.m_memberiter)
, m_typeinfo(0)
, m_memberof(0)
{
}
G__DataMemberInfo(class G__ClassInfo& a) : m_typeinfo(0), m_memberof(0)
{
Init(a);
}
G__DataMemberInfo(const ::Reflex::Member& m)
: m_datambr(m), m_typeinfo(0), m_memberof(0)
{
}
G__DataMemberInfo& operator=(const G__DataMemberInfo& dmi)
{
m_datambr = dmi.m_datambr;
return *this;
}
void Init(); public: // -- Member Functions.
void Init(class G__ClassInfo& a); ~G__DataMemberInfo(); // destructor
void Init(const ::Reflex::Scope& a); G__DataMemberInfo(); // default constructor
G__DataMemberInfo(class G__ClassInfo&); // init with a specific scope
G__DataMemberInfo(const ::Reflex::Member); // init with a specific member TODO: Can we use iterator after?
G__DataMemberInfo(const G__DataMemberInfo&); // copy constructor
G__DataMemberInfo& operator=(const G__DataMemberInfo&); // copy assignment operator
void Init(); // default init
void Init(class G__ClassInfo&); // init with a specific scope
void Init(const ::Reflex::Scope); // init with a specific scope
void Init(long handlinin, long indexin, G__ClassInfo* belongingclassin); void Init(long handlinin, long indexin, G__ClassInfo* belongingclassin);
size_t Handle(); // id number of current data member
size_t Handle() int Index(); // always returns zero
{ const char* Name(); // name of current data member
return (size_t) m_datambr.Id(); const char* Title(); // comment of current data member
} ::Reflex::Type ReflexType(); // reflex type of current data member
G__TypeInfo* Type(); // reflex type of current data member as a G__TypeInfo
int Index() long Property(); // summary of properties of current data member
{ long Offset(); // addressOffset of current data member
return 0; int Bitfield(); // bitfield width of current data member
} int ArrayDim(); // number of array bounds of current data member
int MaxIndex(int dim); // array bound for a given dimension of current data member
const char* Name(); ::Reflex::Scope DeclaringScope(); // scope of current data member
const char* Title(); G__ClassInfo* MemberOf(); // scope of current data member as a G__ClassInfo
void SetGlobalcomp(int globalcomp); // change globalcomp of current data member
Reflex::Type ReflexType(); int IsValid(); // Internal iterator is pointing at a valid data member.
int SetFilePos(const char* fname); // Set internal iterator based on a saved filed position
G__TypeInfo* Type(); int Next(); // Move to next data member in scope.
int Prev(); // Move to previous data member in scope.
long Property(); const char* ValidArrayIndex(int* errnum = 0, char** errstr = 0); // check the current data member comment for an array index expression
long Offset(); const char* FileName(); // filename of data member pointed to by internal iterator
int Bitfield(); int LineNumber(); // line number of data member pointed to by internal iterator
int ArrayDim();
int MaxIndex(int dim); private: // -- Data Members.
Reflex::Scope m_scope; // declaring scope we represent
Reflex::Scope DeclaringScope(); Reflex::Member m_datambr; // current state of internal iterator, the current data member
G__ClassInfo* MemberOf(); int m_memberiter; // current state of internal iterator, member index
// -- Backward compatibility
void SetGlobalcomp(int globalcomp); G__TypeInfo* m_typeinfo; // we own, cached object, reflex type of current data member as a G__TypeInfo
int IsValid(); G__ClassInfo* m_memberof; // we own, cached object, the declaring scope as a G__ClassInfo
int SetFilePos(const char* fname);
int Next();
int Prev();
const char* ValidArrayIndex(int* errnum = 0, char** errstr = 0);
const char* FileName();
int LineNumber();
}; };
} // namespace Cint } // namespace Cint
using namespace Cint; using namespace Cint;
#endif
#endif // G__DATAMEMBER_H
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment