1,848
edits
(→Not Supported: add link to bug report) |
m (Add Category:Development.) |
||
(29 intermediate revisions by 5 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 ==== | |||
* [https://savannah.gnu.org/bugs/?51659 51659] Calling 'methods' on self causes syntax error | |||
* [https://savannah.gnu.org/bugs/?48682 48682] print_usage fails within classdef block | |||
* [https://savannah.gnu.org/bugs/?49434 49434] which returns "built-in function" for classdef m-file | |||
* [https://savannah.gnu.org/bugs/?48041 48041] classdef: `help myclass` messes up `help @myclass/method` | |||
* [https://savannah.gnu.org/bugs/?43047 43047] help() does not see classdef files | |||
* [https://savannah.gnu.org/bugs/?42620 42620] exist() does not use "class" argument | |||
* [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/?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 ==== | |||
* [https://savannah.gnu.org/bugs/?54941 54941] interpreter cannot find methods in files of classdefs in packages | |||
==== 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/?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 | |||
==== Debugger (fixes for these are in progress) ==== | |||
* [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 | |||
==== Lower-priority issues ==== | |||
function | * [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/?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/?52989 52989] classdef: missing error messages on multiply defined properties | |||
* <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/?52123 52123] Indirect memory leak in cdef_manager::initialize () | |||
* [https://savannah.gnu.org/bugs/?51285 51285] max_recursion_depth error in classdef constructor | |||
* [https://savannah.gnu.org/bugs/?50395 50395] subclassing a class that is also defined as a variable fails | |||
* [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/?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/?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/?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 ==== | |||
* | * [https://savannah.gnu.org/bugs/?50729 50729] Improve OOP documentation | ||
* [https://savannah.gnu.org/bugs/?47908 47908] Octave:classdef-to-struct not documented in warning_ids.m | |||
* [https://savannah.gnu.org/bugs/?44590 44590] More documentation for the current status of classdef implementation | |||
=== 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]] | |||