octave-maintainers
[Top][All Lists]
Advanced

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

Re: Are package folder supported?


From: Michael Goffioul
Subject: Re: Are package folder supported?
Date: Wed, 30 Jan 2013 09:12:34 -0500

On Wed, Jan 30, 2013 at 9:03 AM, Ben Abbott <address@hidden> wrote:
** Moved to the maintainer's mail-list **

On Jan 29, 2013, at 7:18 AM, Michael Goffioul wrote:

> On Tue, Jan 29, 2013 at 3:04 AM, deraltefritz <address@hidden> wrote:
>
> On Mon, Jan 28, 2013 at 3:21 PM, Michael Goffioul [via Octave] <[hidden email]> wrote:
>
> On Mon, Jan 28, 2013 at 7:30 AM, deraltefritz <[hidden email]> wrote:
> I really would like to contribute, but I'm more than confused by the immense
> number of files inside "libinterp", and the non-speaking file names.
>
> Is there any form of documentation how instructions are parsed by Octave?
>
> Or can anyone point me to the relevant files/classes/functions that parse
> instructions like "foo = function(bar)" ?
>
> For the record, I'm currently working on adding classdef support for octave, the code is available in the "classdef" branch of octave repository. Support for package folders will be added as part of that work. It's not done yet, but it's among the top items in my TODO list.
>
> Michael.
>
> Great to hear that !
> I'll check out the "classdef" branch, and can provide feedback if (and when) you want. Is there anything I need to pay attention to (for instance, when building)?
>
> No. It should build as the default branch.
>
> What's the current status of classdef support?
>
> At the moment, the following features are supported (non exhaustive):
> - classdef file parsing
> - handle/value class semantic
> - class inheritance
> - property/method access with dot-notation
> - property/method access restriction (public, protected, private, cell array of classes)
> - property accessors
> - array of objects
> - static methods / constant properties
>
> Michael.

Michael,

I discovered a bug with the array of objects.  In the event, you haven't come across it yet, the commands below crash octave when run in the ./test/classdef directory.

        foo = foo_value_class;
        foo(10) = foo_value_class;

>From gdb I see ...

>> foo = foo_value_class
class: foo_value_class
method block
constructor: foo_value_class
method: amount
property block
property: rate
property: term
property: principle
constructor
foo = foo_value_class object
>> foo(10) = foo_value_class
constructor
panic: impossible state reached in file 'octave-value/ov-classdef.cc' at line 1182

Program received signal SIGABRT, Aborted.
0x00007fff8f3ebce2 in __pthread_kill ()
(gdb) bt
#0  0x00007fff8f3ebce2 in __pthread_kill ()
#1  0x00007fff86e597d2 in pthread_kill ()
#2  0x0000000101374276 in raise [inlined] () at :327
#3  0x0000000101374276 in abort () at /Volumes/work/macports/var/macports/build/_Volumes_work_mports_dports_lang_llvm-3.1/llvm-3.1/work/llvm-3.1.src/lib/Support/Signals.cpp:327
#4  0x0000000100a09e29 in panic ()
#5  0x00000001006ae575 in cdef_object_scalar::subsasgn ()
#6  0x00000001006c2b04 in cdef_object::subsasgn ()
#7  0x00000001006ad9c0 in octave_classdef::subsasgn ()
#8  0x00000001007821c5 in octave_value::subsasgn ()
#9  0x00000001007823a4 in octave_value::assign ()
#10 0x00000001008b5e89 in octave_lvalue::assign ()
#11 0x00000001007f7f7e in tree_simple_assignment::rvalue1 ()
#12 0x0000000100808931 in tree_evaluator::visit_statement ()
#13 0x000000010082d5a4 in tree_statement::accept ()
#14 0x0000000100808b9e in tree_evaluator::visit_statement_list ()
#15 0x000000010082d93a in tree_statement_list::accept ()
#16 0x0000000100be4d82 in main_loop ()
#17 0x0000000100311102 in octave_execute_interpreter ()
#18 0x0000000100009a79 in main ()
(gdb)


Thanks, Ben. I knew about it, it's actually a not-yet-implemented feature: the ability to turn a scalar object into an array of objects. I put a "panic" statement instead of a simple "error", that's why octave crashes.

Michael.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]