Classdef: Difference between revisions

Jump to navigation Jump to search
1,873 bytes removed ,  12 November 2020
→‎Lower-priority issues: Remove fixed entries.
(→‎Lower-priority issues: Remove fixed entries.)
(6 intermediate revisions by 2 users not shown)
Line 95: Line 95:
==== [https://www.mathworks.com/help/matlab/enumeration-classes.html 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.


==== [https://www.mathworks.com/help/matlab/matlab_oop/learning-to-use-events-and-listeners.html 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.


==== [https://www.mathworks.com/help/matlab/matlab_oop/property-validator-functions.html Property Validation Functions] ====
==== [https://www.mathworks.com/help/matlab/matlab_oop/property-validator-functions.html Property Validation Functions] ====
Line 107: Line 107:
==== 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}} help() does not see classdef files
* [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}} doc_cache_create doesnt handle classdef documentation
* [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
* [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
* [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
* [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 ====
Line 132: Line 129:
==== Arrays of classdef objects ====
==== Arrays of classdef objects ====


* [https://savannah.gnu.org/bugs/?44665 44665] error in concatenation of classdef objects
* {{bug|44665}} error in concatenation of classdef objects
* [https://savannah.gnu.org/bugs/?53906 53906] Cannot make an object array with square brackets
* {{bug|53906}} Cannot make an object array with square brackets
* [https://savannah.gnu.org/bugs/?47755 47755] Access to object arrays
* {{bug|47755}} Access to object arrays
* [https://savannah.gnu.org/bugs/?47241 47241] classdef: assigning property of handle object in object array constructs new object
* {{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
* <strike>[https://savannah.gnu.org/bugs/?52614 52614] setting properties of classdef object during construction with inheritance</strike>
* {{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
* [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
* {{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 Octave ===
Line 174: Line 170:
* [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/web/weboptions.m weboptions.m]
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/%2Bcontainers/Map.m +containers/Map.m]
* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/%2Bcontainers/Map.m +containers/Map.m]
[[Category:Development]]

Navigation menu