77 lines
1.5 KiB
C++
77 lines
1.5 KiB
C++
/*
|
|
* Copyright 2013-2014, Haiku, Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*
|
|
* Authors:
|
|
* Ingo Weinhold <ingo_weinhold@gmx.de>
|
|
*/
|
|
#ifndef VOLUME_STATE_H
|
|
#define VOLUME_STATE_H
|
|
|
|
|
|
#include "Package.h"
|
|
|
|
|
|
class VolumeState {
|
|
public:
|
|
VolumeState();
|
|
~VolumeState();
|
|
|
|
bool Init();
|
|
|
|
Package* FindPackage(const char* name) const;
|
|
Package* FindPackage(const node_ref& nodeRef) const;
|
|
|
|
PackageFileNameHashTable::Iterator ByFileNameIterator() const;
|
|
PackageNodeRefHashTable::Iterator ByNodeRefIterator() const;
|
|
|
|
void AddPackage(Package* package);
|
|
void RemovePackage(Package* package);
|
|
|
|
void SetPackageActive(Package* package, bool active);
|
|
|
|
void ActivationChanged(
|
|
const PackageSet& activatedPackage,
|
|
const PackageSet& deactivatePackages);
|
|
|
|
VolumeState* Clone() const;
|
|
|
|
private:
|
|
void _RemovePackage(Package* package);
|
|
|
|
private:
|
|
PackageFileNameHashTable fPackagesByFileName;
|
|
PackageNodeRefHashTable fPackagesByNodeRef;
|
|
};
|
|
|
|
|
|
inline Package*
|
|
VolumeState::FindPackage(const char* name) const
|
|
{
|
|
return fPackagesByFileName.Lookup(name);
|
|
}
|
|
|
|
|
|
inline Package*
|
|
VolumeState::FindPackage(const node_ref& nodeRef) const
|
|
{
|
|
return fPackagesByNodeRef.Lookup(nodeRef);
|
|
}
|
|
|
|
|
|
inline PackageFileNameHashTable::Iterator
|
|
VolumeState::ByFileNameIterator() const
|
|
{
|
|
return fPackagesByFileName.GetIterator();
|
|
}
|
|
|
|
|
|
inline PackageNodeRefHashTable::Iterator
|
|
VolumeState::ByNodeRefIterator() const
|
|
{
|
|
return fPackagesByNodeRef.GetIterator();
|
|
}
|
|
|
|
|
|
#endif // VOLUME_STATE_H
|