mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 00:26:39 +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
 |