[Libreoffice] [PATCH] [IN PROGRESS] Replace DBG_ stuff in calc with OSL_ equivalents
dtardon at redhat.com
Tue May 24 23:21:41 PDT 2011
On Sun, May 22, 2011 at 11:41:31AM +0200, Jacek Wolszczak wrote:
> I am sending links to patches uploaded to dropbox. I wasn't sure if 1MB
> of attachments would be welcome here.
> Libreoffice compiles with the above changes.
I'm taking a mutex on this.
> Probably a question for a side-thread but what should DBG_CHKTHIS,
> DBG_CTOR and DBG_UNHANDLED_EXCEPTION be replaced with. I mean, are there
> any OSL_ equivalents for them? Or should they be left as they are?
DBG_CHKTHIS and DBG_CHKOBJ does sanity check of the object, if a function
is passed. In many cases it is not, though--because I do not see any
reason for them in that case, I suppose they are just placeholders for
future extension. The function passed to them has signature
char const* (*)(void const*), where the argument is pointer to the
tested object and return value is 0 if there are no problems and
a (static) string describing the problem otherwise. I would change the
function's signature to bool (*)(whatever-type-is-appropriate) and then
replace DBG_CHKOBJ(object, Foo, func) by, e.g.,
OSL_ENSURE(func(object), "blah blah") (most cases I know of are used for
testing function preconditions, so I would actually use OSL_PRECOND
there). I would just remove those that pass 0 as function pointer.
DBG_CTOR is a bit more complicated--it does
1. sanity check if function is passed (just like DBG_CHKTHIS)
I would use OSL_POSTCOND(func(*this), "blah blah") at the end of the
2. live instance counting
The same effect can be achieved by deriving from osl::DebugBase
template class (osl/diagnose.hxx), e.g.,
class Foo : protected osl::DebugBase<Foo>
But I am not sure this is needed for every single class...
3. tracing (has anyone ever used that?)
I would just ignore this...
After you have deleted all the DBG_ stuff from a class, you should
remove any DBG_NAME, DBG_NAMEEX and DBG_NAMEEX_VISIBILITY statements
related to it.
DBG_UNHANDLED_EXCEPTION is defined in tools/diagnose_ex.h, not the
(evil) tools/debug.hxx, so it's just fine to leave it as is.
More information about the LibreOffice