-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
When using the posix profile (thx for the feature), I found some missing functions in the posix.vapi file. PS: I don't know the commit policy Attached: 0001-Adding-Math-to-Posix-namespace.patch 0002-Adding-FILE-API-as-FileStream-class.patch 0003-Adding-standards-methods-to-Posix-types-when-posix.patch Clément David (aka davidcl) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkoEaYYACgkQuqPIXyz9+3Ix/gCgmQntlin8uf83vu0OtNC8PN/c dTUAoIyy2FZizhUocv12HqDYoOnGLqFU =3G/c -----END PGP SIGNATURE-----
>From 6c506d18f39510c5ba9ee7c058b69aa11e747bcd Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Cl=C3=A9ment=20David?= <[email protected]> Date: Fri, 8 May 2009 18:44:46 +0200 Subject: [PATCH 1/3] Adding Math to Posix namespace --- vapi/posix.vapi | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 174 insertions(+), 0 deletions(-) diff --git a/vapi/posix.vapi b/vapi/posix.vapi index d487e65..7440fd8 100644 --- a/vapi/posix.vapi +++ b/vapi/posix.vapi @@ -981,5 +981,179 @@ namespace Posix { public const int SEEK_CUR; [CCode (cheader_filename = "unistd.h")] public const int SEEK_END; + + [CCode (lower_case_cprefix = "", cheader_filename = "math.h")] + namespace Math { + [CCode (cname = "M_E")] + public const double E; + + [CCode (cname = "M_PI")] + public const double PI; + + [CCode (cname = "M_LN2")] + public const double LN2; + + [CCode (cname = "M_LN10")] + public const double LN10; + + [CCode (cname = "M_PI_2")] + public const double PI_2; + + [CCode (cname = "M_PI_4")] + public const double PI_4; + + [CCode (cname = "M_SQRT2")] + public const double SQRT2; + + /* generated from <bits/mathcalls.h> of glibc */ + public static double acos (double x); + public static float acosf (float x); + public static double asin (double x); + public static float asinf (float x); + public static double atan (double x); + public static float atanf (float x); + public static double atan2 (double y, double x); + public static float atan2f (float y, float x); + public static double cos (double x); + public static float cosf (float x); + public static double sin (double x); + public static float sinf (float x); + public static double tan (double x); + public static float tanf (float x); + public static double cosh (double x); + public static float coshf (float x); + public static double sinh (double x); + public static float sinhf (float x); + public static double tanh (double x); + public static float tanhf (float x); + public static void sincos (double x, out double sinx, out double cosx); + public static void sincosf (float x, out float sinx, out float cosx); + public static double acosh (double x); + public static float acoshf (float x); + public static double asinh (double x); + public static float asinhf (float x); + public static double atanh (double x); + public static float atanhf (float x); + public static double exp (double x); + public static float expf (float x); + public static double frexp (double x, out int exponent); + public static float frexpf (float x, out int exponent); + public static double ldexp (double x, int exponent); + public static float ldexpf (float x, int exponent); + public static double log (double x); + public static float logf (float x); + public static double log10 (double x); + public static float log10f (float x); + public static double modf (double x, out double iptr); + public static float modff (float x, out float iptr); + public static double exp10 (double x); + public static float exp10f (float x); + public static double pow10 (double x); + public static float pow10f (float x); + public static double expm1 (double x); + public static float expm1f (float x); + public static double log1p (double x); + public static float log1pf (float x); + public static double logb (double x); + public static float logbf (float x); + public static double exp2 (double x); + public static float exp2f (float x); + public static double log2 (double x); + public static float log2f (float x); + public static double pow (double x, double y); + public static float powf (float x, float y); + public static double sqrt (double x); + public static float sqrtf (float x); + public static double hypot (double x, double y); + public static float hypotf (float x, float y); + public static double cbrt (double x); + public static float cbrtf (float x); + public static double ceil (double x); + public static float ceilf (float x); + public static double fabs (double x); + public static float fabsf (float x); + public static double floor (double x); + public static float floorf (float x); + public static double fmod (double x, double y); + public static float fmodf (float x, float y); + public static int isinf (double value); + public static int isinff (float value); + public static int finite (double value); + public static int finitef (float value); + public static double drem (double x, double y); + public static float dremf (float x, float y); + public static double significand (double x); + public static float significandf (float x); + public static double copysign (double x, double y); + public static float copysignf (float x, float y); + public static double nan (string tagb); + public static float nanf (string tagb); + public static int isnan (double value); + public static int isnanf (float value); + public static double j0 (double x0); + public static float j0f (float x0); + public static double j1 (double x0); + public static float j1f (float x0); + public static double jn (int x0, double x1); + public static float jnf (int x0, float x1); + public static double y0 (double x0); + public static float y0f (float x0); + public static double y1 (double x0); + public static float y1f (float x0); + public static double yn (int x0, double x1); + public static float ynf (int x0, float x1); + public static double erf (double x0); + public static float erff (float x0); + public static double erfc (double x0); + public static float erfcf (float x0); + public static double lgamma (double x0); + public static float lgammaf (float x0); + public static double tgamma (double x0); + public static float tgammaf (float x0); + public static double gamma (double x0); + public static float gammaf (float x0); + public static double lgamma_r (double x0, out int signgamp); + public static float lgamma_rf (float x0, out int signgamp); + public static double rint (double x); + public static float rintf (float x); + public static double nextafter (double x, double y); + public static float nextafterf (float x, float y); + public static double nexttoward (double x, double y); + public static float nexttowardf (float x, double y); + public static double remainder (double x, double y); + public static float remainderf (float x, float y); + public static double scalbn (double x, int n); + public static float scalbnf (float x, int n); + public static int ilogb (double x); + public static int ilogbf (float x); + public static double scalbln (double x, long n); + public static float scalblnf (float x, long n); + public static double nearbyint (double x); + public static float nearbyintf (float x); + public static double round (double x); + public static float roundf (float x); + public static double trunc (double x); + public static float truncf (float x); + public static double remquo (double x, double y, out int quo); + public static float remquof (float x, float y, out int quo); + public static long lrint (double x); + public static long lrintf (float x); + public static int64 llrint (double x); + public static int64 llrintf (float x); + public static long lround (double x); + public static long lroundf (float x); + public static int64 llround (double x); + public static int64 llroundf (float x); + public static double fdim (double x, double y); + public static float fdimf (float x, float y); + public static double fmax (double x, double y); + public static float fmaxf (float x, float y); + public static double fmin (double x, double y); + public static float fminf (float x, float y); + public static double fma (double x, double y, double z); + public static float fmaf (float x, float y, float z); + public static double scalb (double x, double n); + public static float scalbf (float x, float n); + } } -- 1.6.2.4
>From f48aefe74134152558495d8f28d8b1dbfa38d279 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Cl=C3=A9ment=20David?= <[email protected]> Date: Fri, 8 May 2009 18:46:21 +0200 Subject: [PATCH 2/3] Adding FILE* API as FileStream class --- vapi/posix.vapi | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) diff --git a/vapi/posix.vapi b/vapi/posix.vapi index 7440fd8..680f845 100644 --- a/vapi/posix.vapi +++ b/vapi/posix.vapi @@ -176,6 +176,59 @@ namespace Posix { [CCode (cheader_filename = "ctype.h")] public int toupper (int c); + [CCode (cprefix = "SEEK_", has_type_id = false)] + public enum FileSeek { + SET, + CUR, + END + } + + [Compact] + [CCode (cname = "FILE", free_function = "fclose", cheader_filename = "stdio.h")] + public class FileStream { + [CCode (cname = "fopen")] + public static FileStream? open (string path, string mode); + [CCode (cname = "fdopen")] + public static FileStream? fdopen (int fildes, string mode); + [CCode (cname = "fprintf"), PrintfFormat] + public void printf (string format, ...); + [CCode (cname = "fputc", instance_pos = -1)] + public void putc (char c); + [CCode (cname = "fputs", instance_pos = -1)] + public void puts (string s); + [CCode (cname = "fgetc")] + public int getc (); + [CCode (cname = "fgets", instance_pos = -1)] + public weak string gets (char[] s); + [CCode (cname = "feof")] + public bool eof (); + [CCode (cname = "fscanf")] + public int scanf (string format, ...); + [CCode (cname = "fflush")] + public int flush (); + [CCode (cname = "fseek")] + public int seek (long offset, FileSeek whence); + [CCode (cname = "ftell")] + public long tell (); + [CCode (cname = "rewind")] + public void rewind (); + [CCode (cname = "fileno")] + public int fileno (); + [CCode (cname = "ferror")] + public int error (); + [CCode (cname = "clearerr")] + public void clearerr (); + } + + [CCode (cname = "stdin", cheader_filename = "stdio.h")] + public static FileStream stdin; + + [CCode (cname = "stdout", cheader_filename = "stdio.h")] + public static FileStream stdout; + + [CCode (cname = "stderr", cheader_filename = "stdio.h")] + public static FileStream stderr; + [Compact] [CCode (cname = "struct dirent", cheader_filename = "dirent.h")] public class DirEnt { -- 1.6.2.4
>From 3a144903710e1a43071b2bc7f397e76c11f1a662 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Cl=C3=A9ment=20David?= <[email protected]> Date: Fri, 8 May 2009 18:52:25 +0200 Subject: [PATCH 3/3] Adding standards methods to Posix types (when posix profile is set) --- vapi/posix.vapi | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 202 insertions(+), 0 deletions(-) diff --git a/vapi/posix.vapi b/vapi/posix.vapi index 680f845..ca7a913 100644 --- a/vapi/posix.vapi +++ b/vapi/posix.vapi @@ -24,106 +24,261 @@ [CCode (cname = "bool", cheader_filename = "stdbool.h", default_value = "false")] [BooleanType] public struct bool { + public string to_string () { + if (this) { + return "true"; + } else { + return "false"; + } + } } [CCode (cname = "char", default_value = "\'\\0\'")] [IntegerType (rank = 2, min = 0, max = 127)] public struct char { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hhi"); + [CCode (cheader_filename = "ctype.h")] + public bool isalnum (); + [CCode (cheader_filename = "ctype.h")] + public bool isalpha (); + [CCode (cheader_filename = "ctype.h")] + public bool iscntrl (); + [CCode (cheader_filename = "ctype.h")] + public bool isdigit (); + [CCode (cheader_filename = "ctype.h")] + public bool isgraph (); + [CCode (cheader_filename = "ctype.h")] + public bool islower (); + [CCode (cheader_filename = "ctype.h")] + public bool isprint (); + [CCode (cheader_filename = "ctype.h")] + public bool ispunct (); + [CCode (cheader_filename = "ctype.h")] + public bool isspace (); + [CCode (cheader_filename = "ctype.h")] + public bool isupper (); + [CCode (cheader_filename = "ctype.h")] + public bool isxdigit (); + [CCode (cheader_filename = "ctype.h")] + public int digit_value (); + [CCode (cheader_filename = "ctype.h")] + public int xdigit_value (); + [CCode (cheader_filename = "ctype.h")] + public char tolower (); + [CCode (cheader_filename = "ctype.h")] + public char toupper (); } [CCode (cname = "unsigned char", default_value = "\'\\0\'")] [IntegerType (rank = 3, min = 0, max = 255)] public struct uchar { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hhu"); } [CCode (cname = "int", default_value = "0")] [IntegerType (rank = 6)] public struct int { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%i"); + + [CCode (cname = "abs")] + public int abs (); } [CCode (cname = "unsigned int", default_value = "0U")] [IntegerType (rank = 7)] public struct uint { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%u"); } [CCode (cname = "short", default_value = "0")] [IntegerType (rank = 4, min = -32768, max = 32767)] public struct short { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hi"); } [CCode (cname = "unsigned short", default_value = "0U")] [IntegerType (rank = 5, min = 0, max = 65535)] public struct ushort { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hu"); } [CCode (cname = "long", default_value = "0L")] [IntegerType (rank = 8)] public struct long { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%li"); + + [CCode (cname = "labs")] + public long abs (); } [CCode (cname = "unsigned long", default_value = "0UL")] [IntegerType (rank = 9)] public struct ulong { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%zu"); } [CCode (cname = "size_t", cheader_filename = "sys/types.h", default_value = "0UL")] [IntegerType (rank = 9)] public struct size_t { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%zu"); } [CCode (cname = "ssize_t", cheader_filename = "sys/types.h", default_value = "0L")] [IntegerType (rank = 8)] public struct ssize_t { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%li"); } [CCode (cname = "int8_t", cheader_filename = "stdint.h", default_value = "0")] [IntegerType (rank = 1, min = -128, max = 127)] public struct int8 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hhi"); } [CCode (cname = "uint8_t", cheader_filename = "stdint.h", default_value = "0U")] [IntegerType (rank = 3, min = 0, max = 255)] public struct uint8 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hhu"); } [CCode (cname = "int16_t", cheader_filename = "stdint.h", default_value = "0")] [IntegerType (rank = 4, min = -32768, max = 32767)] public struct int16 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hi"); } [CCode (cname = "uint16_t", cheader_filename = "stdint.h", default_value = "0U")] [IntegerType (rank = 5, min = 0, max = 65535)] public struct uint16 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%hu"); } [CCode (cname = "int32_t", cheader_filename = "stdint.h", default_value = "0")] [IntegerType (rank = 6)] public struct int32 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%i"); } [CCode (cname = "uint32_t", cheader_filename = "stdint.h", default_value = "0U")] [IntegerType (rank = 7)] public struct uint32 { + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%u"); } [CCode (cname = "int64_t", cheader_filename = "stdint.h", default_value = "0LL")] [IntegerType (rank = 10)] public struct int64 { + [CCode (cname = "g_strdup_printf", instance_pos = -1)] + public string to_string (string format = "%lli"); } [CCode (cname = "uint64_t", cheader_filename = "stdint.h", default_value = "0ULL")] [IntegerType (rank = 11)] public struct uint64 { + [CCode (cname = "g_strdup_printf", instance_pos = -1)] + public string to_string (string format = "%llu"); } [CCode (cname = "float", default_value = "0.0F")] [FloatingType (rank = 1)] public struct float { + [CCode (cname = "FLT_MANT_DIG")] + public static int MANT_DIG; + [CCode (cname = "FLT_DIG")] + public static int DIG; + + [CCode (cname = "FLT_MIN_EXP")] + public static int MIN_EXP; + [CCode (cname = "FLT_MAX_EXP")] + public static int MAX_EXP; + + [CCode (cname = "FLT_MIN_10_EXP")] + public static int MIN_10_EXP; + [CCode (cname = "FLT_MAX_10_EXP")] + public static int MAX_10_EXP; + + [CCode (cname = "FLT_EPSILON")] + public static float EPSILON; + [CCode (cname = "FLT_MIN")] + public static float MIN; + [CCode (cname = "FLT_MAX")] + public static float MAX; + + [CCode (cname = "NAN", cheader_filename = "math.h")] + public static float NAN; + [CCode (cname = "INFINITY", cheader_filename = "math.h")] + public static float INFINITY; + + [CCode (cname = "isnan", cheader_filename = "math.h")] + public bool is_nan (); + [CCode (cname = "isfinite", cheader_filename = "math.h")] + public bool is_finite (); + [CCode (cname = "isnormal", cheader_filename = "math.h")] + public bool is_normal (); + [CCode (cname = "isinf", cheader_filename = "math.h")] + public int is_infinity (); + + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%g"); } [CCode (cname = "double", default_value = "0.0")] [FloatingType (rank = 2)] public struct double { + [CCode (cname = "DBL_MANT_DIG")] + public static int MANT_DIG; + [CCode (cname = "DBL_DIG")] + public static int DIG; + + [CCode (cname = "DBL_MIN_EXP")] + public static int MIN_EXP; + [CCode (cname = "DBL_MAX_EXP")] + public static int MAX_EXP; + + [CCode (cname = "DBL_MIN_10_EXP")] + public static int MIN_10_EXP; + [CCode (cname = "DBL_MAX_10_EXP")] + public static int MAX_10_EXP; + + [CCode (cname = "DBL_EPSILON")] + public static double EPSILON; + [CCode (cname = "DBL_MIN")] + public static double MIN; + [CCode (cname = "DBL_MAX")] + public static double MAX; + + [CCode (cname = "((double) NAN)", cheader_filename = "math.h")] + public static double NAN; + [CCode (cname = "((double) INFINITY)", cheader_filename = "math.h")] + public static double INFINITY; + + [CCode (cname = "isnan", cheader_filename = "math.h")] + public bool is_nan (); + [CCode (cname = "isfinite", cheader_filename = "math.h")] + public bool is_finite (); + [CCode (cname = "isnormal", cheader_filename = "math.h")] + public bool is_normal (); + [CCode (cname = "isinf", cheader_filename = "math.h")] + public int is_infinity (); + + [CCode (cname = "sprintf", instance_pos = -1)] + public string to_string (string format = "%g"); } [CCode (cheader_filename = "time.h")] @@ -137,6 +292,53 @@ public struct time_t { [Immutable] [CCode (cname = "char", const_cname = "const char", copy_function = "strdup", free_function = "free", cheader_filename = "stdlib.h,string.h")] public class string { + [CCode (cname = "strstr")] + public weak string? str (string needle); + [CCode (cname = "sprintf"), PrintfFormat] + public weak string printf (...); + [CCode (cname = "sscanf", cheader_filename = "stdio.h")] + public int scanf (...); + [CCode (cname = "strcat")] + public string concat (string string2, ...); + [CCode (cname = "strlen")] + public long len (); + [CCode (cname = "strchr")] + public weak string chr (char c); + [CCode (cname = "strrchr")] + public weak string rchr (char c); + + [CCode (cname = "atoi")] + public int to_int (); + [CCode (cname = "atol")] + public long to_long (); + [CCode (cname = "strtod")] + public double to_double (out weak string endptr = null); + [CCode (cname = "strtoul")] + public ulong to_ulong (out weak string endptr = null, int _base = 0); + [CCode (cname = "strtoll")] + public int64 to_int64 (out weak string endptr = null, int _base = 0); + public bool to_bool () { + if (this == "true") { + return true; + } else { + return false; + } + } + + [CCode (cname = "strlen")] + public long size (); + + // n is size in bytes, not length in characters + [CCode (cname = "strndup")] + public string ndup (size_t n); + + public bool contains (string needle) { + return this.str (needle) != null; + } + + public long length { + get { return this.len (); } + } } #endif -- 1.6.2.4
_______________________________________________ Vala-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/vala-list
