add time functions
This commit is contained in:
		
							parent
							
								
									bcde104dd1
								
							
						
					
					
						commit
						6faaa5261c
					
				
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							|  | @ -6,7 +6,7 @@ build: | |||
| 	cd src; \
 | ||||
| 	yacc -d parse.y; \
 | ||||
| 	lex scan.l | ||||
| 	 $(CC) -Wall -o bin/picrin -I./include -lreadline src/main.c src/state.c src/gc.c src/pair.c src/port.c src/symbol.c src/value.c src/y.tab.c src/lex.yy.c src/bool.c src/vm.c src/init.c src/number.c | ||||
| 	 $(CC) -Wall -o bin/picrin -I./include -lreadline src/main.c src/state.c src/gc.c src/pair.c src/port.c src/symbol.c src/value.c src/y.tab.c src/lex.yy.c src/bool.c src/vm.c src/init.c src/number.c src/time.c | ||||
| 
 | ||||
| clean: | ||||
| 	rm -f src/y.tab.c src/y.tab.h src/lex.yy.c | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| void pic_init_port(pic_state *); | ||||
| void pic_init_number(pic_state *); | ||||
| void pic_init_time(pic_state *); | ||||
| 
 | ||||
| #define DONE pic_gc_arena_restore(pic, ai); | ||||
| 
 | ||||
|  | @ -13,4 +14,5 @@ pic_init_core(pic_state *pic) | |||
|   ai = pic_gc_arena_preserve(pic); | ||||
|   pic_init_port(pic); DONE; | ||||
|   pic_init_number(pic); DONE; | ||||
|   pic_init_time(pic); DONE; | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| #include <math.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/value.h" | ||||
| 
 | ||||
| static pic_value | ||||
| pic_number_lt(pic_state *pic) | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ write(pic_state *pic, pic_value obj) | |||
|     printf("%s", pic_symbol_ptr(obj)->name); | ||||
|     break; | ||||
|   case PIC_TT_FLOAT: | ||||
|     printf("%g", pic_float(obj)); | ||||
|     printf("%.10g", pic_float(obj)); | ||||
|     break; | ||||
|   case PIC_TT_UNDEF: | ||||
|     printf("#<undef>"); | ||||
|  |  | |||
|  | @ -0,0 +1,44 @@ | |||
| #include <time.h> | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| 
 | ||||
| #define UTC_TAI_DIFF 35 | ||||
| 
 | ||||
| static pic_value | ||||
| pic_current_second(pic_state *pic) | ||||
| { | ||||
|   time_t t; | ||||
| 
 | ||||
|   pic_get_args(pic, ""); | ||||
| 
 | ||||
|   time(&t); | ||||
|   return pic_float_value((double)t + UTC_TAI_DIFF); | ||||
| } | ||||
| 
 | ||||
| static pic_value | ||||
| pic_current_jiffy(pic_state *pic) | ||||
| { | ||||
|   clock_t c; | ||||
| 
 | ||||
|   pic_get_args(pic, ""); | ||||
| 
 | ||||
|   c = clock(); | ||||
|   return pic_float_value((double)c); | ||||
| } | ||||
| 
 | ||||
| static pic_value | ||||
| pic_jiffies_per_second(pic_state *pic) | ||||
| { | ||||
|   pic_get_args(pic, ""); | ||||
| 
 | ||||
|   return pic_float_value((double)CLOCKS_PER_SEC); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| pic_init_time(pic_state *pic) | ||||
| { | ||||
|   pic_defun(pic, "current-second", pic_current_second); | ||||
|   pic_defun(pic, "current-jiffy", pic_current_jiffy); | ||||
|   pic_defun(pic, "jiffies-per-second", pic_jiffies_per_second); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki