1,848
edits
m (Add Category:Development.) |
|||
(20 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
=== Supported Features === | |||
=== | ==== Properties ==== | ||
Classdef properties are supported but not all attributes are implemented. | |||
{| class="wikitable" | |||
|- | |||
! style="text-align:left;"| Attribute | |||
! Support | |||
! Notes | |||
|- | |||
|AbortSet | |||
|No | |||
|Property does not exist. | |||
|- | |||
|Abstract | |||
|Yes | |||
| | |||
|- | |||
|Access | |||
|Partial | |||
| | |||
|- | |||
|Constant | |||
|Yes | |||
| | |||
|- | |||
|Dependent | |||
|Partial | |||
| | |||
|- | |||
|GetAccess | |||
|Partial | |||
| | |||
|- | |||
|GetObservable | |||
|No | |||
|Property exists but is not used. Requires events and listeners to be implemented in order to work properly. | |||
|- | |||
|Hidden | |||
|Yes | |||
| | |||
|- | |||
|NonCopyable | |||
|No | |||
|Property does not exist. | |||
|- | |||
|SetAccess | |||
|Partial | |||
| | |||
|- | |||
|SetObservable | |||
|No | |||
|Property exists but is not used. Requires events and listeners to be implemented in order to work properly. | |||
|- | |||
|Transient | |||
|No | |||
|Property exists but is not used. | |||
|} | |||
==== 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 | |||
| | |||
|} | |||
=== Features that are not implemented === | |||
==== [https://www.mathworks.com/help/matlab/enumeration-classes.html 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}}. | |||
classdef | |||
==== [https://www.mathworks.com/help/matlab/matlab_oop/learning-to-use-events-and-listeners.html 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}}. | |||
==== [https://www.mathworks.com/help/matlab/matlab_oop/property-validator-functions.html Property Validation Functions] ==== | |||
=== Open Bug Reports for Other Issues === | |||
==== Issues with basic classdef functionality ==== | |||
classdef | |||
=== | |||
* [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 153: | Line 115: | ||
* [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/?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 | ||
==== Debugger (fixes for these are in progress) ==== | |||
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 | ||
* [https://savannah.gnu.org/bugs/?54966 54966] Error when assigning array to an object implementing subsasgn() subscripted using "{}" | * [https://savannah.gnu.org/bugs/?54966 54966] Error when assigning array to an object implementing subsasgn() subscripted using "{}" | ||
* [https://savannah.gnu.org/bugs/?54028 54028] copy of non-handle class instance is not deep | * [https://savannah.gnu.org/bugs/?54028 54028] copy of non-handle class instance is not deep | ||
* [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 193: | Line 156: | ||
* [https://savannah.gnu.org/bugs/?50011 50011] failure to report error on conflicting methods for classdef | * [https://savannah.gnu.org/bugs/?50011 50011] failure to report error on conflicting methods for classdef | ||
* [https://savannah.gnu.org/bugs/?49379 49379] classdef constructor: .argn. loses first argument, inputname(n) returns inputname(n+1) | * [https://savannah.gnu.org/bugs/?49379 49379] classdef constructor: .argn. loses first argument, inputname(n) returns inputname(n+1) | ||
* [https://savannah.gnu.org/bugs/? | * [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/?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] | * [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 | ||
Line 205: | Line 169: | ||
* [https://savannah.gnu.org/bugs/?44590 44590] More documentation for the current status of classdef implementation | * [https://savannah.gnu.org/bugs/?44590 44590] More documentation for the current status of classdef implementation | ||
=== Classdef examples in | === Classdef examples in Octave === | ||
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/miscellaneous/inputParser.m inputParser.m] | |||
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/web/weboptions.m weboptions.m] | |||
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/%2Bcontainers/Map.m +containers/Map.m] | |||
[[Category:Development]] | |||