summaryrefslogtreecommitdiff
path: root/intellect-framework-from-internet/starts/meaning-vm/level-2-wip-structs/structure.hpp
blob: 8778c3d944f33fcc25c34864efc0ecbba3d16758 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once

#include "common.hpp"
#include "../level-1/helpers.hpp"

namespace intellect {
namespace level2 {

namespace concepts {
	static	decl(structure), // group for all structures
		decl(fill), // group for values to be filled in
		decl(topic), // references the structure under consideration
		decl(linked), decl(link), // describes a structure link
		decl(source), decl(type), decl(target), // link attributes
		decl(first), // for finding first of a list
		decl(next) // for iteration over list
		;
};

// make a structure
ref structure(ref name, std::initializer_list<ref> attributes);

// make an object of the given structure
ref structured(ref structure, std::initializer_list<ref> fills);

// throw if an object is not of the given structure
void muststructured(ref topic, ref structure);

}
}