move sturct definitions for basic types to type-specific headers respectively
This commit is contained in:
		
							parent
							
								
									a8aa6b2c5e
								
							
						
					
					
						commit
						56f5f4a1f5
					
				|  | @ -164,19 +164,6 @@ bool pic_interned_p(pic_state *, pic_sym); | |||
| 
 | ||||
| char *pic_strdup(pic_state *, const char *); | ||||
| char *pic_strndup(pic_state *, const char *, size_t); | ||||
| pic_str *pic_str_new(pic_state *, const char * /* nullable */, size_t); | ||||
| pic_str *pic_str_new_cstr(pic_state *, const char *); | ||||
| char pic_str_ref(pic_state *, pic_str *, size_t); | ||||
| pic_str *pic_strcat(pic_state *, pic_str *, pic_str *); | ||||
| pic_str *pic_substr(pic_state *, pic_str *, size_t, size_t); | ||||
| 
 | ||||
| pic_value pic_format(pic_state *, const char *, ...); | ||||
| pic_value pic_vformat(pic_state *, const char *, va_list); | ||||
| pic_value pic_vfformat(pic_state *, XFILE *, const char *, va_list); | ||||
| 
 | ||||
| struct pic_vector *pic_vec_new(pic_state *, size_t); | ||||
| struct pic_vector *pic_vec_new_from_list(pic_state *, pic_value); | ||||
| void pic_vec_extend_ip(pic_state *, struct pic_vector *, size_t); | ||||
| 
 | ||||
| int pic_parse_file(pic_state *, FILE *, pic_value *); | ||||
| int pic_parse_cstr(pic_state *, const char *, pic_value *); | ||||
|  |  | |||
|  | @ -9,6 +9,15 @@ | |||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| struct pic_pair { | ||||
|   PIC_OBJECT_HEADER | ||||
|   pic_value car; | ||||
|   pic_value cdr; | ||||
| }; | ||||
| 
 | ||||
| #define pic_pair_p(v) (pic_type(v) == PIC_TT_PAIR) | ||||
| #define pic_pair_ptr(o) ((struct pic_pair *)pic_ptr(o)) | ||||
| 
 | ||||
| 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); | ||||
|  |  | |||
|  | @ -0,0 +1,36 @@ | |||
| /**
 | ||||
|  * See Copyright Notice in picrin.h | ||||
|  */ | ||||
| 
 | ||||
| #ifndef PICRIN_STRING_H__ | ||||
| #define PICRIN_STRING_H__ | ||||
| 
 | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| struct pic_string { | ||||
|   PIC_OBJECT_HEADER | ||||
|   char *str; | ||||
|   size_t len; | ||||
| }; | ||||
| 
 | ||||
| #define pic_str_p(v) (pic_type(v) == PIC_TT_STRING) | ||||
| #define pic_str_ptr(o) ((struct pic_string *)pic_ptr(o)) | ||||
| 
 | ||||
| pic_str *pic_str_new(pic_state *, const char * /* nullable */, size_t); | ||||
| pic_str *pic_str_new_cstr(pic_state *, const char *); | ||||
| 
 | ||||
| char pic_str_ref(pic_state *, pic_str *, size_t); | ||||
| pic_str *pic_strcat(pic_state *, pic_str *, pic_str *); | ||||
| pic_str *pic_substr(pic_state *, pic_str *, size_t, size_t); | ||||
| 
 | ||||
| pic_value pic_format(pic_state *, const char *, ...); | ||||
| pic_value pic_vformat(pic_state *, const char *, va_list); | ||||
| pic_value pic_vfformat(pic_state *, XFILE *, const char *, va_list); | ||||
| 
 | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  | @ -113,37 +113,25 @@ struct pic_object { | |||
|   PIC_OBJECT_HEADER | ||||
| }; | ||||
| 
 | ||||
| typedef struct pic_pair { | ||||
|   PIC_OBJECT_HEADER | ||||
|   pic_value car; | ||||
|   pic_value cdr; | ||||
| } pic_pair; | ||||
| 
 | ||||
| typedef struct pic_string { | ||||
|   PIC_OBJECT_HEADER | ||||
|   char *str; | ||||
|   size_t len; | ||||
| } pic_str; | ||||
| 
 | ||||
| typedef struct pic_vector { | ||||
|   PIC_OBJECT_HEADER | ||||
|   pic_value *data; | ||||
|   size_t len; | ||||
| } pic_vec; | ||||
| struct pic_pair; | ||||
| struct pic_string; | ||||
| struct pic_vector; | ||||
| 
 | ||||
| struct pic_proc; | ||||
| struct pic_port; | ||||
| struct pic_blob; | ||||
| 
 | ||||
| /* set aliases to basic types */ | ||||
| typedef struct pic_pair pic_pair; | ||||
| typedef struct pic_string pic_str; | ||||
| typedef struct pic_vector pic_vec; | ||||
| 
 | ||||
| #define pic_float(v) ((v).u.f) | ||||
| #define pic_int(v) ((v).u.i) | ||||
| #define pic_sym(v) ((v).u.sym) | ||||
| #define pic_char(v) ((v).u.c) | ||||
| 
 | ||||
| #define pic_obj_ptr(o) ((struct pic_object *)pic_ptr(o)) | ||||
| #define pic_pair_ptr(o) ((struct pic_pair *)pic_ptr(o)) | ||||
| #define pic_str_ptr(o) ((struct pic_string *)pic_ptr(o)) | ||||
| #define pic_vec_ptr(o) ((struct pic_vector *)pic_ptr(o)) | ||||
| 
 | ||||
| #define pic_nil_p(v) (pic_vtype(v) == PIC_VTYPE_NIL) | ||||
| #define pic_true_p(v) (pic_vtype(v) == PIC_VTYPE_TRUE) | ||||
|  | @ -153,9 +141,6 @@ struct pic_blob; | |||
| #define pic_int_p(v) (pic_vtype(v) == PIC_VTYPE_INT) | ||||
| #define pic_sym_p(v) (pic_vtype(v) == PIC_VTYPE_SYMBOL) | ||||
| #define pic_char_p(v) (pic_vtype(v) == PIC_VTYPE_CHAR) | ||||
| #define pic_pair_p(v) (pic_type(v) == PIC_TT_PAIR) | ||||
| #define pic_str_p(v) (pic_type(v) == PIC_TT_STRING) | ||||
| #define pic_vec_p(v) (pic_type(v) == PIC_TT_VECTOR) | ||||
| 
 | ||||
| #define pic_test(v) (! pic_false_p(v)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,29 @@ | |||
| /**
 | ||||
|  * See Copyright Notice in picrin.h | ||||
|  */ | ||||
| 
 | ||||
| #ifndef PICRIN_VECTOR_H__ | ||||
| #define PICRIN_VECTOR_H__ | ||||
| 
 | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| struct pic_vector { | ||||
|   PIC_OBJECT_HEADER | ||||
|   pic_value *data; | ||||
|   size_t len; | ||||
| }; | ||||
| 
 | ||||
| #define pic_vec_p(v) (pic_type(v) == PIC_TT_VECTOR) | ||||
| #define pic_vec_ptr(o) ((struct pic_vector *)pic_ptr(o)) | ||||
| 
 | ||||
| struct pic_vector *pic_vec_new(pic_state *, size_t); | ||||
| struct pic_vector *pic_vec_new_from_list(pic_state *, pic_value); | ||||
| void pic_vec_extend_ip(pic_state *, struct pic_vector *, size_t); | ||||
| 
 | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  | @ -8,6 +8,7 @@ | |||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/error.h" | ||||
| 
 | ||||
| const char * | ||||
|  | @ -30,7 +31,7 @@ raise(pic_state *pic, struct pic_error *e) | |||
| } | ||||
| 
 | ||||
| NORETURN static void | ||||
| error(pic_state *pic, struct pic_string *msg, pic_value irrs) | ||||
| error(pic_state *pic, pic_str *msg, pic_value irrs) | ||||
| { | ||||
|   struct pic_error *e; | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										3
									
								
								src/gc.c
								
								
								
								
							
							
						
						
									
										3
									
								
								src/gc.c
								
								
								
								
							|  | @ -6,6 +6,9 @@ | |||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/gc.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/vector.h" | ||||
| #include "picrin/irep.h" | ||||
| #include "picrin/proc.h" | ||||
| #include "picrin/port.h" | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/proc.h" | ||||
| #include "picrin/macro.h" | ||||
| #include "picrin/lib.h" | ||||
|  |  | |||
|  | @ -8,6 +8,8 @@ | |||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/vector.h" | ||||
| #include "picrin/blob.h" | ||||
| #include "picrin/parse.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ | |||
| #include "picrin.h" | ||||
| #include "picrin/proc.h" | ||||
| #include "picrin/port.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/blob.h" | ||||
| 
 | ||||
| pic_value | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
| #include <string.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/port.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ | |||
| #include <math.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/string.h" | ||||
| 
 | ||||
| pic_sym | ||||
| pic_intern_cstr(pic_state *pic, const char *str) | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
| #include <stdlib.h> | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/pair.h" | ||||
| 
 | ||||
| static pic_value | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/vector.h" | ||||
| #include "picrin/pair.h" | ||||
| 
 | ||||
| struct pic_vector * | ||||
|  |  | |||
							
								
								
									
										2
									
								
								src/vm.c
								
								
								
								
							
							
						
						
									
										2
									
								
								src/vm.c
								
								
								
								
							|  | @ -9,6 +9,8 @@ | |||
| 
 | ||||
| #include "picrin.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/vector.h" | ||||
| #include "picrin/proc.h" | ||||
| #include "picrin/port.h" | ||||
| #include "picrin/irep.h" | ||||
|  |  | |||
|  | @ -5,6 +5,8 @@ | |||
| #include "picrin.h" | ||||
| #include "picrin/port.h" | ||||
| #include "picrin/pair.h" | ||||
| #include "picrin/string.h" | ||||
| #include "picrin/vector.h" | ||||
| #include "picrin/blob.h" | ||||
| #include "picrin/macro.h" | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki