diff options
author | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
commit | 630a37d2fe66f24518299e705f958b571803c522 (patch) | |
tree | 969723791bdc4d73bb099c19d45554d0ca241ad9 /rb/src/IceRuby/ObjectFactory.cpp | |
parent | Fix some README.md markdown formatting (diff) | |
download | ice-630a37d2fe66f24518299e705f958b571803c522.tar.bz2 ice-630a37d2fe66f24518299e705f958b571803c522.tar.xz ice-630a37d2fe66f24518299e705f958b571803c522.zip |
py -> python
rb -> ruby
objc -> objective-c
cs -> csharp
Diffstat (limited to 'rb/src/IceRuby/ObjectFactory.cpp')
-rw-r--r-- | rb/src/IceRuby/ObjectFactory.cpp | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/rb/src/IceRuby/ObjectFactory.cpp b/rb/src/IceRuby/ObjectFactory.cpp deleted file mode 100644 index 588158a64e3..00000000000 --- a/rb/src/IceRuby/ObjectFactory.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <ObjectFactory.h> -#include <Types.h> -#include <Util.h> -#include <Ice/LocalException.h> - -using namespace std; -using namespace IceRuby; - -IceRuby::ObjectFactory::ObjectFactory() -{ -} - -IceRuby::ObjectFactory::~ObjectFactory() -{ - assert(_factoryMap.empty()); -} - -Ice::ObjectPtr -IceRuby::ObjectFactory::create(const string& id) -{ - Lock sync(*this); - - // - // Get the type information. - // - ClassInfoPtr info; - if(id == Ice::Object::ice_staticId()) - { - // - // When the ID is that of Ice::Object, it indicates that the stream has not - // found a factory and is providing us an opportunity to preserve the object. - // - info = lookupClassInfo("::Ice::UnknownSlicedObject"); - } - else - { - info = lookupClassInfo(id); - } - - if(!info) - { - return 0; - } - - // - // Check if the application has registered a factory for this id. - // - FactoryMap::iterator p = _factoryMap.find(id); - if(p != _factoryMap.end()) - { - // - // Invoke the create method on the Ruby factory object. - // - volatile VALUE str = createString(id); - volatile VALUE obj = callRuby(rb_funcall, p->second, rb_intern("create"), 1, str); - if(NIL_P(obj)) - { - return 0; - } - return new ObjectReader(obj, info); - } - - // - // Instantiate the object. - // - volatile VALUE obj = callRuby(rb_class_new_instance, 0, reinterpret_cast<VALUE*>(0), info->rubyClass); - assert(!NIL_P(obj)); - return new ObjectReader(obj, info); -} - -void -IceRuby::ObjectFactory::destroy() -{ - Lock sync(*this); - - for(FactoryMap::iterator p = _factoryMap.begin(); p != _factoryMap.end(); ++p) - { - // - // Invoke the destroy method on each registered Ruby factory. - // - try - { - callRuby(rb_funcall, p->second, rb_intern("destroy"), 0); - } - catch(const RubyException&) - { - // Ignore. - } - } - _factoryMap.clear(); -} - -void -IceRuby::ObjectFactory::add(VALUE factory, const string& id) -{ - Lock sync(*this); - - FactoryMap::iterator p = _factoryMap.find(id); - if(p != _factoryMap.end()) - { - Ice::AlreadyRegisteredException ex(__FILE__, __LINE__); - ex.kindOfObject = "object factory"; - ex.id = id; - throw ex; - } - - _factoryMap.insert(FactoryMap::value_type(id, factory)); -} - -VALUE -IceRuby::ObjectFactory::find(const string& id) -{ - Lock sync(*this); - - FactoryMap::iterator p = _factoryMap.find(id); - if(p == _factoryMap.end()) - { - return Qnil; - } - - return p->second; -} - -void -IceRuby::ObjectFactory::mark() -{ - for(FactoryMap::iterator p = _factoryMap.begin(); p != _factoryMap.end(); ++p) - { - rb_gc_mark(p->second); - } -} |