You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
3.8 KiB
205 lines
3.8 KiB
/* ============================================================
|
|
* Copyright 2003 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
* Copyright 2004 by Tudor Calin <tudor@1xtech.com>
|
|
|
|
* This program is free software; you can redistribute it
|
|
* and/or modify it under the terms of the GNU General
|
|
* Public License as published by the Free Software Foundation;
|
|
* either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* ============================================================ */
|
|
|
|
#ifndef LISTMT_H
|
|
#define LISTMT_H
|
|
|
|
|
|
#include <tqvaluelist.h>
|
|
#include <tqmutex.h>
|
|
|
|
namespace KIPIKameraKlientPlugin
|
|
{
|
|
|
|
template<class Type> class MTList {
|
|
|
|
public:
|
|
typedef typename TQValueList<Type>::const_iterator const_iterator_type;
|
|
|
|
MTList() {
|
|
}
|
|
|
|
~MTList() {
|
|
|
|
flush();
|
|
}
|
|
|
|
MTList(const MTList<Type>& origList) {
|
|
|
|
mutex_.lock();
|
|
|
|
list_.clear();
|
|
MTList<Type> &ref = const_cast<MTList<Type>&> (origList); // get rid of const
|
|
|
|
const_iterator_type iter;
|
|
for (iter = ref.begin(); iter != ref.end(); ++iter)
|
|
list_.push_back(*iter);
|
|
|
|
mutex_.unlock();
|
|
|
|
}
|
|
|
|
MTList(const TQValueList<Type>& origList) {
|
|
mutex_.lock();
|
|
list_.clear();
|
|
const_iterator_type iter;
|
|
for (iter = origList.begin(); iter != origList.end(); ++iter) {
|
|
list_.push_back(*iter);
|
|
}
|
|
mutex_.unlock();
|
|
}
|
|
|
|
|
|
MTList& operator=(const MTList<Type>& origList) {
|
|
|
|
mutex_.lock();
|
|
|
|
if (this != &origList) {
|
|
|
|
list_.clear();
|
|
MTList<Type> &ref = const_cast<MTList<Type>&> (origList); // get rid of const
|
|
|
|
const_iterator_type iter;
|
|
for (iter = ref.begin(); iter != ref.end(); ++iter)
|
|
list_.push_back(*iter);
|
|
|
|
}
|
|
|
|
mutex_.unlock();
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
bool isEmpty() {
|
|
|
|
mutex_.lock();
|
|
bool empty = list_.empty();
|
|
mutex_.unlock();
|
|
return empty;
|
|
}
|
|
|
|
int count() {
|
|
|
|
mutex_.lock();
|
|
int num = list_.count();
|
|
mutex_.unlock();
|
|
return num;
|
|
}
|
|
|
|
|
|
|
|
void flush() {
|
|
|
|
mutex_.lock();
|
|
list_.clear();
|
|
mutex_.unlock();
|
|
}
|
|
|
|
void push_front(const Type& t) {
|
|
|
|
mutex_.lock();
|
|
list_.push_front(t);
|
|
mutex_.unlock();
|
|
}
|
|
|
|
void push_back(const Type& t) {
|
|
|
|
mutex_.lock();
|
|
list_.push_back(t);
|
|
mutex_.unlock();
|
|
}
|
|
|
|
void pop_front() {
|
|
|
|
mutex_.lock();
|
|
list_.pop_front();
|
|
mutex_.unlock();
|
|
}
|
|
|
|
void pop_back() {
|
|
|
|
mutex_.lock();
|
|
list_.pop_back();
|
|
mutex_.unlock();
|
|
}
|
|
|
|
void append(const Type& t) {
|
|
|
|
mutex_.lock();
|
|
list_.append(t);
|
|
mutex_.unlock();
|
|
|
|
}
|
|
|
|
Type first() {
|
|
|
|
mutex_.lock();
|
|
Type t(list_.first());
|
|
mutex_.unlock();
|
|
return t;
|
|
}
|
|
|
|
Type last() {
|
|
|
|
mutex_.lock();
|
|
Type t(list_.last());
|
|
mutex_.unlock();
|
|
return t;
|
|
}
|
|
|
|
Type operator[](int i) {
|
|
|
|
mutex_.lock();
|
|
Type t(list_[i]);
|
|
mutex_.unlock();
|
|
return t;
|
|
}
|
|
|
|
const_iterator_type begin() {
|
|
|
|
mutex_.lock();
|
|
const_iterator_type iter;
|
|
iter = list_.begin();
|
|
mutex_.unlock();
|
|
return iter;
|
|
|
|
}
|
|
|
|
const_iterator_type end() {
|
|
|
|
mutex_.lock();
|
|
const_iterator_type iter;
|
|
iter = list_.end();
|
|
mutex_.unlock();
|
|
return iter;
|
|
|
|
}
|
|
|
|
|
|
private:
|
|
|
|
TQValueList<Type> list_;
|
|
TQMutex mutex_;
|
|
|
|
};
|
|
|
|
} // NameSpace KIPIKameraKlientPlugin
|
|
|
|
#endif
|
|
|