| 1 | #ifndef DATA_LANG_J8_LIBC_H
 | 
| 2 | #define DATA_LANG_J8_LIBC_H
 | 
| 3 | 
 | 
| 4 | typedef struct j8_buf_t {
 | 
| 5 |   unsigned char* data;
 | 
| 6 |   int len;
 | 
| 7 | } j8_buf_t;
 | 
| 8 | 
 | 
| 9 | // Places an encoded string in out_buf.
 | 
| 10 | //
 | 
| 11 | //   Caller must free the returned buffer after using it.
 | 
| 12 | //   The buffer has a len, and data is NUL-terminated.  These will match
 | 
| 13 | //   because encoded J8 strings can't have NUL bytes in them.
 | 
| 14 | //
 | 
| 15 | // Example:
 | 
| 16 | //   j8_buf_t result = {0};
 | 
| 17 | //   EncodeString({"foo", 3}, &result, 1);
 | 
| 18 | //
 | 
| 19 | //   printf("%s\n", result.data);
 | 
| 20 | //   free(result.data);
 | 
| 21 | //
 | 
| 22 | // There are no encoding errors -- this is part of the J8 design!
 | 
| 23 | 
 | 
| 24 | void J8EncodeString(j8_buf_t in_buf, j8_buf_t* out_buf, int j8_fallback);
 | 
| 25 | 
 | 
| 26 | void ShellEncodeString(j8_buf_t in_buf, j8_buf_t* out_buf, int ysh_fallback);
 | 
| 27 | 
 | 
| 28 | #endif  // DATA_LANG_J8_LIBC_H
 |