diff --git a/builtins/nums.h b/builtins/nums.h index 5b1b7c8..ce41c08 100644 --- a/builtins/nums.h +++ b/builtins/nums.h @@ -20,22 +20,7 @@ bool Num__isinf(double n); bool Num__finite(double n); bool Num__isnan(double n); double Num__nan(CORD tag); -// Constants: -#define C(name) const double Num__##name = M_##name; -C(2_SQRTPI) C(E) C(PI_2) C(2_PI) C(1_PI) C(LN10) C(LN2) C(LOG2E) C(PI) C(PI_4) C(SQRT2) C(SQRT1_2) -const double Num__INF = INFINITY, Num__TAU = 2.*M_PI; -#undef C double Num__random(void); -#define F(name) double (*Num__##name)(double n) = name; -double (*Num__abs)(double) = fabs; -F(acos) F(acosh) F(asin) F(asinh) F(atan) F(atanh) F(cbrt) F(ceil) F(cos) F(cosh) F(erf) F(erfc) -F(exp) F(exp2) F(expm1) F(floor) F(j0) F(j1) F(log) F(log10) F(log1p) F(log2) F(logb) -F(rint) F(round) F(significand) F(sin) F(sinh) F(sqrt) -F(tan) F(tanh) F(tgamma) F(trunc) F(y0) F(y1) -#undef F -#define F(name) double (*Num__##name)(double x, double y) = name; -F(atan2) F(copysign) F(fdim) F(hypot) F(nextafter) F(pow) F(remainder) -#undef F extern const TypeInfo Num; CORD Num32__as_text(const float *f, bool colorize, const TypeInfo *type); @@ -48,23 +33,8 @@ float Num32__mod(float num, float modulus); bool Num32__isinf(float n); bool Num32__finite(float n); bool Num32__isnan(float n); -// Constants: -#define C(name) const float Num32__##name = M_##name; -C(2_SQRTPI) C(E) C(PI_2) C(2_PI) C(1_PI) C(LN10) C(LN2) C(LOG2E) C(PI) C(PI_4) C(SQRT2) C(SQRT1_2) -const float Num32__INF = INFINITY, Num32__TAU = 2.*M_PI; -#undef C float Num32__random(void); float Num32__nan(CORD tag); -#define F(name) float (*Num32__##name)(float n) = name##f; -float (*Num32__abs)(float) = fabsf; -F(acos) F(acosh) F(asin) F(asinh) F(atan) F(atanh) F(cbrt) F(ceil) F(cos) F(cosh) F(erf) F(erfc) -F(exp) F(exp2) F(expm1) F(floor) F(j0) F(j1) F(log) F(log10) F(log1p) F(log2) F(logb) -F(rint) F(round) F(significand) F(sin) F(sinh) F(sqrt) -F(tan) F(tanh) F(tgamma) F(trunc) F(y0) F(y1) -#undef F -#define F(name) float (*Num32__##name)(float x, float y) = name##f; -F(atan2) F(copysign) F(fdim) F(hypot) F(nextafter) F(pow) F(remainder) -#undef F extern const TypeInfo Num32; // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 diff --git a/compile.c b/compile.c index a658624..0c7c050 100644 --- a/compile.c +++ b/compile.c @@ -1242,7 +1242,7 @@ module_code_t compile_file(ast_t *ast) env->code->typedefs, "\n", env->code->typecode, "\n", env->code->fndefs, "\n", - "void use$", module_name, "(void);\n" + "public void use(void);\n" ), .c_file=CORD_all( // CORD_asprintf("#line 0 %r\n", Text__quoted(ast->file->filename, false)), @@ -1250,7 +1250,7 @@ module_code_t compile_file(ast_t *ast) env->code->funcs, "\n", env->code->typeinfos, "\n", "\n" - "void use$", module_name, "(void) {\n", + "public void use(void) {\n", env->code->main, "}\n" ), diff --git a/environment.c b/environment.c index be04f0a..55041f3 100644 --- a/environment.c +++ b/environment.c @@ -13,17 +13,6 @@ typedef struct { binding_t binding; } ns_entry_t; -// static type_t *namespace_type(const char *name, table_t *ns) -// { -// arg_t *fields = NULL; -// for (int64_t i = Table_length(ns); i >= 1; i--) { -// struct {const char *name; binding_t *binding; } *entry = Table_entry(ns, i); -// fields = new(arg_t, .next=fields, .name=entry->name, .type=entry->binding->type); -// } -// name = heap_strf("%s_namespace", name); -// return Type(StructType, .name=name, .fields=fields); -// } - env_t *new_compilation_unit(void) { env_t *env = new(env_t); @@ -100,9 +89,9 @@ env_t *new_compilation_unit(void) {"min", "Int8__min", "Int8"}, {"max", "Int8__max", "Int8"}, )}, -#define C(name) {#name, "Num__"#name, "Num"} -#define F(name) {#name, "Num__"#name, "func(n:Num)->Num"} -#define F2(name) {#name, "Num__"#name, "func(x:Num, y:Num)->Num"} +#define C(name) {#name, "M_"#name, "Num"} +#define F(name) {#name, #name, "func(n:Num)->Num"} +#define F2(name) {#name, #name, "func(x:Num, y:Num)->Num"} {"Num", Type(NumType, .bits=64), "Num_t", "Num", $TypedArray(ns_entry_t, {"near", "Num__near", "func(x:Num, y:Num, ratio=1e-9, min_epsilon=1e-9)->Bool"}, {"format", "Num__format", "func(n:Num, precision=0)->Text"}, @@ -112,9 +101,12 @@ env_t *new_compilation_unit(void) {"isfinite", "Num__isfinite", "func(n:Num)->Bool"}, {"isnan", "Num__isnan", "func(n:Num)->Bool"}, C(2_SQRTPI), C(E), C(PI_2), C(2_PI), C(1_PI), C(LN10), C(LN2), C(LOG2E), - C(PI), C(PI_4), C(SQRT2), C(SQRT1_2), C(INF), C(TAU), + C(PI), C(PI_4), C(SQRT2), C(SQRT1_2), + {"INF", "INFINITY", "Num"}, + {"TAU", "(2.*M_PI)", "Num"}, {"random", "Num__random", "func()->Num"}, - F(abs), F(acos), F(acosh), F(asin), F(asinh), F(atan), F(atanh), F(cbrt), F(ceil), F(cos), F(cosh), F(erf), F(erfc), + {"abs", "fabs", "func(n:Num)->Num"}, + F(acos), F(acosh), F(asin), F(asinh), F(atan), F(atanh), F(cbrt), F(ceil), F(cos), F(cosh), F(erf), F(erfc), F(exp), F(exp2), F(expm1), F(floor), F(j0), F(j1), F(log), F(log10), F(log1p), F(log2), F(logb), F(rint), F(round), F(significand), F(sin), F(sinh), F(sqrt), F(tan), F(tanh), F(tgamma), F(trunc), F(y0), F(y1), @@ -123,9 +115,9 @@ env_t *new_compilation_unit(void) #undef F2 #undef F #undef C -#define C(name) {#name, "Num32__"#name, "Num32"} -#define F(name) {#name, "Num32__"#name, "func(n:Num32)->Num32"} -#define F2(name) {#name, "Num32__"#name, "func(x:Num32, y:Num32)->Num32"} +#define C(name) {#name, "(Num32_t)(M_"#name")", "Num32"} +#define F(name) {#name, #name"f", "func(n:Num32)->Num32"} +#define F2(name) {#name, #name"f", "func(x:Num32, y:Num32)->Num32"} {"Num32", Type(NumType, .bits=32), "Num32_t", "Num32", $TypedArray(ns_entry_t, {"near", "Num32__near", "func(x:Num32, y:Num32, ratio=1e-9f32, min_epsilon=1e-9f32)->Bool"}, {"format", "Num32__format", "func(n:Num32, precision=0)->Text"}, @@ -135,9 +127,12 @@ env_t *new_compilation_unit(void) {"isfinite", "Num32__isfinite", "func(n:Num32)->Bool"}, {"isnan", "Num32__isnan", "func(n:Num32)->Bool"}, C(2_SQRTPI), C(E), C(PI_2), C(2_PI), C(1_PI), C(LN10), C(LN2), C(LOG2E), - C(PI), C(PI_4), C(SQRT2), C(SQRT1_2), C(INF), C(TAU), + C(PI), C(PI_4), C(SQRT2), C(SQRT1_2), + {"INF", "(Num32_t)(INFINITY)", "Num32"}, + {"TAU", "(Num32_t)(2.f*M_PI)", "Num32"}, {"random", "Num32__random", "func()->Num32"}, - F(abs), F(acos), F(acosh), F(asin), F(asinh), F(atan), F(atanh), F(cbrt), F(ceil), F(cos), F(cosh), F(erf), F(erfc), + {"abs", "fabsf", "func(n:Num32)->Num32"}, + F(acos), F(acosh), F(asin), F(asinh), F(atan), F(atanh), F(cbrt), F(ceil), F(cos), F(cosh), F(erf), F(erfc), F(exp), F(exp2), F(expm1), F(floor), F(j0), F(j1), F(log), F(log10), F(log1p), F(log2), F(logb), F(rint), F(round), F(significand), F(sin), F(sinh), F(sqrt), F(tan), F(tanh), F(tgamma), F(trunc), F(y0), F(y1), diff --git a/tomo.c b/tomo.c index c2332e6..1e55c85 100644 --- a/tomo.c +++ b/tomo.c @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) "(void)argv;\n" "GC_INIT();\n" "detect_color();\n" - "use$", module.module_name, "();\n" + "use();\n" "return 0;\n" "}\n" );