From cccad6ae8e22156400ba7297bb13cef3c6a7c568 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Tue, 16 Oct 2018 23:26:04 -0400 Subject: [PATCH] pointer arithmatic --- k.krak | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/k.krak b/k.krak index bceefc1..77ba5f5 100644 --- a/k.krak +++ b/k.krak @@ -166,6 +166,30 @@ fun main(argc: int, argv: **char): int { template_type ), false, false))), vec<*binding>())))) + for (var i = 0; i < number_tower.size - 2; i++;) { + var template_type = binding_p(type::_template_placeholder()) + primitive_ops[str("op+")].add(_template(str("+"), map(str("T"), template_type), vec(_compiler_intrinsic(str("+"), binding_p(type::_fun(make_triple(make_pair(vec( + number_tower[i], + binding_p(type::_ptr(template_type)) + ), + binding_p(type::_ptr(template_type)) + ), false, false))), vec<*binding>())))) + primitive_ops[str("op+")].add(_template(str("+"), map(str("T"), template_type), vec(_compiler_intrinsic(str("+"), binding_p(type::_fun(make_triple(make_pair(vec( + binding_p(type::_ptr(template_type)), + number_tower[i] + ), + binding_p(type::_ptr(template_type)) + ), false, false))), vec<*binding>())))) + + // note only ptr-1, not 1-ptr to match C... + primitive_ops[str("op-")].add(_template(str("-"), map(str("T"), template_type), vec(_compiler_intrinsic(str("-"), binding_p(type::_fun(make_triple(make_pair(vec( + binding_p(type::_ptr(template_type)), + number_tower[i] + ), + binding_p(type::_ptr(template_type)) + ), false, false))), vec<*binding>())))) + } + // resolves all binding possibilities for one top level item passes[str("name_possibility_resolve")] = fun(item: *tree) { println("Running name possibility resolver?")