1# This file  attempts to  convert an  old pipeline filter  to a  new pipeline
2# filter. Run it with a  -DCLASS=classname it will use that class name
3# for processing
4
5IF (NOT DEFINED CLASS)
6  MESSAGE ("You did not specify the class to process. Usage: cmake -DCLASS=vtkMyClass -P NewPipeConvertDataSet" FATAL_ERROR)
7ENDIF ()
8
9FILE (GLOB H_FILE ${CLASS}.h)
10FILE (GLOB CXX_FILE ${CLASS}.cxx)
11
12# read in both files
13FILE (READ ${H_FILE} H_CONTENTS)
14FILE (READ ${CXX_FILE} CXX_CONTENTS)
15
16#================================================================
17# First do the H file
18#================================================================
19
20STRING (REGEX REPLACE
21  "vtkDataSetToDataSetFilter"
22  "vtkDataSetAlgorithm"
23  H_CONTENTS "${H_CONTENTS}")
24
25STRING (REGEX REPLACE
26  "vtkSource"
27  "vtkDataSetAlgorithm"
28  H_CONTENTS "${H_CONTENTS}")
29
30STRING (REGEX REPLACE
31  "void[ \t]+Execute[ \t]*\\([ \t]*\\)"
32  "int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
33  H_CONTENTS "${H_CONTENTS}")
34
35STRING (REGEX REPLACE
36  "void[ \t]+ExecuteInformation[ \t]*\\([ \t]*\\)"
37  "int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
38  H_CONTENTS "${H_CONTENTS}")
39
40STRING (REGEX REPLACE
41  "void[ \t]+ComputeInputUpdateExtents[ \t]*\\([ \t]*[^)]*\\)"
42  "int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
43  H_CONTENTS "${H_CONTENTS}")
44
45FILE (WRITE ${H_FILE} "${H_CONTENTS}")
46
47#================================================================
48# Now do the CXX files
49#================================================================
50
51STRING (REGEX REPLACE
52  "::Execute[ \t]*\\([^{]*{"
53  "::RequestData(\n  vtkInformation *vtkNotUsed(request),\n  vtkInformationVector **inputVector,\n  vtkInformationVector *outputVector)\n{\n  // get the info objects\n  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);\n  vtkInformation *outInfo = outputVector->GetInformationObject(0);\n\n  // get the input and output\n  vtkDataSet *input = vtkDataSet::SafeDownCast(\n    inInfo->Get(vtkDataObject::DATA_OBJECT()));\n  vtkDataSet *output = vtkDataSet::SafeDownCast(\n    outInfo->Get(vtkDataObject::DATA_OBJECT()));\n"
54  CXX_CONTENTS "${CXX_CONTENTS}")
55
56STRING (REGEX REPLACE
57  "::ExecuteInformation[ \t]*\\([^{]*{"
58  "::RequestInformation(\n  vtkInformation *vtkNotUsed(request),\n  vtkInformationVector **inputVector,\n  vtkInformationVector *outputVector)\n{\n  // get the info objects\n  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);\n  vtkInformation *outInfo = outputVector->GetInformationObject(0);\n"
59  CXX_CONTENTS "${CXX_CONTENTS}")
60
61STRING (REGEX REPLACE
62  "::ComputeInputUpdateExtents[ \t]*\\([^{]*{"
63  "::RequestUpdateExtent(\n  vtkInformation *vtkNotUsed(request),\n  vtkInformationVector **inputVector,\n  vtkInformationVector *outputVector)\n{\n  // get the info objects\n  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);\n  vtkInformation *outInfo = outputVector->GetInformationObject(0);\n"
64  CXX_CONTENTS "${CXX_CONTENTS}")
65
66# add some useful include files if needed
67IF ("${CXX_CONTENTS}" MATCHES ".*vtkInformation.*")
68  # do not do these replacements multiple times
69  IF (NOT "${CXX_CONTENTS}" MATCHES ".*vtkInformation.h.*")
70    STRING (REGEX REPLACE
71      "vtkObjectFactory.h"
72      "vtkInformation.h\"\n#include \"vtkInformationVector.h\"\n#include \"vtkObjectFactory.h"
73      CXX_CONTENTS "${CXX_CONTENTS}")
74  ENDIF ()
75ENDIF ()
76
77FILE (WRITE ${CXX_FILE} "${CXX_CONTENTS}")
78