Nebula
Loading...
Searching...
No Matches
assignregistry.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
13#include "core/refcounted.h"
14#include "io/assign.h"
15#include "io/uri.h"
16#include "io/urn.h"
17#include "util/hashtable.h"
19#include "core/singleton.h"
20
21
22//------------------------------------------------------------------------------
23namespace IO
24{
26{
29public:
33 virtual ~AssignRegistry();
34
36 void Setup();
38 void Discard();
40 bool IsValid() const;
41
43 void SetAssign(const Assign& assign);
45 bool HasAssign(const Util::String& assignName) const;
47 Util::String GetAssign(const Util::String& assignName) const;
49 void ClearAssign(const Util::String& assignName);
53 URI ResolveAssigns(const URI& uri) const;
55 Util::String ResolveAssignsInString(const Util::String& uriString) const;
57 void PrintAll() const;
58
59private:
61 void SetupSystemAssigns();
64
65 bool isValid;
66 Threading::CriticalSection critSect;
68};
69
70} // namespace IO
71//------------------------------------------------------------------------------
The common base class of Nebula.
Definition refcounted.h:38
An assign associates an intuitive name with a real-world filesystem path.
Definition assign.h:19
bool HasAssign(const Util::String &assignName) const
return true if an assign exists
Definition assignregistry.cc:226
void SetAssign(const Assign &assign)
set a new assign
Definition assignregistry.cc:208
virtual ~AssignRegistry()
destructor
Definition assignregistry.cc:34
Util::HashTable< Util::String, Util::String > assignTable
Definition assignregistry.h:67
void PrintAll() const
prints all assigns and their paths to the console. Useful for debugging.
Definition assignregistry.cc:354
Util::String GetAssign(const Util::String &assignName) const
get an assign
Definition assignregistry.cc:239
void SetupProjectAssigns()
setup standard project assigns (e.g. msh:, model:, etc...)
Definition assignregistry.cc:138
AssignRegistry()
constructor
Definition assignregistry.cc:25
Threading::CriticalSection critSect
Definition assignregistry.h:66
__DeclareInterfaceSingleton(AssignRegistry)
void Discard()
discard the assign registry
Definition assignregistry.cc:66
bool IsValid() const
return true if the object has been setup
Definition assignregistry.cc:81
void Setup()
setup the assign registry (may only be called once from the main thread)
Definition assignregistry.cc:47
Util::Array< Assign > GetAllAssigns() const
return an array of all currently defined assigns
Definition assignregistry.cc:270
__DeclareClass(AssignRegistry)
URI ResolveAssigns(const URI &uri) const
resolve any assigns in an URI
Definition assignregistry.cc:293
void SetupSystemAssigns()
setup standard system assigns (e.g. home:, etc...)
Definition assignregistry.cc:90
bool isValid
Definition assignregistry.h:65
void ClearAssign(const Util::String &assignName)
clear an assign
Definition assignregistry.cc:255
Util::String ResolveAssignsInString(const Util::String &uriString) const
resolve any assigns in a string (must have URI form)
Definition assignregistry.cc:308
An URI object can split a Uniform Resource Identifier string into its components or build a string fr...
Definition uri.h:67
Nebula's dynamic array class.
Definition array.h:61
Organizes key/value pairs by a hash code.
Definition hashtable.h:42
Nebula's universal string class.
Definition string.h:50
Instances of wrapped stream classes.
Definition multiplayerfeatureunit.cc:324