inline definitions for pic_*_value()s
This commit is contained in:
		
							parent
							
								
									173d4dcf07
								
							
						
					
					
						commit
						f29e7b9cf1
					
				|  | @ -143,17 +143,17 @@ struct pic_blob; | ||||||
| enum pic_tt pic_type(pic_value); | enum pic_tt pic_type(pic_value); | ||||||
| const char *pic_type_repr(enum pic_tt); | const char *pic_type_repr(enum pic_tt); | ||||||
| 
 | 
 | ||||||
| pic_value pic_nil_value(); | inline pic_value pic_nil_value(); | ||||||
| pic_value pic_true_value(); | inline pic_value pic_true_value(); | ||||||
| pic_value pic_false_value(); | inline pic_value pic_false_value(); | ||||||
| pic_value pic_bool_value(bool); | inline pic_value pic_bool_value(bool); | ||||||
| pic_value pic_undef_value(); | inline pic_value pic_undef_value(); | ||||||
| pic_value pic_obj_value(void *); | inline pic_value pic_obj_value(void *); | ||||||
| pic_value pic_float_value(double); | inline pic_value pic_float_value(double); | ||||||
| pic_value pic_int_value(int); | inline pic_value pic_int_value(int); | ||||||
| pic_value pic_symbol_value(pic_sym); | inline pic_value pic_symbol_value(pic_sym); | ||||||
| pic_value pic_char_value(char c); | inline pic_value pic_char_value(char c); | ||||||
| pic_value pic_none_value(); | inline pic_value pic_none_value(); | ||||||
| 
 | 
 | ||||||
| #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) | ||||||
|  | @ -178,6 +178,142 @@ pic_value pic_none_value(); | ||||||
| bool pic_eq_p(pic_value, pic_value); | bool pic_eq_p(pic_value, pic_value); | ||||||
| bool pic_eqv_p(pic_value, pic_value); | bool pic_eqv_p(pic_value, pic_value); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_nil_value() | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_NIL); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_true_value() | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_TRUE); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_false_value() | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_FALSE); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_bool_value(bool b) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, b ? PIC_VTYPE_TRUE : PIC_VTYPE_FALSE); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #if PIC_NAN_BOXING | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_obj_value(void *ptr) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_HEAP); | ||||||
|  |   v.u.data = (void*)((long long)v.u.data | ((long long)ptr)); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_float_value(double f) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   if (f != f) { | ||||||
|  |     v.u.type_ = 0x7ff80000; | ||||||
|  |     v.u.i = 0; | ||||||
|  |   } else { | ||||||
|  |     v.u.f = f; | ||||||
|  |   } | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_obj_value(void *ptr) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_HEAP); | ||||||
|  |   v.u.data = ptr; | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_float_value(double f) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_FLOAT); | ||||||
|  |   v.u.f = f; | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_int_value(int i) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_INT); | ||||||
|  |   v.u.i = i; | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_symbol_value(pic_sym sym) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_SYMBOL); | ||||||
|  |   v.u.sym = sym; | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_char_value(char c) | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_CHAR); | ||||||
|  |   v.u.c = c; | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_undef_value() | ||||||
|  | { | ||||||
|  |   pic_value v; | ||||||
|  | 
 | ||||||
|  |   pic_init_value(v, PIC_VTYPE_UNDEF); | ||||||
|  |   return v; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | inline pic_value | ||||||
|  | pic_none_value() | ||||||
|  | { | ||||||
|  | #if PIC_NONE_IS_FALSE | ||||||
|  |   return pic_false_value(); | ||||||
|  | #else | ||||||
|  | # error enable PIC_NONE_IS_FALSE | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #if defined(__cplusplus) | #if defined(__cplusplus) | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
							
								
								
									
										135
									
								
								src/value.c
								
								
								
								
							
							
						
						
									
										135
									
								
								src/value.c
								
								
								
								
							|  | @ -91,141 +91,6 @@ pic_type_repr(enum pic_tt tt) | ||||||
|   abort(); |   abort(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pic_value |  | ||||||
| pic_nil_value() |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_NIL); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_true_value() |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_TRUE); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_false_value() |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_FALSE); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_bool_value(bool b) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, b ? PIC_VTYPE_TRUE : PIC_VTYPE_FALSE); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #if PIC_NAN_BOXING |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_obj_value(void *ptr) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_HEAP); |  | ||||||
|   v.u.data = (void*)((long long)v.u.data | ((long long)ptr)); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_float_value(double f) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   if (f != f) { |  | ||||||
|     v.u.type_ = 0x7ff80000; |  | ||||||
|     v.u.i = 0; |  | ||||||
|   } else { |  | ||||||
|     v.u.f = f; |  | ||||||
|   } |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #else |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_obj_value(void *ptr) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_HEAP); |  | ||||||
|   v.u.data = ptr; |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_float_value(double f) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_FLOAT); |  | ||||||
|   v.u.f = f; |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_int_value(int i) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_INT); |  | ||||||
|   v.u.i = i; |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_symbol_value(pic_sym sym) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_SYMBOL); |  | ||||||
|   v.u.sym = sym; |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_char_value(char c) |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_CHAR); |  | ||||||
|   v.u.c = c; |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_undef_value() |  | ||||||
| { |  | ||||||
|   pic_value v; |  | ||||||
| 
 |  | ||||||
|   pic_init_value(v, PIC_VTYPE_UNDEF); |  | ||||||
|   return v; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pic_value |  | ||||||
| pic_none_value() |  | ||||||
| { |  | ||||||
| #if PIC_NONE_IS_FALSE |  | ||||||
|   return pic_false_value(); |  | ||||||
| #else |  | ||||||
| # error enable PIC_NONE_IS_FALSE |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #if PIC_NAN_BOXING | #if PIC_NAN_BOXING | ||||||
| 
 | 
 | ||||||
| bool | bool | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki