+ObjectRegistry& ThreadLocalStorage::GetObjectRegistry()
+{
+ return mCore->GetObjectRegistry();
+}
+
+EventThreadServices& ThreadLocalStorage::GetEventThreadServices()
+{
+ return mCore->GetEventThreadServices();
+}
+
+PropertyNotificationManager& ThreadLocalStorage::GetPropertyNotificationManager()
+{
+ return mCore->GetPropertyNotificationManager();
+}
+
+AnimationPlaylist& ThreadLocalStorage::GetAnimationPlaylist()
+{
+ return mCore->GetAnimationPlaylist();
+}
+
+bool ThreadLocalStorage::IsBlendEquationSupported(DevelBlendEquation::Type blendEquation)
+{
+ return mCore->GetGlAbstraction().IsBlendEquationSupported(blendEquation);
+}
+
+std::string ThreadLocalStorage::GetShaderVersionPrefix()
+{
+ return mCore->GetGlAbstraction().GetShaderVersionPrefix();
+}
+
+std::string ThreadLocalStorage::GetVertexShaderPrefix()
+{
+ return mCore->GetGlAbstraction().GetVertexShaderPrefix();
+}
+
+std::string ThreadLocalStorage::GetFragmentShaderPrefix()
+{
+ return mCore->GetGlAbstraction().GetFragmentShaderPrefix();
+}
+
+void ThreadLocalStorage::AddScene(Scene* scene)
+{
+ mCore->AddScene(scene);
+}
+
+void ThreadLocalStorage::RemoveScene(Scene* scene)
+{
+ mCore->RemoveScene(scene);
+}
+
+void ThreadLocalStorage::Register(const std::type_info& info, BaseHandle singleton)
+{
+ if(singleton)
+ {
+ DALI_LOG_SINGLETON_SERVICE(Debug::General, "Singleton Added: %s\n", info.name());
+ mSingletonContainer.push_back(SingletonPair(info.name(), singleton));
+
+ Integration::Processor* processor = dynamic_cast<Integration::Processor*>(&singleton.GetBaseObject());
+ if(processor)
+ {
+ mCore->RegisterProcessor(*processor);
+ }
+ }
+}
+
+void ThreadLocalStorage::UnregisterAll()
+{
+ mSingletonContainer.clear();
+}
+
+BaseHandle ThreadLocalStorage::GetSingleton(const std::type_info& info) const
+{
+ BaseHandle object;
+
+ const SingletonContainer::const_iterator end = mSingletonContainer.end();
+ for(SingletonContainer::const_iterator iter = mSingletonContainer.begin(); iter != end; ++iter)
+ {
+ // comparing the addresses as these are allocated statically per library
+ if((*iter).first == info.name())
+ {
+ object = (*iter).second;
+ }
+ }
+
+ return object;
+}
+