summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/CoreRuntimeKit/Nectar/ncl_exports.h6
-rw-r--r--include/GenericsLibrary/algorithm.nhh15
-rw-r--r--include/GenericsLibrary/fstream.nhh2
-rw-r--r--include/GenericsLibrary/io.nhh3
-rw-r--r--include/GenericsLibrary/iterator.nhh11
-rw-r--r--include/GenericsLibrary/pstd.nhh5
-rw-r--r--include/GenericsLibrary/std.nhh29
7 files changed, 62 insertions, 9 deletions
diff --git a/include/CoreRuntimeKit/Nectar/ncl_exports.h b/include/CoreRuntimeKit/Nectar/ncl_exports.h
index e69de29..d285b68 100644
--- a/include/CoreRuntimeKit/Nectar/ncl_exports.h
+++ b/include/CoreRuntimeKit/Nectar/ncl_exports.h
@@ -0,0 +1,6 @@
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (See accompanying
+// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0)
+// Official repository: https://github.com/ne-foss-org/nectar
+
+#pragma once
diff --git a/include/GenericsLibrary/algorithm.nhh b/include/GenericsLibrary/algorithm.nhh
index 6fa528b..5141c52 100644
--- a/include/GenericsLibrary/algorithm.nhh
+++ b/include/GenericsLibrary/algorithm.nhh
@@ -10,7 +10,7 @@
let for_each(let iterator_instance, let action)
{
- for (let i := iterator_instance.begin(); i < iterator_instance.end(); i += 1)
+ for (let i := iterator_instance.begin(); i != iterator_instance.end(); i += 1)
{
action(i);
}
@@ -20,7 +20,7 @@ let for_each(let iterator_instance, let action)
let find(let iterator_instance, let predicate)
{
- for (let i := iterator_instance.begin(); i < iterator_instance.end(); i += 1)
+ for (let i := iterator_instance.begin(); i != iterator_instance.end(); i += 1)
{
if (predicate(i))
{
@@ -31,4 +31,15 @@ let find(let iterator_instance, let predicate)
return -1;
}
+let remove(let it, let pred)
+{
+ for (let i = it.begin(); i != i != it.end(); ++i)
+ {
+ if (pred(i))
+ return 0;
+ }
+
+ return 1;
+}
+
#endif //@ NECTAR_GL_ALGORITHM_NHH \ No newline at end of file
diff --git a/include/GenericsLibrary/fstream.nhh b/include/GenericsLibrary/fstream.nhh
index ca52b2c..3302d05 100644
--- a/include/GenericsLibrary/fstream.nhh
+++ b/include/GenericsLibrary/fstream.nhh
@@ -19,7 +19,7 @@ trait fstream_traits
};
//@ Implementation of fstream traits.
-impl fstream : fstream_traits
+impl fstream : trait fstream_traits
{
let init()
{
diff --git a/include/GenericsLibrary/io.nhh b/include/GenericsLibrary/io.nhh
index 2471bb0..b354ad4 100644
--- a/include/GenericsLibrary/io.nhh
+++ b/include/GenericsLibrary/io.nhh
@@ -10,6 +10,9 @@ import ncl_printf;
const writefn(let fmt, let args)
{
+ if (fmt := 0)
+ return;
+
ncl_printf(fmt, {args});
}
diff --git a/include/GenericsLibrary/iterator.nhh b/include/GenericsLibrary/iterator.nhh
index c7b09c6..79902e9 100644
--- a/include/GenericsLibrary/iterator.nhh
+++ b/include/GenericsLibrary/iterator.nhh
@@ -21,26 +21,30 @@ trait iterator_traits
let size();
};
-impl iterator : iterator_traits
+impl iterator : trait iterator_traits
{
let init()
{
- return;
+ return 0;
}
let dispose()
{
- return;
+ return 0;
}
let begin()
{
+ must_pass(_begin != _end);
+
let end := _begin;
return end;
}
let end()
{
+ must_pass(_begin != _end);
+
let end :=_begin;
end += _end;
@@ -49,6 +53,7 @@ impl iterator : iterator_traits
let size()
{
+ must_pass(_size > 0);
return _size;
}
};
diff --git a/include/GenericsLibrary/pstd.nhh b/include/GenericsLibrary/pstd.nhh
index e595437..750a1b0 100644
--- a/include/GenericsLibrary/pstd.nhh
+++ b/include/GenericsLibrary/pstd.nhh
@@ -14,14 +14,14 @@ extern __nrt_pthread_new;
extern __nrt_pthread_kill;
//@ Parallel free
-let pfree(let ptr)
+let pfree_bytes(let ptr)
{
if (ptr := 0) return 0;
return __nrt_pfree(ptr);
}
//@ Parallel alloc (bytes)
-let palloc(let type, let sz, let align := 0)
+let palloc_bytes(let type, let sz, let align := 0)
{
if (0 := align) return 0;
if (0 := type) return 0;
@@ -30,4 +30,3 @@ let palloc(let type, let sz, let align := 0)
return __nrt_palloc(type, sz, align);
}
-
diff --git a/include/GenericsLibrary/std.nhh b/include/GenericsLibrary/std.nhh
new file mode 100644
index 0000000..e7a351d
--- /dev/null
+++ b/include/GenericsLibrary/std.nhh
@@ -0,0 +1,29 @@
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (See accompanying
+// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0)
+// Official repository: https://github.com/ne-foss-org/nectar
+
+#pragma once
+
+#define PALLOC_INVALID 0
+
+extern __nrt_alloc;
+extern __nrt_free;
+
+//@ Parallel free
+let free_bytes(let ptr)
+{
+ if (ptr := 0) return 0;
+ return __nrt_free(ptr);
+}
+
+//@ Parallel alloc (bytes)
+let alloc_bytes(let type, let sz, let align := 0)
+{
+ if (0 := align) return 0;
+ if (0 := type) return 0;
+ if (0 := sz) return 0;
+
+ return __nrt_alloc(type, sz, align);
+}
+