| 33 | } |
| 34 | |
| 35 | void UArray_fromVargs_(UArray *self, const char *format, va_list ap) { |
| 36 | while (*format) { |
| 37 | if (*format == '%') { |
| 38 | format++; |
| 39 | |
| 40 | if (*format == 's') { |
| 41 | char *s = va_arg(ap, char *); |
| 42 | if (!s) { |
| 43 | printf("UArray_fromVargs_ missing param"); |
| 44 | return; |
| 45 | } |
| 46 | UArray_appendCString_(self, s); |
| 47 | } else if (*format == 'i' || *format == 'd') { |
| 48 | int i = va_arg(ap, int); |
| 49 | char s[100]; |
| 50 | |
| 51 | snprintf(s, 100, "%i", i); |
| 52 | UArray_appendCString_(self, s); |
| 53 | } else if (*format == 'f') { |
| 54 | double d = va_arg(ap, double); |
| 55 | char s[100]; |
| 56 | |
| 57 | snprintf(s, 100, "%f", d); |
| 58 | UArray_appendCString_(self, s); |
| 59 | } else if (*format == 'p') { |
| 60 | void *p = va_arg(ap, void *); |
| 61 | char s[100]; |
| 62 | |
| 63 | snprintf(s, 100, "%p", p); |
| 64 | UArray_appendCString_(self, s); |
| 65 | } |
| 66 | // new format command for a given number adding spaces |
| 67 | else if (*format == '#') { |
| 68 | int n, i = va_arg(ap, int); |
| 69 | char *s = " "; |
| 70 | |
| 71 | for (n = 0; n < i; n++) { |
| 72 | UArray_appendCString_(self, s); |
| 73 | } |
| 74 | } |
| 75 | } else { |
| 76 | char s[2]; |
| 77 | |
| 78 | snprintf(s, 2, "%c", *format); |
| 79 | UArray_appendCString_(self, s); |
| 80 | } |
| 81 | |
| 82 | format++; |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | UArray *UArray_asNewHexStringUArray(UArray *self) { |
| 87 | size_t i, newSize = self->size * 2; |
no test coverage detected