Compile problem ov.cc of octave-3.1.51 on cygwin

Jaroslav Hajek highegg at gmail.com
Wed Jul 30 02:57:08 CDT 2008


On Wed, Jul 30, 2008 at 9:49 AM, Tatsuro MATSUOKA <tmacchant at yahoo.co.jp> wrote:
> Hello
>
> I am now going to build octave-3.1.51 on the cygwin with the new patch.
>
> I cannot complete to build octave from the following the reason.
> http://www.cae.wisc.edu/pipermail/bug-octave/2008-July/006413.html
>

I'm afraid I cannot answer.
"error: invalid conversion from `void (*)()' to `void (*)()'" seems a
nonsense to me - the types
are identical. Perhaps you have hit a bug in gcc 3.4.x?
In any case, this is not related to the integer conversions issue, so
I suggest you start a new thread.

> Can anyone tell me solve the problem or temprary avoiding compiling them
>
> I tried ./configure --without-fltk, but nothing ocurred.
>
> Regards
>
> Tatsuro
>
>
>
> --- Jaroslav Hajek <highegg at gmail.com> wrote:
>
>> On Tue, Jul 29, 2008 at 10:56 PM, John W. Eaton <jwe at bevo.che.wisc.edu> wrote:
>> > On 29-Jul-2008, Jaroslav Hajek wrote:
>> >
>> > | On Tue, Jul 29, 2008 at 10:10 AM, Tatsuro MATSUOKA
>> > | <tmacchant at yahoo.co.jp> wrote:
>> > | > Hello Jaroslav Hajek
>> > | >
>> > | > With your patch, ov.cc complie problem ov.cc is resolved for cygwin.
>> > | >
>> > |
>> > | Good. John, can you apply this?
>> >
>> > Did you see my earlier reply?
>> >
>> > https://www.cae.wisc.edu/pipermail/bug-octave/2008-July/006394.html
>> >
>> > I asked whether there should maybe be at least a warning for values
>> > that are out of range.
>> >
>> > jwe
>> >
>>
>> Sorry, I attributed the question to my suggestion that octave_int<T>
>> should be convertible to default int. The attached patch adds a
>> safe_conversion method to octave_int<T> and uses it in
>> convert_to_int_array. Is this what you meant?
>> However, caling, for instance, int8_array_value () on an octave_value
>> object containing a 32-bit int array does not gripe either. Perhaps we
>> could make the octave_int<T>:: octave_int(const octave_int<U>&)
>> constructor gripe if data need to be truncated.
>> In this way, the octave_int<> types would act as "conversion-safe
>> integers" contrary to the normal, unsafe integers. I think, however,
>> that a mechanism to avoid multiple gripes from loops would be needed
>> in such case.
>>
>> --
>> RNDr. Jaroslav Hajek
>> computing expert
>> Aeronautical Research and Test Institute (VZLU)
>> Prague, Czech Republic
>> url: www.highegg.matfyz.cz
>> > # HG changeset patch
>> # User Jaroslav Hajek <highegg at gmail.com>
>> # Date 1217398327 -7200
>> # Node ID 17373754168aca71345fbd9d14cc03efe626b773
>> # Parent  dd5cc5016487f81a49b0f17a8127cdabc61a4c6c
>> make octave_value::int_vector_value avoid multiple conversions for integer values.
>>
>> diff --git a/liboctave/oct-inttypes.h b/liboctave/oct-inttypes.h
>> --- a/liboctave/oct-inttypes.h
>> +++ b/liboctave/oct-inttypes.h
>> @@ -328,6 +328,13 @@
>>    operator double (void) const { return double_value (); }
>>
>>    operator float (void) const { return float_value (); }
>> +
>> +  template <class U>
>> +  bool safe_conversion (U& target)
>> +  {
>> +    target = OCTAVE_INT_FIT_TO_RANGE (value (), U);
>> +    return (value () == target);
>> +  }
>>
>>    octave_int<T>& operator += (const octave_int<T>& x)
>>    {
>> diff --git a/src/ChangeLog b/src/ChangeLog
>> --- a/src/ChangeLog
>> +++ b/src/ChangeLog
>> @@ -1,3 +1,8 @@
>> +2008-07-28  Jaroslav Hajek <highegg at gmail.com>
>> +
>> +     * ov.cc (octave_value::int_vector_value): probe for every known integer type.
>> +     * ov.cc (convert_to_int_array): New static function.
>> +
>>  2008-07-24  John W. Eaton  <jwe at octave.org>
>>
>>       * load-path.h (load_path::dir_info::class_info): New struct.
>> diff --git a/src/ov.cc b/src/ov.cc
>> --- a/src/ov.cc
>> +++ b/src/ov.cc
>> @@ -1346,6 +1346,26 @@
>>                                               type_name (), "real vector"));
>>  }
>>
>> +template <class T>
>> +static Array<int>
>> +convert_to_int_array (const Array<octave_int<T> >& A)
>> +{
>> +  Array<int> O (A.dims ());
>> +  octave_idx_type n = A.numel ();
>> +  bool warned = false;
>> +  for (octave_idx_type i = 0; i < n; i++)
>> +    {
>> +      if (! A.xelem (i).safe_conversion (O.xelem (i)) && warned)
>> +        {
>> +          warned = true;
>> +          warning ("int_vector_value: value truncated to fit to range");
>> +        }
>> +    }
>> +
>> +
>> +  return O;
>> +}
>> +
>>  Array<int>
>>  octave_value::int_vector_value (bool force_string_conv, bool require_int,
>>                               bool force_vector_conversion) const
>> @@ -1354,14 +1374,24 @@
>>
>>    if (is_integer_type ())
>>      {
>> -      // query for the first type that is wide enough
>> -#if SIZEOF_INT == 2
>> -      retval = int16_array_value ();
>> -#elif SIZEOF_INT == 4
>> -      retval = int32_array_value ();
>> -#else
>> -      retval = int64_array_value ();
>> -#endif
>> +      if (is_int32_type ())
>> +        retval = convert_to_int_array (int32_array_value ());
>> +      else if (is_int64_type ())
>> +        retval = convert_to_int_array (int64_array_value ());
>> +      else if (is_int16_type ())
>> +        retval = convert_to_int_array (int16_array_value ());
>> +      else if (is_int8_type ())
>> +        retval = convert_to_int_array (int8_array_value ());
>> +      else if (is_uint32_type ())
>> +        retval = convert_to_int_array (uint32_array_value ());
>> +      else if (is_uint64_type ())
>> +        retval = convert_to_int_array (uint64_array_value ());
>> +      else if (is_uint16_type ())
>> +        retval = convert_to_int_array (uint16_array_value ());
>> +      else if (is_uint8_type ())
>> +        retval = convert_to_int_array (uint8_array_value ());
>> +      else
>> +        retval = array_value (force_string_conv);
>>      }
>>    else
>>      {
>>
>
>
> --------------------------------------
> Power up the Internet with Yahoo! Toolbar.
> http://pr.mail.yahoo.co.jp/toolbar/
>



-- 
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz


More information about the Bug-octave mailing list