Jaroslav Hajek | 1 Dec 07:28 2009
Picon

Re: base class assignment problem (was: Re: very strange bug)



On Mon, Nov 30, 2009 at 11:34 AM, Lukas Reichlin <lukas.reichlin <at> swissonline.ch> wrote:

On 02.11.2009, at 17:43, John W. Eaton wrote:

> On  2-Nov-2009, Jaroslav Hajek wrote:
>
> | On Fri, Oct 30, 2009 at 6:38 PM, John W. Eaton <jwe <at> octave.org> wrote:
> | > On 30-Oct-2009, Lukas Reichlin wrote:
> | >
> | > | control-oo is here:
> | > | http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/control-oo/
> | > |
> | > | Download the package with:
> | > | http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/control-oo.tar.gz?view=tar
> | > |
> | > | Make sure that the "legacy" control package is not in your Octave
> | > | path, because some functions have identical names (Matlab
> | > | compatibility).
> | > |
> | > | I reduced the example as good as possible. If it is still too
> | > | complicated to understand, you will have to wait until Robert posts
> | > | his example next weekend.
> | >
> | > I'm attaching a minimal example.  Unpack the oo-bug.tar.gz file, cd to
> | > the oo-bug directory and run the bug.m script.
> | >
> | > The problem seems to be that the base class objects are not properly
> | > copied when their fields are modified inside methods.  I don't have a
> | > solution so it would be great if someone else would like to take a
> | > shot a fixing this problem.
> | >
> | > jwe
> | >
> | >
> |
> | How about this?
> | http://hg.savannah.gnu.org/hgweb/octave/rev/0df32e0b2074
>
> This change fixes the problem for me.
>
> Thanks,
>
> jwe

Thanks for fixing the bug. However, I couldn't test whether the change fixes the problem for me because I'm (still) unable to compile Octave from source (I'm using Octave.app on MacOSX). It would be great if the fix would be included in the upcoming release 3.2.4, since the control-oo package depends on it.

Regards,
Lukas


This fix would need to be adapted for 3.2.x because it breaks binary compatibility (new virtual method). As it stands, it doesn't conform to our stable release policy.

hth

--
RNDr. Jaroslav Hajek
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz
_______________________________________________
Bug-octave mailing list
Bug-octave <at> octave.org
https://www-old.cae.wisc.edu/mailman/listinfo/bug-octave
David Grundberg | 1 Dec 08:23 2009
Picon
Picon
Picon

Re: sscanf returns zero status

John W. Eaton wrote:
> On 30-Nov-2009, vipin.ts <at> gmail.com wrote:
>
> | I am using a matlab script and trying to reproduce it in octave. But I am getting a zero value while handling
with sscanf function. 
> | Here is the code 
> | 
> | [num, one, err, delta] = sscanf(string(pos:min(len,pos+20)), '%f', 1); 
> | 
> | In this statement matlab gives a delta variable with numeric value, but in octave always I am getting zero
value. 
> | 
> | Many thanks for helping to solve the problem.
>
> This might be a bug, but you haven't given enough information for
> anyone to debug the problem.
>
> What version of Octave are you using?
>
> What is the value of
>
>   string(pos:min(len,pos+20))
>
> when sscanf is called?
>
> jwe
> _______________________________________________
> Bug-octave mailing list
> Bug-octave <at> octave.org
> https://www-old.cae.wisc.edu/mailman/listinfo/bug-octave
>   

The 3.2 series' sscanf always return a 0 in the fourth outarg.

I fixed the string seeking in this changeset:
http://hg.savannah.gnu.org/hgweb/octave/rev/3ccd3a03944c

This changeset couldn't be transplanted to 3.2 since it breaks the ABI.

Best regards,
David
Stefan Pofahl | 1 Dec 09:31 2009
Picon

num2str deleting leading spaces, - is it a Bug or Feature?

Bug report for Octave 3.2.2 configured for i686-pc-mingw32

Description:
-----------

   I want leading speces in an Output-String for a numerical value,
   but num2str(x, "% 10.3") deletes the leading spaces

Repeat-By:
---------

   x = 10;
   ["xxx", num2str(x, "% 10.3f"), "###"]
   ---> ans = xxx10.000###

Fix:
---

   x = 10;
   ["xxx", sprintf("% 10.3f", x), "###"]

Configuration (please do not edit this section):
-----------------------------------------------

uname output:     Windows
configure opts:
Fortran compiler: mingw32-gfortran-4.3.0-dw2
FFLAGS:           -O -mieee-fp
FLIBS:            -lgfortran
CPPFLAGS:         -march=i686 -mtune=generic -O2
INCFLAGS:         -I. -I/octmgw32/octave/octave-3.2.2 -I. 
-I./liboctave -I./src -I./libcruft/misc 
-I/octmgw32/octave/octave-3.2.2 
-I/octmgw32/octave/octave-3.2.2/liboctave 
-I/octmgw32/octave/octave-3.2.2/src 
-I/octmgw32/octave/octave-3.2.2/libcruft/misc
C compiler:       mingw32-gcc-4.3.0-dw2, version4.3.0-dw2 (GCC TDM-2 
for MinGW)
CFLAGS:           -Wall
CPICFLAG:
C++ compiler:     mingw32-g++-4.3.0-dw2, version4.3.0-dw2
CXXFLAGS:         -D_DLL -Wall
CXXPICFLAG:
LD_CXX:           mingw32-g++-4.3.0-dw2
LDFLAGS:          -shared-libgcc -Wl,--exclude-libs=-lstdc++_s 
-Wl,--allow-multiple-definition
LIBFLAGS:         -L.
RLD_FLAG:
BLAS_LIBS:        -llapack -lblas
FFTW_LIBS:        -lfftw3 -lfftw3f
LIBS:             -lreadline  -lncurses -liberty -lblas -lhdf5 -lz -lm 
  -lgdi32 -lws2_32 -luser32 -lkernel32
LEXLIB:
LIBGLOB:          -lglob
SED:              /usr/bin/sed
DEFS:
-DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" 
-DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1 
-D_GNU_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 
-DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 
-DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 
-DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D__EXTENSIONS__=1 
-D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DSEPCHAR=';' 
-DSEPCHAR_STR=";" -D__NO_MATH_INLINES=1 
-DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1 
-DHAVE_X_WINDOWS=1 -DHAVE_LIBM=1 -DHAVE_QHULL=1 -DHAVE_PCRE_COMPILE=1 
-DHAVE_PCRE=1 -DHAVE_REGEX=1 -DHAVE_ZLIB_H=1 -DHAVE_ZLIB=1 
-DHAVE_HDF5_H=1 -DHAVE_HDF5=1 -DHAVE_H5GGET_NUM_OBJS=1 -DHAVE_FFTW3=1 
-DHAVE_GLPK_GLPK_H=1 -DHAVE_GLPK=1 -DHAVE_CURL_CURL_H=1 -DHAVE_CURL=1 
-DHAVE_MAGICK=1 -DHAVE_WINDOWS_H=1 -DHAVE_GL_GL_H=1 -DHAVE_GL_GLU_H=1 
-DHAVE_OPENGL=1 -DHAVE_FTGL_FTGL_H=1 -DHAVE_FTGL=1 -DHAVE_FLTK=1 
-DHAVE_IEEE754_DATA_FORMAT=1 -DF77_FUNC(name,NAME)=name ## _ 
-DF77_FUNC_(name,NAME)=name ## _ -DHAVE_BLAS=1 -DHAVE_QRUPDATE=1 
-DHAVE_SUITESPARSE_AMD_H=1 -DHAVE_AMD=1 -DHAVE_SUITESPARSE_UMFPACK_H=1 
-DHAVE_UMFPACK=1 -DUMFPACK_SEPARATE_SPLIT=1 
-DHAVE_SUITESPARSE_COLAMD_H=1 -DHAVE_COLAMD=1 
-DHAVE_SUITESPARSE_CCOLAMD_H=1 -DHAVE_CCOLAMD=1 
-DHAVE_SUITESPARSE_CHOLMOD_H=1 -DHAVE_CHOLMOD=1 
-DHAVE_SUITESPARSE_CS_H=1 -DHAVE_CXSPARSE=1 -DHAVE_ARPACK=1 
-Duid_t=int -Dgid_t=int -DHAVE_DEV_T=1 -DHAVE_INO_T=1 
-DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1 
-DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 
-DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA=1 
-DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 
-DHAVE_FAST_INT_OPS=1 -DSIZEOF_LONG_DOUBLE=12 -DSTDC_HEADERS=1 
-DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_ASSERT_H=1 
-DHAVE_CURSES_H=1 -DHAVE_DIRECT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 
-DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 
-DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_PTHREAD_H=1 
-DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 
-DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTIME_H=1 -DHAVE_TERMCAP_H=1 
-DHAVE_UNISTD_H=1 -DHAVE_UTIME_H=1 -DHAVE_SSTREAM=1 -DHAVE_GLOB_H=1 
-DHAVE_FNMATCH_H=1 -DHAVE_CONIO_H=1 -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 
-DHAVE_CHMOD=1 -DHAVE_DUP2=1 -DHAVE_EXECVP=1 -DHAVE_EXPM1=1 
-DHAVE_EXPM1F=1 -DHAVE_FSTAT=1 -DHAVE_GETCWD=1 -DHAVE_GETPID=1 
-DHAVE_GETTIMEOFDAY=1 -DHAVE__KBHIT=1 -DHAVE_LGAMMA=1 -DHAVE_LGAMMAF=1 
-DHAVE_LOG1P=1 -DHAVE_LOG1PF=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 
-DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_RENAME=1 -DHAVE_RMDIR=1 
-DHAVE_ROUNDL=1 -DHAVE_SETLOCALE=1 -DHAVE_SETVBUF=1 -DHAVE_SNPRINTF=1 
-DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 
-DHAVE_STRICMP=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRNICMP=1 
-DHAVE_TEMPNAM=1 -DHAVE_TGAMMAF=1 -DHAVE_TRUNC=1 -DHAVE_UMASK=1 
-DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_UTIME=1 -DHAVE_VFPRINTF=1 
-DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE__CHMOD=1 
-DHAVE__SNPRINTF=1 -DHAVE_DECL_EXP2=1 -DHAVE_DECL_ROUND=1 
-DHAVE_DECL_TGAMMA=1 -DHAVE_EXP2=1 -DHAVE_ROUND=1 -DHAVE_TGAMMA=1 
-DHAVE_MKSTEMPS=1 -DHAVE_C99_VSNPRINTF=1 
-DOCTAVE_HAVE_BROKEN_STRPTIME=1 -D_WIN32_WINNT=0x0403 
-DHAVE_LOADLIBRARY_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 
-DHAVE_CMATH_ISNAN=1 -DHAVE_CMATH_ISNANF=1 -DHAVE_CMATH_ISINF=1 
-DHAVE_CMATH_ISINFF=1 -DHAVE_CMATH_ISFINITE=1 -DHAVE_CMATH_ISFINITEF=1 
-DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_COPYSIGN=1 -DHAVE_SIGNBIT=1 
-DHAVE__FINITE=1 -DHAVE__ISNAN=1 -DHAVE__COPYSIGN=1 
-DHAVE_DECL_SIGNBIT=1 -DHAVE_ACOSH=1 -DHAVE_ACOSHF=1 -DHAVE_ASINH=1 
-DHAVE_ASINHF=1 -DHAVE_ATANH=1 -DHAVE_ATANHF=1 -DHAVE_ERF=1 
-DHAVE_ERFF=1 -DHAVE_ERFC=1 -DHAVE_ERFCF=1 -DHAVE_EXP2F=1 
-DHAVE_LOG2=1 -DHAVE_LOG2F=1 -DHAVE_HYPOTF=1 
-DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_DECL_TZNAME=1 -DHAVE_TZNAME=1 
-DMKDIR_TAKES_ONE_ARG=1 -DUSE_READLINE=1 -DRETSIGTYPE=void 
-DHAVE_DECL_SYS_SIGLIST=0 -DMUST_REINSTALL_SIGHANDLERS=1 
-DRETSIGTYPE_IS_VOID=1

User-preferences (please do not edit this section):

   EDITOR = C:\Programme\pspad\PSPad.exe
   EXEC_PATH =

C:\Programme\Octave\3.2.2_gcc-4.3.0\MINGW32\bin;C:\Programme\Octave\3.2.2_gcc-4.3.0\MSYS\bin;C:\Programme\Octave\3.2.2_gcc-4.3.0\libexec\octave\3.2.2\site\exec\i686-pc-mingw32;C:\Programme\Octave\3.2.2_gcc-4.3.0\libexec\octave\api-v37\site\exec\i686-pc-mingw32;C:\Programme\Octave\3.2.2_gcc-4.3.0\libexec\octave\site\exec\i686-pc-mingw32;C:\Programme\Octave\3.2.2_gcc-4.3.0\libexec\octave\3.2.2\exec\i686-pc-mingw32;C:\Programme\Octave\3.2.2_gcc-4.3.0\bin;C:\Programme\MiKTeX 
2.7\miktex\bin;C:\Programme\Microsoft Visual 
Studio\Common\Tools;C:\Programme\Microsoft Visual 
Studio\Common\Msdev98\BIN;C:\Programme\Microsoft Visual 
Studio\DF98\BIN;C:\Programme\Microsoft Visual

Studio\VC98\BIN;C:\PROGRA~1\GEMEIN~1\ASPENT~1;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\Gemeinsame 
Dateien\AspenTech Shared\;C:\Programme\Rainbow Technologies\SentinelLM 
7.2.0.1 
Server\English\;C:\Programme\gnuplot\bin\;C:\VXIpnp\WinNT\Bin;C:\Programme\XEmacs\XEmacs-21.4.21\i586-pc-win32;C:\Programme\Ghostgum\gs\gs8.63\bin
   IMAGE_PATH = 
.;C:\Programme\Octave\3.2.2_gcc-4.3.0\share\octave\3.2.2\imagelib
   PAGER = C:\Programme\Octave\3.2.2_gcc-4.3.0\bin\less.exe
   PS1 = \s:\#:\w
> 
   PS2 = >
   PS4 = +
   beep_on_error = 0
   completion_append_char =
   crash_dumps_octave_core = 1
   echo_executing_commands = 0
   fixed_point_format = 0
   gnuplot_binary = C:\Programme\Octave\3.2.2_gcc-4.3.0\bin\gnuplot.exe
# gnuplot_command_end = <no value or error in displaying it>
# gnuplot_command_plot = <no value or error in displaying it>
# gnuplot_command_replot = <no value or error in displaying it>
# gnuplot_command_splot = <no value or error in displaying it>
# gnuplot_command_title = <no value or error in displaying it>
# gnuplot_command_using = <no value or error in displaying it>
# gnuplot_command_with = <no value or error in displaying it>
   history_file = C:\Dokumente und Einstellungen\spofahl\.octave_hist
   history_size = 1024
   ignore_function_time_stamp = system
   info_file = C:\Programme\Octave\3.2.2_gcc-4.3.0\share\info\octave.info
   info_program = info
   makeinfo_program = makeinfo
   max_recursion_depth = 256
   output_max_field_width = 5
   output_precision = 5
   page_output_immediately = 0
   page_screen_output = 1
# print_answer_id_name = <no value or error in displaying it>
   print_empty_dimensions = 1
   save_precision = 16
   saving_history = 1
   sighup_dumps_octave_core = 1
   sigterm_dumps_octave_core = 1
   silent_functions = 0
   split_long_rows = 1
   string_fill_char =
   struct_levels_to_print = 2
   suppress_verbose_help_message = 0
Vipin TS | 1 Dec 11:01 2009
Picon

Re: sscanf returns zero status

Hi,

Here is the supporting information regarding the problem associated with sscanf.

Octave version 3.0.4

my string variable is "exon":[[[1842,1945]]]

string(11:min(22,11+20))
>> 1842,1945]]]

So I expect delta of value 5 from below statement.

[num, one, err, delta] = sscanf(string(11:min(22,11+20)), '%f', 1);

Hope this will help.

Regards,
Vipin

_______________________________________________
Bug-octave mailing list
Bug-octave <at> octave.org
https://www-old.cae.wisc.edu/mailman/listinfo/bug-octave
Emil Widmann | 2 Dec 10:50 2009
Picon

root

--------
Bug report for Octave 3.2.3 configured for i686-pc-linux-gnu

Description:
-----------

    I am trying to link the chemical package CANTERA to OCTAVE.
    Cantera supports a MATLAB interface. I compiled the interface
    successfully and tested it by running the cantera_demo script.
    All demos run well, only the demos which contain the 1D Class
    of Cantera fail with the following

    error: concatenation operator not implemented for `struct' by `class' operations
    error: evaluating argument list element number 1
    error: called from:
    error:   /usr/local/cantera/demos/matlab/flame.m at line 46, column 3
    error:   /usr/local/cantera/demos/matlab/flame1.m at line 74, column 4
    error:   /usr/local/cantera/demos/matlab/run_examples.m at line 30, column 1
   
    the function flame is called from flame1 where the simulation problem is set up
    (this "enveloping" code might not be necessary to resolve the error
     but one gets a good idea what's going on)

        % FLAME1 - A burner-stabilized flat flame
        %
        %    This script simulates a burner-stablized lean hydrogen-oxygen flame
        %    at low pressure.

        help flame1;
        %disp('press any key to begin the simulation');
        %pause;

        t0 = cputime;  % record the starting time


        % parameter values
        p          =   0.05*oneatm;         % pressure
        tburner    =   373.0;               % burner temperature
        mdot       =   0.06;                % kg/m^2/s

        rxnmech    =  'h2o2.cti';           % reaction mechanism file
        comp       =  'H2:1.8, O2:1, AR:7'; % premixed gas composition

        initial_grid = [0.0 0.02 0.04 0.06 0.08 0.1 ...
                0.15 0.2 0.4 0.49 0.5];  % m

        tol_ss    = [1.0e-5 1.0e-13];       % [rtol atol] for steady-state
                                                         % problem
        tol_ts    = [1.0e-4 1.0e-9];          % [rtol atol] for time stepping

        loglevel  = 1;                      % amount of diagnostic output (0
                                            % to 5)
                   
        refine_grid = 1;                    % 1 to enable refinement, 0 to
                                           % disable                   
        max_jacobian_age = [5, 10];       
                  
        %%%%%%%%%%%%%%%% create the gas object %%%%%%%%%%%%%%%%%%%%%%%%
        %
        % This object will be used to evaluate all thermodynamic, kinetic    ,
        % and transport properties
        %
        gas = IdealGasMix(rxnmech);

        % set its state to that of the unburned gas at the burner
        set(gas,'T', tburner, 'P', p, 'X', comp);



        %%%%%%%%%%%%%%%% create the flow object %%%%%%%%%%%%%%%%%%%%%%%
   
        f = AxisymmetricFlow(gas,'flow');
        set(f, 'P', p, 'grid', initial_grid);
        set(f, 'tol', tol_ss, 'tol-time', tol_ts);



        %%%%%%%%%%%%%%% create the burner %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %
        %  The burner is an Inlet object. The temperature, mass flux,
        %  and composition (relative molar) may be specified.
        %
        burner = Inlet('burner');
        set(burner, 'T', tburner, 'MassFlux', mdot, 'X', comp);



        %%%%%%%%%%%%%% create the outlet %%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %
        %  The type of flame is determined by the object that terminates
        %  the domain. An Outlet object imposes zero gradient boundary
        %  conditions for the temperature and mass fractions, and zero
        %  radial velocity and radial pressure gradient.
        %
        s = Outlet('out');


        %%%%%%%%%%%%% create the flame object  %%%%%%%%%%%%
        %
        % Once the component parts have been created, they can be assembled
        % to create the flame object.
        %
        fl = flame(gas, burner, f, s);
       
        ...
   

    Ok, this is the start of Function flame until the error:

        function f = flame(gas, left, flow, right)

        %  FLAME - create a flame object.
        %
        %    gas     --  object representing the gas. This object will be used to
        %                compute all required thermodynamic, kinetic, and transport
        %                properties. The state of this object should be set
        %                to an estimate of the gas state emerging from the
        %                burner before calling StagnationFlame.
        %
        %    left    --  object representing the burner, which must be
        %                created using function Inlet.
        %
        %    flow    --  object representing the flow, created with
        %                function AxisymmetricFlow.
        %
        %    right   --  object representing the surface.function f = flame(gas, left, flow, right)
   
        % Check input parameters
        if nargin ~= 4
              error('wrong number of input arguments.');
        end

        if ~isIdealGas(gas)
              error('gas object must represent an ideal gas mixture.');
        end
        if ~isInlet(left)
              error('burner object of wrong type.');
        end
        if ~isFlow(flow)
              error('flow object of wrong type.');
        end

        flametype = 0;
            if isSurface(right)
          flametype = 1;
            elseif isInlet(right)
          flametype = 3;
        end

        % create the container object
        %the ERROR occurs HERE when the method <at> Stack/Stack.m is called
        f = Stack([left flow right]);
       
    Here is the definition of function s

        function s = Stack(domains)
        %
        % STACK - A one-dimensional 'stack' of domains.
        %
        %    A stack object is a container for one-dimensional domains,
        %    which are instances of class Domain1D. The domains are of two
        %    types - extended domains, and connector domains.
        %

        disp("DEBUG POS 1 - Stack "); disp (domains); pause;

  The error is in the function headline before the disp(" DEBUG ..") I inserted. Obviously it is not possible to merge the 3 objects into 1 implicitly. The author of the code, Dr. Goodwin, did a thorough job to structure it object orientated. Probably the scripts above will not run without the definition if the basic classes, but the code is well documented and it should be possible to get the idea. I posted what I did to link Cantera to Octave on the Google Cantera Usergroup, in case it is necessary. I don't know if this is significant, I had compiled Octave myself and failed to link in some libraries (SparseMatrixes, FFTW, GraphicMagic, qrupdate, qhull).   

Expected Outcome:
------------------------
Matlab compatibility regarding class objects, no error.



Repeat-By:
---------

    The original error can be repeated with a call of the flame1.m example of Cantera.
    I tried to produce also a shorter example without the Cantera package,
    but failed. I am new to both Cantera and Octave.

Fix:
---

    -


Configuration (please do not edit this section):
-----------------------------------------------

uname output:     Linux puppypc 2.6.30.5 #1 SMP Tue Sep 1 15:48:26 GMT-8 2009 i686 GNU/Linux
configure opts:  
Fortran compiler: gfortran
FFLAGS:           -O -mieee-fp
FLIBS:            -L/usr/lib/gcc/i486-t2-linux-gnu/4.2.2 -L/usr/lib/gcc/i486-t2-linux-gnu/4.2.2/../../../../i486-t2-linux-gnu/lib -L/usr/lib/gcc/i486-t2-linux-gnu/4.2.2/../../.. -lz -lgfortranbegin -lgfortran -lm
CPPFLAGS:        
INCFLAGS:         -I. -I. -I./liboctave -I./src -I./libcruft/misc
C compiler:       gcc, version 4.2.2
CFLAGS:           -g -O2
CPICFLAG:         -fPIC
C++ compiler:     g++, version 4.2.2
CXXFLAGS:         -g -O2
CXXPICFLAG:       -fPIC
LD_CXX:           g++
LDFLAGS:         
LIBFLAGS:         -L.
RLD_FLAG:         -Wl,-rpath -Wl,/usr/local/lib/octave-3.2.3
BLAS_LIBS:       
FFTW_LIBS:       
LIBS:             -lreadline  -lncurses -ldl -lz -lm
LEXLIB:          
LIBGLOB:         
SED:              /bin/sed
DEFS:

-DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1 -D_GNU_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D__EXTENSIONS__=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1 -DHAVE_X_WINDOWS=1 -DHAVE_LIBM=1 -DHAVE_PCRE_COMPILE=1 -DHAVE_PCRE=1 -DHAVE_REGEXEC=1 -DHAVE_REGEX=1 -DHAVE_ZLIB_H=1 -DHAVE_ZLIB=1 -DHAVE_GLPK_H=1 -DHAVE_GLPK=1 -DHAVE_CURL_CURL_H=1 -DHAVE_CURL=1 -DHAVE_IEEE754_DATA_FORMAT=1 -DF77_FUNC(name,NAME)=name ## _ -DF77_FUNC_(name,NAME)=name ## _ -DHAVE_GETHOSTNAME=1 -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_NLINK_T=1 -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 -DHAVE_FAST_INT_OPS=1 -DSIZEOF_LONG_DOUBLE=12 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_POLL_H=1 -DHAVE_PTHREAD_H=1 -DHAVE_PWD_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_POLL_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UTIME_H=1 -DHAVE_SSTREAM=1 -DHAVE_TERMIOS_H=1 -DHAVE_TERMIO_H=1 -DHAVE_SGTTY_H=1 -DHAVE_GLOB_H=1 -DHAVE_FNMATCH_H=1 -DHAVE_FNMATCH=1 -DHAVE_GLOB=1 -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_CANONICALIZE_FILE_NAME=1 -DHAVE_CHMOD=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_EXPM1=1 -DHAVE_EXPM1F=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_FSTAT=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_KILL=1 -DHAVE_LGAMMA=1 -DHAVE_LGAMMAF=1 -DHAVE_LGAMMA_R=1 -DHAVE_LGAMMAF_R=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LOG1P=1 -DHAVE_LOG1PF=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_MKSTEMP=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_POLL=1 -DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_READLINK=1 -DHAVE_REALPATH=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_ROUNDL=1 -DHAVE_SELECT=1 -DHAVE_SETGRENT=1 -DHAVE_SETLOCALE=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGLONGJMP=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_SNPRINTF=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRPTIME=1 -DHAVE_STRSIGNAL=1 -DHAVE_SYMLINK=1 -DHAVE_TEMPNAM=1 -DHAVE_TGAMMAF=1 -DHAVE_TRUNC=1 -DHAVE_UMASK=1 -DHAVE_UNAME=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_UTIME=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_DECL_EXP2=1 -DHAVE_DECL_ROUND=1 -DHAVE_DECL_TGAMMA=1 -DHAVE_EXP2=1 -DHAVE_ROUND=1 -DHAVE_TGAMMA=1 -DHAVE_STRFTIME=1 -DHAVE_C99_VSNPRINTF=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DHAVE_DLOPEN_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_CMATH_ISNAN=1 -DHAVE_CMATH_ISNANF=1 -DHAVE_CMATH_ISINF=1 -DHAVE_CMATH_ISINFF=1 -DHAVE_CMATH_ISFINITE=1 -DHAVE_CMATH_ISFINITEF=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_COPYSIGN=1 -DHAVE_DECL_SIGNBIT=1 -DHAVE_ACOSH=1 -DHAVE_ACOSHF=1 -DHAVE_ASINH=1 -DHAVE_ASINHF=1 -DHAVE_ATANH=1 -DHAVE_ATANHF=1 -DHAVE_ERF=1 -DHAVE_ERFF=1 -DHAVE_ERFC=1 -DHAVE_ERFCF=1 -DHAVE_EXP2F=1 -DHAVE_LOG2=1 -DHAVE_LOG2F=1 -DHAVE_HYPOTF=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DUSE_READLINE=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DHAVE_DECL_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DRETSIGTYPE_IS_VOID=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DYYTEXT_POINTER=1

User-preferences (please do not edit this section):
--------------------------------------------------

  EDITOR = mp
  EXEC_PATH = /usr/local/libexec/octave/3.2.3/site/exec/i686-pc-linux-gnu:/usr/local/libexec/octave/api-v37/site/exec/i686-pc-linux-gnu:/usr/local/libexec/octave/site/exec/i686-pc-linux-gnu:/usr/local/libexec/octave/3.2.3/exec/i686-pc-linux-gnu:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R7/bin:/root/my-applications/bin:/opt/qt4/bin:/opt/mozilla.org/bin:/opt/samba/bin
  IMAGE_PATH = .:/usr/local/share/octave/3.2.3/imagelib
  PAGER = less
  PS1 = >>
  PS2 =
  PS4 = +
  beep_on_error = 1
  completion_append_char = 
  crash_dumps_octave_core = 0
  echo_executing_commands = 0
  fixed_point_format = 1
  gnuplot_binary = gnuplot
# gnuplot_command_end = <no value or error in displaying it>
# gnuplot_command_plot = <no value or error in displaying it>
# gnuplot_command_replot = <no value or error in displaying it>
# gnuplot_command_splot = <no value or error in displaying it>
# gnuplot_command_title = <no value or error in displaying it>
# gnuplot_command_using = <no value or error in displaying it>
# gnuplot_command_with = <no value or error in displaying it>
  history_file = /root/.octave_hist
  history_size = 1024
  ignore_function_time_stamp = system
  info_file = /usr/local/share/info/octave.info
  info_program = info
  makeinfo_program = makeinfo
  max_recursion_depth = 256
  output_max_field_width = 5
  output_precision = 5
  page_output_immediately = 0
  page_screen_output = 0
# print_answer_id_name = <no value or error in displaying it>
  print_empty_dimensions = 0
  save_precision = 16
  saving_history = 1
  sighup_dumps_octave_core = 1
  sigterm_dumps_octave_core = 1
  silent_functions = 0
  split_long_rows = 1
  string_fill_char = 
  struct_levels_to_print = 2
  suppress_verbose_help_message = 0

Sorry I was not able to send this from inside the bug_report script,
regards
emil

--

Emil Widmann
Kürsinger Hütte
Obersulzbachtal
5741 Neukirchen am Großvenediger
+43 6565 6450
emil.widmann <at> gmail.com
info <at> kuersinger.at

_______________________________________________
Bug-octave mailing list
Bug-octave <at> octave.org
https://www-old.cae.wisc.edu/mailman/listinfo/bug-octave
Bertrand Roessli | 2 Dec 11:25 2009
Picon

can't compile development version

Hello,

I tried to compile the last development version 
and got this error

 DLD-FUNCTIONS/urlwrite.cc:1427: error: expected ',' or '...' before '&'
token
DLD-FUNCTIONS/urlwrite.cc:1428: error: ISO C++ forbids declaration of
'curl_handle' with no type
DLD-FUNCTIONS/urlwrite.cc: In function 'string_vector
mput_directory(int)':

Thank You,

Bertrand Roessli
William S Fulton | 2 Dec 20:13 2009
Picon

Add support for determining Octave version into C++ headers

--------
Bug report for Octave 3.0.1 configured for i486-pc-linux-gnu

Description:
-----------

It isn't possible to deal with the changing non-backwards compatible C++ 
APIs in
Octave (version 3.2 broke lots of APIs) as the version macros in the C++ 
headers do
not allow one to write different code for different versions of Octave. 
The problem
is that the version is held in a string and not as a number. It is 
impossible for the C++
preprocessor to work with strings.

Fix:
---

In src/version.h the version macro contains:

#define OCTAVE_API_VERSION "api-v37"

Please add an additional numeric macro, something like:

#define OCTAVE_API_VERSION_NUMERIC 37

Please do this urgently before you release any more versions as without 
it is
impossible to write C++ extensions to work more than one version of Octave.

Configuration (please do not edit this section):
-----------------------------------------------

uname output:     Linux caracal 2.6.27-14-generic #1 SMP Mon Aug 31 
13:01:41 UTC 2009 i686 GNU/Linux
configure opts:   '--host=i486-linux-gnu' '--build=i486-linux-gnu' 
'--prefix=/usr' '--datadir=/usr/share' '--libdir=/usr/lib' 
'--libexecdir=/usr/lib' '--infodir=/usr/share/info' 
'--mandir=/usr/share/man' '--with-blas=-lblas-3gf' 
'--with-lapack=-llapackgf-3' '--with-hdf5' '--with-fftw' 
'--enable-shared' '--enable-rpath' '--disable-static' 
'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CC=gcc' 
'CFLAGS=-g -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS=' 'CXX=g++' 
'CXXFLAGS=-g -O2' 'F77=gfortran' 'FFLAGS=-g -O2'
Fortran compiler: gfortran
FFLAGS:           -O2 -g
F2C:               <at> F2C <at> 
F2CFLAGS:          <at> F2CFLAGS <at> 
FLIBS:            -L/usr/lib/gcc/i486-linux-gnu/4.3.1 
-L/usr/lib/gcc/i486-linux-gnu/4.3.1/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.3.1/../../.. -lhdf5 
-lz -lgfortranbegin -lgfortran -lm
CPPFLAGS:
INCFLAGS:         -I. -I. -I./liboctave -I./src -I./libcruft/misc
C compiler:       gcc, version 4.3.1 (Ubuntu 4.3.1-8ubuntu3)
CFLAGS:           -O2 -g
CPICFLAG:         -fPIC
C++ compiler:     g++, version 4.3.1
CXXFLAGS:         -O2 -g
CXXPICFLAG:       -fPIC
LD_CXX:           g++
LDFLAGS:
LIBFLAGS:         -L.
RLD_FLAG:         -Wl,-rpath -Wl,/usr/lib/octave-3.0.1
BLAS_LIBS:        -llapackgf-3 -lblas-3gf
FFTW_LIBS:        -lfftw3
LIBS:             -lreadline  -lncurses -ldl -lhdf5 -lz -lm
LEXLIB:
LIBGLOB:
SED:              /bin/sed
DEFS:

   -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION=""
   -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1
   -D_GNU_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1
   -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
   -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSEPCHAR=':'
   -DSEPCHAR_STR=":" -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1
   -DCXX_ISO_COMPLIANT_LIBRARY=1 -DCXX_ABI=unknown -DHAVE_LIBM=1
   -DHAVE_QHULL=1 -DHAVE_PCRE=1 -DHAVE_REGEXEC=1 -DHAVE_REGEX=1
   -DHAVE_ZLIB_H=1 -DHAVE_ZLIB=1 -DHAVE_HDF5_H=1 -DHAVE_HDF5=1
   -DHAVE_H5GGET_NUM_OBJS=1 -DHAVE_FFTW3=1 -DHAVE_GLPK_H=1 -DHAVE_GLPK=1
   -DHAVE_CURL_CURL_H=1 -DHAVE_CURL=1 -DHAVE_IEEE754_DATA_FORMAT=1
   -DF77_FUNC(name,NAME)=name ## _ -DF77_FUNC_(name,NAME)=name ## _
   -DHAVE_BLAS=1 -DHAVE_SUITESPARSE_UMFPACK_H=1 -DHAVE_UMFPACK=1
   -DUMFPACK_SEPARATE_SPLIT=1 -DHAVE_SUITESPARSE_COLAMD_H=1
   -DHAVE_COLAMD=1 -DHAVE_SUITESPARSE_CCOLAMD_H=1 -DHAVE_CCOLAMD=1
   -DHAVE_SUITESPARSE_CHOLMOD_H=1 -DHAVE_CHOLMOD=1 -DHAVE_SUITESPARSE_CS_H=1
   -DHAVE_CXSPARSE=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1
   -DHAVE_INO_T=1 -DHAVE_NLINK_T=1 -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1
   -DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1
   -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8
   -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=std::string::npos
   -DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 -DSTDC_HEADERS=1
   -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1
   -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1
   -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1
   -DHAVE_LOCALE_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_POLL_H=1
   -DHAVE_PWD_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1
   -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_POLL_H=1
   -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1
   -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1
   -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_UNISTD_H=1
   -DHAVE_UTIME_H=1 -DHAVE_SSTREAM=1 -DHAVE_TERMIO_H=1 -DHAVE_SGTTY_H=1
   -DHAVE_GLOB_H=1 -DHAVE_FNMATCH_H=1 -DHAVE_FNMATCH=1 -DHAVE_GLOB=1
   -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1
   -DHAVE_CANONICALIZE_FILE_NAME=1 -DHAVE_CHMOD=1 -DHAVE_DUP2=1
   -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1
   -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1
   -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1
   -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1
   -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1
   -DHAVE_KILL=1 -DHAVE_LGAMMA=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1
   -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1
   -DHAVE_MKSTEMP=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_POLL=1
   -DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_READLINK=1 -DHAVE_REALPATH=1
   -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_ROUND=1
   -DHAVE_SELECT=1 -DHAVE_SETGRENT=1 -DHAVE_SETLOCALE=1
   -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1
   -DHAVE_SIGLONGJMP=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1
   -DHAVE_SIGSUSPEND=1 -DHAVE_SNPRINTF=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1
   -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRPTIME=1
   -DHAVE_STRSIGNAL=1 -DHAVE_SYMLINK=1 -DHAVE_TEMPNAM=1 -DHAVE_TGAMMA=1
   -DHAVE_UMASK=1 -DHAVE_UNAME=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1
   -DHAVE_UTIME=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1
   -DHAVE_WAITPID=1 -DHAVE_STRFTIME=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1
   -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DHAVE_DLOPEN_API=1
   -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_FINITE=1
   -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_COPYSIGN=1 -DHAVE_DECL_SIGNBIT=1
   -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1
   -DHAVE_EXP2=1 -DHAVE_LOG2=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1
   -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_RDEV=1
   -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DUSE_READLINE=1
   -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DHAVE_DECL_SYS_SIGLIST=1
   -DHAVE_POSIX_SIGNALS=1 -DRETSIGTYPE_IS_VOID=1 -DHAVE_GETRUSAGE=1
   -DHAVE_TIMES=1 -DYYTEXT_POINTER=1 -DGNUPLOT_BINARY="gnuplot"

User-preferences (please do not edit this section):
--------------------------------------------------

   EDITOR = /usr/bin/vim
   EXEC_PATH = 
/usr/lib/octave/3.0.1/site/exec/i486-pc-linux-gnu:/usr/lib/octave/api-v32/site/exec/i486-pc-linux-gnu:/usr/lib/octave/site/exec/i486-pc-linux-gnu:/usr/lib/octave/3.0.1/exec/i486-pc-linux-gnu:/usr/bin:/opt/intel/idb/10.1.018/bin:/opt/intel/cc/10.1.018/bin:/home/william/bin:/home/william/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
   IMAGE_PATH = .:/usr/share/octave/3.0.1/imagelib
   PAGER = pager
   PS1 = \s:\#>
   PS2 = >
   PS4 = +
   beep_on_error = 0
   completion_append_char =
   crash_dumps_octave_core = 1
   echo_executing_commands = 0
   fixed_point_format = 0
   gnuplot_binary = gnuplot
   gnuplot_command_end =

   gnuplot_command_plot = pl
   gnuplot_command_replot = rep
   gnuplot_command_splot = sp
   gnuplot_command_title = t
   gnuplot_command_using = u
   gnuplot_command_with = w
   history_file = /home/william/.octave_hist
   history_size = 1024
   ignore_function_time_stamp = system
   info_file = /usr/share/info/octave3.0.info
   info_program = info
   makeinfo_program = makeinfo
   max_recursion_depth = 256
   output_max_field_width = 5
   output_precision = 5
   page_output_immediately = 0
   page_screen_output = 1
   print_answer_id_name = 1
   print_empty_dimensions = 1
   save_precision = 16
   saving_history = 1
   sighup_dumps_octave_core = 1
   sigterm_dumps_octave_core = 1
   silent_functions = 0
   split_long_rows = 1
   string_fill_char =
   struct_levels_to_print = 2
   suppress_verbose_help_message = 0
John W. Eaton | 2 Dec 20:36 2009

Add support for determining Octave version into C++ headers

On  2-Dec-2009, William S Fulton wrote:

| --------
| Bug report for Octave 3.0.1 configured for i486-pc-linux-gnu
| 
| Description:
| -----------
| 
| It isn't possible to deal with the changing non-backwards compatible C++ 
| APIs in
| Octave (version 3.2 broke lots of APIs) as the version macros in the C++ 
| headers do
| not allow one to write different code for different versions of Octave. 
| The problem
| is that the version is held in a string and not as a number. It is 
| impossible for the C++
| preprocessor to work with strings.
| 
| Fix:
| ---
| 
| In src/version.h the version macro contains:
| 
| #define OCTAVE_API_VERSION "api-v37"
| 
| Please add an additional numeric macro, something like:
| 
| #define OCTAVE_API_VERSION_NUMERIC 37
| 
| Please do this urgently before you release any more versions as without 
| it is
| impossible to write C++ extensions to work more than one version of Octave.

It is not impossible.  I recommend that instead of testing version
numbers, you use some kind of configure script that checks for the
features you need.  If you insist on using version numbers, then your
configure script can be as simple as printing out the Octave version
number and comparing it to whatever you think it is you need.  But I
would strongly recommend that you check for features, not version
numbers.

jwe
John W. Eaton | 2 Dec 20:36 2009

can't compile development version

On  2-Dec-2009, Bertrand Roessli wrote:

| I tried to compile the last development version 
| and got this error
| 
|  DLD-FUNCTIONS/urlwrite.cc:1427: error: expected ',' or '...' before '&'
| token
| DLD-FUNCTIONS/urlwrite.cc:1428: error: ISO C++ forbids declaration of
| 'curl_handle' with no type
| DLD-FUNCTIONS/urlwrite.cc: In function 'string_vector
| mput_directory(int)':

It works fine for me.  What compiler are you using?

jwe
Jaroslav Hajek | 2 Dec 21:20 2009
Picon

Re: Add support for determining Octave version into C++ headers

On Wed, Dec 2, 2009 at 8:36 PM, John W. Eaton <jwe <at> octave.org> wrote:
> On  2-Dec-2009, William S Fulton wrote:
>
> | --------
> | Bug report for Octave 3.0.1 configured for i486-pc-linux-gnu
> |
> | Description:
> | -----------
> |
> | It isn't possible to deal with the changing non-backwards compatible C++
> | APIs in
> | Octave (version 3.2 broke lots of APIs) as the version macros in the C++
> | headers do
> | not allow one to write different code for different versions of Octave.
> | The problem
> | is that the version is held in a string and not as a number. It is
> | impossible for the C++
> | preprocessor to work with strings.
> |
> | Fix:
> | ---
> |
> | In src/version.h the version macro contains:
> |
> | #define OCTAVE_API_VERSION "api-v37"
> |
> | Please add an additional numeric macro, something like:
> |
> | #define OCTAVE_API_VERSION_NUMERIC 37
> |
> | Please do this urgently before you release any more versions as without
> | it is
> | impossible to write C++ extensions to work more than one version of Octave.
>
> It is not impossible.  I recommend that instead of testing version
> numbers, you use some kind of configure script that checks for the
> features you need.  If you insist on using version numbers, then your
> configure script can be as simple as printing out the Octave version
> number and comparing it to whatever you think it is you need.  But I
> would strongly recommend that you check for features, not version
> numbers.
>
> jwe

I agree this method is preferable in most cases, unless you really
want to have a single self-contained C++ file.

Maybe instead of version numbers, we could provide #defines for notable changes?
Something like
#define HAVE_NEW_UNWIND_PROTECT_API
or better
#define UNWIND_PROTECT_API 1
and then use
#if (UNWIND_PROTECT_API >= 1)

--

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

Gmane