Common structures: WIP.
parent
1ee88ce284
commit
bbd2e67cb8
|
@ -0,0 +1,51 @@
|
|||
const std = @import("std");
|
||||
|
||||
const Allocator = std.mem.Allocator;
|
||||
const hashString = std.hash_map.hashString;
|
||||
const eqlString = std.hash_map.eqlString;
|
||||
const HashMap = std.HashMap;
|
||||
const AutoHashMap = std.AutoHashMap;
|
||||
const ArrayList = std.ArrayList;
|
||||
|
||||
|
||||
const PropertyHashMap = AutoHashMap([] const u8, PropertyValue);
|
||||
const NodeList = ArrayList(Node);
|
||||
const Definitions = AutoHashMap([] const u8, Node);
|
||||
|
||||
|
||||
pub const Node = struct {
|
||||
id: ?[] const u8,
|
||||
type_name: [] const u8,
|
||||
properties: PropertyHashMap,
|
||||
children: NodeList,
|
||||
};
|
||||
|
||||
pub const PropertyValue = union {
|
||||
string: [] const u8, // String.
|
||||
integer: u64, // Num (integer).
|
||||
float: f64, // Num (float).
|
||||
reference: *u8, // Reference to another property (property binding).
|
||||
};
|
||||
|
||||
pub const Root = struct {
|
||||
definitions: Definitions,
|
||||
children: NodeList,
|
||||
};
|
||||
|
||||
test "simple test about structures" {
|
||||
const allocator = std.heap.page_allocator;
|
||||
var value = PropertyValue { .integer = 10 };
|
||||
|
||||
var properties = PropertyHashMap.init(allocator);
|
||||
defer properties.deinit();
|
||||
|
||||
try properties.put("hello", value);
|
||||
|
||||
std.debug.print("\n", .{});
|
||||
var it = properties.iterator();
|
||||
while(it.next()) |kv| {
|
||||
std.debug.print("key: {} => value: {}\n", .{kv.key, properties.get(kv.key)});
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue