Define THROW_EXCEPTION(E) which takes an exception class instance,
and uses it to construct an instance of a class which is a subclass
of E and ExceptionMixin. The original instance is discarded, and
the newly constructed sub-class is thrown. Equivalent to
"throw E;".
Define THROW_EXCEPTION2(ETYPE,MSG) which takes an exception class
type, and argument. Directly constructs a ExceptionMixin sub-class
with the given message argument. Equivalent to
"throw ETYPE(MSG);".
Define PRINT_EXCEPTION2(E, FP) If E is a instance of a sub-class of
ExceptionMixin then write information to FP (FILE*).
Define SHOW_EXCEPTION(E) If E is a instance of a sub-class of
ExceptionMixin then return a std::string with information.
Serializable -> SerializableArray
Serializable -> PVField
SerializableArray -> PVArray
PVField -> PVArray
Thus for PVArray the members of SerializeSerializable are reachable
by two paths. This means that The vtable for PVArray has two seperate
entries for serialize.
Correct resolution is to use virtual inheritance to avoid the
ambiguity.
Use auto_ptr<> for pImpl
Eliminate redundant ThreadListElement class. It just contains
a Thread* and a ThreadListNode which contains itself?
Make thread main function a static class function to avoid
problems with accessing private members of ThreadPvt.
In this context "private" means used by the implementation
class only.
update test baselines
rename showConstructDestruct.h to CDRMonitor.h
undercounting field
switch tests to CDRMonitor
switch remaining to use REFCOUNT macros
Use epicsThreadOnce for safe lazy initialization
replace ShowConstructDestruct with simpler CDRMonitor
executor: remove redundant allocations
lock: Partial implementation of Boost lock templates
Conflicts:
pvDataApp/misc/StatusCreateFactory.cpp
pvDataApp/misc/bitSet.cpp