[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/chid/pythonnet/develop/pythonnet/src/runtime/typemethod.cs [Back]  [Original]

// ==========================================================================
// This software is subject to the provisions of the Zope Public License,
// Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
// WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
// FOR A PARTICULAR PURPOSE.
// ==========================================================================

using System;
using System.Collections;
using System.Reflection;

namespace Python.Runtime {

    //========================================================================
    // Implements a Python type that provides access to CLR object methods.
    //========================================================================

    internal class TypeMethod : MethodObject {

        public TypeMethod(string name, MethodInfo[] info) : 
               base(name, info) {}

        public TypeMethod(string name, MethodInfo[] info, bool allow_threads) :
               base(name, info, allow_threads) { }

        public override IntPtr Invoke(IntPtr ob, IntPtr args, IntPtr kw) {
            MethodInfo mi = this.info[0];
            Object[] arglist = new Object[3];
            arglist[0] = ob;
            arglist[1] = args;
            arglist[2] = kw;

            try {        
                Object inst = null;
                if (ob != IntPtr.Zero) {
                    inst = GetManagedObject(ob);
                }
                return (IntPtr)mi.Invoke(inst, BindingFlags.Default, null, arglist, 
                                 null);
            }
            catch (Exception e) {
                Exceptions.SetError(e);
                return IntPtr.Zero;
            }
        }


    }


}

Web Proxy Viewer  |  New URL  |  Original Page