Editing Classdef

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 93: Line 93:
=== Features that are not implemented ===
=== Features that are not implemented ===


==== [https://www.mathworks.com/help/matlab/enumeration-classes.html enumeration] ====
==== enumeration ====


* {{bug|44582}} Parse the enumeration section of a classdef definition but nothing is done with it.
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}}.


==== [https://www.mathworks.com/help/matlab/matlab_oop/learning-to-use-events-and-listeners.html events and listeners] ====
==== events and listeners ====


* {{bug|56194}} Parse the events section of a classdef definition but nothing is done with it.
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] ====
==== built-in class as superclass ====


=== Open Bug Reports for Other Issues ===
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 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 ====


* {{bug|51659}} Calling 'methods' on self causes syntax error
* [https://savannah.gnu.org/bugs/?51659 51659] Calling 'methods' on self causes syntax error
* {{bug|48682}} print_usage fails within classdef block
* [https://savannah.gnu.org/bugs/?48682 48682] print_usage fails within classdef block
* {{bug|48041}} classdef: `help myclass` messes up `help @myclass/method`
* [https://savannah.gnu.org/bugs/?49434 49434] which returns "built-in function" for classdef m-file
* {{bug|52096}} meta.class.fromName throws error when class name not found.
* [https://savannah.gnu.org/bugs/?48041 48041] classdef: `help myclass` messes up `help @myclass/method`
* {{bug|48693}} classdef subsref method is not called with correct nargout value - <em>Patch applied, Ready for Test</em>
* [https://savannah.gnu.org/bugs/?43047 43047] help() does not see classdef files
* {{bug|56006}} Object indexing: obj(1).property(end+1:n) - end is interpreted wrong
* [https://savannah.gnu.org/bugs/?42620 42620] exist() does not use "class" argument
* {{bug|55983}} 'x(ix) = []' deletion syntax does not work for objects
* [https://savannah.gnu.org/bugs/?53874 53874] doc_cache_create doesnt handle classdef documentation
* {{bug|55976}} cat, repmat, and reshape don't work for classdef objects
* [https://savannah.gnu.org/bugs/?52096 52096] meta.class.fromName throws error when class name not found.
* {{bug|55961}} properties function does not preserve order - <em>Patch submitted, awaiting review</em>
* [https://savannah.gnu.org/bugs/?48693 48693] classdef subsref method is not called with correct nargout value
* {{bug|52582}} using static method to initialize property value fails
* [https://savannah.gnu.org/bugs/?56006 56006] Object indexing: obj(1).property(end+1:n) - end is interpreted wrong
* {{bug|45833}} support load/save of classdef objects
* [https://savannah.gnu.org/bugs/?55983 55983] 'x(ix) = []' deletion syntax does not work for objects
* {{bug|60729}} print_usage within classdef constructor breaks subsequent calls to the class
* [https://savannah.gnu.org/bugs/?55976 55976] cat, repmat, and reshape don't work for classdef objects
* {{bug|61676}} Assigning classdef objects to other types does not call converter methods
* [https://savannah.gnu.org/bugs/?55961 55961] properties function does not preserve order
* {{bug|63841}} nargout is always 1 for classdef methods
* [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


==== Classdef and +package directories ====
==== Classdef and +package directories ====
Line 128: Line 170:
==== Arrays of classdef objects ====
==== Arrays of classdef objects ====


* {{bug|44665}} error in concatenation of classdef objects
* [https://savannah.gnu.org/bugs/?44665 44665] error in concatenation of classdef objects
* {{bug|53906}} Cannot make an object array with square brackets
* [https://savannah.gnu.org/bugs/?53906 53906] Cannot make an object array with square brackets
* {{bug|47755}} Access to object arrays
* [https://savannah.gnu.org/bugs/?47755 47755] Access to object arrays
* {{bug|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 (fixes for these are in progress) ====


* {{bug|46451}} <s>unable to set breakpoints within classdef classes</s> - <em> Patch closed </em>
* [https://savannah.gnu.org/bugs/?46451 46451] unable to set breakpoints within classdef classes
* {{bug|45404}} <s>Breakpoints cannot be set in classdef methods or +package function files</s> - <em>Report closed</em>
* [https://savannah.gnu.org/bugs/?45404 45404] Breakpoints cannot be set in classdef methods or +package function files
* {{bug|65610}} unable to set breakpoints within set or get functions of classdef classes - <em> Patch submitted </em>


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


* {{bug|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
* {{bug|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 "{}"
* {{bug|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
* {{bug|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
* {{bug|52989}} classdef: missing error messages on multiply defined properties
* [https://savannah.gnu.org/bugs/?52989 52989] classdef: missing error messages on multiply defined properties
* {{bug|52582}} Dependent constant properties in classdef errors: no such file
* [https://savannah.gnu.org/bugs/?52614 52614] setting properties of classdef object during construction with inheritance
* {{bug|52123}} Indirect memory leak in cdef_manager::initialize ()
* [https://savannah.gnu.org/bugs/?52582 52582] Dependent constant properties in classdef errors: no such file
* {{bug|51285}} max_recursion_depth error in classdef constructor
* [https://savannah.gnu.org/bugs/?52123 52123] Indirect memory leak in cdef_manager::initialize ()
* {{bug|50395}} subclassing a class that is also defined as a variable fails
* [https://savannah.gnu.org/bugs/?51285 51285] max_recursion_depth error in classdef constructor
* {{bug|50011}} failure to report error on conflicting methods for classdef
* [https://savannah.gnu.org/bugs/?50395 50395] subclassing a class that is also defined as a variable fails
* {{bug|49379}} classdef constructor: .argn. loses first argument, inputname(n) returns inputname(n+1)
* [https://savannah.gnu.org/bugs/?50011 50011] failure to report error on conflicting methods for classdef
* {{bug|55810}} sizeof() and whos() returns 0 bytes for classdef objects
* [https://savannah.gnu.org/bugs/?49379 49379] classdef constructor: .argn. loses first argument, inputname(n) returns inputname(n+1)
* {{bug|45893}} classdef properties are not reloaded when file is updated
* [https://savannah.gnu.org/bugs/?55810 55810] sizeof() and whos() returns 0 bytes for classdef objects
* {{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/?45893 45893] classdef properties are not reloaded when file is updated
* {{bug|55755}} mxGetProperty does not work with properties marked as Dependent
* [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|55767}} classdef property should not be the same as classdef name (at least for Matlab compatibility)
* [https://savannah.gnu.org/bugs/?55755 55755] mxGetProperty does not work with properties marked as Dependent
* {{bug|44035}} unable to subclass built-in types
* [https://savannah.gnu.org/bugs/?55767 55767] classdef property should not be the same as classdef name (at least for Matlab compatibility)
* {{bug|62432}} classdef object display of boolean matrix property fails with error message


==== Documentation ====
==== Documentation ====


* {{bug|50729}} Improve OOP documentation
* [https://savannah.gnu.org/bugs/?50729 50729] Improve OOP documentation
* {{bug|47908}} Octave:classdef-to-struct not documented in warning_ids.m
* [https://savannah.gnu.org/bugs/?47908 47908] Octave:classdef-to-struct not documented in warning_ids.m
* {{bug|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 Octave ===


* [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/miscellaneous/inputParser.m inputParser.m]
=== Classdef examples in the wild ===
* [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]]
* http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/general/inputParser.m
* http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/%2Bcontainers/Map.m
* https://github.com/markuman/go-redis
* https://github.com/PetrKryslUCSD/FinEALE
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Template used on this page: