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