core: implement `MinHeap::clear` and intro `Pointer::nul`
authorAlexis Laferrière <alexis.laf@xymus.net>
Sun, 19 Mar 2017 22:42:19 +0000 (18:42 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Thu, 23 Mar 2017 21:17:55 +0000 (17:17 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/core/kernel.nit
lib/core/queue.nit
tests/sav/error_class_glob.res
tests/sav/nituml_args3.res
tests/sav/nituml_args4.res

index fa7b6f4..c95cc81 100644 (file)
@@ -1056,6 +1056,9 @@ end
 
 # Pointer classes are used to manipulate extern C structures.
 extern class Pointer
+       # C `NULL` pointer
+       new nul `{ return NULL; `}
+
        # Is the address behind this Object at NULL?
        fun address_is_null: Bool `{ return self == NULL; `}
 
index 5b4353e..f545504 100644 (file)
@@ -238,6 +238,7 @@ class MinHeap[E: Object]
        redef fun is_empty do return items.is_empty
        redef fun length do return items.length
        redef fun iterator do return items.iterator
+       redef fun clear do items.clear
 
        redef fun peek do return items.first
        redef fun add(e)
index d10f6b8..cccf1b2 100644 (file)
@@ -9,5 +9,5 @@
 ../lib/core/kernel.nit:601,1--705,3: Error: `kernel$Byte` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
 ../lib/core/kernel.nit:707,1--885,3: Error: `kernel$Int` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
 ../lib/core/kernel.nit:887,1--1055,3: Error: `kernel$Char` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:1057,1--1071,3: Error: `kernel$Pointer` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:1073,1--1082,3: Error: `kernel$Task` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
+../lib/core/kernel.nit:1057,1--1074,3: Error: `kernel$Pointer` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
+../lib/core/kernel.nit:1076,1--1085,3: Error: `kernel$Task` does not specialize `module_0$Object`. Possible duplication of the root class `Object`?
index adfe62c..d98d744 100644 (file)
@@ -68,7 +68,7 @@ Char [
 Discrete -> Char [dir=back arrowtail=open style=dashed];
 
 Pointer [
- label = "{Pointer||+ address_is_null(): Bool\l+ free()\l- native_equals(o: Pointer): Bool\l}"
+ label = "{Pointer||+ nul(): Pointer\l+ address_is_null(): Bool\l+ free()\l- native_equals(o: Pointer): Bool\l}"
 ]
 Object -> Pointer [dir=back arrowtail=open style=dashed];
 
index e6a1e8c..10ba4a8 100644 (file)
@@ -68,7 +68,7 @@ Char [
 Discrete -> Char [dir=back arrowtail=open style=dashed];
 
 Pointer [
- label = "{Pointer||+ address_is_null(): Bool\l+ free()\l}"
+ label = "{Pointer||+ nul(): Pointer\l+ address_is_null(): Bool\l+ free()\l}"
 ]
 Object -> Pointer [dir=back arrowtail=open style=dashed];