summaryrefslogtreecommitdiff
path: root/intellect-framework-from-internet/starts/meaning-vm/level0.cpp
diff options
context:
space:
mode:
authorolpc user <olpc@xo-5d-f7-86.localdomain>2020-01-10 14:56:27 -0800
committerolpc user <olpc@xo-5d-f7-86.localdomain>2020-01-10 14:56:27 -0800
commit26c980d302adce8e3d802cb8db8ab1c69d58ce1a (patch)
treee296225f17370c9e472660396b3a51539f76ff28 /intellect-framework-from-internet/starts/meaning-vm/level0.cpp
parent2e01fed206e46a669ba56f57b4b943cfe661a0f1 (diff)
parentc8bb547bea279af2bb48c13260f98aa8add07131 (diff)
downloadstandingwithresilience-26c980d302adce8e3d802cb8db8ab1c69d58ce1a.tar.gz
standingwithresilience-26c980d302adce8e3d802cb8db8ab1c69d58ce1a.zip
Merge branch 'intellect-framework-from-internet'
Diffstat (limited to 'intellect-framework-from-internet/starts/meaning-vm/level0.cpp')
-rw-r--r--intellect-framework-from-internet/starts/meaning-vm/level0.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/intellect-framework-from-internet/starts/meaning-vm/level0.cpp b/intellect-framework-from-internet/starts/meaning-vm/level0.cpp
new file mode 100644
index 0000000..f15b90d
--- /dev/null
+++ b/intellect-framework-from-internet/starts/meaning-vm/level0.cpp
@@ -0,0 +1,84 @@
+#include "level-0/level-0.hpp"
+
+#include <functional>
+#include <iostream>
+
+using namespace intellect::level0;
+
+#define out(name) std::cout << " " #name ":" << std::hex << (size_t)name.ptr() << std::dec
+
+int main()
+{
+ std::cout << allocated() << " allocated" << std::endl;
+
+ ref store = alloc(concepts::allocations()); out(store);
+ ref a = alloc(store); out(a);
+ ref b = alloc(store); out(b);
+ ref c = alloc(store); out(c);
+ ref d = alloc(store); out(d);
+ ref e = alloc(store); out(e);
+ auto numlink = alloc(a); out(numlink);
+ auto codelink = alloc(a); out(codelink);
+
+ ref skip = alloc(store); out(skip);
+ std::cout << std::endl;
+
+ a.link(
+ b, c,
+ d, e
+ );
+ e.set(b, a);
+ c.link(b, e);
+ a.vset<int>(numlink, 3);
+ a.vset<std::function<void()>>(codelink, [](){
+ std::cout << "Hello, world." << std::endl;
+ });
+
+ std::cout << "Num: " << a.get(numlink).dump(skip, skip);
+ std::cout << "Code: " << a.get(codelink).dump(skip, skip);
+ std::cout << a.dump(skip, skip);
+ std::cout << "Num: " << a.vget<int>(numlink) << std::endl;
+ std::cout << "Code: "; a.vget<std::function<void()>>(codelink)();
+
+ std::cout << allocated() << " allocated" << std::endl;
+
+ a.get(codelink).setcrucial();
+ try {
+ dealloc(a.get(codelink), a);
+ throw "deallocd crucial concept";
+ } catch (crucial_concept & e) {
+ realloc(a.get(codelink), concepts::level0allocations());
+ }
+ a.setcrucial(codelink, a.get(codelink));
+ a.setcrucial(numlink, a.get(numlink));
+ try {
+ a.unlink(codelink);
+ throw "unlinkd crucial link";
+ } catch (crucial_link_type_target & e) {
+ realloc(a, concepts::level0allocations());
+ realloc(codelink, concepts::level0allocations());
+ realloc(numlink, concepts::level0allocations());
+ }
+
+ for (auto c : { a, a.get(codelink), a.get(numlink) } )
+ for (auto it = c.links().begin(); it != c.links().end();) {
+ if (!c.crucial(it) && !it->first.linked(concepts::allocator(), concepts::level0allocations())) {
+ c.unlink(it++);
+ } else {
+ ++ it;
+ }
+ }
+
+ e.unlink(b, a);
+ //dealloc(a, store);
+ dealloc(store, concepts::allocations());
+
+ std::cout << allocated() << " allocated" << std::endl;
+
+ std::cout << "=== (feel free to move the below to its most effective spot) ===" << std::endl;
+ std::cout << "Please support Karl working on this intelligence framework." << std::endl;
+ std::cout << "The framework needs to be quality, so that the rest may function." << std::endl;
+ std::cout << "=== === === === === === === === === === === === === === === ===" << std::endl;
+
+ return 0;
+}