remove old `float` type entirely

pull/621/head
Alexander Medvednikov 2019-06-25 21:36:44 +02:00
parent a911146182
commit f26e65a943
10 changed files with 80 additions and 98 deletions

View File

@ -110,7 +110,7 @@ string res = tos2("");
fn is_js_prim(typ string) bool { fn is_js_prim(typ string) bool {
return typ == 'int' || typ == 'string' || return typ == 'int' || typ == 'string' ||
typ == 'bool' || typ == 'float' || typ == 'f32' || typ == 'f64' || typ == 'bool' || typ == 'f32' || typ == 'f64' ||
typ == 'i8' || typ == 'i16' || typ == 'i32' || typ == 'i64' typ == 'i8' || typ == 'i16' || typ == 'i32' || typ == 'i64'
} }

View File

@ -73,7 +73,7 @@ mut:
is_so bool is_so bool
is_live bool // for hot code reloading is_live bool // for hot code reloading
is_prof bool // benchmark every function is_prof bool // benchmark every function
translated bool // `v translated doom.v` are we running V code translated from C? allow globals, ++ expressions, etc translated bool // `v translate doom.v` are we running V code translated from C? allow globals, ++ expressions, etc
obfuscate bool // `v -obf program.v`, renames functions to "f_XXX" obfuscate bool // `v -obf program.v`, renames functions to "f_XXX"
lang_dir string // "~/code/v" lang_dir string // "~/code/v"
is_verbose bool // print extra information with `v.log()` is_verbose bool // print extra information with `v.log()`

View File

@ -1924,23 +1924,16 @@ fn (p mut Parser) factor() string {
tok := p.tok tok := p.tok
switch tok { switch tok {
case INT: case INT:
p.gen(p.lit)
p.fgen(p.lit)
typ = 'int' typ = 'int'
// typ = 'number' // typ = 'number'
if p.lit.starts_with('u') { if p.lit.starts_with('u') {
typ = 'long' typ = 'long'
} }
if p.lit.contains('.') || p.lit.contains('e') { if p.lit.contains('.') || p.lit.contains('e') {
// typ = 'f64' typ = 'f32'
typ = 'float' // typ = 'f64' // TODO
} }
case FLOAT: p.gen(p.lit)
// TODO remove float
typ = 'float'
// typ = 'f64'
// p.gen('(f64)$p.lit')
p.gen('$p.lit')
p.fgen(p.lit) p.fgen(p.lit)
case MINUS: case MINUS:
p.gen('-') p.gen('-')
@ -2101,8 +2094,7 @@ fn (p mut Parser) typ_to_fmt(typ string) string {
case 'byte': return '%d' case 'byte': return '%d'
case 'bool': return '%d' case 'bool': return '%d'
case 'u32': return '%d' case 'u32': return '%d'
case 'float': return '%f' case 'double', 'f64', 'f32': return '%f'
case 'double', 'f64': return '%f'
case 'i64': return '%lld' case 'i64': return '%lld'
case 'byte*': return '%s' case 'byte*': return '%s'
// case 'array_string': return '%s' // case 'array_string': return '%s'
@ -3133,30 +3125,34 @@ fn is_compile_time_const(s string) bool {
// fmt helpers // fmt helpers
fn (scanner mut Scanner) fgen(s string) { fn (scanner mut Scanner) fgen(s string) {
/*
if scanner.fmt_line_empty { if scanner.fmt_line_empty {
s = repeat_char(`\t`, scanner.fmt_indent) + s s = repeat_char(`\t`, scanner.fmt_indent) + s
} }
scanner.fmt_out.write(s) scanner.fmt_out.write(s)
scanner.fmt_line_empty = false scanner.fmt_line_empty = false
*/
} }
fn (scanner mut Scanner) fgenln(s string) { fn (scanner mut Scanner) fgenln(s string) {
/*
if scanner.fmt_line_empty { if scanner.fmt_line_empty {
s = repeat_char(`\t`, scanner.fmt_indent) + s s = repeat_char(`\t`, scanner.fmt_indent) + s
} }
scanner.fmt_out.writeln(s) scanner.fmt_out.writeln(s)
scanner.fmt_line_empty = true scanner.fmt_line_empty = true
*/
} }
fn (p mut Parser) fgen(s string) { fn (p mut Parser) fgen(s string) {
p.scanner.fgen(s) //p.scanner.fgen(s)
} }
fn (p mut Parser) fspace() { fn (p mut Parser) fspace() {
p.fgen(' ') //p.fgen(' ')
} }
fn (p mut Parser) fgenln(s string) { fn (p mut Parser) fgenln(s string) {
p.scanner.fgenln(s) //p.scanner.fgenln(s)
} }

View File

@ -97,8 +97,8 @@ fn (f Fn) str() string {
// fn (types array_Type) print_to_file(f string) { // fn (types array_Type) print_to_file(f string) {
// } // }
const ( const (
NUMBER_TYPES = ['number', 'int', 'i8', 'u8', 'i16', 'u16', 'i32', 'u32', 'byte', 'i64', 'u64', 'long', 'double', 'float', 'f32', 'f64'] NUMBER_TYPES = ['number', 'int', 'i8', 'u8', 'i16', 'u16', 'i32', 'u32', 'byte', 'i64', 'u64', 'long', 'double', 'f32', 'f64']
FLOAT_TYPES = ['double', 'float', 'f32', 'f64'] FLOAT_TYPES = ['double', 'f32', 'f64']
) )
fn is_number_type(typ string) bool { fn is_number_type(typ string) bool {
@ -130,7 +130,6 @@ fn new_table(obfuscate bool) *Table {
t.register_type('byteptr') t.register_type('byteptr')
t.register_type('intptr') t.register_type('intptr')
t.register_type('double')// TODO remove t.register_type('double')// TODO remove
t.register_type('float')// TODO remove
t.register_type('f32') t.register_type('f32')
t.register_type('f64') t.register_type('f64')
t.register_type('rune') t.register_type('rune')
@ -421,16 +420,16 @@ fn (p mut Parser) _check_types(got, expected string, throw bool) bool {
return true return true
} }
// Allow ints to be used as floats // Allow ints to be used as floats
if got.eq('int') && expected.eq('float') { if got == 'int' && expected == 'f32' {
return true return true
} }
if got.eq('int') && expected.eq('f64') { if got == 'int' && expected == 'f64' {
return true return true
} }
if got == 'f64' && expected == 'float' { if got == 'f64' && expected == 'f32' {
return true return true
} }
if got == 'float' && expected == 'f64' { if got == 'f32' && expected == 'f64' {
return true return true
} }
// Allow ints to be used as longs // Allow ints to be used as longs

View File

@ -10,7 +10,6 @@ enum Token {
INT INT
STRING STRING
CHAR CHAR
FLOAT
PLUS PLUS
MINUS MINUS
MUL MUL
@ -129,7 +128,6 @@ fn build_token_str() []string {
s[INT] = 'INT' s[INT] = 'INT'
s[STRING] = 'STR' s[STRING] = 'STR'
s[CHAR] = 'CHAR' s[CHAR] = 'CHAR'
s[FLOAT] = 'FLOAT'
s[PLUS] = '+' s[PLUS] = '+'
s[MINUS] = '-' s[MINUS] = '-'
s[MUL] = '*' s[MUL] = '*'

32
gg/gg.v
View File

@ -148,7 +148,7 @@ pub fn new_context(cfg Cfg) *GG {
return ctx return ctx
} }
pub fn (ctx &GG) draw_triangle(x1, y1, x2, y2, x3, y3 float, c gx.Color) { pub fn (ctx &GG) draw_triangle(x1, y1, x2, y2, x3, y3 f32, c gx.Color) {
// println('draw_triangle $x1,$y1 $x2,$y2 $x3,$y3') // println('draw_triangle $x1,$y1 $x2,$y2 $x3,$y3')
ctx.shader.use() ctx.shader.use()
ctx.shader.set_color('color', c) ctx.shader.set_color('color', c)
@ -173,7 +173,7 @@ pub fn (ctx &GG) draw_triangle(x1, y1, x2, y2, x3, y3 float, c gx.Color) {
gl.draw_arrays(GL_TRIANGLES, 0, 3) gl.draw_arrays(GL_TRIANGLES, 0, 3)
} }
pub fn (ctx &GG) draw_triangle_tex(x1, y1, x2, y2, x3, y3 float, c gx.Color) { pub fn (ctx &GG) draw_triangle_tex(x1, y1, x2, y2, x3, y3 f32, c gx.Color) {
ctx.shader.use() ctx.shader.use()
ctx.shader.set_color('color', c) ctx.shader.set_color('color', c)
ctx.shader.set_int('has_texture', 1) ctx.shader.set_int('has_texture', 1)
@ -198,7 +198,7 @@ pub fn (ctx &GG) draw_triangle_tex(x1, y1, x2, y2, x3, y3 float, c gx.Color) {
gl.draw_elements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0) gl.draw_elements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)
} }
fn (ctx &GG) draw_rect(x, y, w, h float, c gx.Color) { fn (ctx &GG) draw_rect(x, y, w, h f32, c gx.Color) {
// println('gg.draw_rect($x,$y,$w,$h)') // println('gg.draw_rect($x,$y,$w,$h)')
// wrong order // wrong order
// // ctx.draw_triangle(x, y, x + w, y, x + w, y + h, c) // // ctx.draw_triangle(x, y, x + w, y, x + w, y + h, c)
@ -231,7 +231,7 @@ fn (ctx mut GG) init_rect_vao() {
gl.set_ebo(ebo, indices, GL_STATIC_DRAW) gl.set_ebo(ebo, indices, GL_STATIC_DRAW)
} }
*/ */
fn (ctx &GG) draw_rect2(x, y, w, h float, c gx.Color) { fn (ctx &GG) draw_rect2(x, y, w, h f32, c gx.Color) {
C.glDeleteBuffers(1, &ctx.VAO) C.glDeleteBuffers(1, &ctx.VAO)
C.glDeleteBuffers(1, &ctx.VBO) C.glDeleteBuffers(1, &ctx.VBO)
ctx.shader.use() ctx.shader.use()
@ -396,10 +396,10 @@ fn new_context_text(cfg Cfg, scale int) *GG {
VBO := gl.gen_buffer() VBO := gl.gen_buffer()
gl.bind_vao(VAO) gl.bind_vao(VAO)
gl.bind_buffer(GL_ARRAY_BUFFER, VBO) gl.bind_buffer(GL_ARRAY_BUFFER, VBO)
// # glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 6 * 4, NULL, GL_DYNAMIC_DRAW); // # glBufferData(GL_ARRAY_BUFFER, sizeof(GLf32) * 6 * 4, NULL, GL_DYNAMIC_DRAW);
gl.enable_vertex_attrib_array(0) gl.enable_vertex_attrib_array(0)
gl.vertex_attrib_pointer(0, 4, GL_FLOAT, false, 4, 0) gl.vertex_attrib_pointer(0, 4, GL_FLOAT, false, 4, 0)
// # glVertexAttribPointer(0, 4, GL_FLOAT,false, 4 * sizeof(GLfloat), 0); // # glVertexAttribPointer(0, 4, GL_FLOAT,false, 4 * sizeof(GLf32), 0);
// gl.bind_buffer(GL_ARRAY_BUFFER, uint(0)) // gl.bind_buffer(GL_ARRAY_BUFFER, uint(0))
// # glBindVertexArray(0); // # glBindVertexArray(0);
mut ctx := &GG { mut ctx := &GG {
@ -432,7 +432,7 @@ fn (ctx mut GG) init_utf8_runes() {
} }
} }
// fn (ctx &GG) render_text(text string, x, y, scale float, color gx.Color) { // fn (ctx &GG) render_text(text string, x, y, scale f32, color gx.Color) {
pub fn (ctx &GG) draw_text(_x, _y int, text string, cfg gx.TextCfg) { pub fn (ctx &GG) draw_text(_x, _y int, text string, cfg gx.TextCfg) {
// dont draw non ascii for now // dont draw non ascii for now
/* /*
@ -477,11 +477,11 @@ fn (ctx &GG) _draw_text(_x, _y int, utext ustring, cfg gx.TextCfg) {
width := utext.len * 7 width := utext.len * 7
_x -= width + 10 _x -= width + 10
} }
x := float(_x) * ctx.scale// float(2) x := f32(_x) * ctx.scale// f32(2)
// println('y=$_y height=$ctx.height') // println('y=$_y height=$ctx.height')
// _y = _y * int(ctx.scale) //+ 26 // _y = _y * int(ctx.scale) //+ 26
_y = _y * int(ctx.scale) + ((cfg.size * ctx.scale) / 2) + 5 * ctx.scale _y = _y * int(ctx.scale) + ((cfg.size * ctx.scale) / 2) + 5 * ctx.scale
y := float(ctx.height - _y) y := f32(ctx.height - _y)
color := cfg.color color := cfg.color
// Activate corresponding render state // Activate corresponding render state
ctx.shader.use() ctx.shader.use()
@ -521,10 +521,10 @@ fn (ctx &GG) _draw_text(_x, _y int, utext ustring, cfg gx.TextCfg) {
// s := 'A' // s := 'A'
// c := int(s[0]) // c := int(s[0])
// ch := ctx.chars[c] // ch := ctx.chars[c]
xpos := x + float(ch.bearing.x) * 1 xpos := x + f32(ch.bearing.x) * 1
ypos := y - float(ch.size.y - ch.bearing.y) * 1 ypos := y - f32(ch.size.y - ch.bearing.y) * 1
w := float(ch.size.x) * 1 w := f32(ch.size.x) * 1
h := float(ch.size.y) * 1 h := f32(ch.size.y) * 1
// Update VBO for each character // Update VBO for each character
# GLfloat vertices[6][4] = { # GLfloat vertices[6][4] = {
# { xpos, ypos + h, 0.0, 0.0 }, # { xpos, ypos + h, 0.0, 0.0 },
@ -656,7 +656,7 @@ pub fn (ctx &GG) draw_line_c(x, y, x2, y2 int, color gx.Color) {
C.glDeleteBuffers(1, &ctx.VBO) C.glDeleteBuffers(1, &ctx.VBO)
ctx.shader.use() ctx.shader.use()
ctx.shader.set_color('color', color) ctx.shader.set_color('color', color)
vertices := [float(x), float(y), float(x2), float(y2)] ! vertices := [f32(x), f32(y), f32(x2), f32(y2)] !
gl.bind_vao(ctx.VAO) gl.bind_vao(ctx.VAO)
gl.set_vbo(ctx.VBO, vertices, GL_STATIC_DRAW) gl.set_vbo(ctx.VBO, vertices, GL_STATIC_DRAW)
gl.vertex_attrib_pointer(0, 2, GL_FLOAT, false, 2, 0) gl.vertex_attrib_pointer(0, 2, GL_FLOAT, false, 2, 0)
@ -673,8 +673,8 @@ pub fn (c &GG) draw_vertical(x, y, height int) {
c.draw_line(x, y, x, y + height) c.draw_line(x, y, x, y + height)
} }
// fn (ctx &GG) draw_image(x, y, w, h float, img stbi.Image) { // fn (ctx &GG) draw_image(x, y, w, h f32, img stbi.Image) {
pub fn (ctx &GG) draw_image(x, y, w, h float, tex_id u32) { pub fn (ctx &GG) draw_image(x, y, w, h f32, tex_id u32) {
// println('DRAW IMAGE $x $y $w $h $tex_id') // println('DRAW IMAGE $x $y $w $h $tex_id')
ctx.shader.use() ctx.shader.use()
// ctx.shader.set_color('color', c) // ctx.shader.set_color('color', c)

View File

@ -166,7 +166,7 @@ pub fn (s Shader) uni_location(key string) int {
return C.glGetUniformLocation(s.program_id, key.str) return C.glGetUniformLocation(s.program_id, key.str)
} }
// fn (s Shader) set_mat4(str string, f *float) { // fn (s Shader) set_mat4(str string, f *f32) {
pub fn (s Shader) set_mat4(str string, m glm.Mat4) { pub fn (s Shader) set_mat4(str string, m glm.Mat4) {
// TODO cache uniform location // TODO cache uniform location
C.glUniformMatrix4fv(s.uni_location(str), 1, false, m.data) C.glUniformMatrix4fv(s.uni_location(str), 1, false, m.data)
@ -177,6 +177,6 @@ pub fn (s Shader) set_int(str string, n int) {
} }
pub fn (s Shader) set_color(str string, c gx.Color) { pub fn (s Shader) set_color(str string, c gx.Color) {
C.glUniform3f(s.uni_location(str), float(c.r) / 255.0, float(c.g) / 255.0, float(c.b) / 255.0) C.glUniform3f(s.uni_location(str), f32(c.r) / 255.0, f32(c.g) / 255.0, f32(c.b) / 255.0)
} }

14
gl/gl.v
View File

@ -33,7 +33,7 @@ pub fn viewport(a int, b int, c int, d int) {
} }
pub fn clear_color(r, g, b, a int) { pub fn clear_color(r, g, b, a int) {
# glClearColor(((float)r)/255.0,((float)g)/255.0,b/255.0, a/255.0); # glClearColor(((f32)r)/255.0,((f32)g)/255.0,b/255.0, a/255.0);
} }
pub fn clear() { pub fn clear() {
@ -132,14 +132,14 @@ pub fn buffer_data_int(typ int, vertices[]int, draw_typ int) {
C.glBufferData(typ, size, vertices.data, draw_typ) C.glBufferData(typ, size, vertices.data, draw_typ)
} }
pub fn buffer_data_float(typ int, vertices[]float, draw_typ int) { pub fn buffer_data_f32(typ int, vertices[]f32, draw_typ int) {
size := sizeof(float) * vertices.len size := sizeof(f32) * vertices.len
C.glBufferData(typ, size, vertices.data, draw_typ) C.glBufferData(typ, size, vertices.data, draw_typ)
} }
pub fn set_vbo(vbo u32, vertices[]float, draw_typ int) { pub fn set_vbo(vbo u32, vertices[]f32, draw_typ int) {
gl.bind_buffer(GL_ARRAY_BUFFER, vbo) gl.bind_buffer(GL_ARRAY_BUFFER, vbo)
gl.buffer_data_float(GL_ARRAY_BUFFER, vertices, draw_typ) gl.buffer_data_f32(GL_ARRAY_BUFFER, vertices, draw_typ)
} }
pub fn set_ebo(ebo u32, indices[]int, draw_typ int) { pub fn set_ebo(ebo u32, indices[]int, draw_typ int) {
@ -182,8 +182,8 @@ pub fn gen_buffer() u32 {
pub fn vertex_attrib_pointer(index, size int, typ int, normalized bool, stride int, ptr int) { pub fn vertex_attrib_pointer(index, size int, typ int, normalized bool, stride int, ptr int) {
if typ == GL_FLOAT { if typ == GL_FLOAT {
stride *= sizeof(float) stride *= sizeof(f32)
ptr *= sizeof(float) ptr *= sizeof(f32)
} }
C.glVertexAttribPointer(index, size, typ, normalized, stride, ptr) C.glVertexAttribPointer(index, size, typ, normalized, stride, ptr)
} }

View File

@ -8,32 +8,32 @@ import math
/* /*
#flag -lmyglm #flag -lmyglm
# float* myglm_ortho(float, float, float, float); # f32* myglm_ortho(f32, f32, f32, f32);
# float* myglm_translate(float, float, float); # f32* myglm_translate(f32, f32, f32);
*/ */
// # float* myglm_rotate(float *m, float angle, float, float, float); // # f32* myglm_rotate(f32 *m, f32 angle, f32, f32, f32);
// # float* myglm_perspective(float, float, float, float); // # f32* myglm_perspective(f32, f32, f32, f32);
// # float* myglm_look_at(glm__Vec3, glm__Vec3, glm__Vec3); // # f32* myglm_look_at(glm__Vec3, glm__Vec3, glm__Vec3);
// # glm__Vec3 myglm_mult(glm__Vec3, glm__Vec3); // # glm__Vec3 myglm_mult(glm__Vec3, glm__Vec3);
// # glm__Vec3 myglm_cross(glm__Vec3, glm__Vec3); // # glm__Vec3 myglm_cross(glm__Vec3, glm__Vec3);
// # glm__Vec3 myglm_normalize(glm__Vec3); // # glm__Vec3 myglm_normalize(glm__Vec3);
struct Mat4 { struct Mat4 {
pub: pub:
data *float data *f32
} }
struct Vec2 { struct Vec2 {
x float x f32
y float y f32
} }
struct Vec3 { struct Vec3 {
x float x f32
y float y f32
z float z f32
} }
fn vec3(x, y, z float) Vec3 { fn vec3(x, y, z f32) Vec3 {
res := Vec3 { res := Vec3 {
x: x, x: x,
y: y, y: y,
@ -42,7 +42,7 @@ fn vec3(x, y, z float) Vec3 {
return res return res
} }
fn mat4(f *float) Mat4 { fn mat4(f *f32) Mat4 {
res := Mat4 { res := Mat4 {
data: f data: f
} }
@ -104,7 +104,7 @@ fn (a Vec3) sub(b Vec3) Vec3 {
// fn (a Vec3) mult(b Vec3) Vec3 { // fn (a Vec3) mult(b Vec3) Vec3 {
// # return myglm_mult(a,b); // # return myglm_mult(a,b);
// } // }
fn (a Vec3) mult_scalar(b float) Vec3 { fn (a Vec3) mult_scalar(b f32) Vec3 {
res := Vec3 { res := Vec3 {
x: a.x * b, x: a.x * b,
y: a.y * b, y: a.y * b,
@ -122,7 +122,7 @@ fn (a Vec3) print() {
} }
/* /*
fn rotate(m Mat4, angle float, vec Vec3) Mat4 { fn rotate(m Mat4, angle f32, vec Vec3) Mat4 {
// # t_mat4 m; // # t_mat4 m;
// println('rotate done') // println('rotate done')
# return glm__mat4( myglm_rotate(m.data, angle, vec.x,vec.y,vec.z) ); # return glm__mat4( myglm_rotate(m.data, angle, vec.x,vec.y,vec.z) );
@ -130,14 +130,14 @@ fn rotate(m Mat4, angle float, vec Vec3) Mat4 {
} }
*/ */
fn float_calloc(n int) *float { fn f32_calloc(n int) *f32 {
return *float(calloc(n * sizeof(float))) return *f32(calloc(n * sizeof(f32)))
} }
// fn translate(vec Vec3) *float { // fn translate(vec Vec3) *f32 {
fn translate(m Mat4, v Vec3) Mat4 { fn translate(m Mat4, v Vec3) Mat4 {
// # return glm__mat4(myglm_translate(vec.x,vec.y,vec.z) ); // # return glm__mat4(myglm_translate(vec.x,vec.y,vec.z) );
a := m.data a := m.data
mut out := float_calloc(16) mut out := f32_calloc(16)
x := v.x x := v.x
y := v.y y := v.y
z := v.z z := v.z
@ -161,11 +161,11 @@ fn normalize(vec Vec3) Vec3 {
} }
*/ */
// https://github.com/g-truc/glm/blob/0ceb2b755fb155d593854aefe3e45d416ce153a4/glm/ext/matrix_clip_space.inl // https://github.com/g-truc/glm/blob/0ceb2b755fb155d593854aefe3e45d416ce153a4/glm/ext/matrix_clip_space.inl
fn ortho(left, right, bottom, top float) Mat4 { fn ortho(left, right, bottom, top f32) Mat4 {
println('glm ortho($left, $right, $bottom, $top)') println('glm ortho($left, $right, $bottom, $top)')
// mat<4, 4, T, defaultp> Result(static_cast<T>(1)); // mat<4, 4, T, defaultp> Result(static_cast<T>(1));
n := 16 n := 16
mut res := float_calloc(n) mut res := f32_calloc(n)
# res[0] = 2 / (right - left) ; # res[0] = 2 / (right - left) ;
# res[5] = 2.0 / (top - bottom); # res[5] = 2.0 / (top - bottom);
# res[10] = (1); # res[10] = (1);
@ -175,10 +175,10 @@ fn ortho(left, right, bottom, top float) Mat4 {
return mat4(res) return mat4(res)
} }
// fn scale(a *float, v Vec3) *float { // fn scale(a *f32, v Vec3) *f32 {
fn scale(m Mat4, v Vec3) Mat4 { fn scale(m Mat4, v Vec3) Mat4 {
a := m.data a := m.data
mut out := float_calloc(16) mut out := f32_calloc(16)
x := v.x x := v.x
y := v.y y := v.y
z := v.z z := v.z
@ -201,10 +201,10 @@ fn scale(m Mat4, v Vec3) Mat4 {
return mat4(out) return mat4(out)
} }
// fn rotate_z(a *float, rad float) *float { // fn rotate_z(a *f32, rad f32) *f32 {
fn rotate_z(m Mat4, rad float) Mat4 { fn rotate_z(m Mat4, rad f32) Mat4 {
a := m.data a := m.data
mut out := float_calloc(16) mut out := f32_calloc(16)
s := math.sin(rad) s := math.sin(rad)
c := math.cos(rad) c := math.cos(rad)
a00 := a[0] a00 := a[0]
@ -241,7 +241,7 @@ fn identity() Mat4 {
// 0 0 1 0 // 0 0 1 0
// 0 0 0 1 // 0 0 0 1
n := 16 n := 16
mut res := float_calloc(sizeof(float) * n) mut res := f32_calloc(sizeof(f32) * n)
res[0] = 1 res[0] = 1
res[5] = 1 res[5] = 1
res[10] = 1 res[10] = 1
@ -249,19 +249,19 @@ fn identity() Mat4 {
return mat4(res) return mat4(res)
} }
// returns *float without allocation // returns *f32 without allocation
fn identity2(res *float) { fn identity2(res *f32) {
res[0] = 1 res[0] = 1
res[5] = 1 res[5] = 1
res[10] = 1 res[10] = 1
res[15] = 1 res[15] = 1
// # float f[16]={0};// for (int i =0;i<16;i++) // # f32 f[16]={0};// for (int i =0;i<16;i++)
// # printf("!!%d\n", f[0]); // # printf("!!%d\n", f[0]);
// # glm__identity2(&f); // # glm__identity2(&f);
// # gl__Shader_set_mat4(shader, tos2("projection"), f) ; // # gl__Shader_set_mat4(shader, tos2("projection"), f) ;
} }
fn identity3() []float { fn identity3() []f32 {
res := [1.0, 0, 0, 0, res := [1.0, 0, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1, 0,
@ -271,13 +271,13 @@ fn identity3() []float {
} }
// https://github.com/toji/gl-matrix/blob/1549cf21dfa14a2bc845993485343d519cf064fe/src/gl-matrix/mat4.js // https://github.com/toji/gl-matrix/blob/1549cf21dfa14a2bc845993485343d519cf064fe/src/gl-matrix/mat4.js
fn ortho_js(left, right, bottom, top float) *float { fn ortho_js(left, right, bottom, top f32) *f32 {
mynear := 1 mynear := 1
myfar := 1 myfar := 1
lr := 1.0 / (left - right) lr := 1.0 / (left - right)
bt := 1.0 / (bottom - top) bt := 1.0 / (bottom - top)
nf := 1.0 / 1.0// (mynear -myfar) nf := 1.0 / 1.0// (mynear -myfar)
# float* out = malloc (sizeof(float) * 16); # f32* out = malloc (sizeof(f32) * 16);
# out[0] = -2 * lr; # out[0] = -2 * lr;
# out[1] = 0; # out[1] = 0;
# out[2] = 0; # out[2] = 0;
@ -299,7 +299,7 @@ fn ortho_js(left, right, bottom, top float) *float {
return &f return &f
} }
// fn ortho_old(a, b, c, d float) *float { // fn ortho_old(a, b, c, d f32) *f32 {
// # return myglm_ortho(a,b,c,d); // # return myglm_ortho(a,b,c,d);
// } // }
fn cross(a, b Vec3) Vec3 { fn cross(a, b Vec3) Vec3 {
@ -308,7 +308,7 @@ fn cross(a, b Vec3) Vec3 {
} }
/* /*
fn perspective(degrees float, ratio float, a, b float) Mat4 { fn perspective(degrees f32, ratio f32, a, b f32) Mat4 {
// println('lang per degrees=$degrees ratio=$ratio a=$a b=$b') // println('lang per degrees=$degrees ratio=$ratio a=$a b=$b')
// # printf("lang pers degrees=%f ratio=%f a=%f b=%f\n", degrees, ratio, a,b); // # printf("lang pers degrees=%f ratio=%f a=%f b=%f\n", degrees, ratio, a,b);
# return glm__mat4( myglm_perspective(degrees, ratio, a,b) ) ; # return glm__mat4( myglm_perspective(degrees, ratio, a,b) ) ;

View File

@ -13,7 +13,7 @@ module json
#include "cJSON.h" #include "cJSON.h"
struct C.cJSON { struct C.cJSON {
valueint int valueint int
valuedouble float valuedouble f32
valuestring byteptr valuestring byteptr
} }
@ -54,13 +54,6 @@ fn jsdecode_i64(root *C.cJSON) i64 {
return i64(root.valuedouble) //i64 is double in C return i64(root.valuedouble) //i64 is double in C
} }
fn jsdecode_float(root *C.cJSON) float {
if isnil(root) {
return 0
}
return root.valuedouble
}
fn jsdecode_f32(root *C.cJSON) f32 { fn jsdecode_f32(root *C.cJSON) f32 {
if isnil(root) { if isnil(root) {
return f32(0) return f32(0)
@ -116,10 +109,6 @@ fn jsencode_i64(val i64) *C.cJSON {
return C.cJSON_CreateNumber(val) return C.cJSON_CreateNumber(val)
} }
fn jsencode_float(val float) *C.cJSON {
return C.cJSON_CreateNumber(val)
}
fn jsencode_f32(val f32) *C.cJSON { fn jsencode_f32(val f32) *C.cJSON {
return C.cJSON_CreateNumber(val) return C.cJSON_CreateNumber(val)
} }