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_strdup(pic_state *, const char *); | ||||||
| char *pic_strndup(pic_state *, const char *, size_t); | 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_file(pic_state *, FILE *, pic_value *); | ||||||
| int pic_parse_cstr(pic_state *, const char *, pic_value *); | int pic_parse_cstr(pic_state *, const char *, pic_value *); | ||||||
|  |  | ||||||
|  | @ -9,6 +9,15 @@ | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #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_cons(pic_state *, pic_value, pic_value); | ||||||
| pic_value pic_car(pic_state *, pic_value); | pic_value pic_car(pic_state *, pic_value); | ||||||
| pic_value pic_cdr(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 |   PIC_OBJECT_HEADER | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| typedef struct pic_pair { | struct pic_pair; | ||||||
|   PIC_OBJECT_HEADER | struct pic_string; | ||||||
|   pic_value car; | struct pic_vector; | ||||||
|   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_proc; | struct pic_proc; | ||||||
| struct pic_port; | struct pic_port; | ||||||
| struct pic_blob; | 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_float(v) ((v).u.f) | ||||||
| #define pic_int(v) ((v).u.i) | #define pic_int(v) ((v).u.i) | ||||||
| #define pic_sym(v) ((v).u.sym) | #define pic_sym(v) ((v).u.sym) | ||||||
| #define pic_char(v) ((v).u.c) | #define pic_char(v) ((v).u.c) | ||||||
| 
 | 
 | ||||||
| #define pic_obj_ptr(o) ((struct pic_object *)pic_ptr(o)) | #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_nil_p(v) (pic_vtype(v) == PIC_VTYPE_NIL) | ||||||
| #define pic_true_p(v) (pic_vtype(v) == PIC_VTYPE_TRUE) | #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_int_p(v) (pic_vtype(v) == PIC_VTYPE_INT) | ||||||
| #define pic_sym_p(v) (pic_vtype(v) == PIC_VTYPE_SYMBOL) | #define pic_sym_p(v) (pic_vtype(v) == PIC_VTYPE_SYMBOL) | ||||||
| #define pic_char_p(v) (pic_vtype(v) == PIC_VTYPE_CHAR) | #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)) | #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.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| #include "picrin/error.h" | #include "picrin/error.h" | ||||||
| 
 | 
 | ||||||
| const char * | const char * | ||||||
|  | @ -30,7 +31,7 @@ raise(pic_state *pic, struct pic_error *e) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NORETURN static void | 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; |   struct pic_error *e; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								src/gc.c
								
								
								
								
							
							
						
						
									
										3
									
								
								src/gc.c
								
								
								
								
							|  | @ -6,6 +6,9 @@ | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/gc.h" | #include "picrin/gc.h" | ||||||
|  | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
|  | #include "picrin/vector.h" | ||||||
| #include "picrin/irep.h" | #include "picrin/irep.h" | ||||||
| #include "picrin/proc.h" | #include "picrin/proc.h" | ||||||
| #include "picrin/port.h" | #include "picrin/port.h" | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| #include "picrin/proc.h" | #include "picrin/proc.h" | ||||||
| #include "picrin/macro.h" | #include "picrin/macro.h" | ||||||
| #include "picrin/lib.h" | #include "picrin/lib.h" | ||||||
|  |  | ||||||
|  | @ -8,6 +8,8 @@ | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
|  | #include "picrin/vector.h" | ||||||
| #include "picrin/blob.h" | #include "picrin/blob.h" | ||||||
| #include "picrin/parse.h" | #include "picrin/parse.h" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/proc.h" | #include "picrin/proc.h" | ||||||
| #include "picrin/port.h" | #include "picrin/port.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| #include "picrin/blob.h" | #include "picrin/blob.h" | ||||||
| 
 | 
 | ||||||
| pic_value | pic_value | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| #include <string.h> | #include <string.h> | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
| #include "picrin/port.h" | #include "picrin/port.h" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
| #include <math.h> | #include <math.h> | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| 
 | 
 | ||||||
| pic_sym | pic_sym | ||||||
| pic_intern_cstr(pic_state *pic, const char *str) | pic_intern_cstr(pic_state *pic, const char *str) | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
|  | #include "picrin/string.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
| 
 | 
 | ||||||
| static pic_value | static pic_value | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
|  | #include "picrin/vector.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
| 
 | 
 | ||||||
| struct pic_vector * | struct pic_vector * | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								src/vm.c
								
								
								
								
							
							
						
						
									
										2
									
								
								src/vm.c
								
								
								
								
							|  | @ -9,6 +9,8 @@ | ||||||
| 
 | 
 | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
|  | #include "picrin/vector.h" | ||||||
| #include "picrin/proc.h" | #include "picrin/proc.h" | ||||||
| #include "picrin/port.h" | #include "picrin/port.h" | ||||||
| #include "picrin/irep.h" | #include "picrin/irep.h" | ||||||
|  |  | ||||||
|  | @ -5,6 +5,8 @@ | ||||||
| #include "picrin.h" | #include "picrin.h" | ||||||
| #include "picrin/port.h" | #include "picrin/port.h" | ||||||
| #include "picrin/pair.h" | #include "picrin/pair.h" | ||||||
|  | #include "picrin/string.h" | ||||||
|  | #include "picrin/vector.h" | ||||||
| #include "picrin/blob.h" | #include "picrin/blob.h" | ||||||
| #include "picrin/macro.h" | #include "picrin/macro.h" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki