mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
@ -0,0 +1,130 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: ParaView
|
||||
Module: $RCSfile$
|
||||
|
||||
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 "vtkSIInputProperty.h"
|
||||
|
||||
#include "vtkAlgorithmOutput.h"
|
||||
#include "vtkClientServerStream.h"
|
||||
#include "vtkObjectFactory.h"
|
||||
#include "vtkSISourceProxy.h"
|
||||
#include "vtkPVXMLElement.h"
|
||||
#include "vtkSMMessage.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
vtkStandardNewMacro(vtkSIInputProperty);
|
||||
//----------------------------------------------------------------------------
|
||||
vtkSIInputProperty::vtkSIInputProperty()
|
||||
{
|
||||
this->PortIndex = 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
vtkSIInputProperty::~vtkSIInputProperty()
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool vtkSIInputProperty::ReadXMLAttributes(
|
||||
vtkSIProxy* proxyhelper, vtkPVXMLElement* element)
|
||||
{
|
||||
if (!this->Superclass::ReadXMLAttributes(proxyhelper, element))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int port_index;
|
||||
if (element->GetScalarAttribute("port_index", &port_index))
|
||||
{
|
||||
this->SetPortIndex(port_index);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool vtkSIInputProperty::Push(vtkSMMessage* message, int offset)
|
||||
{
|
||||
if(!this->GetCommand())
|
||||
{
|
||||
// It is fine to have a property without command but then we do nothing
|
||||
// here at the server side...
|
||||
return true;
|
||||
}
|
||||
|
||||
assert(message->ExtensionSize(ProxyState::property) > offset);
|
||||
const ProxyState_Property *prop = &message->GetExtension(ProxyState::property,
|
||||
offset);
|
||||
assert(strcmp(prop->name().c_str(), this->GetXMLName()) == 0);
|
||||
|
||||
const Variant *variant = &prop->value();
|
||||
assert(variant->proxy_global_id_size() == variant->port_number_size());
|
||||
|
||||
std::vector<vtkTypeUInt32> proxy_ids;
|
||||
std::vector<int> output_ports;
|
||||
|
||||
proxy_ids.resize(variant->proxy_global_id_size());
|
||||
output_ports.resize(proxy_ids.size());
|
||||
for (int cc=0; cc < variant->proxy_global_id_size(); cc++)
|
||||
{
|
||||
proxy_ids[cc] = variant->proxy_global_id(cc);
|
||||
output_ports[cc] = variant->port_number(cc);
|
||||
}
|
||||
|
||||
vtkClientServerStream stream;
|
||||
if (this->CleanCommand)
|
||||
{
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< this->SIProxyObject
|
||||
<< "CleanInputs"
|
||||
<< this->CleanCommand
|
||||
<< vtkClientServerStream::End;
|
||||
}
|
||||
|
||||
for (size_t cc=0; cc < proxy_ids.size(); cc++)
|
||||
{
|
||||
vtkSISourceProxy* siProxy = vtkSISourceProxy::SafeDownCast(
|
||||
this->GetSIObject(proxy_ids[cc]));
|
||||
vtkAlgorithmOutput* input_connection =
|
||||
(siProxy? siProxy->GetOutputPort(output_ports[cc]) : NULL);
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< this->SIProxyObject
|
||||
<< "AddInput"
|
||||
<< this->PortIndex
|
||||
<< input_connection
|
||||
<< this->GetCommand()
|
||||
<< vtkClientServerStream::End;
|
||||
}
|
||||
|
||||
if (this->NullOnEmpty && this->CleanCommand == NULL && proxy_ids.size() == 0)
|
||||
{
|
||||
stream << vtkClientServerStream::Invoke
|
||||
<< this->SIProxyObject
|
||||
<< "AddInput"
|
||||
<< this->PortIndex
|
||||
<< static_cast<vtkObjectBase*>(NULL)
|
||||
<< this->GetCommand()
|
||||
<< vtkClientServerStream::End;
|
||||
}
|
||||
|
||||
// Save to cache when pulled for collaboration
|
||||
this->SaveValueToCache(message, offset);
|
||||
|
||||
return this->ProcessMessage(stream);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void vtkSIInputProperty::PrintSelf(ostream& os, vtkIndent indent)
|
||||
{
|
||||
this->Superclass::PrintSelf(os, indent);
|
||||
}
|
||||
Reference in New Issue
Block a user