Small cleanup of duplicated files. AutoLocker and AutoDeleter are already
part of headers/private/shared, Icon-O-Matic used older versions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25720 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
9abdb2222c
commit
722f6c5cd0
@ -64,6 +64,7 @@ for sourceDir in $(sourceDirs) {
|
|||||||
|
|
||||||
# system headers
|
# system headers
|
||||||
UseLibraryHeaders agg expat icon ;
|
UseLibraryHeaders agg expat icon ;
|
||||||
|
UsePrivateHeaders shared ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -292,7 +293,7 @@ Application Icon-O-Matic :
|
|||||||
MainWindow.cpp
|
MainWindow.cpp
|
||||||
Util.cpp
|
Util.cpp
|
||||||
|
|
||||||
: be tracker translation libagg.a libexpat.a
|
: be tracker translation libshared.a libagg.a libexpat.a
|
||||||
|
|
||||||
: Icon-O-Matic.rdef
|
: Icon-O-Matic.rdef
|
||||||
;
|
;
|
||||||
|
@ -1,133 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2001-2006, Haiku.
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* IngoWeinhold <bonefish@cs.tu-berlin.de>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Scope-based automatic deletion of objects/arrays.
|
|
||||||
* ObjectDeleter - deletes an object
|
|
||||||
* ArrayDeleter - deletes an array
|
|
||||||
* MemoryDeleter - free()s malloc()ed memory
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _AUTO_DELETER_H
|
|
||||||
#define _AUTO_DELETER_H
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
namespace BPrivate {
|
|
||||||
|
|
||||||
// AutoDeleter
|
|
||||||
|
|
||||||
template<typename C, typename DeleteFunc>
|
|
||||||
class AutoDeleter {
|
|
||||||
public:
|
|
||||||
inline AutoDeleter()
|
|
||||||
: fObject(NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
inline AutoDeleter(C *object)
|
|
||||||
: fObject(object)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
inline ~AutoDeleter()
|
|
||||||
{
|
|
||||||
fDelete(fObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void SetTo(C *object)
|
|
||||||
{
|
|
||||||
if (object != fObject) {
|
|
||||||
fDelete(fObject);
|
|
||||||
fObject = object;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Unset()
|
|
||||||
{
|
|
||||||
SetTo(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Delete()
|
|
||||||
{
|
|
||||||
SetTo(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline C *Detach()
|
|
||||||
{
|
|
||||||
C *object = fObject;
|
|
||||||
fObject = NULL;
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
C *fObject;
|
|
||||||
DeleteFunc fDelete;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ObjectDeleter
|
|
||||||
|
|
||||||
template<typename C>
|
|
||||||
struct ObjectDelete
|
|
||||||
{
|
|
||||||
inline void operator()(C *object)
|
|
||||||
{
|
|
||||||
delete object;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename C>
|
|
||||||
struct ObjectDeleter : AutoDeleter<C, ObjectDelete<C> >
|
|
||||||
{
|
|
||||||
ObjectDeleter() : AutoDeleter<C, ObjectDelete<C> >() {}
|
|
||||||
ObjectDeleter(C *object) : AutoDeleter<C, ObjectDelete<C> >(object) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ArrayDeleter
|
|
||||||
|
|
||||||
template<typename C>
|
|
||||||
struct ArrayDelete
|
|
||||||
{
|
|
||||||
inline void operator()(C *array)
|
|
||||||
{
|
|
||||||
delete[] array;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename C>
|
|
||||||
struct ArrayDeleter : AutoDeleter<C, ArrayDelete<C> >
|
|
||||||
{
|
|
||||||
ArrayDeleter() : AutoDeleter<C, ArrayDelete<C> >() {}
|
|
||||||
ArrayDeleter(C *array) : AutoDeleter<C, ArrayDelete<C> >(array) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// MemoryDeleter
|
|
||||||
|
|
||||||
struct MemoryDelete
|
|
||||||
{
|
|
||||||
inline void operator()(void *memory)
|
|
||||||
{
|
|
||||||
free(memory);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct MemoryDeleter : AutoDeleter<void, MemoryDelete >
|
|
||||||
{
|
|
||||||
MemoryDeleter() : AutoDeleter<void, MemoryDelete >() {}
|
|
||||||
MemoryDeleter(void *memory) : AutoDeleter<void, MemoryDelete >(memory) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace BPrivate
|
|
||||||
|
|
||||||
using BPrivate::ObjectDeleter;
|
|
||||||
using BPrivate::ArrayDeleter;
|
|
||||||
using BPrivate::MemoryDeleter;
|
|
||||||
|
|
||||||
#endif // _AUTO_DELETER_H
|
|
@ -1,151 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2004-2006, Haiku.
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* IngoWeinhold <bonefish@cs.tu-berlin.de>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Scope-based automatic deletion of objects/arrays.
|
|
||||||
* ObjectDeleter - deletes an object
|
|
||||||
* ArrayDeleter - deletes an array
|
|
||||||
* MemoryDeleter - free()s malloc()ed memory
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef AUTO_LOCKER_H
|
|
||||||
#define AUTO_LOCKER_H
|
|
||||||
|
|
||||||
#include <SupportDefs.h>
|
|
||||||
|
|
||||||
// locking
|
|
||||||
|
|
||||||
// AutoLockerStandardLocking
|
|
||||||
template<typename Lockable>
|
|
||||||
class AutoLockerStandardLocking {
|
|
||||||
public:
|
|
||||||
inline bool Lock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
return lockable->Lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Unlock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
lockable->Unlock();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// AutoLockerReadLocking
|
|
||||||
template<typename Lockable>
|
|
||||||
class AutoLockerReadLocking {
|
|
||||||
public:
|
|
||||||
inline bool Lock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
return lockable->ReadLock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Unlock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
lockable->ReadUnlock();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// AutoLockerWriteLocking
|
|
||||||
template<typename Lockable>
|
|
||||||
class AutoLockerWriteLocking {
|
|
||||||
public:
|
|
||||||
inline bool Lock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
return lockable->WriteLock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Unlock(Lockable *lockable)
|
|
||||||
{
|
|
||||||
lockable->WriteUnlock();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// AutoLocker
|
|
||||||
template<typename Lockable,
|
|
||||||
typename Locking = AutoLockerStandardLocking<Lockable> >
|
|
||||||
class AutoLocker {
|
|
||||||
private:
|
|
||||||
typedef AutoLocker<Lockable, Locking> ThisClass;
|
|
||||||
public:
|
|
||||||
inline AutoLocker(Lockable *lockable, bool alreadyLocked = false)
|
|
||||||
: fLockable(lockable),
|
|
||||||
fLocked(fLockable && alreadyLocked)
|
|
||||||
{
|
|
||||||
if (!fLocked)
|
|
||||||
_Lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline AutoLocker(Lockable &lockable, bool alreadyLocked = false)
|
|
||||||
: fLockable(&lockable),
|
|
||||||
fLocked(fLockable && alreadyLocked)
|
|
||||||
{
|
|
||||||
if (!fLocked)
|
|
||||||
_Lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline ~AutoLocker()
|
|
||||||
{
|
|
||||||
Unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void SetTo(Lockable *lockable, bool alreadyLocked)
|
|
||||||
{
|
|
||||||
Unlock();
|
|
||||||
fLockable = lockable;
|
|
||||||
fLocked = alreadyLocked;
|
|
||||||
if (!fLocked)
|
|
||||||
_Lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void SetTo(Lockable &lockable, bool alreadyLocked)
|
|
||||||
{
|
|
||||||
SetTo(&lockable, alreadyLocked);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Unset()
|
|
||||||
{
|
|
||||||
Unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline AutoLocker<Lockable, Locking> &operator=(Lockable *lockable)
|
|
||||||
{
|
|
||||||
SetTo(lockable);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline AutoLocker<Lockable, Locking> &operator=(Lockable &lockable)
|
|
||||||
{
|
|
||||||
SetTo(&lockable);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool IsLocked() const { return fLocked; }
|
|
||||||
|
|
||||||
inline void Unlock()
|
|
||||||
{
|
|
||||||
if (fLockable && fLocked) {
|
|
||||||
fLocking.Unlock(fLockable);
|
|
||||||
fLocked = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline operator bool() const { return fLocked; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
inline void _Lock()
|
|
||||||
{
|
|
||||||
if (fLockable)
|
|
||||||
fLocked = fLocking.Lock(fLockable);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
Lockable *fLockable;
|
|
||||||
bool fLocked;
|
|
||||||
Locking fLocking;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // AUTO_LOCKER_H
|
|
Loading…
Reference in New Issue
Block a user