On 12/9/19 4:29 PM, Gabriel Ivăncescu wrote:
+enum memid_type {
- memid_invalid,
- memid_inherited,
- memid_func,
- memid_var
+};
+static inline enum memid_type get_memid_type(const ScriptTypeInfo *typeinfo, MEMBERID memid) +{
- if (memid <= 0) return memid_invalid;
- if (memid & DISPID_FUNCTION_MASK)
- {
memid &= ~DISPID_FUNCTION_MASK;
if (memid >= typeinfo->func_memid_map_cnt)
return memid_inherited;
if (typeinfo->func_memid_map[memid] == ~0)
return memid_invalid;
return memid_func;
- }
- if (memid > typeinfo->num_vars)
return memid_inherited;
- return memid_var;
+}
It seems that could let default ITypeInfo handle invalid IDs and you could just forward all calls to unknown IDs to it. You don't need a new map for that, you could just use a binary search on funcs.
Thanks,
Jacek