Пример #1
0
        // returns the cached interface for any supporting (IObject-based) class
        public static SGSClassInfo GetClassInfo(Context ctx, Type type)
        {
            SGSClassInfo cinfo;

            if (ctx.GetEngine()._sgsClassInfo.TryGetValue(type, out cinfo))
            {
                return(cinfo);
            }

            NI.OC_Self      d_destruct, d_gcmark, d_getindex, d_setindex, d_serialize, d_call, d_expr;
            NI.OC_SlPr      d_convert, d_dump, d_getnext;
            NI.ObjInterface oi = new NI.ObjInterface()
            {
                destruct = d_destruct = new NI.OC_Self(_sgsDestruct),
                gcmark   = d_gcmark = new NI.OC_Self(_sgsGCMark),

                getindex = d_getindex = new NI.OC_Self(_sgsGetIndex),
                setindex = d_setindex = new NI.OC_Self(_sgsSetIndex),

                convert   = d_convert = new NI.OC_SlPr(_sgsConvert),
                serialize = d_serialize = new NI.OC_Self(_sgsSerialize),
                dump      = d_dump = new NI.OC_SlPr(_sgsDump),
                getnext   = d_getnext = new NI.OC_SlPr(_sgsGetNext),

                call = d_call = new NI.OC_Self(_sgsCall),
                expr = d_expr = new NI.OC_Self(_sgsExpr),
            };

            cinfo = new SGSClassInfo()
            {
                iface       = AllocInterface(oi, type.Name),
                props       = _ReadClassProps(ctx, type, false),
                d_destruct  = d_destruct,
                d_gcmark    = d_gcmark,
                d_getindex  = d_getindex,
                d_setindex  = d_setindex,
                d_convert   = d_convert,
                d_serialize = d_serialize,
                d_dump      = d_dump,
                d_call      = d_call,
            };
            ctx.GetEngine()._sgsClassInfo.Add(type, cinfo);
            return(cinfo);
        }
Пример #2
0
        // returns the cached interface for any supporting (IObject-based) class
        public static SGSClassInfo GetClassInfo( Context ctx, Type type )
        {
            SGSClassInfo cinfo;
            if( ctx.GetEngine()._sgsClassInfo.TryGetValue( type, out cinfo ) )
                return cinfo;

            NI.OC_Self d_destruct, d_gcmark, d_getindex, d_setindex, d_serialize, d_call, d_expr;
            NI.OC_SlPr d_convert, d_dump, d_getnext;
            NI.ObjInterface oi = new NI.ObjInterface()
            {
                destruct = d_destruct = new NI.OC_Self( _sgsDestruct ),
                gcmark = d_gcmark = new NI.OC_Self( _sgsGCMark ),

                getindex = d_getindex = new NI.OC_Self( _sgsGetIndex ),
                setindex = d_setindex = new NI.OC_Self( _sgsSetIndex ),

                convert = d_convert = new NI.OC_SlPr( _sgsConvert ),
                serialize = d_serialize = new NI.OC_Self( _sgsSerialize ),
                dump = d_dump = new NI.OC_SlPr( _sgsDump ),
                getnext = d_getnext = new NI.OC_SlPr( _sgsGetNext ),

                call = d_call = new NI.OC_Self( _sgsCall ),
                expr = d_expr = new NI.OC_Self( _sgsExpr ),
            };

            cinfo = new SGSClassInfo()
            {
                iface = AllocInterface( oi, type.Name ),
                props = _ReadClassProps( ctx, type, false ),
                d_destruct = d_destruct,
                d_gcmark = d_gcmark,
                d_getindex = d_getindex,
                d_setindex = d_setindex,
                d_convert = d_convert,
                d_serialize = d_serialize,
                d_dump = d_dump,
                d_call = d_call,
            };
            ctx.GetEngine()._sgsClassInfo.Add( type, cinfo );
            return cinfo;
        }