add pic_intern_cstr
This commit is contained in:
		
							parent
							
								
									0fad63f22a
								
							
						
					
					
						commit
						0c382c2bdb
					
				|  | @ -13,8 +13,10 @@ void pic_free(pic_state *, void *); | |||
| pic_state *pic_open(); | ||||
| void pic_close(pic_state *); | ||||
| 
 | ||||
| pic_value pic_cons(pic_state *pic, pic_value, pic_value); | ||||
| pic_value pic_car(pic_state *pic, pic_value); | ||||
| pic_value pic_cdr(pic_state *pic, pic_value); | ||||
| pic_value pic_cons(pic_state *, pic_value, pic_value); | ||||
| pic_value pic_car(pic_state *, pic_value); | ||||
| pic_value pic_cdr(pic_state *, pic_value); | ||||
| 
 | ||||
| pic_value pic_intern_cstr(pic_state *, const char *); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -0,0 +1,19 @@ | |||
| #include <string.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| 
 | ||||
| pic_value | ||||
| pic_intern_cstr(pic_state *pic, char *name) | ||||
| { | ||||
|   struct pic_symbol *sym; | ||||
|   size_t len; | ||||
| 
 | ||||
|   sym = (struct pic_symbol*)pic_gc_alloc(pic, sizeof(struct pic_symbol), PIC_TT_SYMBOL); | ||||
| 
 | ||||
|   /* clone name string */ | ||||
|   len = strlen(name); | ||||
|   sym->name = (char *)pic_alloc(pic, len + 1); | ||||
|   strncpy(sym->name, name, len + 1); | ||||
| 
 | ||||
|   return pic_obj_value(sym); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki