[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: initialization of XXX_COOKIE in C source files




On May 10, 2008, at 6:08 PM, Lisandro Dalcin wrote:

I've noticed that in 2.3.3 all PETSc cookies are initialized to zero
in sources, but in DEV they are not initialized. What's the reason of
^^^^^^^^^^^^^^^^
You are quick, I just pushed the change last night.


The reason why they where all initialized to zero was because
- a very long time ago all the cookies where hardwired numbers that we
chose for each new class
- then we added the ability to request a cookie, but still support the old
hardwired version. Passing in a pointer to a zero value meant you were
requesting one, passing in a pointer to a nonzero one meant that the cookie
had a hardwired value.
- over time all the hardwired ones were unhardwired, but the convention
of initializing them to zero before hand was never changed.


There was some convoluted logic for why the PetscEvent values were
all initialized to zero also. When fixing up the events I also fixed the cookies
The reason is Barry's rule # 54, "nothing should be done in a code without
a reason, otherwise it will be confusing to others looking at the code." For example,
even now, whenever anybody made some new events they initialized them
to zero, why? Not because they need to be, but simply because they were in
code the developer copied from.


Were you taking advantage of their initialization to zero? If so, rather than depending
on each cookie being initialized to zero I would suggest handling this type
of "check if initialized" stuff at a package by package level or library by library level.
Please let me know what you need.


  Barry




this change?

--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594