add pic_str_new_fill
This commit is contained in:
		
							parent
							
								
									349d7f1799
								
							
						
					
					
						commit
						9f240c191c
					
				|  | @ -20,6 +20,7 @@ struct pic_string { | ||||||
| 
 | 
 | ||||||
| pic_str *pic_str_new(pic_state *, const char * /* nullable */, size_t); | pic_str *pic_str_new(pic_state *, const char * /* nullable */, size_t); | ||||||
| pic_str *pic_str_new_cstr(pic_state *, const char *); | pic_str *pic_str_new_cstr(pic_state *, const char *); | ||||||
|  | pic_str *pic_str_new_fill(pic_state *, size_t, char); | ||||||
| 
 | 
 | ||||||
| char pic_str_ref(pic_state *, pic_str *, size_t); | char pic_str_ref(pic_state *, pic_str *, size_t); | ||||||
| pic_str *pic_strcat(pic_state *, pic_str *, pic_str *); | pic_str *pic_strcat(pic_state *, pic_str *, pic_str *); | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								src/string.c
								
								
								
								
							
							
						
						
									
										29
									
								
								src/string.c
								
								
								
								
							|  | @ -33,6 +33,21 @@ pic_str_new_cstr(pic_state *pic, const char *cstr) | ||||||
|   return pic_str_new(pic, cstr, strlen(cstr)); |   return pic_str_new(pic, cstr, strlen(cstr)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | pic_str * | ||||||
|  | pic_str_new_fill(pic_state *pic, size_t len, char fill) | ||||||
|  | { | ||||||
|  |   size_t i; | ||||||
|  |   char *cstr; | ||||||
|  | 
 | ||||||
|  |   cstr = (char *)pic_alloc(pic, len + 1); | ||||||
|  |   for (i = 0; i < len; ++i) { | ||||||
|  |     cstr[i] = fill; | ||||||
|  |   } | ||||||
|  |   cstr[len] = '\0'; | ||||||
|  | 
 | ||||||
|  |   return pic_str_new(pic, cstr, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| char | char | ||||||
| pic_str_ref(pic_state *pic, pic_str *str, size_t n) | pic_str_ref(pic_state *pic, pic_str *str, size_t n) | ||||||
| { | { | ||||||
|  | @ -178,18 +193,12 @@ pic_str_string_p(pic_state *pic) | ||||||
| static pic_value | static pic_value | ||||||
| pic_str_make_string(pic_state *pic) | pic_str_make_string(pic_state *pic) | ||||||
| { | { | ||||||
|   int k, i; |   int len; | ||||||
|   char c = ' ', *cstr; |   char c = ' '; | ||||||
| 
 | 
 | ||||||
|   pic_get_args(pic, "i|c", &k, &c); |   pic_get_args(pic, "i|c", &len, &c); | ||||||
| 
 | 
 | ||||||
|   cstr = (char *)pic_alloc(pic, k + 1); |   return pic_obj_value(pic_str_new_fill(pic, len, c)); | ||||||
|   for (i = 0; i < k; ++i) { |  | ||||||
|     cstr[i] = c; |  | ||||||
|   } |  | ||||||
|   cstr[k] = '\0'; |  | ||||||
| 
 |  | ||||||
|   return pic_obj_value(pic_str_new(pic, cstr, k)); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static pic_value | static pic_value | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki