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