[Paraview] Send an array from client to server
Biddiscombe, John A.
biddisco at cscs.ch
Sat Sep 26 18:10:23 EDT 2015
Thanks Utkarsh,
I’ve decided to stick with my own solution for the time being – having to create extra vtkSMxxx classes for all the sources adds too much maintenance to the code, whereas just adding an #include seems cleaner. When my immediate deadline has passed I’ll look again at it.
Thanks
JB
From: Utkarsh Ayachit <utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>>
Date: Thursday 24 September 2015 17:57
To: cscs <biddisco at cscs.ch<mailto:biddisco at cscs.ch>>
Cc: "paraview at paraview.org<mailto:paraview at paraview.org>" <paraview at paraview.org<mailto:paraview at paraview.org>>
Subject: Re: [Paraview] Send an array from client to server
Attached is the solution, there a small mistake in my origin script:
vtkClientServerStream stream;
stream << vtkClientServerStream::Invoke
<< VTKOBJECT(proxy)
<< SetValues
<< maxValues
<< stream.InsertArray(values, maxValues)
<< vtkClientServerStream::End;
Utkarsh
On Mon, Sep 21, 2015 at 8:40 AM, Utkarsh Ayachit <utkarsh.ayachit at kitware.com<mailto:utkarsh.ayachit at kitware.com>> wrote:
John,
That looks too convoluted. I haven't done this in a while so I'll need
to refresh my memory a bit. I'll make an example today and then get
back to you.
Utkarsh
On Sun, Sep 20, 2015 at 4:43 AM, Biddiscombe, John A. <biddisco at cscs.ch<mailto:biddisco at cscs.ch>> wrote:
> Just following up so that when I’ve forgotten how to do it ...
>
> This works
>
> #define VTK_WRAPPING_CXX
> #include "vtkClientServerStream.h"
>
> ...
>
>
> // void SetSelectedGIds(int n, const int *Ids);
> void SetSelectedGIds(int N, int Ids[]);
> //BTX
> void SetSelectedGIds(int N, vtkClientServerStreamDataArg<int> &temp0);
> //ETX
>
> And in the cxx, use the vtkClientServerStreamDataArg operator () to get
> the T* pointer.
>
> Then in the client GUI
>
> vtkClientServerStream::Array array =
> {
> vtkClientServerStream::int32_array,
> static_cast<vtkTypeUInt32>(numValues),
>
> static_cast<vtkTypeUInt32>(sizeof(vtkClientServerStream::int32_value)*numVa
> lues),
> (int*)(data)
> };
>
>
> vtkClientServerStream stream;
> stream << vtkClientServerStream::Invoke
> << VTKOBJECT(proxy)
> << "SetSelectedGIds"
> << numValues
> << array;
> stream << vtkClientServerStream::End;
>
> This correctly inserts the array and the type,size,data vars so that the
> server reads them as expected.
>
> I’m not happy about the fact that we have to spoof the wrapper generators,
> but at least I don’t need to modify the ClientServerStreamArg<>
> implementation.
>
>
>
> JB
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150926/0893fab1/attachment.html>
More information about the ParaView
mailing list