PetscTruth bool?

Barry Smith bsmith at mcs.anl.gov
Wed Sep 24 12:06:55 CDT 2008


    Interesting, they don't mind totally screwing up memory alignments  
in order to save some
space on a bool. (I mean, come on, who makes an array of a million  
bools anyways?)

     From this, if we did switch to bool it would totally screw up our  
Fortran interface (Fortran does
use integer for logical).

    So forget what I suggested, keep putting the ugly (PetscTruth)  
casts in argument lists
all over PETSc because the C++ compiler stubbornly refuses to auto- 
cast a bool to an enum
and we'll leave it the way it is now.

     Barry

On Sep 24, 2008, at 11:27 AM, Lisandro Dalcin wrote:

> Barry, see this
>
> $ cat testbool.c
> #include <stdio.h>
> #include <stdbool.h>
> int main(){
>  printf("sizeof(bool): %d\n", sizeof(bool));
>  printf("sizeof(int):  %d\n", sizeof(int));
> }
> $ gcc testbool.c
> $ a.out
> sizeof(bool): 1
> sizeof(int):  4
>
> And now this:
>
> $ cat testbool.cpp
> #include <iostream>
> int main(){
>  std::cout << "sizeof(bool): " << sizeof(bool) << std::endl;
>  std::cout << "sizeof(int): "  << sizeof(int)  << std::endl;
> }
> $ g++ testbool.cpp
> $ a.out
> sizeof(bool): 1
> sizeof(int): 4
>
> Unless I'm doing something wrong, it seems that in my system (32bits
> box, FedoraCore 6) 'bool' do not  have the size of an 'int' in both C
> and C++.
>
>
> On Wed, Sep 24, 2008 at 12:59 PM, Barry Smith <bsmith at mcs.anl.gov>  
> wrote:
>>
>> On Sep 24, 2008, at 9:30 AM, Matthew Knepley wrote:
>>
>>> On Wed, Sep 24, 2008 at 8:51 AM, Barry Smith <bsmith at mcs.anl.gov>  
>>> wrote:
>>>>
>>>> Since C++ has bool and C99 has bool, should PetscTruth be changed  
>>>> to be
>>>> defined to be bool? Instead of int.
>>>
>>> I see the motivation, but we would have to recode any MPI usages of
>>> PetscTruth
>>> since we could not guarantee the size of bool.
>>
>>  Matt,
>>
>>   YOU, of all people, being pedantic :-)
>>
>>   Show me a single system where a bool is not an int size.
>>
>>  Actually, some Fortran compilers use a -1 as true (not a 1!), this  
>> is
>> already
>> painful and could be tricky.
>>
>>
>>  Barry
>>
>>
>>>
>>>
>>> Matt
>>>
>>>> Barry
>>>>
>>>> Should we go further and simply remove PetscTruth and use bool  
>>>> directly
>>>> in
>>>> its place? (logical in Fortran).
>>>
>>> --
>>> What most experimenters take for granted before they begin their
>>> experiments is infinitely more interesting than any results to which
>>> their experiments lead.
>>> -- Norbert Wiener
>>>
>>
>>
>
>
>
> -- 
> 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
>




More information about the petsc-dev mailing list