//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    [SmokeClass("QBitArray")]
    public class QBitArray : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected QBitArray(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QBitArray), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QBitArray() {
            staticInterceptor = new SmokeInvocation(typeof(QBitArray), null);
        }
        // QByteArray::DataPtr& data_ptr(); >>>> NOT CONVERTED
        public QBitArray() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QBitArray", "QBitArray()", typeof(void));
        }
        public QBitArray(int size, bool val) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QBitArray$$", "QBitArray(int, bool)", typeof(void), typeof(int), size, typeof(bool), val);
        }
        public QBitArray(int size) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QBitArray$", "QBitArray(int)", typeof(void), typeof(int), size);
        }
        public QBitArray(QBitArray other) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QBitArray#", "QBitArray(const QBitArray&)", typeof(void), typeof(QBitArray), other);
        }
        public int Size() {
            return (int) interceptor.Invoke("size", "size() const", typeof(int));
        }
        public int Count() {
            return (int) interceptor.Invoke("count", "count() const", typeof(int));
        }
        public int Count(bool on) {
            return (int) interceptor.Invoke("count$", "count(bool) const", typeof(int), typeof(bool), on);
        }
        public bool IsEmpty() {
            return (bool) interceptor.Invoke("isEmpty", "isEmpty() const", typeof(bool));
        }
        public bool IsNull() {
            return (bool) interceptor.Invoke("isNull", "isNull() const", typeof(bool));
        }
        public void Resize(int size) {
            interceptor.Invoke("resize$", "resize(int)", typeof(void), typeof(int), size);
        }
        public void Detach() {
            interceptor.Invoke("detach", "detach()", typeof(void));
        }
        public bool IsDetached() {
            return (bool) interceptor.Invoke("isDetached", "isDetached() const", typeof(bool));
        }
        public void Clear() {
            interceptor.Invoke("clear", "clear()", typeof(void));
        }
        public bool TestBit(int i) {
            return (bool) interceptor.Invoke("testBit$", "testBit(int) const", typeof(bool), typeof(int), i);
        }
        public void SetBit(int i) {
            interceptor.Invoke("setBit$", "setBit(int)", typeof(void), typeof(int), i);
        }
        public void SetBit(int i, bool val) {
            interceptor.Invoke("setBit$$", "setBit(int, bool)", typeof(void), typeof(int), i, typeof(bool), val);
        }
        public void ClearBit(int i) {
            interceptor.Invoke("clearBit$", "clearBit(int)", typeof(void), typeof(int), i);
        }
        public bool ToggleBit(int i) {
            return (bool) interceptor.Invoke("toggleBit$", "toggleBit(int)", typeof(bool), typeof(int), i);
        }
        public bool At(int i) {
            return (bool) interceptor.Invoke("at$", "at(int) const", typeof(bool), typeof(int), i);
        }
        public override bool Equals(object o) {
            if (!(o is QBitArray)) { return false; }
            return this == (QBitArray) o;
        }
        public override int GetHashCode() {
            return interceptor.GetHashCode();
        }
        public bool Fill(bool val, int size) {
            return (bool) interceptor.Invoke("fill$$", "fill(bool, int)", typeof(bool), typeof(bool), val, typeof(int), size);
        }
        public bool Fill(bool val) {
            return (bool) interceptor.Invoke("fill$", "fill(bool)", typeof(bool), typeof(bool), val);
        }
        public void Fill(bool val, int first, int last) {
            interceptor.Invoke("fill$$$", "fill(bool, int, int)", typeof(void), typeof(bool), val, typeof(int), first, typeof(int), last);
        }
        public void Truncate(int pos) {
            interceptor.Invoke("truncate$", "truncate(int)", typeof(void), typeof(int), pos);
        }
        ~QBitArray() {
            interceptor.Invoke("~QBitArray", "~QBitArray()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~QBitArray", "~QBitArray()", typeof(void));
        }
        public static QBitArray operator~(QBitArray lhs) {
            return (QBitArray) staticInterceptor.Invoke("operator~", "operator~() const", typeof(QBitArray), typeof(QBitArray), lhs);
        }
        public static bool operator==(QBitArray lhs, QBitArray a) {
            return (bool) staticInterceptor.Invoke("operator==#", "operator==(const QBitArray&) const", typeof(bool), typeof(QBitArray), lhs, typeof(QBitArray), a);
        }
        public static bool operator!=(QBitArray lhs, QBitArray a) {
            return !(bool) staticInterceptor.Invoke("operator==#", "operator==(const QBitArray&) const", typeof(bool), typeof(QBitArray), lhs, typeof(QBitArray), a);
        }
        public static QBitArray operator&(QBitArray arg1, QBitArray arg2) {
            return (QBitArray) staticInterceptor.Invoke("operator&##", "operator&(const QBitArray&, const QBitArray&)", typeof(QBitArray), typeof(QBitArray), arg1, typeof(QBitArray), arg2);
        }
        public static QBitArray operator|(QBitArray arg1, QBitArray arg2) {
            return (QBitArray) staticInterceptor.Invoke("operator|##", "operator|(const QBitArray&, const QBitArray&)", typeof(QBitArray), typeof(QBitArray), arg1, typeof(QBitArray), arg2);
        }
        public static QBitArray operator^(QBitArray arg1, QBitArray arg2) {
            return (QBitArray) staticInterceptor.Invoke("operator^##", "operator^(const QBitArray&, const QBitArray&)", typeof(QBitArray), typeof(QBitArray), arg1, typeof(QBitArray), arg2);
        }
    }
}
