summaryrefslogtreecommitdiff
path: root/src/root.zig
blob: ff7e017365f021b97231b6126287367dbe860d18 (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
31
32
33
34
35
const std = @import("std");

pub const Object = @import("Object.zig");
pub const Interpreter = @import("Interpreter.zig");
pub const Dict = @import("Dict.zig");
pub const Str = @import("Str.zig");
pub const Tuple = @import("Tuple.zig");
pub const Fn = @import("function.zig").Fn;
pub const Int = @import("Int.zig");
pub const Float = @import("Float.zig");
pub const List = @import("List.zig");

pub const Error = error {
    Exception,
    IndexError,
};

pub const conversion = struct {
    fn PtrFromCPtr(T: type) type {
        const info = @typeInfo(T);
        return *info.pointer.child;
    }

    pub fn ptr(value: anytype) Error!PtrFromCPtr(@TypeOf(value)) {
        if (value) |p| {
            return p;
        }

        return error.Exception;
    }

    pub fn success(value: c_int) Error!void {
        if (value == -1) return error.Exception;
    }
};