#include "r_anal.h"
#include <r_core.h>
+#include <r_vec.h>
#define NAME_BUF_SIZE 64
#define BASE_CLASSES_MAX 32
RecoveryTypeDescriptor *td;
} RecoveryBaseDescriptor;
+R_VEC_TYPE (RVecRecoveryBaseDescriptor, RecoveryBaseDescriptor);
+
typedef struct recovery_complete_object_locator_t {
ut64 addr;
bool valid;
RecoveryTypeDescriptor *td;
rtti_class_hierarchy_descriptor chd;
RList *bcd; // <rtti_base_class_descriptor>
- RVector base_td; // <RecoveryBaseDescriptor>
+ RVecRecoveryBaseDescriptor base_td;
} RecoveryCompleteObjectLocator;
typedef struct rtti_msvc_anal_context_t {
static RecoveryCompleteObjectLocator *recovery_complete_object_locator_new(void) {
RecoveryCompleteObjectLocator *col = R_NEW0 (RecoveryCompleteObjectLocator);
- r_vector_init (&col->base_td, sizeof (RecoveryBaseDescriptor), NULL, NULL);
+ RVecRecoveryBaseDescriptor_init (&col->base_td);
return col;
}
return;
}
r_list_free (col->bcd);
- r_vector_clear (&col->base_td);
+ RVecRecoveryBaseDescriptor_fini (&col->base_td);
free (col);
}
return col;
}
- if (!r_vector_reserve (&col->base_td, (size_t)col->bcd->length)) {
+ if (!RVecRecoveryBaseDescriptor_reserve (&col->base_td, (size_t)col->bcd->length)) {
r_list_free (col->bcd);
col->bcd = NULL;
return NULL;
}
continue;
}
- RecoveryBaseDescriptor *base_desc = r_vector_push (&col->base_td, NULL);
+ RecoveryBaseDescriptor *base_desc = RVecRecoveryBaseDescriptor_emplace_back (&col->base_td);
base_desc->bcd = bcd;
base_desc->td = td;
}
}
}
-static void recovery_apply_bases(RRTTIMSVCAnalContext *context, const char *class_name, RVector *base_descs) {
+static void recovery_apply_bases(RRTTIMSVCAnalContext *context, const char *class_name, RVecRecoveryBaseDescriptor *base_descs) {
RecoveryBaseDescriptor *base_desc;
- r_vector_foreach (base_descs, base_desc) {
+ R_VEC_FOREACH (base_descs, base_desc) {
RecoveryTypeDescriptor *base_td = base_desc->td;
if (!base_td->valid) {
R_LOG_WARN ("Invalid base td");