示例#1
0
        private AbcInstance BuildAssetInstance(AbcMultiname name, AbcMultiname superName)
        {
            var superType = FindAssetSuperType(superName);

            if (superType == null)
            {
                throw Errors.Type.UnableToFind.CreateException(superName.FullName);
            }

            //TODO: Check existance of instance

            var instance = new AbcInstance(true)
            {
                Name               = name,
                BaseTypeName       = superName,
                Flags              = (AbcClassFlags.Sealed | AbcClassFlags.ProtectedNamespace),
                ProtectedNamespace = Abc.DefineProtectedNamespace(name.NameString),
                Initializer        = Abc.DefineMethod(
                    Sig.@void(),
                    code =>
                {
                    code.PushThisScope();
                    code.ConstructSuper();
                    code.ReturnVoid();
                }),
                BaseInstance = superType,
                Class        = { Initializer = Abc.DefineMethod(
                                     Sig.global(null),
                                     code =>
                    {
                        if (true)
                        {
                            code.PushThisScope();
                        }
                        code.ReturnVoid();
                    }) }
            };

            Abc.AddInstance(instance);

            return(instance);
        }