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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
/*=========================================================================
Program: ParaView
Module: vtkSMDeserializerXML.cxx
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkSMDeserializerXML.h"
#include "vtkObjectFactory.h"
#include "vtkPVXMLElement.h"
#include "vtkSmartPointer.h"
#include "vtkSMProxy.h"
#include "vtkSMProxyLocator.h"
#include "vtkSMSessionProxyManager.h"
#include "vtkSMSession.h"
vtkStandardNewMacro(vtkSMDeserializerXML);
//----------------------------------------------------------------------------
vtkSMDeserializerXML::vtkSMDeserializerXML()
{
}
//----------------------------------------------------------------------------
vtkSMDeserializerXML::~vtkSMDeserializerXML()
{
}
//----------------------------------------------------------------------------
vtkSMProxy* vtkSMDeserializerXML::NewProxy(vtkTypeUInt32 id,
vtkSMProxyLocator* locator)
{
vtkPVXMLElement* elem = this->LocateProxyElement(id);
if (!elem)
{
return 0;
}
const char* group = elem->GetAttribute("group");
const char* type = elem->GetAttribute("type");
if (!type)
{
vtkErrorMacro("Could not create proxy from element, missing 'type'.");
return 0;
}
vtkSMProxy* proxy;
proxy = this->CreateProxy(group, type);
if (!proxy)
{
vtkErrorMacro("Could not create a proxy of group: "
<< (group? group : "(null)")
<< " type: " << type);
return 0;
}
if (!this->LoadProxyState(elem, proxy, locator))
{
vtkErrorMacro("Failed to load state correctly.");
proxy->Delete();
return 0;
}
this->CreatedNewProxy(id, proxy);
return proxy;
}
//----------------------------------------------------------------------------
vtkSMProxy* vtkSMDeserializerXML::CreateProxy(const char* xmlgroup,
const char* xmlname,
const char* subProxyName /*=NULL*/)
{
vtkSMSessionProxyManager* pxm = this->GetSessionProxyManager();
vtkSMProxy* proxy = pxm->NewProxy(xmlgroup, xmlname, subProxyName);
return proxy;
}
//----------------------------------------------------------------------------
vtkPVXMLElement* vtkSMDeserializerXML::LocateProxyElement(vtkTypeUInt32 vtkNotUsed(id))
{
return NULL;
}
//----------------------------------------------------------------------------
int vtkSMDeserializerXML::LoadProxyState( vtkPVXMLElement* element,
vtkSMProxy* proxy,
vtkSMProxyLocator* locator)
{
return proxy->LoadXMLState(element, locator);
}
//----------------------------------------------------------------------------
void vtkSMDeserializerXML::CreatedNewProxy(vtkTypeUInt32 vtkNotUsed(id),
vtkSMProxy* vtkNotUsed(proxy))
{
}
//----------------------------------------------------------------------------
void vtkSMDeserializerXML::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
}
|