summaryrefslogtreecommitdiffhomepage
path: root/include/GenericsLibrary
diff options
context:
space:
mode:
Diffstat (limited to 'include/GenericsLibrary')
-rw-r--r--include/GenericsLibrary/algorithm.nhh17
-rw-r--r--include/GenericsLibrary/fstream.nhh20
-rw-r--r--include/GenericsLibrary/io.nhh6
-rw-r--r--include/GenericsLibrary/iterator.nhh32
-rw-r--r--include/GenericsLibrary/math.nhh6
-rw-r--r--include/GenericsLibrary/pstd.nhh8
-rw-r--r--include/GenericsLibrary/start.nhh (renamed from include/GenericsLibrary/nrt.nc)6
-rw-r--r--include/GenericsLibrary/std.nhh18
8 files changed, 48 insertions, 65 deletions
diff --git a/include/GenericsLibrary/algorithm.nhh b/include/GenericsLibrary/algorithm.nhh
index 5d1bc32..e339ba1 100644
--- a/include/GenericsLibrary/algorithm.nhh
+++ b/include/GenericsLibrary/algorithm.nhh
@@ -9,9 +9,9 @@
//@ Free algorithm functions for GenericsLibrary.
-let for_each(let iterator_instance, let action)
+let for_each(let it, let action)
{
- for (let i := iterator_instance.begin(); i != iterator_instance.end(); i += 1)
+ for (let i := it.begin(); i !== it.end(); i += 1)
{
action(i);
}
@@ -19,9 +19,9 @@ let for_each(let iterator_instance, let action)
return;
}
-let find(let iterator_instance, let predicate)
+let find(let it, let predicate)
{
- for (let i := iterator_instance.begin(); i != iterator_instance.end(); i += 1)
+ for (let i := it.begin(); i !== it.end(); i += 1)
{
if (predicate(i))
{
@@ -29,15 +29,18 @@ let find(let iterator_instance, let predicate)
}
}
- return -1;
+ return 1;
}
let remove(let it, let pred)
{
- for (let i = it.begin(); i != i != it.end(); ++i)
+ for (let i = it.begin(); i !== it.end(); ++i)
{
if (pred(i))
- return 0;
+ {
+ i = 0;
+ return 0;
+ }
}
return 1;
diff --git a/include/GenericsLibrary/fstream.nhh b/include/GenericsLibrary/fstream.nhh
index 4808dd8..441b686 100644
--- a/include/GenericsLibrary/fstream.nhh
+++ b/include/GenericsLibrary/fstream.nhh
@@ -22,27 +22,15 @@ trait fstream_traits
//@ Implementation of fstream traits.
impl fstream : trait fstream_traits
{
- let init()
+ let write(let self, let data, let size)
{
- return;
- }
-
- let dispose()
- {
- return;
- }
-
- let write(let data, let size)
- {
- let written := __traits_write(fd_, data, size);
-
+ let written := __traits_write(self.fd_, data, size);
return written;
}
- let read(let region, let size)
+ let read(let self, let data, let size)
{
- let readen := __traits_read(fd_, region, size);
-
+ let readen := __traits_read(self.fd_, data, size);
return readen;
}
};
diff --git a/include/GenericsLibrary/io.nhh b/include/GenericsLibrary/io.nhh
index 25bc561..b946db2 100644
--- a/include/GenericsLibrary/io.nhh
+++ b/include/GenericsLibrary/io.nhh
@@ -7,14 +7,14 @@
#ifndef NECTAR_GL_IO_NHH
#define NECTAR_GL_IO_NHH
-import ncl_printf;
+import core_print_format_ln;
const writefn(let fmt, let args)
{
- if (fmt := 0)
+ if (fmt === 0)
return;
- ncl_printf(fmt, {args});
+ core_print_format_ln(fmt, {args});
}
#endif
diff --git a/include/GenericsLibrary/iterator.nhh b/include/GenericsLibrary/iterator.nhh
index e509bc2..f2d46e0 100644
--- a/include/GenericsLibrary/iterator.nhh
+++ b/include/GenericsLibrary/iterator.nhh
@@ -24,38 +24,26 @@ trait iterator_traits
impl iterator : trait iterator_traits
{
- let init()
+ let begin(let self)
{
- return 0;
- }
-
- let dispose()
- {
- return 0;
- }
-
- let begin()
- {
- must_pass(_begin != _end);
+ must_pass(self._begin !== self._end);
- let end := _begin;
- return end;
+ let begin := self._begin;
+ return begin;
}
- let end()
+ let end(let self)
{
- must_pass(_begin != _end);
+ must_pass(_begin !== _end);
- let end :=_begin;
- end += _end;
-
+ let end := self._end;
return end;
}
- let size()
+ let size(let self)
{
- must_pass(_size > 0);
- return _size;
+ must_pass(self._size > 0);
+ return self._size;
}
};
diff --git a/include/GenericsLibrary/math.nhh b/include/GenericsLibrary/math.nhh
index a93020e..76813b9 100644
--- a/include/GenericsLibrary/math.nhh
+++ b/include/GenericsLibrary/math.nhh
@@ -4,8 +4,8 @@
// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0)
// Official repository: https://github.com/ne-foss-org/nectar
-#ifndef NECTAR_GL_FUNCTIONS_NHH
-#define NECTAR_GL_FUNCTIONS_NHH
+#ifndef NECTAR_GL_MATHS_NHH
+#define NECTAR_GL_MATHS_NHH
//@ Free math functions for GenericsLibrary.
@@ -82,4 +82,4 @@ let sign(let value)
}
}
-#endif //@ NECTAR_GL_FUNCTIONS_NHH \ No newline at end of file
+#endif //@ NECTAR_GL_MATHS_NHH \ No newline at end of file
diff --git a/include/GenericsLibrary/pstd.nhh b/include/GenericsLibrary/pstd.nhh
index b8ac7ce..68154bd 100644
--- a/include/GenericsLibrary/pstd.nhh
+++ b/include/GenericsLibrary/pstd.nhh
@@ -17,16 +17,16 @@ extern __nrt_pthread_kill;
//@ Parallel free
let pfree_bytes(let ptr)
{
- if (ptr := 0) return 0;
+ if (ptr === 0) return 0;
return __nrt_pfree(ptr);
}
//@ Parallel alloc (bytes)
let palloc_bytes(let type, let sz, let align := 0)
{
- if (0 := align) return 0;
- if (0 := type) return 0;
- if (0 := sz) return 0;
+ if (0 !== align) return 0;
+ if (0 !== type) return 0;
+ if (0 !== sz) return 0;
return __nrt_palloc(type, sz, align);
}
diff --git a/include/GenericsLibrary/nrt.nc b/include/GenericsLibrary/start.nhh
index 6a39808..c678e7f 100644
--- a/include/GenericsLibrary/nrt.nc
+++ b/include/GenericsLibrary/start.nhh
@@ -4,12 +4,16 @@
// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0)
// Official repository: https://github.com/ne-foss-org/nectar
+#pragma once
+
extern main;
+import argc;
+import argv;
//@ The main entrypoint is an external symbol defined by the user program.
//@ You may also define it as a library and then write your own main wrapper over it.
let _start()
{
- return main();
+ return main(argc, argv);
}
diff --git a/include/GenericsLibrary/std.nhh b/include/GenericsLibrary/std.nhh
index 0727269..850ed4b 100644
--- a/include/GenericsLibrary/std.nhh
+++ b/include/GenericsLibrary/std.nhh
@@ -6,25 +6,25 @@
#pragma once
-#define PALLOC_INVALID 0
-
extern __nrt_alloc;
extern __nrt_free;
-//@ Parallel free
+/// Installs an error canary to catch any exceptions coming from C++ or Nectar.
+#define try if (__nsan_install_error_canary() :== 0):
+
+//@ Standard free
let free_bytes(let ptr)
{
- if (ptr := 0) return 0;
+ if (ptr === 0) return 0;
return __nrt_free(ptr);
}
-//@ Parallel alloc (bytes)
+//@ Standard 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;
+ if (0 !== align) return 0;
+ if (0 !== type) return 0;
+ if (0 !== sz) return 0;
return __nrt_alloc(type, sz, align);
}
-