mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 19:26:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef OPENMW_COMPONENTS_ESM_FORMIDREFID_HPP
 | |
| #define OPENMW_COMPONENTS_ESM_FORMIDREFID_HPP
 | |
| 
 | |
| #include <functional>
 | |
| #include <iosfwd>
 | |
| #include <stdexcept>
 | |
| 
 | |
| #include <components/esm/formid.hpp>
 | |
| 
 | |
| namespace ESM
 | |
| {
 | |
|     class FormIdRefId
 | |
|     {
 | |
|     public:
 | |
|         constexpr FormIdRefId() = default;
 | |
| 
 | |
|         constexpr explicit FormIdRefId(ESM::FormId value)
 | |
|             : mValue(value)
 | |
|         {
 | |
|             if ((mValue.mIndex & 0xff000000) != 0)
 | |
|                 throw std::invalid_argument("Invalid FormIdRefId index value: " + std::to_string(mValue.mIndex));
 | |
|         }
 | |
| 
 | |
|         ESM::FormId getValue() const { return mValue; }
 | |
| 
 | |
|         std::string toString() const;
 | |
| 
 | |
|         std::string toDebugString() const;
 | |
| 
 | |
|         constexpr bool operator==(FormIdRefId rhs) const noexcept { return mValue == rhs.mValue; }
 | |
| 
 | |
|         constexpr bool operator<(FormIdRefId rhs) const noexcept { return mValue < rhs.mValue; }
 | |
| 
 | |
|         friend std::ostream& operator<<(std::ostream& stream, FormIdRefId value);
 | |
| 
 | |
|         friend struct std::hash<FormIdRefId>;
 | |
| 
 | |
|     private:
 | |
|         ESM::FormId mValue;
 | |
|     };
 | |
| }
 | |
| 
 | |
| namespace std
 | |
| {
 | |
|     template <>
 | |
|     struct hash<ESM::FormIdRefId>
 | |
|     {
 | |
|         std::size_t operator()(ESM::FormIdRefId value) const noexcept { return std::hash<ESM::FormId>{}(value.mValue); }
 | |
|     };
 | |
| }
 | |
| 
 | |
| #endif
 |