Exemplo n.º 1
0
        public override int GetScriptVTableOffset(VirtualClassInfo classInfo)
        {
            if (classInfo == BaseType)
            {
                return(0);
            }
            if (Interfaces != null)
            {
                var offset = BaseType is ClassInfo baseApiTypeInfo?baseApiTypeInfo.GetScriptVTableSize(out _) : 0;

                foreach (var interfaceInfo in Interfaces)
                {
                    if (interfaceInfo.Access != AccessLevel.Public)
                    {
                        continue;
                    }
                    if (interfaceInfo == classInfo)
                    {
                        return(offset);
                    }
                    offset += interfaceInfo.GetScriptVTableSize(out _);
                }
            }
            throw new Exception($"Cannot get Script VTable offset for {classInfo} that is not part of {this}");
        }
Exemplo n.º 2
0
 public abstract int GetScriptVTableOffset(VirtualClassInfo classInfo);
Exemplo n.º 3
0
 public override int GetScriptVTableOffset(VirtualClassInfo classInfo)
 {
     return(0);
 }