c_src: update with new intern methods
[nit.git] / c_src / time._ffi.c
diff --git a/c_src/time._ffi.c b/c_src/time._ffi.c
new file mode 100644 (file)
index 0000000..07d8f34
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+       Extern implementation of Nit module time
+*/
+#include <stdlib.h>
+#include <stdio.h>
+#include "time._ffi.h"
+#define NativeString_to_s_with_copy time___NativeString_to_s_with_copy
+#define String_to_cstring time___String_to_cstring
+#define NativeString_to_s time___NativeString_to_s
+
+time_t time___new_TimeT___impl(  )
+{
+#line 34 "lib/standard/time.nit"
+
+ return time(NULL); }
+
+time_t time___new_TimeT_from_i___impl( int i )
+{
+#line 35 "lib/standard/time.nit"
+
+ return i; }
+
+void time___TimeT_update___impl( time_t recv )
+{
+#line 37 "lib/standard/time.nit"
+
+ time(&recv); }
+
+String time___TimeT_ctime___impl( time_t recv )
+{
+#line 39 "lib/standard/time.nit"
+
+
+               return NativeString_to_s_with_copy( ctime(&recv) );
+       }
+
+double time___TimeT_difftime___impl( time_t recv, time_t start )
+{
+#line 44 "lib/standard/time.nit"
+
+ return difftime(recv, start); }
+
+int time___TimeT_to_i___impl( time_t recv )
+{
+#line 47 "lib/standard/time.nit"
+
+ return (int)recv; }
+
+struct tm * time___new_Tm_gmtime___impl(  )
+{
+#line 52 "lib/standard/time.nit"
+
+
+               struct tm *tm;
+               time_t t = time(NULL);
+               tm = gmtime(&t);
+               return tm;
+       }
+
+struct tm * time___new_Tm_gmtime_from_timet___impl( time_t t )
+{
+#line 58 "lib/standard/time.nit"
+
+
+               struct tm *tm;
+               tm = gmtime(&t);
+               return tm;
+       }
+
+struct tm * time___new_Tm_localtime___impl(  )
+{
+#line 64 "lib/standard/time.nit"
+
+
+               struct tm *tm;
+               time_t t = time(NULL);
+               tm = localtime(&t);
+               return tm;
+       }
+
+struct tm * time___new_Tm_localtime_from_timet___impl( time_t t )
+{
+#line 70 "lib/standard/time.nit"
+
+
+               struct tm *tm;
+               tm = localtime(&t);
+               return tm;
+       }
+
+time_t time___Tm_to_timet___impl( struct tm * recv )
+{
+#line 76 "lib/standard/time.nit"
+
+ return mktime(recv); }
+
+int time___Tm_sec___impl( struct tm * recv )
+{
+#line 78 "lib/standard/time.nit"
+
+ return recv->tm_sec; }
+
+int time___Tm_min___impl( struct tm * recv )
+{
+#line 79 "lib/standard/time.nit"
+
+ return recv->tm_min; }
+
+int time___Tm_hour___impl( struct tm * recv )
+{
+#line 80 "lib/standard/time.nit"
+
+ return recv->tm_hour; }
+
+int time___Tm_mday___impl( struct tm * recv )
+{
+#line 81 "lib/standard/time.nit"
+
+ return recv->tm_mday; }
+
+int time___Tm_mon___impl( struct tm * recv )
+{
+#line 82 "lib/standard/time.nit"
+
+ return recv->tm_mon; }
+
+int time___Tm_year___impl( struct tm * recv )
+{
+#line 83 "lib/standard/time.nit"
+
+ return recv->tm_year; }
+
+int time___Tm_wday___impl( struct tm * recv )
+{
+#line 84 "lib/standard/time.nit"
+
+ return recv->tm_wday; }
+
+int time___Tm_yday___impl( struct tm * recv )
+{
+#line 85 "lib/standard/time.nit"
+
+ return recv->tm_yday; }
+
+int time___Tm_is_dst___impl( struct tm * recv )
+{
+#line 86 "lib/standard/time.nit"
+
+ return recv->tm_isdst; }
+
+String time___Tm_asctime___impl( struct tm * recv )
+{
+#line 88 "lib/standard/time.nit"
+
+
+               return NativeString_to_s_with_copy( asctime(recv) );
+       }
+
+String time___Tm_strftime___impl( struct tm * recv, String format )
+{
+#line 91 "lib/standard/time.nit"
+
+
+               char* buf, *c_format;
+               size_t res;
+
+               buf = (char*)malloc(100);
+               c_format = String_to_cstring(format);
+
+               res = strftime(buf, 100, c_format, recv);
+               return NativeString_to_s(buf);
+       }