Hash :
58f079f9
Author :
Perle
Date :
2025-09-10T15:35:07
feat: pdf write for string, bool, and null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/* kc3
* Copyright from 2022 to 2025 kmx.io <contact@kmx.io>
*
* Permission is hereby granted to use this software granted the above
* copyright notice and this permission paragraph are included in all
* copies and substantial portions of this software.
*
* THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
* PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
#include "../libkc3/kc3.h"
#include "../libkc3/kc3_main.h"
#include "pdf_write.h"
sw pdf_buf_write_bool (s_buf *buf, bool src)
{
if (src) {
return pdf_buf_write_token(buf, "true");
}
return pdf_buf_write_token(buf, "false");
}
sw pdf_buf_write_null (s_buf *buf)
{
return pdf_buf_write_token(buf, "null");
}
sw pdf_buf_write_string_hex (s_buf *buf, s_str *dest)
{
sw r = 0;
u8 c;
s_buf read_buf = {0};
const char *base = g_kc3_base_hexadecimal.ptr.pchar;
buf_init_str_const(&read_buf, dest);
for (sw i = 0; i < dest->size; i++) {
if ((r = buf_read_u8(&read_buf, &c)) < 0
|| (r = buf_write_u8(buf, base[c & 0xf])) < 0
|| (r = buf_write_u8(buf, base[(c >> 4) & 0xf])) < 0) {
break;
}
}
buf_clean(&read_buf);
return r;
}
sw pdf_buf_write_token(s_buf *buf, const char *pchar)
{
return buf_write_1(buf, pchar);
}