https://github.com/root-project/root
Tip revision: c596839d1e4878264a514f43de8b6c20e9085ad6 authored by Unknown Author on 03 February 2006, 14:56:13 UTC
This commit was manufactured by cvs2svn to create tag
This commit was manufactured by cvs2svn to create tag
Tip revision: c596839
ChangeLog.reflex
Changes to the Reflex API moving from SEAL to ROOT
==================================================
General remarks:
----------------
.) Namespace change:
The SEAL version lives in namespace "seal::reflex" the ROOT version in namespace "ROOT::Reflex"
.) Function names:
The first letter of all function names is upper case. Further changes to function names are
mentioned below.
.) Iterating over containers:
Every container provides stl like iterators which are encouraged to use. The functions provided are
- _Begin()
- _End()
- _RBegin()
- _REnd()
for each possible container type a forward and reverse iterator type is provided. These types are:
- Type
- Base
- Scope
- Object
- Member
- TypeTemplate
- MemberTemplate
- StdString
e.g. "Type_Iterator" and "Reverse_Type_Iterator"
example: the container of sub types in class Scope provides
- Type_Iterator SubType_Begin() const;
- Type_Iterator SubType_End() const;
- Reverse_Type_Iterator SubType_RBegin() const;
- Reverse_Type_Iterator SubType_REnd() const;
in addition the "old" style iteration is provided
- the getter for a specific containee is appended with "At" (e.g. "SubTypeAt")
- the getter for the size changed from "Count" to "Size" (e.g. "SubTypeSize")
.) New iterator functions for parameter names and defaults for FunctionMembers, TypeTemplates and
MemberTemplates
.) Functions for lookup of data/function members by name have changed from "function/dataMember"
to "Function/DataMemberByName" and "member" to "memberByName"
.) The function to get the length of an array has changed from "length" to "ArrayLength"
.) The following functions have been removed from Object
- invokeT - use "invoke" together with object cast instead
- setT - use "set" instead
- getT - use "get" together with "Object_Cast" instead
- field - use "get" instead
.) The function "scope" was removed from the "Type" and "Member" classes. Use function
"DeclaringScope" instead which provides the same functionality
Detailed list of changed/added/removed functions:
-------------------------------------------------
(except the changes where the first letter of the function name changed to upper case)
SEAL -> ROOT
class Type
~~~~~~~~~~
base -> BaseAt
baseCount -> BaseSize
base_begin -> Base_Begin
base_end -> Base_End
base_rbegin -> Base_RBegin
base_rend -> Base_REnd
dataMember -> DataMemberByName
dataMember -> DataMemberAt
dataMemberCount -> DataMemberSize
dataMember_begin -> DataMember_Begin
dataMember_end -> DataMember_End
dataMember_rbegin -> DataMember_RBegin
dataMember_rend -> DataMember_REnd
functionMember -> FunctionMemberByName
functionMember -> FunctionMemberAt
functionMemberCount -> FunctionMemberSize
functionMember_begin -> FunctionMember_Begin
functionMember_end -> FunctionMember_End
functionMember_rbegin -> FunctionMember_RBegin
functionMember_rend -> FunctionMember_REnd
length -> ArrayLength
member -> MemberByName
member -> MemberAt
memberCount -> MemberSize
member_begin -> Member_Begin
member_end -> Member_End
member_rbegin -> Member_RBegin
member_rend -> Member_REnd
memberTemplate -> MemberTemplateAt
memberTemplateCount -> MemberTemplateSize
memberTemplate_begin -> MemberTemplate_Begin
memberTemplate_end -> MemberTemplate_End
memberTemplate_rbegin -> MemberTemplate_RBegin
memberTemplate_rend -> MemberTemplate_REnd
parameter -> FunctionParameterAt
parameterCount -> FunctionParameterSize
parameter_begin -> FunctionParameter_Begin
parameter_end -> FunctionParameter_End
parameter_rbegin -> FunctionParameter_RBegin
parameter_rend -> FunctionParameter_REnd
propertyList -> Properties
scope -> "removed, use DeclaringScope instead"
subScope -> SubScopeAt
subScopeCount -> SubScopeSize
subScope_begin -> SubScope_Begin
subScope_end -> SubScope_End
subScope_rbegin -> SubScope_RBegin
subScope_rend -> SubScope_REnd
subType -> SubTypeAt
subTypeCount -> SubTypeSize
subType_begin -> SubType_Begin
subType_end -> SubType_End
subType_rbegin -> SubType_RBegin
subType_rend -> SubType_REnd
templateArgument -> TemplateArgumentAt
templateArgumentCount -> TemplateArgumentSize
templateArgument_begin -> TemplateArgument_Begin
templateArgument_end -> TemplateArgument_End
templateArgument_rbegin -> TemplateArgument_RBegin
templateArgument_rend -> TemplateArgument_REnd
type -> TypeAt
typeCount -> TypeSize
type_begin -> Type_Begin
type_end -> Type_End
type_rbegin -> Type_RBegin
type_rend -> Type_REnd
typeTemplate -> SubTypeTemplateAt
typeTemplateCount -> SubTypeTemplateSize
typeTemplate_begin -> SubTypeTemplate_Begin
typeTemplate_end -> SubTypeTemplate_End
typeTemplate_rbegin -> SubTypeTemplate_RBegin
typeTemplate_rend -> SubTypeTemplate_REnd
class Scope
~~~~~~~~~~~
base -> BaseAt
baseCount -> BaseSize
base_begin -> Base_Begin
base_end -> Base_End
base_rbegin -> Base_RBegin
base_rend -> Base_REnd
dataMember -> DataMemberByName
dataMember -> DataMemberAt
dataMemberCount -> DataMemberSize
dataMember_begin -> DataMember_Begin
dataMember_end -> DataMember_End
dataMember_rbegin -> DataMember_RBegin
dataMember_rend -> DataMember_REnd
functionMember -> FunctionMemberByName
functionMember -> FunctionMemberAt
functionMemberCount -> FunctionMemberSize
functionMember_begin -> FunctionMember_Begin
functionMember_end -> FunctionMember_End
functionMember_rbegin -> FunctionMember_RBegin
functionMember_rend -> FunctionMember_REnd
member -> MemberByName
member -> MemberAt
memberCount -> MemberSize
member_begin -> Member_Begin
member_end -> Member_End
member_rbegin -> Member_RBegin
member_rend -> Member_REnd
memberTemplate -> MemberTemplateAt
memberTemplateCount -> MemberTemplateSize
memberTemplate_begin -> MemberTemplate_Begin
memberTemplate_end -> MemberTemplate_End
memberTemplate_rbegin -> MemberTemplate_RBegin
memberTemplate_rend -> MemberTemplate_REnd
propertyList -> Properties
scope -> ScopeAt
scopeCount -> ScopeSize
scope_begin -> Scope_Begin
scope_end -> Scope_End
scope_rbegin -> Scope_RBegin
scope_rend -> Scope_REnd
subScope -> SubScopeAt
subScopeCount -> SubScopeSize
subScope_begin -> SubScope_Begin
subScope_end -> SubScope_End
subScope_rbegin -> SubScope_RBegin
subScope_rend -> SubScope_REnd
subType -> SubTypeAt
subTypeCount -> SubTypeSize
subType_begin -> SubType_Begin
subType_end -> SubType_End
subType_rbegin -> SubType_RBegin
subType_rend -> SubType_REnd
templateArgument -> TemplateArgumentAt
templateArgumentCount -> TemplatArgumentSize
templateArgument_begin -> TemplateArgument_Begin
templateArgument_end -> TemplateArgument_End
templateArgument_rbegin -> TemplateArgument_RBegin
templateArgument_rend -> TemplateArgument_REnd
typeTemplate -> SubTypeTemplateAt
typeTemplateCount -> SubTypeTemplateSize
typeTemplate_begin -> SubTypeTemplate_Begin
typeTemplate_end -> SubTypeTemplate_End
typeTemplate_rbegin -> SubTypeTemplate_RBegin
typeTemplate_rend -> SubTypeTemplate_REnd
class Member
~~~~~~~~~~~~
parameterCount -> FunctionParameterSize
parameterDefault -> FunctionParameterDefaultAt
-> FunctionParameterDefault_Begin
-> FunctionParameterDefault_End
-> FunctionParameterDefault_RBegin
-> FunctionParameterDefault_REnd
parameterName -> FunctionParameterNameAt
-> FunctionParameterName_Begin
-> FunctionParameterName_End
-> FunctionParameterName_RBegin
-> FunctionParameterName_REnd
propertyList -> Properties
scope -> "removed, use DeclaringScope instead"
templateArgument -> TemplateArgumentAt
templateArgumentCount -> TemplateArgumentSize
templateArgument_begin -> TemplateArgument_Begin
templateArgument_end -> TemplateArgument_End
templateArgument_rbegin -> TemplateArgument_RBegin
templateArgument_rend -> TemplateArgument_REnd
type -> TypeOf
class Object
~~~~~~~~~~~~
type -> TypeOf
field -> "removed, use Get"
getT -> "removed, use Get with Object_Cast"
invokeT -> "removed, use Invoke with Object_Cast"
setT -> "removed, use Set"
class Base
~~~~~~~~~~
no changes
class PropertyList
~~~~~~~~~~~~~~~~~~
propertyCount -> PropertySize
class TypeTemplate
~~~~~~~~~~~~~~~~~~
instantiation -> TemplateInstanceAt
instantiationCount -> TemplateInstanceSize
instantiation_begin -> TemplateInstance_Begin
instantiation_end -> TemplateInstance_End
instantiation_rbegin -> TemplateInstance_RBegin
instantiation_rend -> TemplateInstance_REnd
parameterCount -> TemplateParameterSize
parameterDefault -> TemplateParameterDefaultAt
-> TemplateParameterDefault_Begin
-> TemplateParameterDefault_End
-> TemplateParameterDefault_RBegin
-> TemplateParameterDefault_REnd
parameterName -> TemplateParameterNameAt
-> TemplateParameterName_Begin
-> TemplateParameterName_End
-> TemplateParameterName_RBegin
-> TemplateParameterName_REnd
class MemberTemplate
~~~~~~~~~~~~~~~~~~~~
instantiation -> TemplateInstanceAt
instantiationCount -> TemplateInstanceSize
instantiation_begin -> TemplateInstance_Begin
instantiation_end -> TemplateInstance_End
instantiation_rbegin -> TemplateInstance_RBegin
instantiation_rend -> TemplateInstance_REnd
parameterCount -> TemplateParameterSize
parameterDefault -> TemplateParameterDefaultAt
-> TemplateParameterDefault_Begin
-> TemplateParameterDefault_End
-> TemplateParameterDefault_RBegin
-> TemplateParameterDefault_REnd
parameterName -> TemplateParameterNameAt
-> TemplateParameterName_Begin
-> TemplateParameterName_End
-> TemplateParameterName_RBegin
-> TemplateParameterName_REnd
class Any
~~~~~~~~~
type -> TypeInfo
2005-10-31 Stefan
* added stl like iterators for all containers of Types, Scopes, Members, etc. The following
iterators have been introduced: type_iterator, base_iterator, scope_iterator, object_iterator
member_iterator, typeTemplate_iterator, memberTemplate_iterator and their reverse typese
(e.g. reverse_type_iterator). Every container for one of these types contains now the
functions begin(), end(), rbegin() and rend() (e.g. Type::dataMember_begin()) which return
a (reverse_)iterator.
2005-10-10 Pere
* fixed ProperyList::propertyAsString(key) to return a empty string when the key is not
existing (reported by RD Schaffer). Added test case in test_Reflex_unit.
2005-09-16 Stefan
* changes for invocation of overloaded methods. The "invoke" function takes an
additional argument of type "const Type &" which represents the type of the overloaded
function. If function methods are overloaded and no Type is passed the first one is taken.
* Object.h: the following functions are deprecated and will be removed in a future release
invokeT, getT, setT, field (explanations what functions to use instead are given in the header)
* moving makeVector utility from TypeBuilder.h to Tools.h
2005-09-01 Stefan
* added selection functionality from within c++, credits to Scott Snyder (snyder@fnal.gov)
2005-08-26 Stefan
* TypeBase.cpp: change allocate to malloc(size), deallocate to free(instance),
when destructing and operator delete called no deallocation necessary
2005-08-20 Stefan
* adding parameter "signature" for member lookup by name
* adding function dataMember(const std::string&) for data member lookup by name
* adding function functionMember(const std::string&, const std::string&="") for
function member lookup by name (and optionally signature)
* a signature can be passed optionally with the function name argument to invoke
functions of Object. separated by semi-colon (e.g. "foo;int (void)")
2005-07-27 Stefan
* Object.h: added function destruct(), fixes for templated get, invoke functions
2005-07-05 Stefan
* Class.cpp: when destructing a type which has no destructor defined (e.g. for complex types with
only simple members), instead of invoking the destructor stub, call operator delete and free
2005-07-04 Stefan
* Member : added functions declaringScope, declaringType which return the Scope/Type
the members lives in (i.e. the same)
* Member : function scope will be depricated, use declaringScope instead (same functionality)
2005-07-01 Stfan
* gcc4 compliance
2005-06-26 Stefan
* Type.h: add Type::declaringScope
2005-06-24 Stefan
* Any.h : cleanup for Root compliance
* Object.h,.cpp: fixed templated get, invoke functions
* stl_hash.h: removed namespace define for icc compilers
2005-06-17 Pere
* CollectionProxy.h: commited changes from Markus
2005-06-10 Pere
* TypeBuilder.cpp(.h) added EnumTypeBuilder() function
2005-06-07 Stefan
* updated autotool configuration files
2005-06-02 Stefan
* Typedef.h : forwarding of several functions for class/struct/templated type/typedef
2005-06-01 Stefan
* Tools.cpp: fixed return value of cxxabi::demangle for stl string (i.e. std::basic_string<char>
instead of std::string)
2005-05-30 Stefan
* TypeTemplate.h: added operator ==
2005-05-25 Stefan
* ClassBuilder.h: new class ClassBuilderNT which is a non templated version of ClassBuilder
* Kernel.h: new dummy structs UnnamedClass/Namespace/Struct/Union which will be attached to such types
2005-05-20 Stefan
* Scope/Type(Name).h: new function "const char* name_c_str() const" which
returns the char* to the unqualified name (performance reasons)
* bool isClass() checks now for class/instantiated class/struct types
* Type/Scope(Name).h: contain a vector of Types/Scopes which allows non
mutable access to Types/Scopes by number (will not change) with
Type::type(size_t) or Scope::scope(size_t)
2005-04-26 Stefan
* fixed bug #8105 overview: Reflex::Type non-equality does not work
* added operator != also for Scope, Object, Member
* Object.h: added forward function "Type dynamicType() const"
2005-04-18 Stefan
* Type/Scope/Member(Base): new function templateFamiliy which
returns the generalized template type (TypeTemplate, MemberTemplate)
* Remove Distillerbase - problem with vc71 compiler. Implementations
moved to static functions.
* Fixed [bug #7973] overview: Multiple errors in reflex
(sic!) (addendum: 2 function implementations in Meberbase fixed)
* VariableBuilder.h/.cpp: New class for generation of data
members in namespaces.
2005-04-05 Stefan
* Type/Scope(Base).h/.cpp, Class.h/.cpp, Enum.h, Union.h: new overloaded
functions to add Function/Datamembers, Subscopes/types (with complete parameterlist)
2005-03-17 Stefan
* Object.h: new function castObject
* Typdef.h, Typedef.cpp, Kernel.cpp: Generate aliases to fundamentals as Typedefs with typeType FUNDAMENTAL
2005-03-15 Stefan
* TypeName.h private function setTypeInfo to reset the hash_map entry
* TypeBase.cpp if the TypeName exists and if a TypeName with the
same type_info exists reset it in the hash_map
2005-03-14 Stefan
* Moved several header files from the include directory to src
* New classes Union,Enum,Typdef/BuilderImpl
* Building typedefs always with typeid(UnknownType)
2005-03-07 Stefan
* Changes for compilation with sun forte
* Object.h: names of functions returning T are postfixed with T
2005-03-06 Stefan
* added CppUnitLite test framework
* updated autotool files added tests for autotools
2005-03-04 Stefan
* TypeBase.cpp: removing fundamentals from global namespace
2005-03-01 Stefan
* added support for enums and typedefs in classes
* Object.h: added operator bool() and implementation for object_cast
* Scope.h, ScopeBase.h: added isEnum, isUnion
2005-02-17 Stefan
* FunctionBuilder.cpp: added generation of templated free functions
2005-02-17 Stefan
* Member/Type/Scope(Base).h: one function "bool isTemplateInstance() const "
to check whether a Member/Type is templated. All other functions removed.
2005-02-16 Stefan
* added functionality for MemberTemplates
* added unit tests for MemberTemplates
2005-02-15 Stefan
* ClassTemplateInstance: fixed name()
* Type.h, TypeBase.h: added forwarding functions for instantation/Count()
2005-02-14 Stefan
* TypeTemplate: removed template parameter name information from name()
* Template implementation, added builder capabilities
2005-02-11 Stefan
* Template implementation for type templates
* Type.h: new function isEquivalentTo(const Type &)
2005-02-10 Stefan
* Type.h: type equivalence operator
2005-02-08 Pere
* Fixed [bugs #6685] Type equivalence operator.
The name generated by buildTypeName() functions should be fully scoped and
qualified.
2005-02-01 Pere
* reintroduced the TRANSIENT modifier
2005-01-25 Stefan
* fixed: bug #5420 overview: typeInfo() always returns NullType for typedefs.
2005-01-24 Stefan
* added accessor to (function)member context
2005-01-21 Stefan
* added autoconf, automake scripts
* removed virtual from destructors of Object and PropertyList wrappers
2005-01-20 Stefan Roiser
* Member: parameterCount(bool required) when true return only num
of required parameters
2005-01-19 Stefan Roiser
* fix for static argv0, now function returning string
2005-01-14 Stfan Roiser
* changed Function building to respect typedefs as separate types
* Callback.cpp: static vector returned by function
2005-01-13 Stefan Roiser
* removed functions "std::string fullName()" and "std::string name(bool)"
* new function std::string name(unsigned int mod) mod can be a
combination of enums "SCOPED", "FINAL", "QUALIFIED" (shortcuts
"S","F","Q")
* Enums and Unions are now Scopes and Types (removed
Union/EnumInfo classes)
* fixed bug #6247 overview: Class::pathToBase returns invalid
objects.
2005-01-11 Stefan Roiser
* removed compiler warnings on linux
* testDict will only compile with scram config > 1_5_3 (template depth)
* added Buildfile to test/generate
2005-01-10 Stefan Roiser
* get, invoke functions of Members return Object (before void*)
2005-01-06 Pere Mato
* Fix bug #6161 overview: reflex::Scope.subScope*() do not give access
to classes which inherit from others.
2005-01-06 Pere Mato
* added Reflex/Builder/CollectionProxy.h header file. This is need to generate
extra code to handle collections in a generic way.
2005-01-05 Stefan Roiser
* removed Class wrapper
* enhancing Type with functionality of Class and Scope
2005-01-03 Stefan Roiser
* new wrapper for Class (class Class is now ClassImpl)
* new wrapper for PropertyList (class PropertyList is now
PropertyListImpl). PorpertyLists are handled in TypeBase,
ScopeBase and MemberBase
* a lot of changes in the documentation from Together
2004-12-16 Pere Mato
* Tools.h(.cpp): added new method Tools::getScopeName() that takes into account templated types
* ScopeBase.cpp: adapted to use Tools::getScopeName(). Changed ScopeBase::name() to return
the name of the scope without its declaring scope.
* TypeBase.cpp: adapted to use Tools::getScopeName()
* test_Reflex_unit.cpp: removed "&" in type name
2004-12-14 Pere Mato
* removed __NOPROPERTYLIST__ static to avoid linking problems on Windows.
2004-12-01 Stefan Roiser
* fixed gcc compiler warnings
* removal of properties in ScopeBase, TypeBase, MemberBase
2004-11-30 Stefan Roiser
* finished revision, moved from pointer based to object based implementation
2004-11-05 Stefan Roiser
* starting major revision (last tag before is Reflex_0_0_4)
2004-11-04 Stefan Roiser
* resolving ambigous Class::asInstantiatedTemplateClass()
* moved several destructors to implementation files
2004-11-01 Stefan Roiser
* fixed bug #5315 overview: Remove unnecessary virtual inheritance.
2004-10-21 Stefan Roiser
* TypeBuilder.h: Changed OffsetOf macro to also support offset calculation
from templated types (max 16)
* added CppUnit test to check offset calculation from templated classes
* added test classes (testDict2) for offset calculation from templated classes
2004-10-12 Stefan Roiser, Pere Mato
* Changed hash_map for name to type and name to scope lookup key
from std::string to const char* (avoids duplication of information)
2004-10-11 Stefan Roiser
* Introduced new modifiers COPYCONSTRUCTOR, OPERATOR, CONVERTER
* Reactivated modifiers INLINE, EXTERN
* Changed modifiers type from unsigned char to unsigned int
* Porting to Mac OSX
* Renamed FunctionBuilder to FunctionBuilderT
* Renamed FunctionBuilder2 to FunctionBuilder
* Removed default constructor from Scope (not needed anymore)
* Renamed Reflex.cpp to Kernel.cpp (header file name)
* Tried to apply common coding style to all files
2004-10-08 Pere mato, Stefan Roiser
* Added FunctionBuilder stuff
* Added NamespaceBuilder.cpp
* Creation of declaring Namespaces if creating a Namespace
* Added Function and Operator test
2004-09-13 Pere Mato
* Class.h: changed name() to return by reference instead of by value
* DataMember.h, FunctionMember.h, Member.h: moved isPrivate(), isProtected(), is Public() to base
class Member.
* ScopeBase.h: changed name() to return by reference instead of by value
* ScopeBase.h: added addSubType() and removeSubType() methods
* Type.h, TypeBase.h: changed name() to return by reference instead of by value
* TypeBase.h: modified constructor to associate each Type with a Scope
* Added NamespaceBuilder.h
* added test_Reflex_generate to generate header files from Reflex
2004-09-01 Pere Mato
* New Iteration with ClassBuilder using an argument Type* instead of using templated methods
This is to avoid the problem of caused by having only forward declared classes.
2004-08-03 Pere Mato
* New Iteration with almost complete functionality
2004-06-21 Stefan Roiser
* Initial import