summaryrefslogtreecommitdiffstats
path: root/mcop/dynamicskeleton.cc
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2020-12-06 19:28:06 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2020-12-06 19:28:06 +0900
commit00d4f92b717fbcbed6f9eee361975d6ee5380d59 (patch)
tree043b5970d66e539e1fbf6dde03440d6569e34c4e /mcop/dynamicskeleton.cc
parent2f53bfe61c8ee78ff36ac6c66ae714b01e407b33 (diff)
downloadarts-00d4f92b717fbcbed6f9eee361975d6ee5380d59.tar.gz
arts-00d4f92b717fbcbed6f9eee361975d6ee5380d59.zip
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'mcop/dynamicskeleton.cc')
-rw-r--r--mcop/dynamicskeleton.cc204
1 files changed, 0 insertions, 204 deletions
diff --git a/mcop/dynamicskeleton.cc b/mcop/dynamicskeleton.cc
deleted file mode 100644
index 8ee4428..0000000
--- a/mcop/dynamicskeleton.cc
+++ /dev/null
@@ -1,204 +0,0 @@
- /*
-
- Copyright (C) 2001 Stefan Westerfeld
- stefan@space.twc.de
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-
- */
-
-#include "dynamicskeleton.h"
-#include "dispatcher.h"
-#include "debug.h"
-#include "stdio.h"
-
-using namespace Arts;
-using namespace std;
-
-/* we could share the "class part" of those implicitely, as
- types never change */
-
-namespace Arts {
-class DynamicSkeletonData {
-public:
- DynamicSkeletonData(DynamicSkeletonBase *base,
- Object_skel *skel,
- const string& interfaceName,
- const string& interfaceNameParent)
- : base(base), skel(skel), interfaceName(interfaceName),
- interfaceNameParent(interfaceNameParent)
- {
- }
-
- enum InterfaceType { itNone, itParent, itDynamic };
-
- void buildInterfaces();
- void buildInterfaces(const string& s, InterfaceType t);
- void buildMethodTable();
-
- DynamicSkeletonBase *base;
- Object_skel *skel;
- string interfaceName, interfaceNameParent;
- map<string, InterfaceType> interfaceMap;
- map<string, void**> attrs;
-};
-}
-
-DynamicSkeletonBase::DynamicSkeletonBase(Object_skel *skel,
- const std::string& interfaceName, const std::string& interfaceNameParent)
-{
- arts_assert(skel != 0);
- _dsInit(skel,interfaceName,interfaceNameParent);
-}
-
-DynamicSkeletonBase::DynamicSkeletonBase()
-{
-}
-
-void DynamicSkeletonBase::_dsInit(Object_skel *skel,
- const std::string& interfaceName, const std::string& interfaceNameParent)
-{
- d = new DynamicSkeletonData(this,skel,interfaceName,interfaceNameParent);
- d->buildInterfaces();
-
- /* TODO: optimize me! */
- map<string, DynamicSkeletonData::InterfaceType>::iterator ii;
- for(ii = d->interfaceMap.begin(); ii != d->interfaceMap.end(); ii++)
- {
- if(ii->second == DynamicSkeletonData::itDynamic)
- {
- InterfaceDef id;
- id = Dispatcher::the()->interfaceRepo().queryInterface(ii->first);
-
- vector<AttributeDef>::iterator ai;
- for(ai = id.attributes.begin(); ai != id.attributes.end(); ai++)
- {
- AttributeDef& ad = *ai;
- if((ad.flags & attributeStream) == attributeStream)
- {
- void**& data = d->attrs[ad.name.c_str()];
- arts_assert(data == 0);
- data = new (void*);
- d->skel->_initStream(ad.name.c_str(),data,ad.flags);
- }
- }
- }
- }
-}
-
-DynamicSkeletonBase::~DynamicSkeletonBase()
-{
- delete d;
-}
-
-std::string DynamicSkeletonBase::_dsInterfaceName()
-{
- return d->interfaceName;
-}
-
-bool DynamicSkeletonBase::_dsIsCompatibleWith(const std::string& interfacename)
-{
- d->buildInterfaces();
- return d->interfaceMap[interfacename] != 0;
-}
-
-void DynamicSkeletonBase::_dsBuildMethodTable()
-{
- d->buildMethodTable();
-}
-
-static void _dispatch_dynamic(void *object, long methodID, Buffer *request, Buffer *result)
-{
- ((DynamicSkeletonBase *)object)->process(methodID, request, result);
-}
-
-void DynamicSkeletonData::buildMethodTable()
-{
- buildInterfaces();
-
- map<string, DynamicSkeletonData::InterfaceType>::iterator ii;
- for(ii = interfaceMap.begin(); ii != interfaceMap.end(); ii++)
- {
- if(ii->second == itDynamic)
- {
- InterfaceDef id;
- id = Dispatcher::the()->interfaceRepo().queryInterface(ii->first);
-
- /* methods */
- vector<MethodDef>::iterator mi;
- for(mi = id.methods.begin(); mi != id.methods.end(); mi++)
- skel->_addMethod(_dispatch_dynamic, base, *mi);
-
- /* _get_ and _set_ methods for attributes */
- vector<AttributeDef>::iterator ai;
- for(ai = id.attributes.begin();ai != id.attributes.end();ai++)
- {
- AttributeDef& ad = *ai;
-
- if(ad.flags & attributeAttribute)
- {
- MethodDef md;
- if(ad.flags & streamOut) /* readable from outside */
- {
- md.name = "_get_"+ad.name;
- md.type = ad.type;
- md.flags = methodTwoway;
- /* no parameters (don't set md.signature) */
-
- skel->_addMethod(_dispatch_dynamic, base, md);
- }
- if(ad.flags & streamIn) /* writeable from outside */
- {
- md.name = "_set_"+ad.name;
- md.type = "void";
- md.flags = methodTwoway;
-
- ParamDef pd;
- pd.type = ad.type;
- pd.name = "newValue";
- md.signature.push_back(pd);
-
- skel->_addMethod(_dispatch_dynamic, base, md);
- }
- }
- }
- }
- }
-}
-
-void DynamicSkeletonData::buildInterfaces()
-{
- if(interfaceMap.size() != 0) return;
-
- buildInterfaces(interfaceName, itDynamic);
- buildInterfaces(interfaceNameParent, itParent);
-}
-
-void DynamicSkeletonData::buildInterfaces(const string& name, DynamicSkeletonData::InterfaceType t)
-{
- InterfaceDef id = Dispatcher::the()->interfaceRepo().queryInterface(name);
-
- if(interfaceMap[name] == t) return;
- interfaceMap[name] = t;
-
- vector<string>::iterator ii;
- for(ii = id.inheritedInterfaces.begin();
- ii != id.inheritedInterfaces.end(); ii++)
- {
- buildInterfaces(*ii,t);
- }
- buildInterfaces("Arts::Object",t);
-}