Something went wrong. Try again.
javascript for 🐜's, a tiny runtime with big ambitions antjs.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#ifndef ANT_BUILDER_H#define ANT_BUILDER_H
#include "types.h"
#include <stdbool.h>#include <stddef.h>
struct map_entry;struct set_entry;
static constexpr size_t ANT_INSPECT_MAX_ENTRIES = 100;static constexpr int ANT_INSPECT_MAX_DEPTH = 2;
typedef struct { ant_t *js; char *buf; size_t len; size_t n; bool growable; bool inline_mode; bool bare_mode; bool first; bool closed; bool did_indent; const char *error_stack; size_t error_stack_len;} js_inspect_builder_t;
static inline char *fixed_buf_write_ptr(char *buf, size_t len, size_t n, size_t *avail) { if (!buf || len == 0) { if (avail) *avail = 0; return NULL; }
size_t write_index = n < len ? n : len - 1; if (avail) *avail = len - write_index; return buf + write_index;}
void js_inspect_builder_init_fixed(js_inspect_builder_t *builder, ant_t *js, char *buf, size_t len, size_t initial_n);bool js_inspect_builder_init_dynamic(js_inspect_builder_t *builder, ant_t *js, size_t initial_cap);void js_inspect_builder_dispose(js_inspect_builder_t *builder);bool js_inspect_tagged_header(js_inspect_builder_t *builder, ant_value_t obj, const char *tag, size_t tag_len);bool js_inspect_object_body(js_inspect_builder_t *builder, ant_value_t obj);bool js_inspect_field(js_inspect_builder_t *builder, const char *key, ant_value_t value);bool js_inspect_close(js_inspect_builder_t *builder);bool js_inspect_trailing_props(js_inspect_builder_t *builder, ant_value_t obj);bool js_inspect_hidden_props(js_inspect_builder_t *builder, ant_value_t obj);bool js_inspect_hidden_trailer(js_inspect_builder_t *builder, ant_value_t obj);int js_inspect_hidden_count(ant_t *js, ant_value_t obj, bool *has_nested);bool js_inspect_error(js_inspect_builder_t *builder, ant_value_t obj);
__attribute__((format(printf, 2, 3)))bool js_inspect_header(js_inspect_builder_t *builder, const char *fmt, ...);
__attribute__((format(printf, 3, 4)))bool js_inspect_header_for(js_inspect_builder_t *builder, ant_value_t obj, const char *fmt, ...);
ant_value_t js_inspect_builder_result(js_inspect_builder_t *builder);bool js_inspect_plain_header(js_inspect_builder_t *builder, ant_value_t obj);bool js_inspect_map(js_inspect_builder_t *builder, ant_value_t obj, struct map_entry **map);bool js_inspect_set(js_inspect_builder_t *builder, ant_value_t obj, struct set_entry **set);
#endif