84 while (i < fcurve_array_len) {
86 for (i_end = i + 1; i_end < fcurve_array_len; i_end++) {
88 if (fcurve_array[i]->array_index > fcurve_array[i_end]->array_index) {
89 BLI_assert(!
STREQ(fcurve_array[i]->rna_path, fcurve_array[i_end]->rna_path));
92 if (!
STREQ(fcurve_array[i]->rna_path, fcurve_array[i_end]->rna_path)) {
99 span->
len = i_end - i;
122 const char *rna_path,
123 const int array_index)
132 for (
int i = 0; i <
len; i++) {
133 if (fcurve[i]->array_index == array_index) {
137 if (fcurve[i]->array_index > array_index) {
145 const char *rna_path,
147 int fcurve_result_len)
149 memset(fcurve_result, 0x0,
sizeof(*fcurve_result) * fcurve_result_len);
159 for (
int i = 0; i <
len; i++) {
161 if ((
uint)fcurve[i]->array_index > (
uint)fcurve_result_len) {
GHash * BLI_ghash_str_new_ex(const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Read Guarded memory(de)allocation.
struct FCurvePathCache * BKE_fcurve_pathcache_create(ListBase *list)
FCurve * BKE_fcurve_pathcache_find(struct FCurvePathCache *fcache, const char *rna_path, const int array_index)
int BKE_fcurve_pathcache_find_array(struct FCurvePathCache *fcache, const char *rna_path, FCurve **fcurve_result, int fcurve_result_len)
static int fcurve_cmp_for_cache(const void *fcu_a_p, const void *fcu_b_p)
void BKE_fcurve_pathcache_destroy(struct FCurvePathCache *fcache)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
GHash * span_from_rna_path
struct FCurvePathCache_Span * span_table