From 9fc372711404ae80c3d63ad1229fe452c84b3596 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Sat, 21 Feb 2015 23:06:15 +0700 Subject: [PATCH] kernel: new interface `Cloneable` to provide a `clone` method Signed-off-by: Jean Privat --- lib/standard/kernel.nit | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/standard/kernel.nit b/lib/standard/kernel.nit index 5cc0547..21b0fc1 100644 --- a/lib/standard/kernel.nit +++ b/lib/standard/kernel.nit @@ -226,6 +226,25 @@ interface Discrete end end +# Something that can be cloned +# +# This interface introduces the `clone` method used to duplicate an instance +# Its specific semantic is let to the subclasses. +interface Cloneable + # Duplicate `self` + # + # The specific semantic of this method is let to the subclasses; + # Especially, if (and how) attributes are cloned (depth vs. shallow). + # + # As a rule of thumb, the principle of least astonishment should + # be used to guide the semantic. + # + # Note that as the returned clone depends on the semantic, + # the `==` method, if redefined, should ensure the equality + # between an object and its clone. + fun clone: SELF is abstract +end + # A numeric value supporting mathematical operations interface Numeric super Comparable -- 1.7.9.5