Classdef: Difference between revisions

Jump to navigation Jump to search
156 bytes added ,  20 May 2019
m
→‎Lower-priority issues: Update bug #52614.
No edit summary
m (→‎Lower-priority issues: Update bug #52614.)
(14 intermediate revisions by one other user not shown)
Line 1: Line 1:
=== Features that are not implemented ===
=== Supported Features ===
 
* '''enumeration'''
 
Octave should be able to parse the enumeration section of a classdef definition but nothing is done with it.  Progress on this feature is tracked in bug report {{bug|44582}}.
 
* '''events and listeners'''
 
Octave should be able to parse the events section of a classdef definition but nothing is done with it.  Progress on this feature is tracked in bug report {{bug|56194}}.
 
* '''built-in class as superclass'''
 
Octave does not allow subclassing built-in classes.  In Matlab, classdef objects may subclass built-in integer, floating point, and logical types.  For example,
<source lang="octave">
classdef nonsense < uint32
  ...
end
</source>
 
does not work.
 
Progress on this feature is tracked in bug report {{bug|44035}}.
 
* '''concatenation of classdef objects'''
 
Octave does not support concatenation of classdef objects to create classdef array objects.
 
Example:
 
<source lang="octave">
classdef MyClass < handle
end
 
c = MyClass();
cc = [c, c];  % won't work
</source>
 
For now you can use a cell-array of objects instead:
<source lang="octave">
cc = {c, c};  % ok
</source>
 
Progress on this feature is tracked in bug report {{bug|44665}}.
 
* '''Saving and loading classdef objects'''
 
Saving and loading classdef objects is not supported.
 
Progress on this feature is tracked in bug report {{bug|45833}}
 
=== Supported ===
 
* Methods
 
Classdef methods are supported but not all attributes are fully implemented.
 
{| class="wikitable"
|-
! style="text-align:left;"| Attribute
! Support
! Notes
|-
|Abstract
|Partial
|See bug report {{bug|51377}}
|-
|Access
|Yes
|
|-
|Hidden
|Yes
|
|-
|Sealed
|Yes
|
|-
|Static
|Yes
|
|}


* Properties
==== Properties ====


Classdef properties are supported but not all attributes are implemented.
Classdef properties are supported but not all attributes are implemented.
Line 119: Line 37:
|GetObservable
|GetObservable
|No
|No
|Property exists but is not used.
|Property exists but is not used.  Requires events and listeners to be implemented in order to work properly.
|-
|-
|Hidden
|Hidden
Line 135: Line 53:
|SetObservable
|SetObservable
|No
|No
|Property exists but is not used.
|Property exists but is not used.  Requires events and listeners to be implemented in order to work properly.
|-
|-
|Transient
|Transient
Line 142: Line 60:
|}
|}


=== Open Bug Reports ===
==== Methods ====


Issues with basic classdef functionality
Classdef methods are supported but not all attributes are fully implemented.
 
{| class="wikitable"
|-
! style="text-align:left;"| Attribute
! Support
! Notes
|-
|Abstract
|Partial
|See bug report {{bug|51377}}
|-
|Access
|Yes
|
|-
|Hidden
|Yes
|
|-
|Sealed
|Yes
|
|-
|Static
|Yes
|
|}
 
=== Features that are not implemented ===
 
==== enumeration ====
 
Octave should be able to parse the enumeration section of a classdef definition but nothing is done with it.  Progress on this feature is tracked in bug report {{bug|44582}}.
 
==== events and listeners ====
 
Octave should be able to parse the events section of a classdef definition but nothing is done with it.  Progress on this feature is tracked in bug report {{bug|56194}}.
 
=== Open Bug Reports for Other Issues ===
 
==== Issues with basic classdef functionality ====


* [https://savannah.gnu.org/bugs/?51659 51659] Calling 'methods' on self causes syntax error
* [https://savannah.gnu.org/bugs/?51659 51659] Calling 'methods' on self causes syntax error
Line 154: Line 113:
* [https://savannah.gnu.org/bugs/?53874 53874] doc_cache_create doesnt handle classdef documentation
* [https://savannah.gnu.org/bugs/?53874 53874] doc_cache_create doesnt handle classdef documentation
* [https://savannah.gnu.org/bugs/?52096 52096] meta.class.fromName throws error when class name not found.
* [https://savannah.gnu.org/bugs/?52096 52096] meta.class.fromName throws error when class name not found.
* [https://savannah.gnu.org/bugs/?51377 51377] Parse error for abstract methods
* [https://savannah.gnu.org/bugs/?44665 44665] error in concatenation of classdef objects
* [https://savannah.gnu.org/bugs/?44582 44582] classdef: missing support for enumeration
* [https://savannah.gnu.org/bugs/?48693 48693] classdef subsref method is not called with correct nargout value
* [https://savannah.gnu.org/bugs/?48693 48693] classdef subsref method is not called with correct nargout value
* [https://savannah.gnu.org/bugs/?56006 56006] Object indexing: obj(1).property(end+1:n) - end is interpreted wrong
* [https://savannah.gnu.org/bugs/?55983 55983] 'x(ix) = []' deletion syntax does not work for objects
* [https://savannah.gnu.org/bugs/?55976 55976] cat, repmat, and reshape don't work for classdef objects
* [https://savannah.gnu.org/bugs/?55961 55961] properties function does not preserve order
* [https://savannah.gnu.org/bugs/?55768 55768] display of classdef object should not show private or protected properties
* [https://savannah.gnu.org/bugs/?55766 55766] properties function should not return Hidden properties
* [https://savannah.gnu.org/bugs/?55746 55746] interpreter fails to instantiate classdef with classdef properties
* [https://savannah.gnu.org/bugs/?52582 52582] using static method to initialize property value fails
* [https://savannah.gnu.org/bugs/?45833 45833] support load/save of classdef objects


Classdef and +package directories
==== Classdef and +package directories ====


* [https://savannah.gnu.org/bugs/?54941 54941] interpreter cannot find methods in files of classdefs in packages
* [https://savannah.gnu.org/bugs/?54941 54941] interpreter cannot find methods in files of classdefs in packages


Arrays of classdef objects
==== Arrays of classdef objects ====


* [https://savannah.gnu.org/bugs/?44665 44665] error in concatenation of classdef objects
* [https://savannah.gnu.org/bugs/?53906 53906] Cannot make an object array with square brackets
* [https://savannah.gnu.org/bugs/?53906 53906] Cannot make an object array with square brackets
* [https://savannah.gnu.org/bugs/?47755 47755] Access to object arrays
* [https://savannah.gnu.org/bugs/?47755 47755] Access to object arrays
* [https://savannah.gnu.org/bugs/?47241 47241] classdef: assigning property of handle object in object array constructs new object
* [https://savannah.gnu.org/bugs/?47241 47241] classdef: assigning property of handle object in object array constructs new object


I/O issues
==== Debugger (fixes for these are in progress) ====
 
* [https://savannah.gnu.org/bugs/?45833 45833] support load/save of classdef objects
 
Debugger


* [https://savannah.gnu.org/bugs/?46451 46451] unable to set breakpoints within classdef classes
* [https://savannah.gnu.org/bugs/?46451 46451] unable to set breakpoints within classdef classes
* [https://savannah.gnu.org/bugs/?45404 45404] Breakpoints cannot be set in classdef methods or +package function files
* [https://savannah.gnu.org/bugs/?45404 45404] Breakpoints cannot be set in classdef methods or +package function files


Lower-priority issues
==== Lower-priority issues ====


* [https://savannah.gnu.org/bugs/?55488 55488] Invalid use of colon char as classdef function's argument when subsref is overwritten
* [https://savannah.gnu.org/bugs/?55488 55488] Invalid use of colon char as classdef function's argument when subsref is overwritten
Line 185: Line 147:
* [https://savannah.gnu.org/bugs/?53811 53811] cellfun does not find overloaded function with function name argument
* [https://savannah.gnu.org/bugs/?53811 53811] cellfun does not find overloaded function with function name argument
* [https://savannah.gnu.org/bugs/?52989 52989] classdef: missing error messages on multiply defined properties
* [https://savannah.gnu.org/bugs/?52989 52989] classdef: missing error messages on multiply defined properties
* [https://savannah.gnu.org/bugs/?52614 52614] setting properties of classdef object during construction with inheritance
* <strike>[https://savannah.gnu.org/bugs/?52614 52614] setting properties of classdef object during construction with inheritance</strike>
* [https://savannah.gnu.org/bugs/?52582 52582] Dependent constant properties in classdef errors: no such file
* [https://savannah.gnu.org/bugs/?52582 52582] Dependent constant properties in classdef errors: no such file
* [https://savannah.gnu.org/bugs/?52123 52123] Indirect memory leak in cdef_manager::initialize ()
* [https://savannah.gnu.org/bugs/?52123 52123] Indirect memory leak in cdef_manager::initialize ()
Line 194: Line 156:
* [https://savannah.gnu.org/bugs/?55810 55810] sizeof() and whos() returns 0 bytes for classdef objects
* [https://savannah.gnu.org/bugs/?55810 55810] sizeof() and whos() returns 0 bytes for classdef objects
* [https://savannah.gnu.org/bugs/?45893 45893] classdef properties are not reloaded when file is updated
* [https://savannah.gnu.org/bugs/?45893 45893] classdef properties are not reloaded when file is updated
* [https://savannah.gnu.org/bugs/?44934 44934] classdef parser prints extra newline when failing to parse bad classdef file
* [https://savannah.gnu.org/bugs/?44643 44643] classdef handle object can go into an recursive loop with isequal(obj1,obj2) if both are self-referential
* [https://savannah.gnu.org/bugs/?44643 44643] classdef handle object can go into an recursive loop with isequal(obj1,obj2) if both are self-referential
* [https://savannah.gnu.org/bugs/?44035 44035] classdef is unable to to subclass double
* [https://savannah.gnu.org/bugs/?55755 55755] mxGetProperty does not work with properties marked as Dependent
* [https://savannah.gnu.org/bugs/?55767 55767] classdef property should not be the same as classdef name (at least for Matlab compatibility)
* [https://savannah.gnu.org/bugs/?44035 44035] unable to subclass built-in types


Documentation
==== Documentation ====


* [https://savannah.gnu.org/bugs/?50729 50729] Improve OOP documentation
* [https://savannah.gnu.org/bugs/?50729 50729] Improve OOP documentation

Navigation menu