|
|
(16 intermediate revisions by 4 users not shown) |
Line 93: |
Line 93: |
| === Features that are not implemented === | | === Features that are not implemented === |
|
| |
|
| ==== enumeration ==== | | ==== [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}}.
| | * {{bug|44582}} Parse the enumeration section of a classdef definition but nothing is done with it. |
|
| |
|
| ==== events and listeners ==== | | ==== [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}}.
| | * {{bug|56194}} Parse the events section of a classdef definition but nothing is done with it. |
|
| |
|
| ==== built-in class as superclass ==== | | ==== [https://www.mathworks.com/help/matlab/matlab_oop/property-validator-functions.html Property Validation Functions] ==== |
|
| |
|
| Octave does not allow subclassing built-in classes. In Matlab, classdef objects may subclass built-in integer, floating point, and logical types. For example,
| | === Open Bug Reports for Other Issues === |
|
| |
| <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 reports {{bug|44665}} and {{bug|53906}}.
| |
| | |
| ==== Saving and loading classdef objects ====
| |
| | |
| Saving and loading classdef objects is not supported.
| |
| | |
| Progress on this feature is tracked in bug report {{bug|45833}}
| |
| | |
| === Open Bug Reports for Issues not Described Above === | |
|
| |
|
| ==== Issues with basic classdef functionality ==== | | ==== Issues with basic classdef functionality ==== |
|
| |
|
| * [https://savannah.gnu.org/bugs/?51659 51659] Calling 'methods' on self causes syntax error | | * {{bug|51659}} Calling 'methods' on self causes syntax error |
| * [https://savannah.gnu.org/bugs/?48682 48682] print_usage fails within classdef block | | * {{bug|48682}} print_usage fails within classdef block |
| * [https://savannah.gnu.org/bugs/?49434 49434] which returns "built-in function" for classdef m-file | | * {{bug|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` | | * {{bug|48041}} classdef: `help myclass` messes up `help @myclass/method` |
| * [https://savannah.gnu.org/bugs/?43047 43047] help() does not see classdef files | | * {{bug|43047}} <s>help() does not see classdef files</s> - <em>Report closed</em> |
| * [https://savannah.gnu.org/bugs/?42620 42620] exist() does not use "class" argument | | * {{bug|42620}} exist() does not use "class" argument |
| * [https://savannah.gnu.org/bugs/?53874 53874] doc_cache_create doesnt handle classdef documentation | | * {{bug|53874}} <s>doc_cache_create doesnt handle classdef documentation</s> - <em>Report closed</em> |
| * [https://savannah.gnu.org/bugs/?52096 52096] meta.class.fromName throws error when class name not found. | | * {{bug|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 | | * {{bug|48693}} classdef subsref method is not called with correct nargout value - <em>Patch applied, Ready for Test</em> |
| * [https://savannah.gnu.org/bugs/?56006 56006] Object indexing: obj(1).property(end+1:n) - end is interpreted wrong | | * {{bug|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 | | * {{bug|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 | | * {{bug|55976}} cat, repmat, and reshape don't work for classdef objects |
| * [https://savannah.gnu.org/bugs/?55961 55961] properties function does not preserve order | | * {{bug|55961}} properties function does not preserve order - <em>Patch submitted, awaiting review</em> |
| * [https://savannah.gnu.org/bugs/?55768 55768] display of classdef object should not show private or protected properties
| | * {{bug|52582}} using static method to initialize property value fails |
| * [https://savannah.gnu.org/bugs/?55766 55766] properties function should not return Hidden properties | | * {{bug|45833}} support load/save of classdef objects |
| * [https://savannah.gnu.org/bugs/?55746 55746] interpreter fails to instantiate classdef with classdef properties
| | * {{bug|60729}} print_usage within classdef constructor breaks subsequent calls to the class |
| * [https://savannah.gnu.org/bugs/?52582 52582] using static method to initialize property value fails
| | * {{bug|61676}} Assigning classdef objects to other types does not call converter methods |
|
| |
|
| ==== Classdef and +package directories ==== | | ==== Classdef and +package directories ==== |
Line 170: |
Line 131: |
| ==== Arrays of classdef objects ==== | | ==== Arrays of classdef objects ==== |
|
| |
|
| * [https://savannah.gnu.org/bugs/?47755 47755] Access to object arrays | | * {{bug|44665}} error in concatenation of classdef objects |
| * [https://savannah.gnu.org/bugs/?47241 47241] classdef: assigning property of handle object in object array constructs new object | | * {{bug|53906}} Cannot make an object array with square brackets |
| | * {{bug|47755}} Access to object arrays |
| | * {{bug|47241}} classdef: assigning property of handle object in object array constructs new object |
|
| |
|
| ==== Debugger (fixes for these are in progress) ==== | | ==== Debugger (fixes for these are in progress) ==== |
|
| |
|
| * [https://savannah.gnu.org/bugs/?46451 46451] unable to set breakpoints within classdef classes | | * {{bug|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 | | * {{bug|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 | | * {{bug|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 "{}" | | * {{bug|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 | | * {{bug|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 | | * {{bug|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 | | * {{bug|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 | | * {{bug|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
| | * {{bug|52123}} Indirect memory leak in cdef_manager::initialize () |
| * [https://savannah.gnu.org/bugs/?52123 52123] Indirect memory leak in cdef_manager::initialize () | | * {{bug|51285}} max_recursion_depth error in classdef constructor |
| * [https://savannah.gnu.org/bugs/?51285 51285] max_recursion_depth error in classdef constructor | | * {{bug|50395}} subclassing a class that is also defined as a variable fails |
| * [https://savannah.gnu.org/bugs/?50395 50395] subclassing a class that is also defined as a variable fails | | * {{bug|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 | | * {{bug|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) | | * {{bug|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 | | * {{bug|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 | | * {{bug|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 | | * {{bug|55755}} mxGetProperty does not work with properties marked as Dependent |
| * [https://savannah.gnu.org/bugs/?55755 55755] mxGetProperty does not work with properties marked as Dependent | | * {{bug|55767}} classdef property should not be the same as classdef name (at least for Matlab compatibility) |
| * [https://savannah.gnu.org/bugs/?55767 55767] classdef property should not be the same as classdef name (at least for Matlab compatibility) | | * {{bug|44035}} unable to subclass built-in types |
|
| |
|
| ==== Documentation ==== | | ==== Documentation ==== |
|
| |
|
| * [https://savannah.gnu.org/bugs/?50729 50729] Improve OOP documentation | | * {{bug|50729}} Improve OOP documentation |
| * [https://savannah.gnu.org/bugs/?47908 47908] Octave:classdef-to-struct not documented in warning_ids.m | | * {{bug|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 | | * {{bug|44590}} More documentation for the current status of classdef implementation |
| | |
| | === Classdef examples in Octave === |
|
| |
|
| === Classdef examples in the wild ===
| | * [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] |
|
| |
|
| * http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/general/inputParser.m
| | [[Category:Development]] |
| * http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/%2Bcontainers/Map.m
| |
| * https://github.com/markuman/go-redis
| |
| * https://github.com/PetrKryslUCSD/FinEALE
| |