diff --git a/libc3/window/sdl2/demo/flies.c b/libc3/window/sdl2/demo/flies.c
index cc9e6be..9151dcd 100644
--- a/libc3/window/sdl2/demo/flies.c
+++ b/libc3/window/sdl2/demo/flies.c
@@ -13,7 +13,7 @@
#include <math.h>
#include <libc3/c3.h>
#include "../gl_font.h"
-#include "../gl_matrix_4d.h"
+#include "../gl_matrix_4f.h"
#include "../gl_ortho.h"
#include "../gl_text.h"
#include "../gl_sprite.h"
@@ -158,9 +158,9 @@ bool flies_render (s_sequence *seq)
uw i;
uw j;
s_map *map;
- s_gl_matrix_4d matrix;
- s_gl_matrix_4d matrix_1;
- s_gl_matrix_4d matrix_2;
+ s_gl_matrix_4f matrix;
+ s_gl_matrix_4f matrix_1;
+ s_gl_matrix_4f matrix_2;
uw r;
uw random_bits = 0;
f64 x;
@@ -194,8 +194,8 @@ bool flies_render (s_sequence *seq)
dead_fly_scale = 2.0 * board_item_w / g_sprite_dead_fly.w;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR_MIPMAP_LINEAR);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
- gl_matrix_4d_translate(&g_ortho.model_matrix, board_x, 60.0, 0.0);
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, board_x, 60.0, 0.0);
glBlendColor(1.0f, 1.0f, 1.0f, 1.0f);
buf_init(&buf, false, sizeof(a), a);
buf_write_1(&buf, "In ");
@@ -211,12 +211,12 @@ bool flies_render (s_sequence *seq)
buf_write_u8(&buf, 0);
x = board_item_w * (BOARD_SIZE / 2 + 1);
matrix = g_ortho.model_matrix; {
- gl_matrix_4d_translate(&g_ortho.model_matrix, x, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, x, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_update_1(&g_text_flies_out, a);
gl_text_render(&g_text_flies_out);
g_ortho.model_matrix = matrix;
- gl_matrix_4d_translate(&g_ortho.model_matrix, 0.0, board_item_h, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 0.0, board_item_h, 0.0);
glBlendColor(0.6f, 0.7f, 0.9f, 1.0f);
//glRectd(0, 0, board_w, board_h);
address[1] = 0;
@@ -226,7 +226,7 @@ bool flies_render (s_sequence *seq)
while (address[0] < BOARD_SIZE) {
x = board_item_w * address[0];
matrix_1 = g_ortho.model_matrix; {
- gl_matrix_4d_translate(&g_ortho.model_matrix, x,
+ gl_matrix_4f_translate(&g_ortho.model_matrix, x,
board_h - board_item_h - y, 0.0);
board_item = (u8 *) array_data(board, address);
assert(board_item);
@@ -240,10 +240,10 @@ bool flies_render (s_sequence *seq)
break;
case BOARD_ITEM_FLY:
matrix_2 = g_ortho.model_matrix; {
- gl_matrix_4d_translate(&g_ortho.model_matrix,
+ gl_matrix_4f_translate(&g_ortho.model_matrix,
-board_item_w / 2.0,
-board_item_h / 2.0, 0.0);
- gl_matrix_4d_scale(&g_ortho.model_matrix, fly_scale,
+ gl_matrix_4f_scale(&g_ortho.model_matrix, fly_scale,
fly_scale, 1.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_sprite_render(&g_sprite_fly, 0);
@@ -316,10 +316,10 @@ bool flies_render (s_sequence *seq)
break;
case BOARD_ITEM_DEAD_FLY:
matrix_2 = g_ortho.model_matrix; {
- gl_matrix_4d_translate(&g_ortho.model_matrix,
+ gl_matrix_4f_translate(&g_ortho.model_matrix,
-board_item_w / 2.0,
-board_item_h / 2.0, 0.0);
- gl_matrix_4d_scale(&g_ortho.model_matrix, dead_fly_scale,
+ gl_matrix_4f_scale(&g_ortho.model_matrix, dead_fly_scale,
dead_fly_scale, 1.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_sprite_render(&g_sprite_dead_fly, 0);
diff --git a/libc3/window/sdl2/demo/lightspeed.c b/libc3/window/sdl2/demo/lightspeed.c
index e9ad16e..0e82aac 100644
--- a/libc3/window/sdl2/demo/lightspeed.c
+++ b/libc3/window/sdl2/demo/lightspeed.c
@@ -12,9 +12,9 @@
*/
#include <libc3/c3.h>
#include "../gl_lines.h"
-#include "../gl_matrix_4d.h"
+#include "../gl_matrix_4f.h"
#include "../gl_ortho.h"
-#include "../gl_point_3d.h"
+#include "../gl_point_3f.h"
#include "window_sdl2_demo.h"
#include "lightspeed.h"
@@ -48,9 +48,9 @@ static void star_render (s_tag *star, s_sequence *seq, s_gl_vertex *v)
speed = &star->data.map.value[0].data.f64;
x = &star->data.map.value[1].data.f64;
y = &star->data.map.value[2].data.f64;
- gl_point_3d_init(&v[0].position, *x, *y, 0.0);
+ gl_point_3f_init(&v[0].position, *x, *y, 0.0);
q = (1 + *speed / 20);
- gl_point_3d_init(&v[1].position, *x * q, *y * q, 0.0);
+ gl_point_3f_init(&v[1].position, *x * q, *y * q, 0.0);
q = (1 + *speed / 100);
*x = *x * q;
*y = *y * q;
@@ -90,11 +90,11 @@ bool lightspeed_render (s_sequence *seq)
assert(seq);
window = seq->window;
assert(window);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
/*
- gl_matrix_4d_scale(&g_ortho.model_matrix, window->w / 2.0,
+ gl_matrix_4f_scale(&g_ortho.model_matrix, window->w / 2.0,
window->h / 2.0, 1);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 1, 1, 0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 1, 1, 0);
*/
gl_ortho_update_model_matrix(&g_ortho);
star_count = window->w * window->h * LIGHTSPEED_STAR_PROBABILITY;
diff --git a/libc3/window/sdl2/demo/toasters.c b/libc3/window/sdl2/demo/toasters.c
index 2f0b103..b4842a7 100644
--- a/libc3/window/sdl2/demo/toasters.c
+++ b/libc3/window/sdl2/demo/toasters.c
@@ -12,7 +12,7 @@
*/
#include <math.h>
#include <libc3/c3.h>
-#include "../gl_matrix_4d.h"
+#include "../gl_matrix_4f.h"
#include "../gl_ortho.h"
#include "../gl_sprite.h"
#include "toasters.h"
@@ -49,7 +49,7 @@ static s_tag * toast_init (s_tag *toast, f64 x, f64 y)
static void toast_render (s_tag *toast, s_window_sdl2 *window,
s_sequence *seq)
{
- s_gl_matrix_4d matrix;
+ s_gl_matrix_4f matrix;
f64 *x;
f64 *y;
if (toast->type == TAG_MAP) {
@@ -63,9 +63,9 @@ static void toast_render (s_tag *toast, s_window_sdl2 *window,
return;
}
matrix = g_ortho.model_matrix;
- gl_matrix_4d_translate(&g_ortho.model_matrix, *x,
+ gl_matrix_4f_translate(&g_ortho.model_matrix, *x,
*y + g_sprite_toast.h, 0.0);
- gl_matrix_4d_scale(&g_ortho.model_matrix,
+ gl_matrix_4f_scale(&g_ortho.model_matrix,
TOASTERS_SCALE_TOAST,
-TOASTERS_SCALE_TOAST, 1);
gl_ortho_update_model_matrix(&g_ortho);
@@ -87,7 +87,7 @@ static s_tag * toaster_init (s_tag *toaster, f64 y)
static void toaster_render (s_tag *toaster, s_window_sdl2 *window,
s_sequence *seq)
{
- s_gl_matrix_4d matrix;
+ s_gl_matrix_4f matrix;
f64 *x;
f64 *y;
if (toaster->type == TAG_MAP) {
@@ -101,9 +101,9 @@ static void toaster_render (s_tag *toaster, s_window_sdl2 *window,
return;
}
matrix = g_ortho.model_matrix;
- gl_matrix_4d_translate(&g_ortho.model_matrix, *x,
+ gl_matrix_4f_translate(&g_ortho.model_matrix, *x,
*y + g_sprite_toaster.h, 0.0);
- gl_matrix_4d_scale(&g_ortho.model_matrix,
+ gl_matrix_4f_scale(&g_ortho.model_matrix,
TOASTERS_SCALE_TOASTER,
-TOASTERS_SCALE_TOASTER, 1);
gl_ortho_update_model_matrix(&g_ortho);
@@ -136,9 +136,9 @@ bool toasters_render (s_sequence *seq)
assert(window);
glClearColor(0.7f, 0.95f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 0, window->h, 0);
- gl_matrix_4d_scale(&g_ortho.model_matrix, 1, -1, 1);
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 0, window->h, 0);
+ gl_matrix_4f_scale(&g_ortho.model_matrix, 1, -1, 1);
/* io_inspect(&seq->tag); */
if (seq->tag.type == TAG_MAP) {
toasters = &seq->tag.data.map.value[0].data.list;
diff --git a/libc3/window/sdl2/demo/window_sdl2_demo.c b/libc3/window/sdl2/demo/window_sdl2_demo.c
index cc942c8..e5668e4 100644
--- a/libc3/window/sdl2/demo/window_sdl2_demo.c
+++ b/libc3/window/sdl2/demo/window_sdl2_demo.c
@@ -16,7 +16,7 @@
#include "../../window.h"
#include "../gl_font.h"
#include "../gl_lines.h"
-#include "../gl_matrix_4d.h"
+#include "../gl_matrix_4f.h"
#include "../gl_ortho.h"
#include "../gl_square.h"
#include "../gl_text.h"
@@ -211,39 +211,39 @@ static void render_text (s_gl_text *text, f64 x, f64 y)
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
assert(glGetError() == GL_NO_ERROR);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
- gl_matrix_4d_translate(&g_ortho.model_matrix, x - 1.0, y - 1.0, 0.0);
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, x - 1.0, y - 1.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
glBlendColor(1.0f, 1.0f, 1.0f, 1.0f);
assert(glGetError() == GL_NO_ERROR);
gl_text_render(text);
assert(glGetError() == GL_NO_ERROR);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 0.0, 1.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 0.0, 1.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, -1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, -1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, -1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, -1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 0.0, 1.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 0.0, 1.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 1.0, 0.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
glBlendColor(0.0f, 0.0f, 0.0f, 1.0f);
- gl_matrix_4d_translate(&g_ortho.model_matrix, -1.0, -1.0, 0.0);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, -1.0, -1.0, 0.0);
gl_ortho_update_model_matrix(&g_ortho);
gl_text_render(text);
assert(glGetError() == GL_NO_ERROR);
@@ -258,7 +258,7 @@ bool window_sdl2_demo_render (s_window_sdl2 *window)
return false;
seq = window->seq;
gl_ortho_resize(&g_ortho, 0, window->w, 0, window->h, -1, 1);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
gl_ortho_render(&g_ortho);
glEnable(GL_BLEND);
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
@@ -285,9 +285,9 @@ bool window_sdl2_demo_render (s_window_sdl2 *window)
glBindTexture(GL_TEXTURE_2D, 0);
assert(glGetError() == GL_NO_ERROR);
glBlendColor(1.0f, 1.0f, 1.0f, 1.0f);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 19.0, 11.0, 0);
- gl_matrix_4d_scale(&g_ortho.model_matrix,
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 19.0, 11.0, 0);
+ gl_matrix_4f_scale(&g_ortho.model_matrix,
(window->w - 40.0) * seq->t / seq->duration + 2.0,
4.0, 0);
gl_ortho_update_model_matrix(&g_ortho);
@@ -298,9 +298,9 @@ bool window_sdl2_demo_render (s_window_sdl2 *window)
11 + 4);
*/
glBlendColor(0.0f, 0.0f, 0.0f, 1.0f);
- gl_matrix_4d_init_identity(&g_ortho.model_matrix);
- gl_matrix_4d_translate(&g_ortho.model_matrix, 20.0, 12.0, 0);
- gl_matrix_4d_scale(&g_ortho.model_matrix,
+ gl_matrix_4f_init_identity(&g_ortho.model_matrix);
+ gl_matrix_4f_translate(&g_ortho.model_matrix, 20.0, 12.0, 0);
+ gl_matrix_4f_scale(&g_ortho.model_matrix,
(window->w - 40.0) * seq->t / seq->duration,
2.0, 0);
gl_ortho_update_model_matrix(&g_ortho);
diff --git a/libc3/window/sdl2/gl_camera.c b/libc3/window/sdl2/gl_camera.c
index 1881b49..9b1cb27 100644
--- a/libc3/window/sdl2/gl_camera.c
+++ b/libc3/window/sdl2/gl_camera.c
@@ -13,7 +13,7 @@
#include <math.h>
#include <libc3/c3.h>
#include "gl_camera.h"
-#include "gl_matrix_4d.h"
+#include "gl_matrix_4f.h"
static const s8 * g_gl_camera_vertex_shader_src = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
@@ -88,18 +88,18 @@ s_gl_camera * gl_camera_new (uw w, uw h)
void gl_camera_render (s_gl_camera *camera)
{
assert(camera);
- gl_matrix_4d_init_identity(&camera->matrix);
- gl_matrix_4d_perspective(&camera->matrix, camera->fov_y,
+ gl_matrix_4f_init_identity(&camera->matrix);
+ gl_matrix_4f_perspective(&camera->matrix, camera->fov_y,
camera->aspect_ratio, camera->clip_z_near,
camera->clip_z_far);
- gl_matrix_4d_translate(&camera->matrix, camera->position.x,
+ gl_matrix_4f_translate(&camera->matrix, camera->position.x,
camera->position.y, camera->position.z);
- gl_matrix_4d_rotate_axis(&camera->matrix, camera->rotation.x,
- &(s_gl_point_3d) { 1.0, 0.0, 0.0 });
- gl_matrix_4d_rotate_axis(&camera->matrix, camera->rotation.y,
- &(s_gl_point_3d) { 0.0, 1.0, 0.0 });
- gl_matrix_4d_rotate_axis(&camera->matrix, camera->rotation.z,
- &(s_gl_point_3d) { 0.0, 0.0, 1.0 });
+ gl_matrix_4f_rotate_axis(&camera->matrix, camera->rotation.x,
+ &(s_gl_point_3f) { 1.0f, 0.0f, 0.0f });
+ gl_matrix_4f_rotate_axis(&camera->matrix, camera->rotation.y,
+ &(s_gl_point_3f) { 0.0f, 1.0f, 0.0f });
+ gl_matrix_4f_rotate_axis(&camera->matrix, camera->rotation.z,
+ &(s_gl_point_3f) { 0.0f, 0.0f, 1.0f });
glUseProgram(camera->gl_shader_program);
glUniformMatrix4fv(camera->gl_matrix_loc, 1, GL_FALSE,
&camera->matrix.xx);
diff --git a/libc3/window/sdl2/gl_matrix_4d.c b/libc3/window/sdl2/gl_matrix_4d.c
index c9ead3f..b72a9b1 100644
--- a/libc3/window/sdl2/gl_matrix_4d.c
+++ b/libc3/window/sdl2/gl_matrix_4d.c
@@ -22,14 +22,14 @@ sw gl_matrix_4d_buf_inspect (s_buf *buf, const s_gl_matrix_4d *matrix)
sw result = 0;
assert(buf);
assert(matrix);
- const f32 *m;
- if ((r = buf_write_1(buf, "(F32) {")) < 0)
+ const f64 *m;
+ if ((r = buf_write_1(buf, "(F64) {")) < 0)
return r;
result += r;
m = &matrix->xx;
i = 0;
while (i < 16) {
- if ((r = buf_inspect_f32(buf, m)) < 0)
+ if ((r = buf_inspect_f64(buf, m)) < 0)
return r;
result += r;
m++;
@@ -140,13 +140,13 @@ s_gl_matrix_4d * gl_matrix_4d_new_zero (void)
return m;
}
-s_gl_matrix_4d * gl_matrix_4d_ortho (s_gl_matrix_4d *m, f32 x1, f32 x2,
- f32 y1, f32 y2, f32 clip_z_near,
- f32 clip_z_far)
+s_gl_matrix_4d * gl_matrix_4d_ortho (s_gl_matrix_4d *m, f64 x1, f64 x2,
+ f64 y1, f64 y2, f64 clip_z_near,
+ f64 clip_z_far)
{
- f32 dx;
- f32 dy;
- f32 dz;
+ f64 dx;
+ f64 dy;
+ f64 dz;
s_gl_matrix_4d ortho;
assert(m);
dx = x2 - x1;
@@ -156,23 +156,23 @@ s_gl_matrix_4d * gl_matrix_4d_ortho (s_gl_matrix_4d *m, f32 x1, f32 x2,
ortho.xx = 2.0 / dx;
ortho.yy = 2.0 / dy;
ortho.zz = -2.0 / dz;
- ortho.xt = -(x1 + x2) / dx;
- ortho.yt = -(y1 + y2) / dy;
- ortho.zt = -(clip_z_near + clip_z_far) / dz;
+ ortho.xt = (x1 + x2) / dx;
+ ortho.yt = (y1 + y2) / dy;
+ ortho.zt = (clip_z_near + clip_z_far) / dz;
ortho.tt = 1.0;
gl_matrix_4d_product(m, &ortho);
return m;
}
-s_gl_matrix_4d * gl_matrix_4d_perspective (s_gl_matrix_4d *m, f32 fov_y,
- f32 aspect_ratio,
- f32 z_near,
- f32 z_far)
+s_gl_matrix_4d * gl_matrix_4d_perspective (s_gl_matrix_4d *m, f64 fov_y,
+ f64 aspect_ratio,
+ f64 z_near,
+ f64 z_far)
{
- f32 dz;
+ f64 dz;
s_gl_matrix_4d perspective;
- f32 f;
- f32 fov_y_2;
+ f64 f;
+ f64 fov_y_2;
fov_y_2 = fov_y / 2.0;
f = cos(fov_y_2) / sin(fov_y_2);
dz = z_near - z_far;
@@ -195,8 +195,8 @@ s_gl_matrix_4d * gl_matrix_4d_product (s_gl_matrix_4d *m,
return m;
}
-s_gl_matrix_4d * gl_matrix_4d_scale (s_gl_matrix_4d *m, f32 x, f32 y,
- f32 z)
+s_gl_matrix_4d * gl_matrix_4d_scale (s_gl_matrix_4d *m, f64 x, f64 y,
+ f64 z)
{
s_gl_matrix_4d s = {0};
s.xx = x;
@@ -207,8 +207,8 @@ s_gl_matrix_4d * gl_matrix_4d_scale (s_gl_matrix_4d *m, f32 x, f32 y,
return m;
}
-s_gl_matrix_4d * gl_matrix_4d_translate (s_gl_matrix_4d *m, f32 x,
- f32 y, f32 z)
+s_gl_matrix_4d * gl_matrix_4d_translate (s_gl_matrix_4d *m, f64 x,
+ f64 y, f64 z)
{
m->xt += x;
m->yt += y;
@@ -216,14 +216,14 @@ s_gl_matrix_4d * gl_matrix_4d_translate (s_gl_matrix_4d *m, f32 x,
return m;
}
-s_gl_matrix_4d * gl_matrix_4d_rotate_axis (s_gl_matrix_4d *m, f32 rad,
+s_gl_matrix_4d * gl_matrix_4d_rotate_axis (s_gl_matrix_4d *m, f64 rad,
const s_gl_point_3d *axis)
{
s_gl_point_3d a;
- f32 angle;
- f32 one_minus_x;
- f32 x;
- f32 y;
+ f64 angle;
+ f64 one_minus_x;
+ f64 x;
+ f64 y;
gl_point_3d_init_normalize(&a, axis);
angle = -rad;
x = cos(angle);
diff --git a/libc3/window/sdl2/gl_matrix_4d.h b/libc3/window/sdl2/gl_matrix_4d.h
index 39b0c13..4d4be24 100644
--- a/libc3/window/sdl2/gl_matrix_4d.h
+++ b/libc3/window/sdl2/gl_matrix_4d.h
@@ -33,20 +33,20 @@ s_gl_matrix_4d * gl_matrix_4d_new_matrix_mult (const s_gl_matrix_4d *a,
s_gl_matrix_4d * gl_matrix_4d_new_zero (void);
/* Operators. */
-s_gl_matrix_4d * gl_matrix_4d_ortho (s_gl_matrix_4d *m, f32 x1, f32 x2,
- f32 y1, f32 y2, f32 clip_z_near,
- f32 clip_z_far);
-s_gl_matrix_4d * gl_matrix_4d_perspective (s_gl_matrix_4d *m, f32 fov_y,
- f32 aspect_ratio,
- f32 clip_z_near,
- f32 clip_z_far);
+s_gl_matrix_4d * gl_matrix_4d_ortho (s_gl_matrix_4d *m, f64 x1, f64 x2,
+ f64 y1, f64 y2, f64 clip_z_near,
+ f64 clip_z_far);
+s_gl_matrix_4d * gl_matrix_4d_perspective (s_gl_matrix_4d *m, f64 fov_y,
+ f64 aspect_ratio,
+ f64 clip_z_near,
+ f64 clip_z_far);
s_gl_matrix_4d * gl_matrix_4d_product (s_gl_matrix_4d *m,
const s_gl_matrix_4d *a);
-s_gl_matrix_4d * gl_matrix_4d_rotate_axis (s_gl_matrix_4d *m, f32 rad,
+s_gl_matrix_4d * gl_matrix_4d_rotate_axis (s_gl_matrix_4d *m, f64 rad,
const s_gl_point_3d *axis);
-s_gl_matrix_4d * gl_matrix_4d_scale (s_gl_matrix_4d *m, f32 x, f32 y,
- f32 z);
-s_gl_matrix_4d * gl_matrix_4d_translate (s_gl_matrix_4d *m, f32 x,
- f32 y, f32 z);
+s_gl_matrix_4d * gl_matrix_4d_scale (s_gl_matrix_4d *m, f64 x, f64 y,
+ f64 z);
+s_gl_matrix_4d * gl_matrix_4d_translate (s_gl_matrix_4d *m, f64 x,
+ f64 y, f64 z);
#endif /* GL_MATRIX_4D_H */
diff --git a/libc3/window/sdl2/gl_object.c b/libc3/window/sdl2/gl_object.c
index f2124fe..9e47615 100644
--- a/libc3/window/sdl2/gl_object.c
+++ b/libc3/window/sdl2/gl_object.c
@@ -79,7 +79,7 @@ void gl_object_render_wireframe (const s_gl_object *object)
}
void gl_object_transform (s_gl_object *object,
- const s_gl_matrix_4d *matrix)
+ const s_gl_matrix_4f *matrix)
{
uw i;
s_gl_vertex *vertex;
diff --git a/libc3/window/sdl2/gl_ortho.c b/libc3/window/sdl2/gl_ortho.c
index 2b02a13..2a42f6e 100644
--- a/libc3/window/sdl2/gl_ortho.c
+++ b/libc3/window/sdl2/gl_ortho.c
@@ -13,7 +13,7 @@
#include <math.h>
#include <libc3/c3.h>
#include "gl_ortho.h"
-#include "gl_matrix_4d.h"
+#include "gl_matrix_4f.h"
static const s8 * g_gl_ortho_vertex_shader_src = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
@@ -50,16 +50,16 @@ s_gl_ortho * gl_ortho_init (s_gl_ortho *ortho)
GLint success;
u32 vertex_shader;
assert(ortho);
- gl_matrix_4d_init_identity(&ortho->projection_matrix);
- gl_matrix_4d_ortho(&ortho->projection_matrix, -1, 1, -1, 1, -1, 1);
+ gl_matrix_4f_init_identity(&ortho->projection_matrix);
+ gl_matrix_4f_ortho(&ortho->projection_matrix, -1, 1, -1, 1, -1, 1);
ortho->position.x = 0.0;
ortho->position.y = 0.0;
ortho->position.z = 0.0;
ortho->rotation.x = 0.0;
ortho->rotation.y = 0.0;
ortho->rotation.z = 0.0;
- gl_matrix_4d_init_identity(&ortho->view_matrix);
- gl_matrix_4d_init_identity(&ortho->model_matrix);
+ gl_matrix_4f_init_identity(&ortho->view_matrix);
+ gl_matrix_4f_init_identity(&ortho->model_matrix);
vertex_shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertex_shader, 1, &g_gl_ortho_vertex_shader_src,
NULL);
@@ -133,8 +133,8 @@ void gl_ortho_resize (s_gl_ortho *ortho, f32 x1, f32 x2, f32 y1, f32 y2,
f32 clip_z_near, f32 clip_z_far)
{
assert(ortho);
- gl_matrix_4d_init_identity(&ortho->projection_matrix);
- gl_matrix_4d_ortho(&ortho->projection_matrix, x1, x2, y1, y2,
+ gl_matrix_4f_init_identity(&ortho->projection_matrix);
+ gl_matrix_4f_ortho(&ortho->projection_matrix, x1, x2, y1, y2,
clip_z_near, clip_z_far);
}
@@ -160,15 +160,15 @@ void gl_ortho_update_view_matrix (s_gl_ortho *ortho)
{
assert(ortho);
assert(glGetError() == GL_NO_ERROR);
- gl_matrix_4d_init_identity(&ortho->view_matrix);
- gl_matrix_4d_translate(&ortho->view_matrix, ortho->position.x,
+ gl_matrix_4f_init_identity(&ortho->view_matrix);
+ gl_matrix_4f_translate(&ortho->view_matrix, ortho->position.x,
ortho->position.y, ortho->position.z);
- gl_matrix_4d_rotate_axis(&ortho->view_matrix, ortho->rotation.x,
- &(s_gl_point_3d) { 1.0, 0.0, 0.0 });
- gl_matrix_4d_rotate_axis(&ortho->view_matrix, ortho->rotation.y,
- &(s_gl_point_3d) { 0.0, 1.0, 0.0 });
- gl_matrix_4d_rotate_axis(&ortho->view_matrix, ortho->rotation.z,
- &(s_gl_point_3d) { 0.0, 0.0, 1.0 });
+ gl_matrix_4f_rotate_axis(&ortho->view_matrix, ortho->rotation.x,
+ &(s_gl_point_3f) { 1.0f, 0.0f, 0.0f });
+ gl_matrix_4f_rotate_axis(&ortho->view_matrix, ortho->rotation.y,
+ &(s_gl_point_3f) { 0.0f, 1.0f, 0.0f });
+ gl_matrix_4f_rotate_axis(&ortho->view_matrix, ortho->rotation.z,
+ &(s_gl_point_3f) { 0.0f, 0.0f, 1.0f });
glUniformMatrix4fv(ortho->gl_view_matrix_loc, 1, GL_FALSE,
&ortho->view_matrix.xx);
assert(glGetError() == GL_NO_ERROR);
diff --git a/libc3/window/sdl2/gl_point_2f.c b/libc3/window/sdl2/gl_point_2f.c
new file mode 100644
index 0000000..1b784cc
--- /dev/null
+++ b/libc3/window/sdl2/gl_point_2f.c
@@ -0,0 +1,95 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#include <math.h>
+#include <libc3/c3.h>
+#include "gl_point_2f.h"
+
+s_gl_point_2f * gl_point_2f_init (s_gl_point_2f *p, f32 x, f32 y)
+{
+ assert(p);
+ p->x = x;
+ p->y = y;
+ return p;
+}
+
+s_gl_point_2f * gl_point_2f_init_copy (s_gl_point_2f *p,
+ const s_gl_point_2f *src)
+{
+ assert(p);
+ assert(src);
+ p->x = src->x;
+ p->y = src->y;
+ return p;
+}
+
+s_gl_point_2f *
+gl_point_2f_init_product (s_gl_point_2f *p,
+ const s_gl_matrix_3d *m,
+ const s_gl_point_2f *s)
+{
+ assert(p);
+ assert(m);
+ assert(s);
+ p->x = s->x * m->xx + s->y * m->xy + m->xz;
+ p->y = s->x * m->yx + s->y * m->yy + m->yz;
+ return p;
+}
+
+s_gl_point_2f * gl_point_2f_init_zero (s_gl_point_2f *p)
+{
+ assert(p);
+ p->x = 0.0;
+ p->y = 0.0;
+ return p;
+}
+
+void gl_point_2f_delete (s_gl_point_2f *p)
+{
+ free(p);
+}
+
+s_gl_point_2f * gl_point_2f_new (f32 x, f32 y)
+{
+ s_gl_point_2f *p;
+ p = calloc(1, sizeof(s_gl_point_2f));
+ if (! p) {
+ err_puts("gl_point_2f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_2f_init(p, x, y);
+ return p;
+}
+
+s_gl_point_2f * gl_point_2f_new_copy (const s_gl_point_2f *src)
+{
+ s_gl_point_2f *p;
+ p = calloc(1, sizeof(s_gl_point_2f));
+ if (! p) {
+ err_puts("gl_point_2f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_2f_init_copy(p, src);
+ return p;
+}
+
+s_gl_point_2f * gl_point_2f_new_zero (void)
+{
+ s_gl_point_2f *p;
+ p = calloc(1, sizeof(s_gl_point_2f));
+ if (! p) {
+ err_puts("gl_point_2f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_2f_init_zero(p);
+ return p;
+}
diff --git a/libc3/window/sdl2/gl_point_2f.h b/libc3/window/sdl2/gl_point_2f.h
new file mode 100644
index 0000000..a111a9b
--- /dev/null
+++ b/libc3/window/sdl2/gl_point_2f.h
@@ -0,0 +1,36 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#ifndef GL_POINT_2F_H
+#define GL_POINT_2F_H
+
+#include "types.h"
+
+/* Stack-allocation compatible functions. */
+s_gl_point_2f * gl_point_2f_init (s_gl_point_2f *p, f32 x, f32 y);
+s_gl_point_2f * gl_point_2f_init_copy (s_gl_point_2f *p,
+ const s_gl_point_2f *src);
+s_gl_point_2f * gl_point_2f_init_product (s_gl_point_2f *p,
+ const s_gl_matrix_3d *m,
+ const s_gl_point_2f *s);
+s_gl_point_2f * gl_point_2f_init_zero (s_gl_point_2f *p);
+
+
+/* Heap-allocation functions, call gl_point_2f_delete after use. */
+void gl_point_2f_delete (s_gl_point_2f *p);
+s_gl_point_2f * gl_point_2f_new (f32 x, f32 y);
+s_gl_point_2f * gl_point_2f_new_copy (const s_gl_point_2f *src);
+s_gl_point_2f * gl_point_2f_new_product (const s_gl_matrix_3d *m,
+ const s_gl_point_2f *s);
+s_gl_point_2f * gl_point_2f_new_zero (void);
+
+#endif /* GL_POINT_2F_H */
diff --git a/libc3/window/sdl2/gl_point_3f.c b/libc3/window/sdl2/gl_point_3f.c
new file mode 100644
index 0000000..3fec002
--- /dev/null
+++ b/libc3/window/sdl2/gl_point_3f.c
@@ -0,0 +1,156 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#include <math.h>
+#include <libc3/c3.h>
+#include "gl_point_3f.h"
+
+s_gl_point_3f * gl_point_3f_init (s_gl_point_3f *p, f32 x, f32 y, f32 z)
+{
+ assert(p);
+ p->x = x;
+ p->y = y;
+ p->z = z;
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_init_copy (s_gl_point_3f *p,
+ const s_gl_point_3f *src)
+{
+ assert(p);
+ assert(src);
+ p->x = src->x;
+ p->y = src->y;
+ p->z = src->z;
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_init_normalize (s_gl_point_3f *p,
+ const s_gl_point_3f *src)
+{
+ f32 norm;
+ f32 ratio;
+ assert(p);
+ assert(src);
+ norm = gl_point_3f_norm(src);
+ ratio = 1.0f / norm;
+ p->x = src->x * ratio;
+ p->y = src->y * ratio;
+ p->z = src->z * ratio;
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_init_product (s_gl_point_3f *p,
+ const s_gl_matrix_4f *m,
+ const s_gl_point_3f *s)
+{
+ assert(p);
+ assert(m);
+ assert(s);
+ p->x = s->x * m->xx + s->y * m->xy + s->z * m->xz + m->xt;
+ p->y = s->x * m->yx + s->y * m->yy + s->z * m->yz + m->yt;
+ p->z = s->x * m->zx + s->y * m->zy + s->z * m->zz + m->zt;
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_init_zero (s_gl_point_3f *p)
+{
+ assert(p);
+ p->x = 0.0;
+ p->y = 0.0;
+ p->z = 0.0;
+ return p;
+}
+
+void gl_point_3f_delete (s_gl_point_3f *p)
+{
+ free(p);
+}
+
+s_gl_point_3f * gl_point_3f_new (f32 x, f32 y, f32 z)
+{
+ s_gl_point_3f *p;
+ p = calloc(1, sizeof(s_gl_point_3f));
+ if (! p) {
+ err_puts("gl_point_3f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_3f_init(p, x, y, z);
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_new_copy (const s_gl_point_3f *src)
+{
+ s_gl_point_3f *p;
+ p = calloc(1, sizeof(s_gl_point_3f));
+ if (! p) {
+ err_puts("gl_point_3f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_3f_init_copy(p, src);
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_new_product (const s_gl_matrix_4f *m,
+ const s_gl_point_3f *s)
+{
+ s_gl_point_3f *p;
+ assert(m);
+ assert(s);
+ p = calloc(1, sizeof(s_gl_point_3f));
+ if (! p) {
+ err_puts("gl_point_3f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_3f_init_product(p, m, s);
+ return p;
+}
+
+s_gl_point_3f * gl_point_3f_new_zero (void)
+{
+ s_gl_point_3f *p;
+ p = calloc(1, sizeof(s_gl_point_3f));
+ if (! p) {
+ err_puts("gl_point_3f_new: failed to allocate memory");
+ return NULL;
+ }
+ gl_point_3f_init_zero(p);
+ return p;
+}
+
+f32 gl_point_3f_norm (const s_gl_point_3f *p)
+{
+ assert(p);
+ return sqrtf(p->x * p->x + p->y * p->y + p->z * p->z);
+}
+
+void gl_point_3f_normalize (s_gl_point_3f *p)
+{
+ f32 norm;
+ f32 ratio;
+ assert(p);
+ norm = gl_point_3f_norm(p);
+ ratio = 1.0f / norm;
+ p->x *= ratio;
+ p->y *= ratio;
+ p->z *= ratio;
+}
+
+void gl_point_3f_transform (s_gl_point_3f *p,
+ const s_gl_matrix_4f *matrix)
+{
+ s_gl_point_3f tmp;
+ assert(p);
+ assert(matrix);
+ gl_point_3f_init_product(&tmp, matrix, p);
+ *p = tmp;
+}
diff --git a/libc3/window/sdl2/gl_point_3f.h b/libc3/window/sdl2/gl_point_3f.h
new file mode 100644
index 0000000..8d62143
--- /dev/null
+++ b/libc3/window/sdl2/gl_point_3f.h
@@ -0,0 +1,47 @@
+/* c3
+ * Copyright 2022,2023 kmx.io <contact@kmx.io>
+ *
+ * Permission is hereby granted to use this software granted the above
+ * copyright notice and this permission paragraph are included in all
+ * copies and substantial portions of this software.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
+ * PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
+ * AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+#ifndef GL_POINT_3F_H
+#define GL_POINT_3F_H
+
+#include "types.h"
+
+/* Stack-allocation compatible functions. */
+s_gl_point_3f * gl_point_3f_init (s_gl_point_3f *p, f32 x, f32 y,
+ f32 z);
+s_gl_point_3f * gl_point_3f_init_copy (s_gl_point_3f *p,
+ const s_gl_point_3f *src);
+s_gl_point_3f * gl_point_3f_init_normalize (s_gl_point_3f *p,
+ const s_gl_point_3f *src);
+s_gl_point_3f * gl_point_3f_init_product (s_gl_point_3f *p,
+ const s_gl_matrix_4f *m,
+ const s_gl_point_3f *s);
+s_gl_point_3f * gl_point_3f_init_zero (s_gl_point_3f *p);
+
+
+/* Heap-allocation functions, call gl_point_3f_delete after use. */
+void gl_point_3f_delete (s_gl_point_3f *p);
+s_gl_point_3f * gl_point_3f_new (f32 x, f32 y, f32 z);
+s_gl_point_3f * gl_point_3f_new_copy (const s_gl_point_3f *src);
+s_gl_point_3f * gl_point_3f_new_product (const s_gl_matrix_4f *m,
+ const s_gl_point_3f *s);
+s_gl_point_3f * gl_point_3f_new_zero (void);
+
+/* Operators. */
+void gl_point_3f_normalize (s_gl_point_3f *p);
+void gl_point_3f_transform (s_gl_point_3f *p,
+ const s_gl_matrix_4f *matrix);
+
+/* Observers. */
+f32 gl_point_3f_norm (const s_gl_point_3f *p);
+
+#endif /* GL_POINT_3F_H */
diff --git a/libc3/window/sdl2/gl_sprite.c b/libc3/window/sdl2/gl_sprite.c
index 6f956f2..ad1d46e 100644
--- a/libc3/window/sdl2/gl_sprite.c
+++ b/libc3/window/sdl2/gl_sprite.c
@@ -13,8 +13,8 @@
#include <libc3/c3.h>
#include "gl_deprecated.h"
#include "gl_object.h"
-#include "gl_point_2d.h"
-#include "gl_point_3d.h"
+#include "gl_point_2f.h"
+#include "gl_point_3f.h"
#include "gl_sprite.h"
#include "gl_triangle.h"
@@ -351,18 +351,18 @@ s_gl_sprite * gl_sprite_init (s_gl_sprite *sprite, const s8 *path,
&dimension);
array_allocate(&tmp.object.triangle);
vertex = tmp.object.vertex.data;
- gl_point_3d_init(&vertex[0].position, 0.0, tmp.h, 0.0);
- gl_point_3d_init(&vertex[0].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[0].tex_coord, 0.0, 1.0);
- gl_point_3d_init(&vertex[1].position, 0.0, 0.0, 0.0);
- gl_point_3d_init(&vertex[1].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[1].tex_coord, 0.0, 0.0);
- gl_point_3d_init(&vertex[2].position, tmp.w, tmp.h, 0.0);
- gl_point_3d_init(&vertex[2].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[2].tex_coord, 1.0, 1.0);
- gl_point_3d_init(&vertex[3].position, tmp.w, 0.0, 0.0);
- gl_point_3d_init(&vertex[3].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[3].tex_coord, 1.0, 0.0);
+ gl_point_3f_init(&vertex[0].position, 0.0, tmp.h, 0.0);
+ gl_point_3f_init(&vertex[0].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[0].tex_coord, 0.0, 1.0);
+ gl_point_3f_init(&vertex[1].position, 0.0, 0.0, 0.0);
+ gl_point_3f_init(&vertex[1].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[1].tex_coord, 0.0, 0.0);
+ gl_point_3f_init(&vertex[2].position, tmp.w, tmp.h, 0.0);
+ gl_point_3f_init(&vertex[2].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[2].tex_coord, 1.0, 1.0);
+ gl_point_3f_init(&vertex[3].position, tmp.w, 0.0, 0.0);
+ gl_point_3f_init(&vertex[3].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[3].tex_coord, 1.0, 0.0);
triangle = tmp.object.triangle.data;
gl_triangle_init(triangle + 0, 0, 1, 2);
gl_triangle_init(triangle + 1, 1, 3, 2);
diff --git a/libc3/window/sdl2/gl_square.c b/libc3/window/sdl2/gl_square.c
index d549e35..f56f6b2 100644
--- a/libc3/window/sdl2/gl_square.c
+++ b/libc3/window/sdl2/gl_square.c
@@ -13,7 +13,7 @@
#include <math.h>
#include <libc3/c3.h>
#include "gl_object.h"
-#include "gl_point_3d.h"
+#include "gl_point_3f.h"
#include "gl_square.h"
void gl_square_clean (s_gl_square *square)
@@ -33,11 +33,11 @@ s_gl_square * gl_square_init (s_gl_square *square, uw seg_u, uw seg_v)
{
uw i;
uw j;
- s_gl_point_3d normal;
+ s_gl_point_3f normal;
s_gl_square tmp = {0};
s_gl_triangle *triangle;
s_gl_vertex *vertex;
- f64 y;
+ f32 y;
assert(square);
if (seg_u < 2)
seg_u = 2;
@@ -49,14 +49,14 @@ s_gl_square * gl_square_init (s_gl_square *square, uw seg_u, uw seg_v)
! gl_object_allocate(&tmp.object, seg_u * seg_v,
2 * (seg_u - 1) * (seg_v - 1)))
return NULL;
- gl_point_3d_init(&normal, 0.0, 0.0, 1.0);
+ gl_point_3f_init(&normal, 0.0f, 0.0f, 1.0f);
vertex = tmp.object.vertex.data;
i = 0;
while (i < seg_v) {
- y = (f64) i / seg_v;
+ y = (f32) i / seg_v;
j = 0;
while (j < seg_u) {
- vertex->tex_coord.x = vertex->position.x = (f64) j / seg_u;
+ vertex->tex_coord.x = vertex->position.x = (f32) j / seg_u;
vertex->tex_coord.y = vertex->position.y = y;
vertex->position.z = 0.0;
vertex->normal = normal;
diff --git a/libc3/window/sdl2/gl_text.c b/libc3/window/sdl2/gl_text.c
index 56ec215..af261d9 100644
--- a/libc3/window/sdl2/gl_text.c
+++ b/libc3/window/sdl2/gl_text.c
@@ -12,8 +12,8 @@
*/
#include <libc3/c3.h>
#include "gl_object.h"
-#include "gl_point_2d.h"
-#include "gl_point_3d.h"
+#include "gl_point_2f.h"
+#include "gl_point_3f.h"
#include "gl_text.h"
#include "gl_triangle.h"
@@ -88,10 +88,10 @@ bool gl_text_render_to_texture (s_gl_text *text)
FT_UInt glyph_index;
uw i;
uw j;
- f64 max_height = 0.0;
+ f32 max_height = 0.0;
FT_UInt prev_glyph_index = 0;
s_str s;
- f64 total_width = 0.0;
+ f32 total_width = 0.0;
assert(text);
assert(text->font);
assert(text->texture);
@@ -107,7 +107,7 @@ bool gl_text_render_to_texture (s_gl_text *text)
if (prev_glyph_index && glyph_index) {
FT_Get_Kerning(font->ft_face, prev_glyph_index, glyph_index,
FT_KERNING_DEFAULT, &delta);
- total_width += ceil((f64) delta.x / (1 << 6));
+ total_width += ceil((f32) delta.x / (1 << 6));
}
if (FT_Load_Glyph(font->ft_face, glyph_index, FT_LOAD_RENDER)) {
err_write_1("gl_font_render_to_texture: failed to load glyph: ");
@@ -126,7 +126,7 @@ bool gl_text_render_to_texture (s_gl_text *text)
data_h = ceil(max_height);
data_size = data_w * data_h * 4;
data = calloc(1, data_size);
- f64 x = 0;
+ f32 x = 0;
prev_glyph_index = 0;
s = text->str;
while (str_read_character_utf8(&s, &c) > 0) {
@@ -137,7 +137,7 @@ bool gl_text_render_to_texture (s_gl_text *text)
FT_Vector delta;
FT_Get_Kerning(font->ft_face, prev_glyph_index, glyph_index,
FT_KERNING_DEFAULT, &delta);
- x += (f64) delta.x / (1 << 6);
+ x += (f32) delta.x / (1 << 6);
}
if (FT_Load_Glyph(font->ft_face, glyph_index, FT_LOAD_RENDER)) {
continue;
@@ -222,18 +222,18 @@ bool gl_text_update (s_gl_text *text)
if (! gl_text_render_to_texture(text))
return false;
vertex = text->object.vertex.data;
- gl_point_3d_init(&vertex[0].position, 0.0, text->h, 0.0);
- gl_point_3d_init(&vertex[0].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[0].tex_coord, 0.0, 1.0);
- gl_point_3d_init(&vertex[1].position, 0.0, 0.0, 0.0);
- gl_point_3d_init(&vertex[1].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[1].tex_coord, 0.0, 0.0);
- gl_point_3d_init(&vertex[2].position, text->w, text->h, 0.0);
- gl_point_3d_init(&vertex[2].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[2].tex_coord, 1.0, 1.0);
- gl_point_3d_init(&vertex[3].position, text->w, 0.0, 0.0);
- gl_point_3d_init(&vertex[3].normal, 0.0, 0.0, -1.0);
- gl_point_2d_init(&vertex[3].tex_coord, 1.0, 0.0);
+ gl_point_3f_init(&vertex[0].position, 0.0, text->h, 0.0);
+ gl_point_3f_init(&vertex[0].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[0].tex_coord, 0.0, 1.0);
+ gl_point_3f_init(&vertex[1].position, 0.0, 0.0, 0.0);
+ gl_point_3f_init(&vertex[1].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[1].tex_coord, 0.0, 0.0);
+ gl_point_3f_init(&vertex[2].position, text->w, text->h, 0.0);
+ gl_point_3f_init(&vertex[2].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[2].tex_coord, 1.0, 1.0);
+ gl_point_3f_init(&vertex[3].position, text->w, 0.0, 0.0);
+ gl_point_3f_init(&vertex[3].normal, 0.0, 0.0, -1.0);
+ gl_point_2f_init(&vertex[3].tex_coord, 1.0, 0.0);
triangle = text->object.triangle.data;
gl_triangle_init(triangle + 0, 0, 1, 2);
gl_triangle_init(triangle + 1, 1, 3, 2);
diff --git a/libc3/window/sdl2/gl_vertex.c b/libc3/window/sdl2/gl_vertex.c
index 3cec9ed..8311e82 100644
--- a/libc3/window/sdl2/gl_vertex.c
+++ b/libc3/window/sdl2/gl_vertex.c
@@ -11,15 +11,15 @@
* THIS SOFTWARE.
*/
#include <libc3/c3.h>
-#include "gl_point_3d.h"
+#include "gl_point_3f.h"
#include "gl_vertex.h"
void gl_vertex_transform (s_gl_vertex *vertex,
- const s_gl_matrix_4d *matrix)
+ const s_gl_matrix_4f *matrix)
{
assert(vertex);
assert(matrix);
- gl_point_3d_transform(&vertex->position, matrix);
- gl_point_3d_transform(&vertex->normal, matrix);
- gl_point_3d_normalize(&vertex->normal);
+ gl_point_3f_transform(&vertex->position, matrix);
+ gl_point_3f_transform(&vertex->normal, matrix);
+ gl_point_3f_normalize(&vertex->normal);
}
diff --git a/libc3/window/sdl2/gl_vertex.h b/libc3/window/sdl2/gl_vertex.h
index 8e18083..4578204 100644
--- a/libc3/window/sdl2/gl_vertex.h
+++ b/libc3/window/sdl2/gl_vertex.h
@@ -16,6 +16,6 @@
#include "types.h"
void gl_vertex_transform (s_gl_vertex *vertex,
- const s_gl_matrix_4d *matrix);
+ const s_gl_matrix_4f *matrix);
#endif /* GL_VERTEX_H */
diff --git a/libc3/window/sdl2/sources.mk b/libc3/window/sdl2/sources.mk
index f4270ae..66337bc 100644
--- a/libc3/window/sdl2/sources.mk
+++ b/libc3/window/sdl2/sources.mk
@@ -7,11 +7,15 @@ HEADERS = \
"gl_ft2.h" \
"gl_lines.h" \
"gl_matrix_3d.h" \
+ "gl_matrix_3f.h" \
"gl_matrix_4d.h" \
+ "gl_matrix_4f.h" \
"gl_object.h" \
"gl_ortho.h" \
"gl_point_2d.h" \
+ "gl_point_2f.h" \
"gl_point_3d.h" \
+ "gl_point_3f.h" \
"gl_sphere.h" \
"gl_sprite.h" \
"gl_square.h" \
@@ -28,10 +32,13 @@ SOURCES = \
"gl_font.c" \
"gl_lines.c" \
"gl_matrix_4d.c" \
+ "gl_matrix_4f.c" \
"gl_object.c" \
"gl_ortho.c" \
"gl_point_2d.c" \
+ "gl_point_2f.c" \
"gl_point_3d.c" \
+ "gl_point_3f.c" \
"gl_sphere.c" \
"gl_sprite.c" \
"gl_square.c" \
diff --git a/libc3/window/sdl2/sources.sh b/libc3/window/sdl2/sources.sh
index f4cb03a..8d864f4 100644
--- a/libc3/window/sdl2/sources.sh
+++ b/libc3/window/sdl2/sources.sh
@@ -1,3 +1,3 @@
# sources.sh generated by update_sources
-HEADERS='gl_camera.h gl_cylinder.h gl_deprecated.h gl_font.h gl_ft2.h gl_lines.h gl_matrix_3d.h gl_matrix_4d.h gl_object.h gl_ortho.h gl_point_2d.h gl_point_3d.h gl_sphere.h gl_sprite.h gl_square.h gl_text.h gl_triangle.h gl_vertex.h types.h window_sdl2.h '
-SOURCES='gl_camera.c gl_cylinder.c gl_deprecated.c gl_font.c gl_lines.c gl_matrix_4d.c gl_object.c gl_ortho.c gl_point_2d.c gl_point_3d.c gl_sphere.c gl_sprite.c gl_square.c gl_text.c gl_triangle.c gl_vertex.c window_sdl2.c '
+HEADERS='gl_camera.h gl_cylinder.h gl_deprecated.h gl_font.h gl_ft2.h gl_lines.h gl_matrix_3d.h gl_matrix_3f.h gl_matrix_4d.h gl_matrix_4f.h gl_object.h gl_ortho.h gl_point_2d.h gl_point_2f.h gl_point_3d.h gl_point_3f.h gl_sphere.h gl_sprite.h gl_square.h gl_text.h gl_triangle.h gl_vertex.h types.h window_sdl2.h '
+SOURCES='gl_camera.c gl_cylinder.c gl_deprecated.c gl_font.c gl_lines.c gl_matrix_4d.c gl_matrix_4f.c gl_object.c gl_ortho.c gl_point_2d.c gl_point_2f.c gl_point_3d.c gl_point_3f.c gl_sphere.c gl_sprite.c gl_square.c gl_text.c gl_triangle.c gl_vertex.c window_sdl2.c '
diff --git a/libc3/window/sdl2/types.h b/libc3/window/sdl2/types.h
index b311db1..43b0152 100644
--- a/libc3/window/sdl2/types.h
+++ b/libc3/window/sdl2/types.h
@@ -29,13 +29,17 @@
typedef struct gl_camera s_gl_camera;
typedef struct gl_cylinder s_gl_cylinder;
typedef struct gl_font s_gl_font;
-typedef struct gl_lines s_gl_lines;
+typedef struct gl_lines s_gl_lines;
typedef struct gl_matrix_3d s_gl_matrix_3d;
+typedef struct gl_matrix_3f s_gl_matrix_3f;
typedef struct gl_matrix_4d s_gl_matrix_4d;
+typedef struct gl_matrix_4f s_gl_matrix_4f;
typedef struct gl_object s_gl_object;
typedef struct gl_ortho s_gl_ortho;
typedef struct gl_point_2d s_gl_point_2d;
+typedef struct gl_point_2f s_gl_point_2f;
typedef struct gl_point_3d s_gl_point_3d;
+typedef struct gl_point_3f s_gl_point_3f;
typedef struct gl_sphere s_gl_sphere;
typedef struct gl_sprite s_gl_sprite;
typedef struct gl_square s_gl_square;
@@ -94,6 +98,18 @@ struct gl_lines {
};
struct gl_matrix_3d {
+ f64 xx;
+ f64 xy;
+ f64 xz;
+ f64 yx;
+ f64 yy;
+ f64 yz;
+ f64 zx;
+ f64 zy;
+ f64 zz;
+};
+
+struct gl_matrix_3f {
f32 xx;
f32 xy;
f32 xz;
@@ -106,6 +122,25 @@ struct gl_matrix_3d {
};
struct gl_matrix_4d {
+ f64 xx;
+ f64 xy;
+ f64 xz;
+ f64 xt;
+ f64 yx;
+ f64 yy;
+ f64 yz;
+ f64 yt;
+ f64 zx;
+ f64 zy;
+ f64 zz;
+ f64 zt;
+ f64 tx;
+ f64 ty;
+ f64 tz;
+ f64 tt;
+};
+
+struct gl_matrix_4f {
f32 xx;
f32 xy;
f32 xz;
@@ -134,11 +169,22 @@ struct gl_object {
};
struct gl_point_2d {
+ f64 x;
+ f64 y;
+};
+
+struct gl_point_2f {
f32 x;
f32 y;
};
struct gl_point_3d {
+ f64 x;
+ f64 y;
+ f64 z;
+};
+
+struct gl_point_3f {
f32 x;
f32 y;
f32 z;
@@ -206,9 +252,9 @@ struct gl_camera {
f32 clip_z_far;
f32 clip_z_near;
f32 fov_y;
- s_gl_point_3d position;
- s_gl_point_3d rotation;
- s_gl_matrix_4d matrix;
+ s_gl_point_3f position;
+ s_gl_point_3f rotation;
+ s_gl_matrix_4f matrix;
u32 gl_matrix_loc;
u32 gl_shader_program;
};
@@ -226,13 +272,13 @@ struct gl_ortho {
f32 y2;
f32 clip_z_near;
f32 clip_z_far;
- s_gl_point_3d position;
- s_gl_point_3d rotation;
- s_gl_matrix_4d projection_matrix;
+ s_gl_point_3f position;
+ s_gl_point_3f rotation;
+ s_gl_matrix_4f projection_matrix;
u32 gl_projection_matrix_loc;
- s_gl_matrix_4d view_matrix;
+ s_gl_matrix_4f view_matrix;
u32 gl_view_matrix_loc;
- s_gl_matrix_4d model_matrix;
+ s_gl_matrix_4f model_matrix;
u32 gl_model_matrix_loc;
u32 gl_shader_program;
};
@@ -266,9 +312,9 @@ struct gl_square {
};
struct gl_vertex {
- s_gl_point_3d position;
- s_gl_point_3d normal;
- s_gl_point_2d tex_coord;
+ s_gl_point_3f position;
+ s_gl_point_3f normal;
+ s_gl_point_2f tex_coord;
};
struct sdl2_sprite {
diff --git a/sources.mk b/sources.mk
index bb0add5..596b023 100644
--- a/sources.mk
+++ b/sources.mk
@@ -493,16 +493,23 @@ C3_C_SOURCES = \
"libc3/window/sdl2/gl_lines.c" \
"libc3/window/sdl2/gl_lines.h" \
"libc3/window/sdl2/gl_matrix_3d.h" \
+ "libc3/window/sdl2/gl_matrix_3f.h" \
"libc3/window/sdl2/gl_matrix_4d.c" \
"libc3/window/sdl2/gl_matrix_4d.h" \
+ "libc3/window/sdl2/gl_matrix_4f.c" \
+ "libc3/window/sdl2/gl_matrix_4f.h" \
"libc3/window/sdl2/gl_object.c" \
"libc3/window/sdl2/gl_object.h" \
"libc3/window/sdl2/gl_ortho.c" \
"libc3/window/sdl2/gl_ortho.h" \
"libc3/window/sdl2/gl_point_2d.c" \
"libc3/window/sdl2/gl_point_2d.h" \
+ "libc3/window/sdl2/gl_point_2f.c" \
+ "libc3/window/sdl2/gl_point_2f.h" \
"libc3/window/sdl2/gl_point_3d.c" \
"libc3/window/sdl2/gl_point_3d.h" \
+ "libc3/window/sdl2/gl_point_3f.c" \
+ "libc3/window/sdl2/gl_point_3f.h" \
"libc3/window/sdl2/gl_sphere.c" \
"libc3/window/sdl2/gl_sphere.h" \
"libc3/window/sdl2/gl_sprite.c" \
diff --git a/sources.sh b/sources.sh
index 3043455..cfbde5d 100644
--- a/sources.sh
+++ b/sources.sh
@@ -1,7 +1,7 @@
# sources.sh generated by update_sources
C3_CONFIGURES='c3c/configure c3s/configure c3s/sources.sh c3s/update_sources ic3/configure ic3/sources.sh ic3/update_sources libc3/configure libc3/sources.sh libc3/update_sources libc3/window/cairo/configure libc3/window/cairo/demo/configure libc3/window/cairo/demo/sources.sh libc3/window/cairo/demo/update_sources libc3/window/cairo/quartz/configure libc3/window/cairo/quartz/demo/configure libc3/window/cairo/quartz/demo/sources.sh libc3/window/cairo/quartz/demo/update_sources libc3/window/cairo/quartz/sources.sh libc3/window/cairo/quartz/update_sources libc3/window/cairo/sources.sh libc3/window/cairo/update_sources libc3/window/cairo/win32/configure libc3/window/cairo/win32/demo/configure libc3/window/cairo/win32/demo/sources.sh libc3/window/cairo/win32/demo/update_sources libc3/window/cairo/win32/sources.sh libc3/window/cairo/win32/update_sources libc3/window/cairo/xcb/configure libc3/window/cairo/xcb/demo/configure libc3/window/cairo/xcb/demo/sources.sh libc3/window/cairo/xcb/demo/update_sources libc3/window/cairo/xcb/sources.sh libc3/window/cairo/xcb/update_sources libc3/window/configure libc3/window/sdl2/configure libc3/window/sdl2/demo/configure libc3/window/sdl2/demo/macos/configure libc3/window/sdl2/demo/sources.sh libc3/window/sdl2/demo/update_sources libc3/window/sdl2/sources.sh libc3/window/sdl2/update_sources libc3/window/sources.sh libc3/window/update_sources libtommath/configure libtommath/sources.sh libtommath/update_sources test/configure test/sources.sh test/update_sources ucd2c/configure '
C3_MAKEFILES='c3c/Makefile c3s/Makefile c3s/sources.mk ic3/Makefile ic3/sources.mk libc3/Makefile libc3/gen.mk libc3/sources.mk libc3/window/Makefile libc3/window/cairo/Makefile libc3/window/cairo/demo/Makefile libc3/window/cairo/demo/sources.mk libc3/window/cairo/quartz/Makefile libc3/window/cairo/quartz/demo/Makefile libc3/window/cairo/quartz/demo/sources.mk libc3/window/cairo/quartz/sources.mk libc3/window/cairo/sources.mk libc3/window/cairo/win32/Makefile libc3/window/cairo/win32/demo/Makefile libc3/window/cairo/win32/demo/sources.mk libc3/window/cairo/win32/sources.mk libc3/window/cairo/xcb/Makefile libc3/window/cairo/xcb/demo/Makefile libc3/window/cairo/xcb/demo/sources.mk libc3/window/cairo/xcb/sources.mk libc3/window/sdl2/Makefile libc3/window/sdl2/demo/Makefile libc3/window/sdl2/demo/macos/Makefile libc3/window/sdl2/demo/sources.mk libc3/window/sdl2/sources.mk libc3/window/sources.mk libtommath/Makefile libtommath/sources.mk test/Makefile test/sources.mk ucd2c/Makefile '
-C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/buf_readline.h c3s/c3s.c ic3/buf_linenoise.c ic3/buf_linenoise.h ic3/buf_wineditline.c ic3/buf_wineditline.h ic3/config.h ic3/ic3.c ic3/linenoise.c libc3/abs.c libc3/abs.h libc3/arg.c libc3/arg.h libc3/array.c libc3/array.h libc3/assert.h libc3/binding.c libc3/binding.h libc3/bool.c libc3/bool.h libc3/buf.c libc3/buf.h libc3/buf_file.c libc3/buf_file.h libc3/buf_inspect.c libc3/buf_inspect.h libc3/buf_inspect_s.c.in libc3/buf_inspect_s.h.in libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s16_binary.c libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_decimal.c libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_decimal.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/buf_inspect_s_base.c.in libc3/buf_inspect_s_base.h.in libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_u.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u16.c libc3/buf_inspect_u16.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u64_binary.c libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u_base.h.in libc3/buf_inspect_uw.c libc3/buf_inspect_uw.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/buf_parse.c libc3/buf_parse.h libc3/buf_parse_s.c.in libc3/buf_parse_s.h.in libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/buf_parse_s64.h libc3/buf_parse_s8.c libc3/buf_parse_s8.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u.c.in libc3/buf_parse_u.h.in libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_parse_u64.h libc3/buf_parse_u8.c libc3/buf_parse_u8.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/buf_save.c libc3/buf_save.h libc3/c3.c libc3/c3.h libc3/c3_main.h libc3/call.c libc3/call.h libc3/ceiling.c libc3/ceiling.h libc3/cfn.c libc3/cfn.h libc3/character.c libc3/character.h libc3/compare.c libc3/compare.h libc3/data.c libc3/data.h libc3/env.c libc3/env.h libc3/error.c libc3/error.h libc3/error_handler.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/f32.c libc3/f32.h libc3/f64.c libc3/f64.h libc3/fact.c libc3/fact.h libc3/fact_list.c libc3/fact_list.h libc3/facts.c libc3/facts.h libc3/facts_cursor.c libc3/facts_cursor.h libc3/facts_spec.c libc3/facts_spec.h libc3/facts_spec_cursor.c libc3/facts_spec_cursor.h libc3/facts_with.c libc3/facts_with.h libc3/facts_with_cursor.c libc3/facts_with_cursor.h libc3/file.c libc3/file.h libc3/float.h libc3/fn.c libc3/fn.h libc3/fn_clause.c libc3/fn_clause.h libc3/frame.c libc3/frame.h libc3/hash.c libc3/hash.h libc3/ident.c libc3/ident.h libc3/integer.c libc3/integer.h libc3/io.c libc3/io.h libc3/license.c libc3/list.c libc3/list.h libc3/list_init.c libc3/list_init.h libc3/log.c libc3/log.h libc3/map.c libc3/map.h libc3/module.c libc3/module.h libc3/operator.c libc3/operator.h libc3/point.h.in libc3/ptag.c libc3/ptag.h libc3/ptr.c libc3/ptr.h libc3/ptr_free.c libc3/ptr_free.h libc3/quote.c libc3/quote.h libc3/s.c.in libc3/s.h.in libc3/s16.c libc3/s16.h libc3/s32.c libc3/s32.h libc3/s64.c libc3/s64.h libc3/s8.c libc3/s8.h libc3/sequence.c libc3/sequence.h libc3/set.c.in libc3/set.h.in libc3/set__fact.c libc3/set__fact.h libc3/set__tag.c libc3/set__tag.h libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item.c.in libc3/set_item.h.in libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/set_item__tag.h libc3/sha1.h libc3/sign.c libc3/sign.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/str.c libc3/str.h libc3/struct.c libc3/struct.h libc3/struct_type.c libc3/struct_type.h libc3/sw.c libc3/sw.h libc3/sym.c libc3/sym.h libc3/tag.c libc3/tag.h libc3/tag_add.c libc3/tag_band.c libc3/tag_bor.c libc3/tag_bxor.c libc3/tag_div.c libc3/tag_init.c libc3/tag_init.h libc3/tag_mod.c libc3/tag_mul.c libc3/tag_shift_left.c libc3/tag_shift_right.c libc3/tag_sub.c libc3/tag_type.c libc3/tag_type.h libc3/time.c libc3/time.h libc3/tuple.c libc3/tuple.h libc3/type.c libc3/type.h libc3/types.h libc3/u.c.in libc3/u.h.in libc3/u16.c libc3/u16.h libc3/u32.c libc3/u32.h libc3/u64.c libc3/u64.h libc3/u8.c libc3/u8.h libc3/ucd.c libc3/ucd.h libc3/uw.c libc3/uw.h libc3/var.c libc3/var.h libc3/void.c libc3/void.h libc3/window/cairo/cairo_font.c libc3/window/cairo/cairo_font.h libc3/window/cairo/cairo_sprite.c libc3/window/cairo/cairo_sprite.h libc3/window/cairo/demo/bg_rect.c libc3/window/cairo/demo/bg_rect.h libc3/window/cairo/demo/flies.c libc3/window/cairo/demo/flies.h libc3/window/cairo/demo/lightspeed.c libc3/window/cairo/demo/lightspeed.h libc3/window/cairo/demo/toasters.c libc3/window/cairo/demo/toasters.h libc3/window/cairo/demo/window_cairo_demo.c libc3/window/cairo/demo/window_cairo_demo.h libc3/window/cairo/quartz/demo/window_cairo_quartz_demo.c libc3/window/cairo/quartz/quartz_to_xkbcommon.c libc3/window/cairo/quartz/quartz_to_xkbcommon.h libc3/window/cairo/quartz/window_cairo_quartz.h libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.h libc3/window/cairo/quartz/window_cairo_quartz_view.h libc3/window/cairo/quartz/window_cairo_quartz_view_controller.h libc3/window/cairo/quartz/xkbquartz.h libc3/window/cairo/types.h libc3/window/cairo/win32/demo/window_cairo_win32_demo.c libc3/window/cairo/win32/vk_to_xkbcommon.c libc3/window/cairo/win32/vk_to_xkbcommon.h libc3/window/cairo/win32/window_cairo_win32.c libc3/window/cairo/win32/window_cairo_win32.h libc3/window/cairo/window_cairo.c libc3/window/cairo/window_cairo.h libc3/window/cairo/xcb/config.h libc3/window/cairo/xcb/demo/window_cairo_xcb_demo.c libc3/window/cairo/xcb/window_cairo_xcb.c libc3/window/cairo/xcb/window_cairo_xcb.h libc3/window/sdl2/demo/bg_rect.c libc3/window/sdl2/demo/bg_rect.h libc3/window/sdl2/demo/earth.c libc3/window/sdl2/demo/earth.h libc3/window/sdl2/demo/flies.c libc3/window/sdl2/demo/flies.h libc3/window/sdl2/demo/lightspeed.c libc3/window/sdl2/demo/lightspeed.h libc3/window/sdl2/demo/toasters.c libc3/window/sdl2/demo/toasters.h libc3/window/sdl2/demo/window_sdl2_demo.c libc3/window/sdl2/demo/window_sdl2_demo.h libc3/window/sdl2/disabled/mandelbrot.c libc3/window/sdl2/disabled/mandelbrot.h libc3/window/sdl2/disabled/sdl2_font.c libc3/window/sdl2/disabled/sdl2_font.h libc3/window/sdl2/disabled/sdl2_sprite.c libc3/window/sdl2/disabled/sdl2_sprite.h libc3/window/sdl2/gl_camera.c libc3/window/sdl2/gl_camera.h libc3/window/sdl2/gl_cylinder.c libc3/window/sdl2/gl_cylinder.h libc3/window/sdl2/gl_deprecated.c libc3/window/sdl2/gl_deprecated.h libc3/window/sdl2/gl_font.c libc3/window/sdl2/gl_font.h libc3/window/sdl2/gl_ft2.h libc3/window/sdl2/gl_lines.c libc3/window/sdl2/gl_lines.h libc3/window/sdl2/gl_matrix_3d.h libc3/window/sdl2/gl_matrix_4d.c libc3/window/sdl2/gl_matrix_4d.h libc3/window/sdl2/gl_object.c libc3/window/sdl2/gl_object.h libc3/window/sdl2/gl_ortho.c libc3/window/sdl2/gl_ortho.h libc3/window/sdl2/gl_point_2d.c libc3/window/sdl2/gl_point_2d.h libc3/window/sdl2/gl_point_3d.c libc3/window/sdl2/gl_point_3d.h libc3/window/sdl2/gl_sphere.c libc3/window/sdl2/gl_sphere.h libc3/window/sdl2/gl_sprite.c libc3/window/sdl2/gl_sprite.h libc3/window/sdl2/gl_square.c libc3/window/sdl2/gl_square.h libc3/window/sdl2/gl_text.c libc3/window/sdl2/gl_text.h libc3/window/sdl2/gl_triangle.c libc3/window/sdl2/gl_triangle.h libc3/window/sdl2/gl_vertex.c libc3/window/sdl2/gl_vertex.h libc3/window/sdl2/types.h libc3/window/sdl2/window_sdl2.c libc3/window/sdl2/window_sdl2.h libc3/window/types.h libc3/window/window.c libc3/window/window.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/libc3_test.c test/list_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
+C3_C_SOURCES='c3c/c3c.c c3s/buf_readline.c c3s/buf_readline.h c3s/c3s.c ic3/buf_linenoise.c ic3/buf_linenoise.h ic3/buf_wineditline.c ic3/buf_wineditline.h ic3/config.h ic3/ic3.c ic3/linenoise.c libc3/abs.c libc3/abs.h libc3/arg.c libc3/arg.h libc3/array.c libc3/array.h libc3/assert.h libc3/binding.c libc3/binding.h libc3/bool.c libc3/bool.h libc3/buf.c libc3/buf.h libc3/buf_file.c libc3/buf_file.h libc3/buf_inspect.c libc3/buf_inspect.h libc3/buf_inspect_s.c.in libc3/buf_inspect_s.h.in libc3/buf_inspect_s16.c libc3/buf_inspect_s16.h libc3/buf_inspect_s16_binary.c libc3/buf_inspect_s16_binary.h libc3/buf_inspect_s16_decimal.c libc3/buf_inspect_s16_decimal.h libc3/buf_inspect_s16_hexadecimal.c libc3/buf_inspect_s16_hexadecimal.h libc3/buf_inspect_s16_octal.c libc3/buf_inspect_s16_octal.h libc3/buf_inspect_s32.c libc3/buf_inspect_s32.h libc3/buf_inspect_s32_binary.c libc3/buf_inspect_s32_binary.h libc3/buf_inspect_s32_decimal.c libc3/buf_inspect_s32_decimal.h libc3/buf_inspect_s32_hexadecimal.c libc3/buf_inspect_s32_hexadecimal.h libc3/buf_inspect_s32_octal.c libc3/buf_inspect_s32_octal.h libc3/buf_inspect_s64.c libc3/buf_inspect_s64.h libc3/buf_inspect_s64_binary.c libc3/buf_inspect_s64_binary.h libc3/buf_inspect_s64_decimal.c libc3/buf_inspect_s64_decimal.h libc3/buf_inspect_s64_hexadecimal.c libc3/buf_inspect_s64_hexadecimal.h libc3/buf_inspect_s64_octal.c libc3/buf_inspect_s64_octal.h libc3/buf_inspect_s8.c libc3/buf_inspect_s8.h libc3/buf_inspect_s8_binary.c libc3/buf_inspect_s8_binary.h libc3/buf_inspect_s8_decimal.c libc3/buf_inspect_s8_decimal.h libc3/buf_inspect_s8_hexadecimal.c libc3/buf_inspect_s8_hexadecimal.h libc3/buf_inspect_s8_octal.c libc3/buf_inspect_s8_octal.h libc3/buf_inspect_s_base.c.in libc3/buf_inspect_s_base.h.in libc3/buf_inspect_sw.c libc3/buf_inspect_sw.h libc3/buf_inspect_sw_binary.c libc3/buf_inspect_sw_binary.h libc3/buf_inspect_sw_decimal.c libc3/buf_inspect_sw_decimal.h libc3/buf_inspect_sw_hexadecimal.c libc3/buf_inspect_sw_hexadecimal.h libc3/buf_inspect_sw_octal.c libc3/buf_inspect_sw_octal.h libc3/buf_inspect_u.c.in libc3/buf_inspect_u.h.in libc3/buf_inspect_u16.c libc3/buf_inspect_u16.h libc3/buf_inspect_u16_binary.c libc3/buf_inspect_u16_binary.h libc3/buf_inspect_u16_decimal.c libc3/buf_inspect_u16_decimal.h libc3/buf_inspect_u16_hexadecimal.c libc3/buf_inspect_u16_hexadecimal.h libc3/buf_inspect_u16_octal.c libc3/buf_inspect_u16_octal.h libc3/buf_inspect_u32.c libc3/buf_inspect_u32.h libc3/buf_inspect_u32_binary.c libc3/buf_inspect_u32_binary.h libc3/buf_inspect_u32_decimal.c libc3/buf_inspect_u32_decimal.h libc3/buf_inspect_u32_hexadecimal.c libc3/buf_inspect_u32_hexadecimal.h libc3/buf_inspect_u32_octal.c libc3/buf_inspect_u32_octal.h libc3/buf_inspect_u64.c libc3/buf_inspect_u64.h libc3/buf_inspect_u64_binary.c libc3/buf_inspect_u64_binary.h libc3/buf_inspect_u64_decimal.c libc3/buf_inspect_u64_decimal.h libc3/buf_inspect_u64_hexadecimal.c libc3/buf_inspect_u64_hexadecimal.h libc3/buf_inspect_u64_octal.c libc3/buf_inspect_u64_octal.h libc3/buf_inspect_u8.c libc3/buf_inspect_u8.h libc3/buf_inspect_u8_binary.c libc3/buf_inspect_u8_binary.h libc3/buf_inspect_u8_decimal.c libc3/buf_inspect_u8_decimal.h libc3/buf_inspect_u8_hexadecimal.c libc3/buf_inspect_u8_hexadecimal.h libc3/buf_inspect_u8_octal.c libc3/buf_inspect_u8_octal.h libc3/buf_inspect_u_base.c.in libc3/buf_inspect_u_base.h.in libc3/buf_inspect_uw.c libc3/buf_inspect_uw.h libc3/buf_inspect_uw_binary.c libc3/buf_inspect_uw_binary.h libc3/buf_inspect_uw_decimal.c libc3/buf_inspect_uw_decimal.h libc3/buf_inspect_uw_hexadecimal.c libc3/buf_inspect_uw_hexadecimal.h libc3/buf_inspect_uw_octal.c libc3/buf_inspect_uw_octal.h libc3/buf_parse.c libc3/buf_parse.h libc3/buf_parse_s.c.in libc3/buf_parse_s.h.in libc3/buf_parse_s16.c libc3/buf_parse_s16.h libc3/buf_parse_s32.c libc3/buf_parse_s32.h libc3/buf_parse_s64.c libc3/buf_parse_s64.h libc3/buf_parse_s8.c libc3/buf_parse_s8.h libc3/buf_parse_sw.c libc3/buf_parse_sw.h libc3/buf_parse_u.c.in libc3/buf_parse_u.h.in libc3/buf_parse_u16.c libc3/buf_parse_u16.h libc3/buf_parse_u32.c libc3/buf_parse_u32.h libc3/buf_parse_u64.c libc3/buf_parse_u64.h libc3/buf_parse_u8.c libc3/buf_parse_u8.h libc3/buf_parse_uw.c libc3/buf_parse_uw.h libc3/buf_save.c libc3/buf_save.h libc3/c3.c libc3/c3.h libc3/c3_main.h libc3/call.c libc3/call.h libc3/ceiling.c libc3/ceiling.h libc3/cfn.c libc3/cfn.h libc3/character.c libc3/character.h libc3/compare.c libc3/compare.h libc3/data.c libc3/data.h libc3/env.c libc3/env.h libc3/error.c libc3/error.h libc3/error_handler.c libc3/error_handler.h libc3/eval.c libc3/eval.h libc3/f32.c libc3/f32.h libc3/f64.c libc3/f64.h libc3/fact.c libc3/fact.h libc3/fact_list.c libc3/fact_list.h libc3/facts.c libc3/facts.h libc3/facts_cursor.c libc3/facts_cursor.h libc3/facts_spec.c libc3/facts_spec.h libc3/facts_spec_cursor.c libc3/facts_spec_cursor.h libc3/facts_with.c libc3/facts_with.h libc3/facts_with_cursor.c libc3/facts_with_cursor.h libc3/file.c libc3/file.h libc3/float.h libc3/fn.c libc3/fn.h libc3/fn_clause.c libc3/fn_clause.h libc3/frame.c libc3/frame.h libc3/hash.c libc3/hash.h libc3/ident.c libc3/ident.h libc3/integer.c libc3/integer.h libc3/io.c libc3/io.h libc3/license.c libc3/list.c libc3/list.h libc3/list_init.c libc3/list_init.h libc3/log.c libc3/log.h libc3/map.c libc3/map.h libc3/module.c libc3/module.h libc3/operator.c libc3/operator.h libc3/point.h.in libc3/ptag.c libc3/ptag.h libc3/ptr.c libc3/ptr.h libc3/ptr_free.c libc3/ptr_free.h libc3/quote.c libc3/quote.h libc3/s.c.in libc3/s.h.in libc3/s16.c libc3/s16.h libc3/s32.c libc3/s32.h libc3/s64.c libc3/s64.h libc3/s8.c libc3/s8.h libc3/sequence.c libc3/sequence.h libc3/set.c.in libc3/set.h.in libc3/set__fact.c libc3/set__fact.h libc3/set__tag.c libc3/set__tag.h libc3/set_cursor.c.in libc3/set_cursor.h.in libc3/set_cursor__fact.c libc3/set_cursor__fact.h libc3/set_cursor__tag.c libc3/set_cursor__tag.h libc3/set_item.c.in libc3/set_item.h.in libc3/set_item__fact.c libc3/set_item__fact.h libc3/set_item__tag.c libc3/set_item__tag.h libc3/sha1.h libc3/sign.c libc3/sign.h libc3/skiplist.c.in libc3/skiplist.h.in libc3/skiplist__fact.c libc3/skiplist__fact.h libc3/skiplist_node.c.in libc3/skiplist_node.h.in libc3/skiplist_node__fact.c libc3/skiplist_node__fact.h libc3/str.c libc3/str.h libc3/struct.c libc3/struct.h libc3/struct_type.c libc3/struct_type.h libc3/sw.c libc3/sw.h libc3/sym.c libc3/sym.h libc3/tag.c libc3/tag.h libc3/tag_add.c libc3/tag_band.c libc3/tag_bor.c libc3/tag_bxor.c libc3/tag_div.c libc3/tag_init.c libc3/tag_init.h libc3/tag_mod.c libc3/tag_mul.c libc3/tag_shift_left.c libc3/tag_shift_right.c libc3/tag_sub.c libc3/tag_type.c libc3/tag_type.h libc3/time.c libc3/time.h libc3/tuple.c libc3/tuple.h libc3/type.c libc3/type.h libc3/types.h libc3/u.c.in libc3/u.h.in libc3/u16.c libc3/u16.h libc3/u32.c libc3/u32.h libc3/u64.c libc3/u64.h libc3/u8.c libc3/u8.h libc3/ucd.c libc3/ucd.h libc3/uw.c libc3/uw.h libc3/var.c libc3/var.h libc3/void.c libc3/void.h libc3/window/cairo/cairo_font.c libc3/window/cairo/cairo_font.h libc3/window/cairo/cairo_sprite.c libc3/window/cairo/cairo_sprite.h libc3/window/cairo/demo/bg_rect.c libc3/window/cairo/demo/bg_rect.h libc3/window/cairo/demo/flies.c libc3/window/cairo/demo/flies.h libc3/window/cairo/demo/lightspeed.c libc3/window/cairo/demo/lightspeed.h libc3/window/cairo/demo/toasters.c libc3/window/cairo/demo/toasters.h libc3/window/cairo/demo/window_cairo_demo.c libc3/window/cairo/demo/window_cairo_demo.h libc3/window/cairo/quartz/demo/window_cairo_quartz_demo.c libc3/window/cairo/quartz/quartz_to_xkbcommon.c libc3/window/cairo/quartz/quartz_to_xkbcommon.h libc3/window/cairo/quartz/window_cairo_quartz.h libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.h libc3/window/cairo/quartz/window_cairo_quartz_view.h libc3/window/cairo/quartz/window_cairo_quartz_view_controller.h libc3/window/cairo/quartz/xkbquartz.h libc3/window/cairo/types.h libc3/window/cairo/win32/demo/window_cairo_win32_demo.c libc3/window/cairo/win32/vk_to_xkbcommon.c libc3/window/cairo/win32/vk_to_xkbcommon.h libc3/window/cairo/win32/window_cairo_win32.c libc3/window/cairo/win32/window_cairo_win32.h libc3/window/cairo/window_cairo.c libc3/window/cairo/window_cairo.h libc3/window/cairo/xcb/config.h libc3/window/cairo/xcb/demo/window_cairo_xcb_demo.c libc3/window/cairo/xcb/window_cairo_xcb.c libc3/window/cairo/xcb/window_cairo_xcb.h libc3/window/sdl2/demo/bg_rect.c libc3/window/sdl2/demo/bg_rect.h libc3/window/sdl2/demo/earth.c libc3/window/sdl2/demo/earth.h libc3/window/sdl2/demo/flies.c libc3/window/sdl2/demo/flies.h libc3/window/sdl2/demo/lightspeed.c libc3/window/sdl2/demo/lightspeed.h libc3/window/sdl2/demo/toasters.c libc3/window/sdl2/demo/toasters.h libc3/window/sdl2/demo/window_sdl2_demo.c libc3/window/sdl2/demo/window_sdl2_demo.h libc3/window/sdl2/disabled/mandelbrot.c libc3/window/sdl2/disabled/mandelbrot.h libc3/window/sdl2/disabled/sdl2_font.c libc3/window/sdl2/disabled/sdl2_font.h libc3/window/sdl2/disabled/sdl2_sprite.c libc3/window/sdl2/disabled/sdl2_sprite.h libc3/window/sdl2/gl_camera.c libc3/window/sdl2/gl_camera.h libc3/window/sdl2/gl_cylinder.c libc3/window/sdl2/gl_cylinder.h libc3/window/sdl2/gl_deprecated.c libc3/window/sdl2/gl_deprecated.h libc3/window/sdl2/gl_font.c libc3/window/sdl2/gl_font.h libc3/window/sdl2/gl_ft2.h libc3/window/sdl2/gl_lines.c libc3/window/sdl2/gl_lines.h libc3/window/sdl2/gl_matrix_3d.h libc3/window/sdl2/gl_matrix_3f.h libc3/window/sdl2/gl_matrix_4d.c libc3/window/sdl2/gl_matrix_4d.h libc3/window/sdl2/gl_matrix_4f.c libc3/window/sdl2/gl_matrix_4f.h libc3/window/sdl2/gl_object.c libc3/window/sdl2/gl_object.h libc3/window/sdl2/gl_ortho.c libc3/window/sdl2/gl_ortho.h libc3/window/sdl2/gl_point_2d.c libc3/window/sdl2/gl_point_2d.h libc3/window/sdl2/gl_point_2f.c libc3/window/sdl2/gl_point_2f.h libc3/window/sdl2/gl_point_3d.c libc3/window/sdl2/gl_point_3d.h libc3/window/sdl2/gl_point_3f.c libc3/window/sdl2/gl_point_3f.h libc3/window/sdl2/gl_sphere.c libc3/window/sdl2/gl_sphere.h libc3/window/sdl2/gl_sprite.c libc3/window/sdl2/gl_sprite.h libc3/window/sdl2/gl_square.c libc3/window/sdl2/gl_square.h libc3/window/sdl2/gl_text.c libc3/window/sdl2/gl_text.h libc3/window/sdl2/gl_triangle.c libc3/window/sdl2/gl_triangle.h libc3/window/sdl2/gl_vertex.c libc3/window/sdl2/gl_vertex.h libc3/window/sdl2/types.h libc3/window/sdl2/window_sdl2.c libc3/window/sdl2/window_sdl2.h libc3/window/types.h libc3/window/window.c libc3/window/window.h test/array_test.c test/bool_test.c test/buf_file_test.c test/buf_inspect_test.c test/buf_parse_test.c test/buf_parse_test.h test/buf_parse_test_s16.c test/buf_parse_test_s32.c test/buf_parse_test_s64.c test/buf_parse_test_s8.c test/buf_parse_test_su.h test/buf_parse_test_u16.c test/buf_parse_test_u32.c test/buf_parse_test_u64.c test/buf_parse_test_u8.c test/buf_test.c test/call_test.c test/cfn_test.c test/character_test.c test/compare_test.c test/compare_test.h test/env_test.c test/fact_test.c test/fact_test.h test/facts_cursor_test.c test/facts_test.c test/facts_with_test.c test/fn_test.c test/hash_test.c test/ident_test.c test/libc3_test.c test/list_test.c test/set__fact_test.c test/set__tag_test.c test/skiplist__fact_test.c test/str_test.c test/sym_test.c test/tag_test.c test/tag_test.h test/test.c test/test.h test/tuple_test.c test/types_test.c ucd2c/ucd.h ucd2c/ucd2c.c '
C3_OBJC_SOURCES='libc3/window/cairo/quartz/window_cairo_quartz.m libc3/window/cairo/quartz/window_cairo_quartz_app_delegate.m libc3/window/cairo/quartz/window_cairo_quartz_view.m libc3/window/cairo/quartz/window_cairo_quartz_view_controller.m '
C3_OTHER_SOURCES='AUTHORS Makefile README.md c3.index c3.version config.subr configure fonts/Courier New/Courier New.ttf img/c3.1.xcf img/c3.1080.jpg img/c3.1080.png img/c3.128.jpg img/c3.128.png img/c3.16.png img/c3.256.jpg img/c3.256.png img/c3.32.jpg img/c3.32.png img/c3.48.jpg img/c3.48.png img/c3.512.jpg img/c3.512.png img/c3.64.jpg img/c3.64.png img/c3.640.jpg img/c3.640.png img/c3.720.jpg img/c3.720.png img/c3.iconset/icon_128x128.png img/c3.iconset/icon_16x16.png img/c3.iconset/icon_256x256.png img/c3.iconset/icon_32x32.png img/c3.iconset/icon_512x512.png img/c3.iconset/icon_64x64.png img/c3.xcf img/earth.jpg img/earth.png img/flaps.256.png img/flaps.png img/fly-dead.png img/fly-noto.png img/iris-c3-004.jpeg img/iris-c3-004.png img/thodg_No_Prompt_073261d5-2c81-4b6e-9572-e0b840c55f1f.jpeg img/toast.128.png img/toast.png lib/c3/0.1/array.facts lib/c3/0.1/c3.facts lib/c3/0.1/f32.facts lib/c3/0.1/f64.facts lib/c3/0.1/gl/object.facts lib/c3/0.1/gl/point2d.facts lib/c3/0.1/gl/point3d.facts lib/c3/0.1/gl/sphere.facts lib/c3/0.1/gl/triangle.facts lib/c3/0.1/gl/vertex.facts lib/c3/0.1/integer.facts lib/c3/0.1/list.facts lib/c3/0.1/map.facts lib/c3/0.1/ptr_free.facts lib/c3/0.1/s16.facts lib/c3/0.1/s32.facts lib/c3/0.1/s64.facts lib/c3/0.1/s8.facts lib/c3/0.1/sw.facts lib/c3/0.1/u16.facts lib/c3/0.1/u32.facts lib/c3/0.1/u64.facts lib/c3/0.1/u8.facts lib/c3/0.1/uw.facts lib/c3/0.1/void.facts libc3/tag_init.rb license.h sources.mk sources.sh test/buf_parse_test_su.rb test/facts_test_dump_file.expected.facts test/facts_test_load_file.facts test/facts_test_log_add.expected.facts test/facts_test_log_remove.expected.facts test/facts_test_open_file.1.expected.facts test/facts_test_open_file.1.in.facts test/facts_test_open_file.2.expected.facts test/facts_test_open_file.2.in.facts test/facts_test_open_file.3.expected.facts test/facts_test_open_file.3.in.facts test/facts_test_save.expected.facts test/ic3/array.err.expected test/ic3/array.in test/ic3/array.out.expected test/ic3/array.ret.expected test/ic3/bool.err.expected test/ic3/bool.in test/ic3/bool.out.expected test/ic3/bool.ret.expected test/ic3/call.err.expected test/ic3/call.in test/ic3/call.out.expected test/ic3/call.ret.expected test/ic3/cast.in test/ic3/cast.out.expected test/ic3/cast.ret.expected test/ic3/character.err.expected test/ic3/character.in test/ic3/character.out.expected test/ic3/character.ret.expected test/ic3/comment.err.expected test/ic3/comment.in test/ic3/comment.out.expected test/ic3/comment.ret.expected test/ic3/equal.err.expected test/ic3/equal.in test/ic3/equal.out.expected test/ic3/equal.ret.expected test/ic3/fn.err.expected test/ic3/fn.in test/ic3/fn.out.expected test/ic3/fn.ret.expected test/ic3/function_call.err.expected test/ic3/function_call.out.expected test/ic3/function_call.ret.expected test/ic3/hello.err.expected test/ic3/hello.in test/ic3/hello.out.expected test/ic3/hello.ret.expected test/ic3/ident.err.expected test/ic3/ident.in test/ic3/ident.out.expected test/ic3/ident.ret.expected test/ic3/integer.in test/ic3/integer.lisp test/ic3/integer.out.expected test/ic3/integer.ret.expected test/ic3/integer_add.in test/ic3/integer_add.out.expected test/ic3/integer_add.ret.expected test/ic3/integer_band.in test/ic3/integer_band.out.expected test/ic3/integer_band.ret.expected test/ic3/integer_bnot.in test/ic3/integer_bnot.out.expected test/ic3/integer_bnot.ret.expected test/ic3/integer_bor-2.in test/ic3/integer_bor-2.out.expected test/ic3/integer_bor-2.ret.expected test/ic3/integer_bxor.in test/ic3/integer_bxor.out.expected test/ic3/integer_bxor.ret.expected test/ic3/integer_div.in test/ic3/integer_div.out.expected test/ic3/integer_div.ret.expected test/ic3/integer_eq.in test/ic3/integer_eq.out.expected test/ic3/integer_eq.ret.expected test/ic3/integer_gt.in test/ic3/integer_gt.out.expected test/ic3/integer_gt.ret.expected test/ic3/integer_lt.in test/ic3/integer_lt.out.expected test/ic3/integer_lt.ret.expected test/ic3/integer_mod-2.in test/ic3/integer_mod-2.out.expected test/ic3/integer_mod-2.ret.expected test/ic3/integer_mul.in test/ic3/integer_mul.out.expected test/ic3/integer_mul.ret.expected test/ic3/integer_neg.in test/ic3/integer_neg.out.expected test/ic3/integer_neg.ret.expected test/ic3/integer_sub.in test/ic3/integer_sub.out.expected test/ic3/integer_sub.ret.expected test/ic3/list.err.expected test/ic3/list.in test/ic3/list.out.expected test/ic3/list.ret.expected test/ic3/map.in test/ic3/map.out.expected test/ic3/map.ret.expected test/ic3/op.err.expected test/ic3/op.in test/ic3/op.out.expected test/ic3/op.ret.expected test/ic3/plist.err.expected test/ic3/plist.in test/ic3/plist.out.expected test/ic3/plist.ret.expected test/ic3/str.err.expected test/ic3/str.in test/ic3/str.out.expected test/ic3/str.ret.expected test/ic3/struct.in test/ic3/struct.out.expected test/ic3/struct.ret.expected test/ic3/sym.err.expected test/ic3/sym.in test/ic3/sym.out.expected test/ic3/sym.ret.expected test/ic3/tuple.err.expected test/ic3/tuple.in test/ic3/tuple.out.expected test/ic3/tuple.ret.expected test/ic3/void.in test/ic3/void.out.expected test/ic3/void.ret.expected test/ic3_test test/replace_lines.rb test/test.rb test/test_case_end.rb test/zero '
C3_EXTERNAL_SOURCES='libffi/ChangeLog.old libffi/LICENSE libffi/LICENSE-BUILDTOOLS libffi/Makefile libffi/Makefile.am libffi/Makefile.in libffi/README.md libffi/a.out libffi/acinclude.m4 libffi/aclocal.m4 libffi/autogen.sh libffi/autom4te.cache/output.0 libffi/autom4te.cache/output.1 libffi/autom4te.cache/output.2 libffi/autom4te.cache/output.3 libffi/autom4te.cache/output.4 libffi/autom4te.cache/output.5 libffi/autom4te.cache/output.6 libffi/autom4te.cache/requests libffi/autom4te.cache/traces.0 libffi/autom4te.cache/traces.1 libffi/autom4te.cache/traces.2 libffi/autom4te.cache/traces.3 libffi/autom4te.cache/traces.4 libffi/autom4te.cache/traces.5 libffi/autom4te.cache/traces.6 libffi/compile libffi/config.guess libffi/config.log libffi/config.status libffi/config.sub libffi/configure libffi/configure.ac libffi/configure.host libffi/depcomp libffi/doc/Makefile libffi/doc/Makefile.am libffi/doc/Makefile.in libffi/doc/libffi.info libffi/doc/libffi.texi libffi/doc/mdate-sh libffi/doc/texinfo.tex libffi/doc/version.texi libffi/fficonfig.h libffi/fficonfig.h.in libffi/generate-darwin-source-and-headers.py libffi/include/Makefile libffi/include/Makefile.am libffi/include/Makefile.in libffi/include/ffi.h libffi/include/ffi.h.in libffi/include/ffi_cfi.h libffi/include/ffi_common.h libffi/include/ffitarget.h libffi/include/tramp.h libffi/install-sh libffi/libffi.la libffi/libffi.map.in libffi/libffi.pc libffi/libffi.pc.in libffi/libffi.xcodeproj/project.pbxproj libffi/libffi_convenience.la libffi/libtool libffi/libtool-ldflags libffi/libtool-version libffi/local.exp libffi/ltmain.sh libffi/m4/asmcfi.m4 libffi/m4/ax_append_flag.m4 libffi/m4/ax_cc_maxopt.m4 libffi/m4/ax_cflags_warn_all.m4 libffi/m4/ax_check_compile_flag.m4 libffi/m4/ax_compiler_vendor.m4 libffi/m4/ax_configure_args.m4 libffi/m4/ax_enable_builddir.m4 libffi/m4/ax_gcc_archflag.m4 libffi/m4/ax_gcc_x86_cpuid.m4 libffi/m4/ax_prepend_flag.m4 libffi/m4/ax_require_defined.m4 libffi/m4/libtool.m4 libffi/m4/ltoptions.m4 libffi/m4/ltsugar.m4 libffi/m4/ltversion.m4 libffi/m4/lt~obsolete.m4 libffi/make_sunver.pl libffi/man/Makefile libffi/man/Makefile.am libffi/man/Makefile.in libffi/man/ffi.3 libffi/man/ffi_call.3 libffi/man/ffi_prep_cif.3 libffi/man/ffi_prep_cif_var.3 libffi/missing libffi/msvc_build/aarch64/Ffi_staticLib.sln libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user libffi/msvc_build/aarch64/aarch64_include/ffi.h libffi/msvc_build/aarch64/aarch64_include/fficonfig.h libffi/msvcc.sh libffi/src/aarch64/ffi.c libffi/src/aarch64/ffitarget.h libffi/src/aarch64/internal.h libffi/src/aarch64/sysv.S libffi/src/aarch64/win64_armasm.S libffi/src/alpha/ffi.c libffi/src/alpha/ffitarget.h libffi/src/alpha/internal.h libffi/src/alpha/osf.S libffi/src/arc/arcompact.S libffi/src/arc/ffi.c libffi/src/arc/ffitarget.h libffi/src/arm/ffi.c libffi/src/arm/ffitarget.h libffi/src/arm/internal.h libffi/src/arm/sysv.S libffi/src/arm/sysv_msvc_arm32.S libffi/src/avr32/ffi.c libffi/src/avr32/ffitarget.h libffi/src/avr32/sysv.S libffi/src/bfin/ffi.c libffi/src/bfin/ffitarget.h libffi/src/bfin/sysv.S libffi/src/closures.c libffi/src/closures.lo libffi/src/closures.o libffi/src/cris/ffi.c libffi/src/cris/ffitarget.h libffi/src/cris/sysv.S libffi/src/csky/ffi.c libffi/src/csky/ffitarget.h libffi/src/csky/sysv.S libffi/src/debug.c libffi/src/dlmalloc.c libffi/src/frv/eabi.S libffi/src/frv/ffi.c libffi/src/frv/ffitarget.h libffi/src/ia64/ffi.c libffi/src/ia64/ffitarget.h libffi/src/ia64/ia64_flags.h libffi/src/ia64/unix.S libffi/src/java_raw_api.c libffi/src/java_raw_api.lo libffi/src/java_raw_api.o libffi/src/kvx/asm.h libffi/src/kvx/ffi.c libffi/src/kvx/ffitarget.h libffi/src/kvx/sysv.S libffi/src/loongarch64/ffi.c libffi/src/loongarch64/ffitarget.h libffi/src/loongarch64/sysv.S libffi/src/m32r/ffi.c libffi/src/m32r/ffitarget.h libffi/src/m32r/sysv.S libffi/src/m68k/ffi.c libffi/src/m68k/ffitarget.h libffi/src/m68k/sysv.S libffi/src/m88k/ffi.c libffi/src/m88k/ffitarget.h libffi/src/m88k/obsd.S libffi/src/metag/ffi.c libffi/src/metag/ffitarget.h libffi/src/metag/sysv.S libffi/src/microblaze/ffi.c libffi/src/microblaze/ffitarget.h libffi/src/microblaze/sysv.S libffi/src/mips/ffi.c libffi/src/mips/ffitarget.h libffi/src/mips/n32.S libffi/src/mips/o32.S libffi/src/moxie/eabi.S libffi/src/moxie/ffi.c libffi/src/moxie/ffitarget.h libffi/src/nios2/ffi.c libffi/src/nios2/ffitarget.h libffi/src/nios2/sysv.S libffi/src/or1k/ffi.c libffi/src/or1k/ffitarget.h libffi/src/or1k/sysv.S libffi/src/pa/ffi.c libffi/src/pa/ffi64.c libffi/src/pa/ffitarget.h libffi/src/pa/hpux32.S libffi/src/pa/hpux64.S libffi/src/pa/linux.S libffi/src/powerpc/aix.S libffi/src/powerpc/aix_closure.S libffi/src/powerpc/asm.h libffi/src/powerpc/darwin.S libffi/src/powerpc/darwin_closure.S libffi/src/powerpc/ffi.c libffi/src/powerpc/ffi_darwin.c libffi/src/powerpc/ffi_linux64.c libffi/src/powerpc/ffi_powerpc.h libffi/src/powerpc/ffi_sysv.c libffi/src/powerpc/ffitarget.h libffi/src/powerpc/linux64.S libffi/src/powerpc/linux64_closure.S libffi/src/powerpc/ppc_closure.S libffi/src/powerpc/sysv.S libffi/src/powerpc/t-aix libffi/src/prep_cif.c libffi/src/prep_cif.lo libffi/src/prep_cif.o libffi/src/raw_api.c libffi/src/raw_api.lo libffi/src/raw_api.o libffi/src/riscv/ffi.c libffi/src/riscv/ffitarget.h libffi/src/riscv/sysv.S libffi/src/s390/ffi.c libffi/src/s390/ffitarget.h libffi/src/s390/internal.h libffi/src/s390/sysv.S libffi/src/sh/ffi.c libffi/src/sh/ffitarget.h libffi/src/sh/sysv.S libffi/src/sh64/ffi.c libffi/src/sh64/ffitarget.h libffi/src/sh64/sysv.S libffi/src/sparc/ffi.c libffi/src/sparc/ffi64.c libffi/src/sparc/ffitarget.h libffi/src/sparc/internal.h libffi/src/sparc/v8.S libffi/src/sparc/v9.S libffi/src/tile/ffi.c libffi/src/tile/ffitarget.h libffi/src/tile/tile.S libffi/src/tramp.c libffi/src/tramp.lo libffi/src/tramp.o libffi/src/types.c libffi/src/types.lo libffi/src/types.o libffi/src/vax/elfbsd.S libffi/src/vax/ffi.c libffi/src/vax/ffitarget.h libffi/src/wasm32/ffi.c libffi/src/wasm32/ffitarget.h libffi/src/x86/asmnames.h libffi/src/x86/ffi.c libffi/src/x86/ffi64.c libffi/src/x86/ffi64.lo libffi/src/x86/ffi64.o libffi/src/x86/ffitarget.h libffi/src/x86/ffiw64.c libffi/src/x86/ffiw64.lo libffi/src/x86/ffiw64.o libffi/src/x86/internal.h libffi/src/x86/internal64.h libffi/src/x86/sysv.S libffi/src/x86/sysv_intel.S libffi/src/x86/unix64.S libffi/src/x86/unix64.lo libffi/src/x86/unix64.o libffi/src/x86/win64.S libffi/src/x86/win64.lo libffi/src/x86/win64.o libffi/src/x86/win64_intel.S libffi/src/xtensa/ffi.c libffi/src/xtensa/ffitarget.h libffi/src/xtensa/sysv.S libffi/stamp-h.in libffi/stamp-h1 libffi/testsuite/Makefile libffi/testsuite/Makefile.am libffi/testsuite/Makefile.in libffi/testsuite/config/default.exp libffi/testsuite/emscripten/build-tests.sh libffi/testsuite/emscripten/build.sh libffi/testsuite/emscripten/conftest.py libffi/testsuite/emscripten/node-tests.sh libffi/testsuite/emscripten/test.html libffi/testsuite/emscripten/test_libffi.py libffi/testsuite/lib/libffi.exp libffi/testsuite/lib/target-libpath.exp libffi/testsuite/lib/wrapper.exp libffi/testsuite/libffi.bhaible/Makefile libffi/testsuite/libffi.bhaible/README libffi/testsuite/libffi.bhaible/alignof.h libffi/testsuite/libffi.bhaible/bhaible.exp libffi/testsuite/libffi.bhaible/test-call.c libffi/testsuite/libffi.bhaible/test-callback.c libffi/testsuite/libffi.bhaible/testcases.c libffi/testsuite/libffi.call/align_mixed.c libffi/testsuite/libffi.call/align_stdcall.c libffi/testsuite/libffi.call/bpo_38748.c libffi/testsuite/libffi.call/call.exp libffi/testsuite/libffi.call/err_bad_typedef.c libffi/testsuite/libffi.call/ffitest.h libffi/testsuite/libffi.call/float.c libffi/testsuite/libffi.call/float1.c libffi/testsuite/libffi.call/float2.c libffi/testsuite/libffi.call/float3.c libffi/testsuite/libffi.call/float4.c libffi/testsuite/libffi.call/float_va.c libffi/testsuite/libffi.call/many.c libffi/testsuite/libffi.call/many2.c libffi/testsuite/libffi.call/many_double.c libffi/testsuite/libffi.call/many_mixed.c libffi/testsuite/libffi.call/negint.c libffi/testsuite/libffi.call/offsets.c libffi/testsuite/libffi.call/pr1172638.c libffi/testsuite/libffi.call/promotion.c libffi/testsuite/libffi.call/pyobjc_tc.c libffi/testsuite/libffi.call/return_dbl.c libffi/testsuite/libffi.call/return_dbl1.c libffi/testsuite/libffi.call/return_dbl2.c libffi/testsuite/libffi.call/return_fl.c libffi/testsuite/libffi.call/return_fl1.c libffi/testsuite/libffi.call/return_fl2.c libffi/testsuite/libffi.call/return_fl3.c libffi/testsuite/libffi.call/return_ldl.c libffi/testsuite/libffi.call/return_ll.c libffi/testsuite/libffi.call/return_ll1.c libffi/testsuite/libffi.call/return_sc.c libffi/testsuite/libffi.call/return_sl.c libffi/testsuite/libffi.call/return_uc.c libffi/testsuite/libffi.call/return_ul.c libffi/testsuite/libffi.call/s55.c libffi/testsuite/libffi.call/strlen.c libffi/testsuite/libffi.call/strlen2.c libffi/testsuite/libffi.call/strlen3.c libffi/testsuite/libffi.call/strlen4.c libffi/testsuite/libffi.call/struct1.c libffi/testsuite/libffi.call/struct10.c libffi/testsuite/libffi.call/struct2.c libffi/testsuite/libffi.call/struct3.c libffi/testsuite/libffi.call/struct4.c libffi/testsuite/libffi.call/struct5.c libffi/testsuite/libffi.call/struct6.c libffi/testsuite/libffi.call/struct7.c libffi/testsuite/libffi.call/struct8.c libffi/testsuite/libffi.call/struct9.c libffi/testsuite/libffi.call/struct_by_value_2.c libffi/testsuite/libffi.call/struct_by_value_3.c libffi/testsuite/libffi.call/struct_by_value_4.c libffi/testsuite/libffi.call/struct_by_value_big.c libffi/testsuite/libffi.call/struct_by_value_small.c libffi/testsuite/libffi.call/struct_return_2H.c libffi/testsuite/libffi.call/struct_return_8H.c libffi/testsuite/libffi.call/uninitialized.c libffi/testsuite/libffi.call/va_1.c libffi/testsuite/libffi.call/va_2.c libffi/testsuite/libffi.call/va_3.c libffi/testsuite/libffi.call/va_struct1.c libffi/testsuite/libffi.call/va_struct2.c libffi/testsuite/libffi.call/va_struct3.c libffi/testsuite/libffi.closures/closure.exp libffi/testsuite/libffi.closures/closure_fn0.c libffi/testsuite/libffi.closures/closure_fn1.c libffi/testsuite/libffi.closures/closure_fn2.c libffi/testsuite/libffi.closures/closure_fn3.c libffi/testsuite/libffi.closures/closure_fn4.c libffi/testsuite/libffi.closures/closure_fn5.c libffi/testsuite/libffi.closures/closure_fn6.c libffi/testsuite/libffi.closures/closure_loc_fn0.c libffi/testsuite/libffi.closures/closure_simple.c libffi/testsuite/libffi.closures/cls_12byte.c libffi/testsuite/libffi.closures/cls_16byte.c libffi/testsuite/libffi.closures/cls_18byte.c libffi/testsuite/libffi.closures/cls_19byte.c libffi/testsuite/libffi.closures/cls_1_1byte.c libffi/testsuite/libffi.closures/cls_20byte.c libffi/testsuite/libffi.closures/cls_20byte1.c libffi/testsuite/libffi.closures/cls_24byte.c libffi/testsuite/libffi.closures/cls_2byte.c libffi/testsuite/libffi.closures/cls_3_1byte.c libffi/testsuite/libffi.closures/cls_3byte1.c libffi/testsuite/libffi.closures/cls_3byte2.c libffi/testsuite/libffi.closures/cls_3float.c libffi/testsuite/libffi.closures/cls_4_1byte.c libffi/testsuite/libffi.closures/cls_4byte.c libffi/testsuite/libffi.closures/cls_5_1_byte.c libffi/testsuite/libffi.closures/cls_5byte.c libffi/testsuite/libffi.closures/cls_64byte.c libffi/testsuite/libffi.closures/cls_6_1_byte.c libffi/testsuite/libffi.closures/cls_6byte.c libffi/testsuite/libffi.closures/cls_7_1_byte.c libffi/testsuite/libffi.closures/cls_7byte.c libffi/testsuite/libffi.closures/cls_8byte.c libffi/testsuite/libffi.closures/cls_9byte1.c libffi/testsuite/libffi.closures/cls_9byte2.c libffi/testsuite/libffi.closures/cls_align_double.c libffi/testsuite/libffi.closures/cls_align_float.c libffi/testsuite/libffi.closures/cls_align_longdouble.c libffi/testsuite/libffi.closures/cls_align_longdouble_split.c libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c libffi/testsuite/libffi.closures/cls_align_pointer.c libffi/testsuite/libffi.closures/cls_align_sint16.c libffi/testsuite/libffi.closures/cls_align_sint32.c libffi/testsuite/libffi.closures/cls_align_sint64.c libffi/testsuite/libffi.closures/cls_align_uint16.c libffi/testsuite/libffi.closures/cls_align_uint32.c libffi/testsuite/libffi.closures/cls_align_uint64.c libffi/testsuite/libffi.closures/cls_dbls_struct.c libffi/testsuite/libffi.closures/cls_double.c libffi/testsuite/libffi.closures/cls_double_va.c libffi/testsuite/libffi.closures/cls_float.c libffi/testsuite/libffi.closures/cls_longdouble.c libffi/testsuite/libffi.closures/cls_longdouble_va.c libffi/testsuite/libffi.closures/cls_many_mixed_args.c libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c libffi/testsuite/libffi.closures/cls_multi_schar.c libffi/testsuite/libffi.closures/cls_multi_sshort.c libffi/testsuite/libffi.closures/cls_multi_sshortchar.c libffi/testsuite/libffi.closures/cls_multi_uchar.c libffi/testsuite/libffi.closures/cls_multi_ushort.c libffi/testsuite/libffi.closures/cls_multi_ushortchar.c libffi/testsuite/libffi.closures/cls_pointer.c libffi/testsuite/libffi.closures/cls_pointer_stack.c libffi/testsuite/libffi.closures/cls_schar.c libffi/testsuite/libffi.closures/cls_sint.c libffi/testsuite/libffi.closures/cls_sshort.c libffi/testsuite/libffi.closures/cls_struct_va1.c libffi/testsuite/libffi.closures/cls_uchar.c libffi/testsuite/libffi.closures/cls_uint.c libffi/testsuite/libffi.closures/cls_uint_va.c libffi/testsuite/libffi.closures/cls_ulong_va.c libffi/testsuite/libffi.closures/cls_ulonglong.c libffi/testsuite/libffi.closures/cls_ushort.c libffi/testsuite/libffi.closures/err_bad_abi.c libffi/testsuite/libffi.closures/ffitest.h libffi/testsuite/libffi.closures/huge_struct.c libffi/testsuite/libffi.closures/nested_struct.c libffi/testsuite/libffi.closures/nested_struct1.c libffi/testsuite/libffi.closures/nested_struct10.c libffi/testsuite/libffi.closures/nested_struct11.c libffi/testsuite/libffi.closures/nested_struct12.c libffi/testsuite/libffi.closures/nested_struct13.c libffi/testsuite/libffi.closures/nested_struct2.c libffi/testsuite/libffi.closures/nested_struct3.c libffi/testsuite/libffi.closures/nested_struct4.c libffi/testsuite/libffi.closures/nested_struct5.c libffi/testsuite/libffi.closures/nested_struct6.c libffi/testsuite/libffi.closures/nested_struct7.c libffi/testsuite/libffi.closures/nested_struct8.c libffi/testsuite/libffi.closures/nested_struct9.c libffi/testsuite/libffi.closures/problem1.c libffi/testsuite/libffi.closures/single_entry_structs1.c libffi/testsuite/libffi.closures/single_entry_structs2.c libffi/testsuite/libffi.closures/single_entry_structs3.c libffi/testsuite/libffi.closures/stret_large.c libffi/testsuite/libffi.closures/stret_large2.c libffi/testsuite/libffi.closures/stret_medium.c libffi/testsuite/libffi.closures/stret_medium2.c libffi/testsuite/libffi.closures/testclosure.c libffi/testsuite/libffi.closures/unwindtest.cc libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc libffi/testsuite/libffi.complex/cls_align_complex.inc libffi/testsuite/libffi.complex/cls_align_complex_double.c libffi/testsuite/libffi.complex/cls_align_complex_float.c libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c libffi/testsuite/libffi.complex/cls_complex.inc libffi/testsuite/libffi.complex/cls_complex_double.c libffi/testsuite/libffi.complex/cls_complex_float.c libffi/testsuite/libffi.complex/cls_complex_longdouble.c libffi/testsuite/libffi.complex/cls_complex_struct.inc libffi/testsuite/libffi.complex/cls_complex_struct_double.c libffi/testsuite/libffi.complex/cls_complex_struct_float.c libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c libffi/testsuite/libffi.complex/cls_complex_va.inc libffi/testsuite/libffi.complex/cls_complex_va_double.c libffi/testsuite/libffi.complex/cls_complex_va_float.c libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c libffi/testsuite/libffi.complex/complex.exp libffi/testsuite/libffi.complex/complex.inc libffi/testsuite/libffi.complex/complex_defs_double.inc libffi/testsuite/libffi.complex/complex_defs_float.inc libffi/testsuite/libffi.complex/complex_defs_longdouble.inc libffi/testsuite/libffi.complex/complex_double.c libffi/testsuite/libffi.complex/complex_float.c libffi/testsuite/libffi.complex/complex_int.c libffi/testsuite/libffi.complex/complex_longdouble.c libffi/testsuite/libffi.complex/ffitest.h libffi/testsuite/libffi.complex/many_complex.inc libffi/testsuite/libffi.complex/many_complex_double.c libffi/testsuite/libffi.complex/many_complex_float.c libffi/testsuite/libffi.complex/many_complex_longdouble.c libffi/testsuite/libffi.complex/return_complex.inc libffi/testsuite/libffi.complex/return_complex1.inc libffi/testsuite/libffi.complex/return_complex1_double.c libffi/testsuite/libffi.complex/return_complex1_float.c libffi/testsuite/libffi.complex/return_complex1_longdouble.c libffi/testsuite/libffi.complex/return_complex2.inc libffi/testsuite/libffi.complex/return_complex2_double.c libffi/testsuite/libffi.complex/return_complex2_float.c libffi/testsuite/libffi.complex/return_complex2_longdouble.c libffi/testsuite/libffi.complex/return_complex_double.c libffi/testsuite/libffi.complex/return_complex_float.c libffi/testsuite/libffi.complex/return_complex_longdouble.c libffi/testsuite/libffi.go/aa-direct.c libffi/testsuite/libffi.go/closure1.c libffi/testsuite/libffi.go/ffitest.h libffi/testsuite/libffi.go/go.exp libffi/testsuite/libffi.go/static-chain.h libtommath/LICENSE libtommath/README.md libtommath/bn_cutoffs.c libtommath/bn_deprecated.c libtommath/bn_mp_2expt.c libtommath/bn_mp_abs.c libtommath/bn_mp_add.c libtommath/bn_mp_add_d.c libtommath/bn_mp_addmod.c libtommath/bn_mp_and.c libtommath/bn_mp_clamp.c libtommath/bn_mp_clear.c libtommath/bn_mp_clear_multi.c libtommath/bn_mp_cmp.c libtommath/bn_mp_cmp_d.c libtommath/bn_mp_cmp_mag.c libtommath/bn_mp_cnt_lsb.c libtommath/bn_mp_complement.c libtommath/bn_mp_copy.c libtommath/bn_mp_count_bits.c libtommath/bn_mp_decr.c libtommath/bn_mp_div.c libtommath/bn_mp_div_2.c libtommath/bn_mp_div_2d.c libtommath/bn_mp_div_3.c libtommath/bn_mp_div_d.c libtommath/bn_mp_dr_is_modulus.c libtommath/bn_mp_dr_reduce.c libtommath/bn_mp_dr_setup.c libtommath/bn_mp_error_to_string.c libtommath/bn_mp_exch.c libtommath/bn_mp_expt_u32.c libtommath/bn_mp_exptmod.c libtommath/bn_mp_exteuclid.c libtommath/bn_mp_fread.c libtommath/bn_mp_from_sbin.c libtommath/bn_mp_from_ubin.c libtommath/bn_mp_fwrite.c libtommath/bn_mp_gcd.c libtommath/bn_mp_get_double.c libtommath/bn_mp_get_i32.c libtommath/bn_mp_get_i64.c libtommath/bn_mp_get_l.c libtommath/bn_mp_get_ll.c libtommath/bn_mp_get_mag_u32.c libtommath/bn_mp_get_mag_u64.c libtommath/bn_mp_get_mag_ul.c libtommath/bn_mp_get_mag_ull.c libtommath/bn_mp_grow.c libtommath/bn_mp_incr.c libtommath/bn_mp_init.c libtommath/bn_mp_init_copy.c libtommath/bn_mp_init_i32.c libtommath/bn_mp_init_i64.c libtommath/bn_mp_init_l.c libtommath/bn_mp_init_ll.c libtommath/bn_mp_init_multi.c libtommath/bn_mp_init_set.c libtommath/bn_mp_init_size.c libtommath/bn_mp_init_u32.c libtommath/bn_mp_init_u64.c libtommath/bn_mp_init_ul.c libtommath/bn_mp_init_ull.c libtommath/bn_mp_invmod.c libtommath/bn_mp_is_square.c libtommath/bn_mp_iseven.c libtommath/bn_mp_isodd.c libtommath/bn_mp_kronecker.c libtommath/bn_mp_lcm.c libtommath/bn_mp_log_u32.c libtommath/bn_mp_lshd.c libtommath/bn_mp_mod.c libtommath/bn_mp_mod_2d.c libtommath/bn_mp_mod_d.c libtommath/bn_mp_montgomery_calc_normalization.c libtommath/bn_mp_montgomery_reduce.c libtommath/bn_mp_montgomery_setup.c libtommath/bn_mp_mul.c libtommath/bn_mp_mul_2.c libtommath/bn_mp_mul_2d.c libtommath/bn_mp_mul_d.c libtommath/bn_mp_mulmod.c libtommath/bn_mp_neg.c libtommath/bn_mp_or.c libtommath/bn_mp_pack.c libtommath/bn_mp_pack_count.c libtommath/bn_mp_prime_fermat.c libtommath/bn_mp_prime_frobenius_underwood.c libtommath/bn_mp_prime_is_prime.c libtommath/bn_mp_prime_miller_rabin.c libtommath/bn_mp_prime_next_prime.c libtommath/bn_mp_prime_rabin_miller_trials.c libtommath/bn_mp_prime_rand.c libtommath/bn_mp_prime_strong_lucas_selfridge.c libtommath/bn_mp_radix_size.c libtommath/bn_mp_radix_smap.c libtommath/bn_mp_rand.c libtommath/bn_mp_read_radix.c libtommath/bn_mp_reduce.c libtommath/bn_mp_reduce_2k.c libtommath/bn_mp_reduce_2k_l.c libtommath/bn_mp_reduce_2k_setup.c libtommath/bn_mp_reduce_2k_setup_l.c libtommath/bn_mp_reduce_is_2k.c libtommath/bn_mp_reduce_is_2k_l.c libtommath/bn_mp_reduce_setup.c libtommath/bn_mp_root_u32.c libtommath/bn_mp_rshd.c libtommath/bn_mp_sbin_size.c libtommath/bn_mp_set.c libtommath/bn_mp_set_double.c libtommath/bn_mp_set_i32.c libtommath/bn_mp_set_i64.c libtommath/bn_mp_set_l.c libtommath/bn_mp_set_ll.c libtommath/bn_mp_set_u32.c libtommath/bn_mp_set_u64.c libtommath/bn_mp_set_ul.c libtommath/bn_mp_set_ull.c libtommath/bn_mp_shrink.c libtommath/bn_mp_signed_rsh.c libtommath/bn_mp_sqr.c libtommath/bn_mp_sqrmod.c libtommath/bn_mp_sqrt.c libtommath/bn_mp_sqrtmod_prime.c libtommath/bn_mp_sub.c libtommath/bn_mp_sub_d.c libtommath/bn_mp_submod.c libtommath/bn_mp_to_radix.c libtommath/bn_mp_to_sbin.c libtommath/bn_mp_to_ubin.c libtommath/bn_mp_ubin_size.c libtommath/bn_mp_unpack.c libtommath/bn_mp_xor.c libtommath/bn_mp_zero.c libtommath/bn_prime_tab.c libtommath/bn_s_mp_add.c libtommath/bn_s_mp_balance_mul.c libtommath/bn_s_mp_exptmod.c libtommath/bn_s_mp_exptmod_fast.c libtommath/bn_s_mp_get_bit.c libtommath/bn_s_mp_invmod_fast.c libtommath/bn_s_mp_invmod_slow.c libtommath/bn_s_mp_karatsuba_mul.c libtommath/bn_s_mp_karatsuba_sqr.c libtommath/bn_s_mp_montgomery_reduce_fast.c libtommath/bn_s_mp_mul_digs.c libtommath/bn_s_mp_mul_digs_fast.c libtommath/bn_s_mp_mul_high_digs.c libtommath/bn_s_mp_mul_high_digs_fast.c libtommath/bn_s_mp_prime_is_divisible.c libtommath/bn_s_mp_rand_jenkins.c libtommath/bn_s_mp_rand_platform.c libtommath/bn_s_mp_reverse.c libtommath/bn_s_mp_sqr.c libtommath/bn_s_mp_sqr_fast.c libtommath/bn_s_mp_sub.c libtommath/bn_s_mp_toom_mul.c libtommath/bn_s_mp_toom_sqr.c libtommath/demo/mtest_opponent.c libtommath/demo/shared.c libtommath/demo/shared.h libtommath/demo/test.c libtommath/demo/timing.c libtommath/etc/2kprime.c libtommath/etc/drprime.c libtommath/etc/mersenne.c libtommath/etc/mont.c libtommath/etc/pprime.c libtommath/etc/tune.c libtommath/mtest/logtab.h libtommath/mtest/mpi-config.h libtommath/mtest/mpi-types.h libtommath/mtest/mpi.c libtommath/mtest/mpi.h libtommath/mtest/mtest.c libtommath/tommath.h libtommath/tommath_class.h libtommath/tommath_cutoffs.h libtommath/tommath_private.h libtommath/tommath_superclass.h linenoise/LICENSE linenoise/Makefile linenoise/README.markdown linenoise/example.c linenoise/linenoise.c linenoise/linenoise.h ucd2c/Makefile ucd2c/UCD.zip ucd2c/UCD/ArabicShaping.txt ucd2c/UCD/BidiBrackets.txt ucd2c/UCD/BidiCharacterTest.txt ucd2c/UCD/BidiMirroring.txt ucd2c/UCD/BidiTest.txt ucd2c/UCD/Blocks.txt ucd2c/UCD/CJKRadicals.txt ucd2c/UCD/CaseFolding.txt ucd2c/UCD/CompositionExclusions.txt ucd2c/UCD/DerivedAge.txt ucd2c/UCD/DerivedCoreProperties.txt ucd2c/UCD/DerivedNormalizationProps.txt ucd2c/UCD/EastAsianWidth.txt ucd2c/UCD/EmojiSources.txt ucd2c/UCD/EquivalentUnifiedIdeograph.txt ucd2c/UCD/HangulSyllableType.txt ucd2c/UCD/Index.txt ucd2c/UCD/IndicPositionalCategory.txt ucd2c/UCD/IndicSyllabicCategory.txt ucd2c/UCD/Jamo.txt ucd2c/UCD/LineBreak.txt ucd2c/UCD/NameAliases.txt ucd2c/UCD/NamedSequences.txt ucd2c/UCD/NamedSequencesProv.txt ucd2c/UCD/NamesList.html ucd2c/UCD/NamesList.txt ucd2c/UCD/NormalizationCorrections.txt ucd2c/UCD/NormalizationTest.txt ucd2c/UCD/NushuSources.txt ucd2c/UCD/PropList.txt ucd2c/UCD/PropertyAliases.txt ucd2c/UCD/PropertyValueAliases.txt ucd2c/UCD/ReadMe.txt ucd2c/UCD/ScriptExtensions.txt ucd2c/UCD/Scripts.txt ucd2c/UCD/SpecialCasing.txt ucd2c/UCD/StandardizedVariants.txt ucd2c/UCD/TangutSources.txt ucd2c/UCD/USourceData.txt ucd2c/UCD/USourceGlyphs.pdf ucd2c/UCD/USourceRSChart.pdf ucd2c/UCD/UnicodeData.txt ucd2c/UCD/VerticalOrientation.txt ucd2c/UCD/auxiliary/GraphemeBreakProperty.txt ucd2c/UCD/auxiliary/GraphemeBreakTest.html ucd2c/UCD/auxiliary/GraphemeBreakTest.txt ucd2c/UCD/auxiliary/LineBreakTest.html ucd2c/UCD/auxiliary/LineBreakTest.txt ucd2c/UCD/auxiliary/SentenceBreakProperty.txt ucd2c/UCD/auxiliary/SentenceBreakTest.html ucd2c/UCD/auxiliary/SentenceBreakTest.txt ucd2c/UCD/auxiliary/WordBreakProperty.txt ucd2c/UCD/auxiliary/WordBreakTest.html ucd2c/UCD/auxiliary/WordBreakTest.txt ucd2c/UCD/emoji/ReadMe.txt ucd2c/UCD/emoji/emoji-data.txt ucd2c/UCD/emoji/emoji-variation-sequences.txt ucd2c/UCD/extracted/DerivedBidiClass.txt ucd2c/UCD/extracted/DerivedBinaryProperties.txt ucd2c/UCD/extracted/DerivedCombiningClass.txt ucd2c/UCD/extracted/DerivedDecompositionType.txt ucd2c/UCD/extracted/DerivedEastAsianWidth.txt ucd2c/UCD/extracted/DerivedGeneralCategory.txt ucd2c/UCD/extracted/DerivedJoiningGroup.txt ucd2c/UCD/extracted/DerivedJoiningType.txt ucd2c/UCD/extracted/DerivedLineBreak.txt ucd2c/UCD/extracted/DerivedName.txt ucd2c/UCD/extracted/DerivedNumericType.txt ucd2c/UCD/extracted/DerivedNumericValues.txt ucd2c/config.mk ucd2c/configure ucd2c/license.txt ucd2c/ucd.c ucd2c/ucd.h ucd2c/ucd2c ucd2c/ucd2c.c ucd2c/ucd2c.lo ucd2c/ucd2c.o '