summaryrefslogtreecommitdiff
path: root/Runtime/Scripting/Backend/ScriptingTypeRegistry.h
blob: be2328fef6c1ff330237acb7bfd44843ff42e83c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef _SCRIPTINGTYPEREGISTRY_Y_
#define _SCRIPTINGTYPEREGISTRY_Y_

#if ENABLE_SCRIPTING

#include <map>
#include <string>
#include "ScriptingTypes.h"
#include "IScriptingTypeProvider.h"

class ScriptingTypeRegistry
{
public:
	ScriptingTypeRegistry(IScriptingTypeProvider* scriptingTypeProvider);
	ScriptingTypePtr GetType(const char* namespaze, const char* name);
	ScriptingTypePtr GetType(BackendNativeType nativeType);
	ScriptingTypePtr GetType(ScriptingObjectPtr systemTypeInstance);
	void InvalidateCache();

private:
	typedef std::pair<std::string,std::string> NameSpaceAndNamePair;
	typedef std::map<NameSpaceAndNamePair, ScriptingTypePtr> Cache;
	Cache m_Cache;

	typedef std::map<void*, ScriptingTypePtr> NativeTypeCache;
	NativeTypeCache m_NativeTypeCache;

	IScriptingTypeProvider* m_ScriptingTypeProvider;
};

#endif

#endif