📄 kwqmemarray.h
字号:
/* * Copyright (C) 2003 Apple Computer, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#ifndef QARRAY_H_#define QARRAY_H_#include "KWQDef.h"#include "KWQArrayImpl.h"#ifdef _KWQ_IOSTREAM_#include <ostream>#endiftemplate <class T> class QMemArray {public: QMemArray() : impl(sizeof(T)) { } QMemArray(int i) : impl(sizeof(T), i) { } bool isEmpty() { return impl.size() == 0; } T &at(uint u) { return *(T *)impl.at(u); } const T &at(uint u) const { return *(T *)impl.at(u); } T *data() { return (T *)impl.data(); } const T *data() const { return (T *)impl.data(); } uint size() const { return impl.size(); } uint count() const { return impl.size(); } bool resize(uint size) { return impl.resize(size); } QMemArray<T>& duplicate(const T *data, int size) { impl.duplicate(data, size); return *this; } void detach() { duplicate(data(), size()); } bool fill(const T &item, int size=-1) { return impl.fill(&item, size); } QMemArray<T>& assign(const QMemArray<T> &a) { return *this = a; } T &operator[](int i) { return *(T *)impl.at(i); } const T &operator[](int i) const { return *(T *)impl.at(i); } bool operator==(const QMemArray<T> &a) const { return impl == a.impl; } bool operator!=(const QMemArray<T> &a) const { return !(*this == a); } //operator const T*() const { return data(); } private: KWQArrayImpl impl;};#ifdef _KWQ_IOSTREAM_template<class T>inline std::ostream &operator<<(std::ostream &stream, const QMemArray<T>&a){ stream << "QMemArray: [size: " << a.size() << "; items: "; for (unsigned i = 0; i < a.size(); i++) { stream << a[i]; if (i < a.size() - 1) { stream << ", "; } } stream << "]"; return stream;}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -