existing_types[box] = true
has_deallocator[box] = false
- local typedef, equals, add, clamp, cmp, scale, mix, write, read, send, recv =
- "", "", "", "", "", "", "", "", "", "", ""
+ local typedef, equals, add, sub, clamp, cmp, scale, mix, write, read, send, recv =
+ "", "", "", "", "", "", "", "", "", "", "", ""
typedef = typedef .. "\t" .. type .. " "
equals = equals .. "\treturn "
add = add .. "\treturn (" .. name .. ") {"
+ sub = sub .. "\treturn (" .. name .. ") {"
clamp = clamp .. "\treturn (" .. name .. ") {"
cmp = cmp .. "\tint i;\n"
scale = scale .. "\treturn (" .. name .. ") {"
or ", "
)
+ sub = sub
+ .. "a." .. c .. " - "
+ .. "b." .. c ..
+ (last
+ and "};\n"
+ or ", "
+ )
+
clamp = clamp
.. type .. "_clamp("
.. "val." .. c .. ", "
emit(export_prefix .. "bool " .. name .. "_equals(" .. name .. " a, " .. name .. " b)", "{\n" .. equals .. "}\n\n")
emit(export_prefix .. name .. " " .. name .. "_add(" .. name .. " a, " .. name .. " b)", "{\n" .. add .. "}\n\n")
+ emit(export_prefix .. name .. " " .. name .. "_sub(" .. name .. " a, " .. name .. " b)", "{\n" .. add .. "}\n\n")
emit(export_prefix .. name .. " " .. name .. "_clamp(" .. name .. " val, " .. name .. " min, " .. name .. " max)", "{\n" .. clamp .. "}\n\n")
emit(export_prefix .. "int " .. name .. "_cmp(const void *a, const void *b)", "{\n" .. cmp .. "\treturn 0;\n}\n\n")
emit(export_prefix .. name .. " " .. name .. "_scale(" .. name .. " v, " .. type .. " s)", "{\n" .. scale .. "}\n\n")