//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    using System.Collections.Generic;
    [SmokeClass("QMetaMethod")]
    public class QMetaMethod : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected QMetaMethod(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QMetaMethod), this);
        }
        public enum Access {
            Private = 0,
            Protected = 1,
            Public = 2,
        }
        public enum MethodType {
            Method = 0,
            Signal = 1,
            Slot = 2,
        }
        public enum Attributes {
            Compatibility = 0x1,
            Cloned = 0x2,
            Scriptable = 0x4,
        }
        public QMetaMethod() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QMetaMethod", "QMetaMethod()", typeof(void));
        }
        public string Signature() {
            return (string) interceptor.Invoke("signature", "signature() const", typeof(string));
        }
        public string TypeName() {
            return (string) interceptor.Invoke("typeName", "typeName() const", typeof(string));
        }
        public List<QByteArray> ParameterTypes() {
            return (List<QByteArray>) interceptor.Invoke("parameterTypes", "parameterTypes() const", typeof(List<QByteArray>));
        }
        public List<QByteArray> ParameterNames() {
            return (List<QByteArray>) interceptor.Invoke("parameterNames", "parameterNames() const", typeof(List<QByteArray>));
        }
        public string Tag() {
            return (string) interceptor.Invoke("tag", "tag() const", typeof(string));
        }
        public QMetaMethod.Access access() {
            return (QMetaMethod.Access) interceptor.Invoke("access", "access() const", typeof(QMetaMethod.Access));
        }
        public QMetaMethod.MethodType methodType() {
            return (QMetaMethod.MethodType) interceptor.Invoke("methodType", "methodType() const", typeof(QMetaMethod.MethodType));
        }
        public int attributes() {
            return (int) interceptor.Invoke("attributes", "attributes() const", typeof(int));
        }
        public QMetaObject EnclosingMetaObject() {
            return (QMetaObject) interceptor.Invoke("enclosingMetaObject", "enclosingMetaObject() const", typeof(QMetaObject));
        }
        ~QMetaMethod() {
            interceptor.Invoke("~QMetaMethod", "~QMetaMethod()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~QMetaMethod", "~QMetaMethod()", typeof(void));
        }
    }
}
