49 state->str_append_fn(
state->user_data,
"\"", 1);
51 uint i_prev = 0, i = 0;
53 const char c =
str[i];
56 state->str_append_fn(
state->user_data,
str + i_prev, i - i_prev);
58 state->str_append_fn(
state->user_data,
"\\\"", 2);
63 state->str_append_fn(
state->user_data,
str + i_prev, i - i_prev);
65 state->str_append_fn(
state->user_data,
"\\\\", 2);
70 state->str_append_fn(
state->user_data,
str + i_prev, i - i_prev);
80 state->str_append_fn(
state->user_data,
str + i_prev, i - i_prev);
82 state->str_append_fn(
state->user_data,
"\"", 1);
89#define STR_APPEND_STR(str) state->str_append_fn(state->user_data, str, uint(strlen(str)))
91#define STR_APPEND_STR_QUOTE(str) idp_str_append_escape(state, str, uint(strlen(str)), true)
92#define STR_APPEND_STR_LEN_QUOTE(str, str_len) idp_str_append_escape(state, str, str_len, true)
94#define STR_APPEND_FMT(format, ...) \
95 state->str_append_fn( \
96 state->user_data, state->buf, uint(SNPRINTF_RLEN(state->buf, format, __VA_ARGS__)))
126 for (
const int *
v =
static_cast<const int *
>(prop->
data.
pointer), *v_end =
v + prop->
len;
137 for (
const float *
v =
static_cast<const float *
>(prop->
data.
pointer),
138 *v_end =
v + prop->
len;
149 for (
const double *
v =
static_cast<const double *
>(prop->
data.
pointer),
150 *v_end =
v + prop->
len;
161 for (
const double *
v =
static_cast<const double *
>(prop->
data.
pointer),
162 *v_end =
v + prop->
len;
179 *v_end =
v + prop->
len;
225#undef STR_APPEND_STR_QUOTE
226#undef STR_APPEND_STR_LEN_QUOTE
231 void (*str_append_fn)(
void *user_data,
const char *
str,
uint str_len),
236 state.user_data = user_data;
250 if (r_len !=
nullptr) {
260 printf(
"IDProperty(%p): ", prop);
284 return "Array (Int)";
286 return "Array (Float)";
288 return "Array (Double)";
290 return "Array (Boolean)";
301 return "Array of Properties";
const IDPropertyUIDataEnumItem * IDP_EnumItemFind(const IDProperty *prop)
const char * BKE_idtype_idcode_to_name_plural(short idcode)
#define BLI_assert_unreachable()
A dynamically sized string ADT.
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_nappend(DynStr *__restrict ds, const char *cstr, int len) ATTR_NONNULL()
int BLI_dynstr_get_len(const DynStr *ds) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
#define LISTBASE_FOREACH(type, var, list)
#define SNPRINTF_RLEN(dst, format,...)
ID and Library types, which are fundamental for SDNA.
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define STR_APPEND_STR_LEN_QUOTE(str, str_len)
const char * IDP_type_str(const eIDPropertyType type, const short sub_type)
#define STR_APPEND_FMT(format,...)
#define STR_APPEND_STR_QUOTE(str)
char * IDP_reprN(const IDProperty *prop, uint *r_len)
static void idp_repr_fn_recursive(ReprState *state, const IDProperty *prop)
static void repr_str(void *user_data, const char *str, uint len)
#define STR_APPEND_STR(str)
void IDP_print(const IDProperty *prop)
void IDP_repr_fn(const IDProperty *prop, void(*str_append_fn)(void *user_data, const char *str, uint str_len), void *user_data)
static void idp_str_append_escape(ReprState *state, const char *str, const uint str_len, bool quote)
void MEM_freeN(void *vmemh)
void(* str_append_fn)(void *user_data, const char *str, uint str_len)