Added GetHashCode() method and == operator.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29571 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -155,9 +155,16 @@ struct FSCapabilitiesBase {
|
|||||||
inline void Clear(uint32 capability);
|
inline void Clear(uint32 capability);
|
||||||
inline bool Get(uint32 capability) const;
|
inline bool Get(uint32 capability) const;
|
||||||
|
|
||||||
|
inline uint32 GetHashCode() const;
|
||||||
|
|
||||||
|
inline bool operator==(
|
||||||
|
const FSCapabilitiesBase<CapabilityCount>&
|
||||||
|
other) const;
|
||||||
|
|
||||||
inline void Dump() const;
|
inline void Dump() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// ClearAll
|
// ClearAll
|
||||||
template<const int CapabilityCount>
|
template<const int CapabilityCount>
|
||||||
inline void
|
inline void
|
||||||
@@ -166,6 +173,7 @@ FSCapabilitiesBase<CapabilityCount>::ClearAll()
|
|||||||
memset(capabilities, 0, sizeof(capabilities));
|
memset(capabilities, 0, sizeof(capabilities));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set
|
// Set
|
||||||
template<const int CapabilityCount>
|
template<const int CapabilityCount>
|
||||||
inline void
|
inline void
|
||||||
@@ -181,6 +189,7 @@ FSCapabilitiesBase<CapabilityCount>::Set(uint32 capability, bool set)
|
|||||||
capabilities[capability / 8] &= ~flag;
|
capabilities[capability / 8] &= ~flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Clear
|
// Clear
|
||||||
template<const int CapabilityCount>
|
template<const int CapabilityCount>
|
||||||
inline void
|
inline void
|
||||||
@@ -189,6 +198,7 @@ FSCapabilitiesBase<CapabilityCount>::Clear(uint32 capability)
|
|||||||
Set(capability, false);
|
Set(capability, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get
|
// Get
|
||||||
template<const int CapabilityCount>
|
template<const int CapabilityCount>
|
||||||
inline bool
|
inline bool
|
||||||
@@ -201,6 +211,37 @@ FSCapabilitiesBase<CapabilityCount>::Get(uint32 capability) const
|
|||||||
return (capabilities[capability / 8] & flag);
|
return (capabilities[capability / 8] & flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// GetHashCode
|
||||||
|
template<const int CapabilityCount>
|
||||||
|
inline uint32
|
||||||
|
FSCapabilitiesBase<CapabilityCount>::GetHashCode() const
|
||||||
|
{
|
||||||
|
uint32 hashCode = 0;
|
||||||
|
int byteCount = sizeof(capabilities);
|
||||||
|
for (int i = 0; i < byteCount; i++)
|
||||||
|
hashCode = hashCode * 37 + capabilities[i];
|
||||||
|
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ==
|
||||||
|
template<const int CapabilityCount>
|
||||||
|
inline bool
|
||||||
|
FSCapabilitiesBase<CapabilityCount>::operator==(
|
||||||
|
const FSCapabilitiesBase<CapabilityCount>& other) const
|
||||||
|
{
|
||||||
|
int byteCount = sizeof(capabilities);
|
||||||
|
for (int i = 0; i < byteCount; i++) {
|
||||||
|
if (capabilities[i] != other.capabilities[i])
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Dump
|
// Dump
|
||||||
template<const int CapabilityCount>
|
template<const int CapabilityCount>
|
||||||
inline void
|
inline void
|
||||||
|
|||||||
Reference in New Issue
Block a user