Fishnet 2.0.1
Framework for Graph-Based Analysis of GIS Vector Data
Loading...
Searching...
No Matches
FileReference.hpp
Go to the documentation of this file.
1#pragma once
3
9 size_t fileId;
10
11 explicit FileReference(size_t fileId):fileId(fileId){}
12
13 FileReference():fileId(static_cast<size_t>(-1)){}
14
15 size_t hash() const noexcept {
16 return fileId;
17 }
18
19 bool operator==(const FileReference & other) const noexcept {
20 return this->fileId == other.fileId;
21 }
22
23 static FileReference fromInt(std::integral auto id){
24 return FileReference(static_cast<size_t>(id));
25 }
26
27 template<fishnet::util::Hashable T>
28 static FileReference hash(const T & obj) noexcept {
29 FileReference fileRef;
30 fileRef.fileId = std::hash<T>{}(obj);
31 return fileRef;
32 }
33
34
35};
36
37static_assert(not std::convertible_to<FileReference, size_t>, "FileReference should not be implicitly convertible to size_t");
38static_assert(fishnet::util::Mapable<FileReference>, "FileReference should be a valid Key type for maps");
Helper concept which checks whether a class can be natively used as a key in a map,...
Definition ObjectConcepts.hpp:43
File reference have a unique id for each file.
Definition FileReference.hpp:8
size_t hash() const noexcept
Definition FileReference.hpp:15
bool operator==(const FileReference &other) const noexcept
Definition FileReference.hpp:19
FileReference()
Definition FileReference.hpp:13
FileReference(size_t fileId)
Definition FileReference.hpp:11
size_t fileId
Definition FileReference.hpp:9
static FileReference fromInt(std::integral auto id)
Definition FileReference.hpp:23
static FileReference hash(const T &obj) noexcept
Definition FileReference.hpp:28