forked from Bananymous/banan-os
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			748 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			748 B
		
	
	
	
		
			C++
		
	
	
	
| #pragma once
 | |
| 
 | |
| #include <BAN/Function.h>
 | |
| #include <BAN/HashMap.h>
 | |
| #include <BAN/Iteration.h>
 | |
| #include <BAN/NoCopyMove.h>
 | |
| #include <BAN/String.h>
 | |
| 
 | |
| class Alias
 | |
| {
 | |
| 	BAN_NON_COPYABLE(Alias);
 | |
| 	BAN_NON_MOVABLE(Alias);
 | |
| public:
 | |
| 	Alias() = default;
 | |
| 	static Alias& get()
 | |
| 	{
 | |
| 		static Alias s_instance;
 | |
| 		return s_instance;
 | |
| 	}
 | |
| 
 | |
| 	BAN::ErrorOr<void> set_alias(BAN::StringView name, BAN::StringView value);
 | |
| 
 | |
| 	// NOTE: `const BAN::String&` instead of `BAN::StringView` to avoid BAN::String construction
 | |
| 	//       for hashmap accesses
 | |
| 	BAN::Optional<BAN::StringView> get_alias(const BAN::String& name) const;
 | |
| 
 | |
| 	void for_each_alias(BAN::Function<BAN::Iteration(BAN::StringView, BAN::StringView)>) const;
 | |
| 
 | |
| private:
 | |
| 	BAN::HashMap<BAN::String, BAN::String> m_aliases;
 | |
| };
 |