Differences From Artifact [9190d7a166]:
- File
src/OFString+JSONValue.m
— part of check-in
[c8a5922af2]
at
2012-02-24 20:38:35
on branch 0.6
— Don't use OF_INLINE where the function contains a @try block.
Doing so does not work if exceptions are SJLJ. (user: js, size: 8611) [annotate] [blame] [check-ins using] [more...]
To Artifact [8ad19cb41d]:
- File
src/OFString+JSONValue.m
— part of check-in
[54f80aba7a]
at
2012-06-04 22:32:38
on branch trunk
— Initial JSON5 support.
Supported so far:
* comments
* single quoted strings (user: js, size: 8658) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
126 127 128 129 130 131 132 133 134 135 136 137 138 139 | } static inline OFString* parseString(const char *restrict *pointer, const char *stop) { char *buffer; size_t i = 0; if (++(*pointer) + 1 >= stop) return nil; if ((buffer = malloc(stop - *pointer)) == NULL) return nil; | > | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | } static inline OFString* parseString(const char *restrict *pointer, const char *stop) { char *buffer; size_t i = 0; char delimiter = **pointer; if (++(*pointer) + 1 >= stop) return nil; if ((buffer = malloc(stop - *pointer)) == NULL) return nil; |
︙ | ︙ | |||
232 233 234 235 236 237 238 | break; default: free(buffer); return nil; } /* End of string found */ | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | break; default: free(buffer); return nil; } /* End of string found */ } else if (**pointer == delimiter) { OFString *ret; @try { ret = [OFString stringWithUTF8String: buffer length: i]; } @finally { free(buffer); |
︙ | ︙ | |||
396 397 398 399 400 401 402 403 404 405 406 407 408 409 | skipWhitespacesAndComments(pointer, stop); if (*pointer >= stop) return nil; switch (**pointer) { case '"': return parseString(pointer, stop); case '[': return parseArray(pointer, stop); case '{': return parseDictionary(pointer, stop); case 't': if (*pointer + 3 >= stop) | > | 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 | skipWhitespacesAndComments(pointer, stop); if (*pointer >= stop) return nil; switch (**pointer) { case '"': case '\'': return parseString(pointer, stop); case '[': return parseArray(pointer, stop); case '{': return parseDictionary(pointer, stop); case 't': if (*pointer + 3 >= stop) |
︙ | ︙ |