summaryrefslogtreecommitdiff
path: root/rb/src/IceRuby/ObjectFactory.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2015-03-21 15:35:40 -0230
committerMatthew Newhook <matthew@zeroc.com>2015-03-21 15:35:40 -0230
commit630a37d2fe66f24518299e705f958b571803c522 (patch)
tree969723791bdc4d73bb099c19d45554d0ca241ad9 /rb/src/IceRuby/ObjectFactory.cpp
parentFix some README.md markdown formatting (diff)
downloadice-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.cpp140
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);
- }
-}