{ p_parent = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid ); }
assert( NULL != p_parent );
- // Alloc ObjectInfo ---
- p_objinfo = ObjectInfo_AllocObjectInfo( p_pginfo );
- if( NULL == p_objinfo ) {
- i_result = -0x01;
- goto goto_ObjectInfo_InsetObject_post;
- }
-
- p_objinfo->addr.ptr_addr.value = ptr_value;
- p_objinfo->addr.qw_size = qw_size;
- p_objinfo->b_type = b_type;
-
// Search ObjectInfo Inset Location. (Address Order)*****************
p_objnow = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
assert( NULL != p_objnow );
if( ptr_value == p_objnow->addr.ptr_addr.value ) {
if( qw_size > p_objnow->addr.qw_size )
{ break; }
- else if( qw_size <= p_objnow->addr.qw_size ) {
+ else if( qw_size < p_objnow->addr.qw_size ) {
if( b_type < p_objnow->b_type ) { break; }
}
+ else { // qw_size == p_objnow->addr.qw_size
+ if( b_type < p_objnow->b_type ) { break; }
+
+ if( OBJINFO_INSETMODE_CHKNAME & b_mode ) {
+ if( b_type == p_objnow->b_type ) {
+
+ }
+ }
+ }
}
else if( ptr_value < p_objnow->addr.ptr_addr.value ) { break; }
? OBJINFO( p_pginfo, p_objnow->addrlink.i_next_id ) : NULL );
}while( (NULL != p_objnow) && (p_objnow != p_objprev) );
+ // Alloc ObjectInfo ---
+ p_objinfo = ObjectInfo_AllocObjectInfo( p_pginfo );
+ if( NULL == p_objinfo ) {
+ i_result = -0x01;
+ goto goto_ObjectInfo_InsetObject_post;
+ }
+
+ p_objinfo->addr.ptr_addr.value = ptr_value;
+ p_objinfo->addr.qw_size = qw_size;
+ p_objinfo->b_type = b_type;
+
// Set Address Order Link Info.--------------------------------------
p_objinfo->addrlink.i_next_id = ((NULL != p_objnow) ? p_objnow->i_id : NO_OBJ);
p_objinfo->addrlink.i_prev_id = ((NULL != p_objprev) ? p_objprev->i_id : NO_OBJ);
#define OBJINFO_INSETMODE_PUT 0x00
#define OBJINFO_INSETMODE_INSET 0x01 // bit 0
#define OBJINFO_INSETMODE_ADOPT 0x02 // bit 1
+#define OBJINFO_INSETMODE_CHKNAME 0x04 // bit 2
LIBGOBLIN_OBJINFO_EXTERN
LibGoblin_ObjectInfo *ObjectInfo_InsetObject(
LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size,