From b72346ef0cb0dafafebe30ccb12d57e2652864bb Mon Sep 17 00:00:00 2001 From: vsr Date: Fri, 1 Mar 2013 14:36:48 +0000 Subject: [PATCH] Merge from BR_PORTING_VTK6 01/03/2013 --- CMakeLists.txt | 7 +- adm_local/cmake_files/FindPARAVIEW.cmake | 45 +- getwrapclasses.py | 13 +- idl/CMakeLists.txt | 16 +- idl/create_hints.py | 3 +- idl/create_hints.sh | 3 +- idl/hints | 258 + idl/vtkWrapIDL.c | 130 +- idl/wrap.cmake | 11 +- src/PVGUI/CMakeLists.txt | 23 +- .../PVGUI_MatplotlibMathTextUtilities.cxx | 24 + src/PVGUI/PVGUI_MatplotlibMathTextUtilities.h | 42 + src/PVGUI/PVGUI_Module.cxx | 62 +- src/PVGUI/PVGUI_Module_widgets.cxx | 6 +- src/PVGUI/PVGUI_OutputWindowAdapter.cxx | 1 - src/PVGUI/PVGUI_OutputWindowAdapter.h | 2 +- src/PVGUI/PVGUI_ParaViewSettingsPane.h | 2 +- src/PVGUI/wrap.cmake | 10 +- src/PV_SWIG/paravisSM.py | 37 +- src/PV_SWIG/presentations.py | 14 +- src/PV_SWIG/pvsimple.py | 210 +- src/ParaView/lex.yy.c | 4701 +++---- src/ParaView/vtkParse.tab.c | 10144 +++++++--------- src/ParaView/vtkParseData.c | 935 ++ src/ParaView/vtkParseData.h | 335 + src/ParaView/vtkParseExtras.c | 679 +- src/ParaView/vtkParseExtras.h | 50 +- src/ParaView/vtkParseHierarchy.c | 196 +- src/ParaView/vtkParseHierarchy.h | 12 +- src/ParaView/vtkParseMain.c | 523 +- src/ParaView/vtkParseMain.h | 86 + src/ParaView/vtkParsePreprocess.c | 1553 ++- src/ParaView/vtkParsePreprocess.h | 55 +- src/ParaView/vtkParseString.c | 119 + src/ParaView/vtkParseString.h | 78 + src/ParaView/vtkWrap.c | 185 +- src/ParaView/vtkWrap.h | 20 +- src/ParaView/vtkWrapHierarchy.c | 104 +- .../vtkElevationSurfaceFilter.cxx | 2 +- .../vtkElevationSurfaceFilter.h | 2 +- src/Plugins/Filter/vtkMySampleFilter.cxx | 2 +- src/Plugins/Filter/vtkMySampleFilter.h | 2 +- .../IntegrationPoints/vtkELNOFilter.cxx | 2 +- src/Plugins/IntegrationPoints/vtkELNOFilter.h | 2 +- .../IntegrationPoints/vtkELNOMeshFilter.cxx | 6 +- .../IntegrationPoints/vtkELNOMeshFilter.h | 2 +- .../vtkELNOSurfaceFilter.cxx | 8 +- .../IntegrationPoints/vtkELNOSurfaceFilter.h | 2 +- src/Plugins/MedReader/CMake/FindMED.cmake | 17 +- src/Plugins/MedReader/CMakeLists.txt | 34 +- src/Plugins/MedReader/IO/CMakeLists.txt | 54 +- .../MedReader/IO/Testing/Cxx/CMakeLists.txt | 22 +- src/Plugins/MedReader/IO/module.cmake | 12 + src/Plugins/MedReader/IO/vtkExtractGroup.cxx | 18 +- src/Plugins/MedReader/IO/vtkExtractGroup.h | 7 +- .../MedReader/IO/vtkGenerateStructElement.cxx | 28 +- .../MedReader/IO/vtkGenerateStructElement.h | 21 +- src/Plugins/MedReader/IO/vtkMed.h | 2 +- .../MedReader/IO/vtkMedCartesianGrid.cxx | 4 +- .../MedReader/IO/vtkMedCartesianGrid.h | 4 +- .../MedReader/IO/vtkMedConstantAttribute.cxx | 21 +- .../MedReader/IO/vtkMedConstantAttribute.h | 21 +- .../MedReader/IO/vtkMedCurvilinearGrid.cxx | 19 +- .../MedReader/IO/vtkMedCurvilinearGrid.h | 4 +- src/Plugins/MedReader/IO/vtkMedDriver.cxx | 21 +- src/Plugins/MedReader/IO/vtkMedDriver.h | 4 +- src/Plugins/MedReader/IO/vtkMedDriver30.cxx | 142 +- src/Plugins/MedReader/IO/vtkMedDriver30.h | 4 +- .../MedReader/IO/vtkMedEntityArray.cxx | 28 +- src/Plugins/MedReader/IO/vtkMedEntityArray.h | 4 +- src/Plugins/MedReader/IO/vtkMedFactory.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFactory.h | 4 +- src/Plugins/MedReader/IO/vtkMedFamily.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFamily.h | 4 +- .../MedReader/IO/vtkMedFamilyOnEntity.cxx | 4 +- .../MedReader/IO/vtkMedFamilyOnEntity.h | 4 +- .../IO/vtkMedFamilyOnEntityOnProfile.cxx | 9 +- .../IO/vtkMedFamilyOnEntityOnProfile.h | 4 +- src/Plugins/MedReader/IO/vtkMedField.cxx | 5 +- src/Plugins/MedReader/IO/vtkMedField.h | 4 +- .../MedReader/IO/vtkMedFieldOnProfile.cxx | 4 +- .../MedReader/IO/vtkMedFieldOnProfile.h | 4 +- .../MedReader/IO/vtkMedFieldOverEntity.cxx | 4 +- .../MedReader/IO/vtkMedFieldOverEntity.h | 4 +- src/Plugins/MedReader/IO/vtkMedFieldStep.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFieldStep.h | 4 +- src/Plugins/MedReader/IO/vtkMedFile.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFile.h | 4 +- src/Plugins/MedReader/IO/vtkMedFilter.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFilter.h | 4 +- src/Plugins/MedReader/IO/vtkMedFraction.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedFraction.h | 4 +- src/Plugins/MedReader/IO/vtkMedGrid.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedGrid.h | 4 +- src/Plugins/MedReader/IO/vtkMedGroup.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedGroup.h | 4 +- src/Plugins/MedReader/IO/vtkMedIntArray.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedIntArray.h | 4 +- .../MedReader/IO/vtkMedIntArrayInternal.cxx | 4 +- .../MedReader/IO/vtkMedIntArrayInternal.h | 4 +- .../MedReader/IO/vtkMedInterpolation.cxx | 4 +- .../MedReader/IO/vtkMedInterpolation.h | 4 +- src/Plugins/MedReader/IO/vtkMedLink.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedLink.h | 4 +- .../MedReader/IO/vtkMedLocalization.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedLocalization.h | 4 +- src/Plugins/MedReader/IO/vtkMedMesh.cxx | 8 +- src/Plugins/MedReader/IO/vtkMedMesh.h | 4 +- src/Plugins/MedReader/IO/vtkMedPolarGrid.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedPolarGrid.h | 4 +- src/Plugins/MedReader/IO/vtkMedProfile.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedProfile.h | 4 +- src/Plugins/MedReader/IO/vtkMedReader.cxx | 39 +- src/Plugins/MedReader/IO/vtkMedReader.h | 4 +- .../MedReader/IO/vtkMedRegularGrid.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedRegularGrid.h | 4 +- src/Plugins/MedReader/IO/vtkMedSelection.cxx | 4 +- src/Plugins/MedReader/IO/vtkMedSelection.h | 4 +- src/Plugins/MedReader/IO/vtkMedSetGet.h | 2 +- .../MedReader/IO/vtkMedStructElement.cxx | 21 +- .../MedReader/IO/vtkMedStructElement.h | 21 +- .../MedReader/IO/vtkMedSupportMesh.cxx | 21 +- src/Plugins/MedReader/IO/vtkMedSupportMesh.h | 21 +- .../MedReader/IO/vtkMedUnstructuredGrid.cxx | 9 +- .../MedReader/IO/vtkMedUnstructuredGrid.h | 4 +- src/Plugins/MedReader/IO/vtkMedUtilities.cxx | 16 +- src/Plugins/MedReader/IO/vtkMedUtilities.h | 6 +- .../MedReader/IO/vtkMedVariableAttribute.cxx | 21 +- .../MedReader/IO/vtkMedVariableAttribute.h | 21 +- .../MedReader/ParaViewPlugin/CMakeLists.txt | 37 +- .../ParaViewPlugin/pqExtractGroupPanel.cxx | 9 +- src/Plugins/MedReader/plugin.cmake | 5 + .../NavigationMode/pqSetModeStarter.cxx | 2 +- src/Plugins/ParaMEDCorba/CMakeLists.txt | 13 +- .../ParaMEDCorba/VTKParaMEDFieldClient.cxx | 4 +- .../ParaMEDCorba/vtkParaMEDCorbaSource.cxx | 26 +- .../ParaMEDCorba/vtkParaMEDCorbaSource.h | 6 +- .../ScaleVector/vtkScaleVectorFilter.cxx | 2 +- .../ScaleVector/vtkScaleVectorFilter.h | 2 +- .../Resources/TableReaderClient.xml | 2 +- .../TableReader/Reader/vtkVisuTableReader.cxx | 12 +- .../TableReader/Reader/vtkVisuTableReader.h | 2 +- .../TableTo3DFilter/vtkTableTo3D.cxx | 10 +- .../TableTo3DFilter/vtkTableTo3D.h | 2 +- test/VisuPrs/2D_viewer/A0.py | 19 +- test/VisuPrs/2D_viewer/A1.py | 56 +- test/VisuPrs/2D_viewer/CMakeLists.txt | 4 +- test/VisuPrs/3D_viewer/CMakeLists.txt | 5 +- test/VisuPrs/Animation/CMakeLists.txt | 5 +- test/VisuPrs/CMakeLists.txt | 4 +- test/VisuPrs/CutLines/CMakeLists.txt | 5 +- test/VisuPrs/CutPlanes/CMakeLists.txt | 5 +- test/VisuPrs/DeformedShape/CMakeLists.txt | 5 +- test/VisuPrs/GaussPoints/CMakeLists.txt | 7 +- test/VisuPrs/IsoSurfaces/CMakeLists.txt | 5 +- test/VisuPrs/MeshPresentation/CMakeLists.txt | 5 +- test/VisuPrs/Plot3D/CMakeLists.txt | 5 +- test/VisuPrs/SWIG_scripts/CMakeLists.txt | 5 +- test/VisuPrs/ScalarMap/CMakeLists.txt | 7 +- .../ScalarMap_On_DeformedShape/CMakeLists.txt | 5 +- test/VisuPrs/StreamLines/CMakeLists.txt | 7 +- test/VisuPrs/Tables/CMakeLists.txt | 5 +- test/VisuPrs/Util/CMakeLists.txt | 1 + test/VisuPrs/Util/paravistest.py | 4 +- test/VisuPrs/Util/paravistesthelper.py | 18 + test/VisuPrs/Vectors/CMakeLists.txt | 5 +- 166 files changed, 11495 insertions(+), 10441 deletions(-) create mode 100644 idl/hints create mode 100644 src/PVGUI/PVGUI_MatplotlibMathTextUtilities.cxx create mode 100644 src/PVGUI/PVGUI_MatplotlibMathTextUtilities.h create mode 100644 src/ParaView/vtkParseData.c create mode 100644 src/ParaView/vtkParseData.h create mode 100644 src/ParaView/vtkParseMain.h create mode 100644 src/ParaView/vtkParseString.c create mode 100644 src/ParaView/vtkParseString.h create mode 100644 src/Plugins/MedReader/IO/module.cmake create mode 100644 src/Plugins/MedReader/plugin.cmake create mode 100644 test/VisuPrs/Util/paravistesthelper.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 0379ad43..3bf52a63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ IF(WINDOWS) SET( CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replacementFlags}" ) ENDIF(WINDOWS) -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7 FATAL_ERROR) IF(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) ENDIF(COMMAND cmake_policy) @@ -75,7 +75,8 @@ ENDIF(EXISTS ${VISU_ROOT_DIR}/adm_local/cmake_files/FindVISU.cmake) SET(MED_ROOT_DIR $ENV{MED_ROOT_DIR} CACHE PATH "MED_ROOT_DIR") INCLUDE(${MED_ROOT_DIR}/adm_local/cmake_files/FindMED.cmake) -EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/getwrapclasses.py ${PARAVIEW_INCLUDE_DIRS}) +LIST(GET PARAVIEW_INCLUDE_DIRS 0 PARAVIEW_INCLUDE_DIR0) +EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/getwrapclasses.py ${PARAVIEW_INCLUDE_DIR0}) SET(SUBDIRS idl @@ -98,8 +99,6 @@ SET(output ${CMAKE_CURRENT_BINARY_DIR}/PARAVIS_version.h) MESSAGE(STATUS "Creation of ${output}") CONFIGURE_FILE(${input} ${output}) -ADD_DEFINITIONS(-DVTK_EXCLUDE_STRSTREAM_HEADERS) - FOREACH(dir ${SUBDIRS}) ADD_SUBDIRECTORY(${dir}) ENDFOREACH(dir ${SUBDIRS}) diff --git a/adm_local/cmake_files/FindPARAVIEW.cmake b/adm_local/cmake_files/FindPARAVIEW.cmake index 030d81a2..e19f47f4 100644 --- a/adm_local/cmake_files/FindPARAVIEW.cmake +++ b/adm_local/cmake_files/FindPARAVIEW.cmake @@ -17,45 +17,6 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -FIND_PACKAGE(ParaView REQUIRED) - -SET(PARAVIEW_INCLUDES -I${PARAVIEW_INCLUDE_DIRS}) - -FIND_LIBRARY(QtPython QtPython PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(QVTK QVTK PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkClientServer vtkClientServer PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkPVServerManager vtkPVServerManager PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(pqApplicationComponents pqApplicationComponents PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(pqComponents pqComponents PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(pqCore pqCore PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(pqWidgets pqWidgets PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkPVClientServerCore vtkPVClientServerCore PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkPVServerImplementation vtkPVServerImplementation PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkPVCommon vtkPVCommon PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkPVVTKExtensions vtkPVVTKExtensions PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkViews vtkViews PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(pqApplicationComponents pqApplicationComponents PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkGraphicsCS vtkGraphicsCS PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) -FIND_LIBRARY(vtkCommonCS vtkCommonCS PATHS ${PARAVIEW_LIBRARY_DIRS} NO_DEFAULT_PATH) - -SET(PARAVIEW_LIBS - ${QtPython} - ${QVTK} - ${vtkClientServer} - ${vtkGenericFiltering} - ${vtkInfovis} - ${vtkVolumeRendering} - ${vtkPVServerManager} - ${pqApplicationComponents} - ${pqComponents} - ${pqCore} - ${pqWidgets} - ${vtkPVClientServerCore} - ${vtkPVServerImplementation} - ${vtkPVVTKExtensions} - ${vtkPVCommon} - ${vtkViews} - ${pqApplicationComponents} - ${vtkGraphicsCS} - ${vtkCommonCS} - ) \ No newline at end of file +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7 FATAL_ERROR) +FIND_PACKAGE(ParaView REQUIRED NO_MODULE) +INCLUDE(${PARAVIEW_USE_FILE}) diff --git a/getwrapclasses.py b/getwrapclasses.py index 883f1646..db2b747c 100644 --- a/getwrapclasses.py +++ b/getwrapclasses.py @@ -24,10 +24,17 @@ import re classeslistsm = [] classeslistvtk = [] -from vtkPVClientServerCorePython import * -from vtkPVServerImplementationPython import * -from vtkPVServerManagerPython import * from vtkPVCommonPython import * +from vtkPVClientServerCoreCorePython import * +from vtkPVClientServerCoreDefaultPython import * +from vtkPVClientServerCoreRenderingPython import * +from vtkPVServerImplementationCorePython import * +from vtkPVServerImplementationDefaultPython import * +from vtkPVServerImplementationRenderingPython import * +from vtkPVServerManagerApplicationPython import * +from vtkPVServerManagerCorePython import * +from vtkPVServerManagerDefaultPython import * +from vtkPVServerManagerRenderingPython import * l1 = dir() for a in l1: diff --git a/idl/CMakeLists.txt b/idl/CMakeLists.txt index dc6b6f02..51d1ea24 100644 --- a/idl/CMakeLists.txt +++ b/idl/CMakeLists.txt @@ -23,9 +23,6 @@ SET(SOVERSION_INFO ${VERSION_MAJOR}.${VERSION_MINOR}) ADD_DEFINITIONS(-DHAVE_SALOME_CONFIG) INCLUDE_DIRECTORIES(${OMNIORB_INCLUDE_DIRS} ${KERNEL_ROOT_DIR}/include/salome ${CMAKE_BINARY_DIR}/idl) -#INCLUDE(vtkWrapHierarchy.cmake) -#SET(VTK_WRAP_HIERARCHY_EXE vtkWrapHierarchy) - INCLUDE(wrap.cmake) @@ -74,10 +71,15 @@ ADD_EXECUTABLE(vtkWrapIDL ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseHierarchy.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseExtras.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c + ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseData.c + ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseString.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrap.c - ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrapText.c +# ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrapText.c ${CMAKE_CURRENT_SOURCE_DIR}/vtkWrapIDL.c) +set_property(SOURCE ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c PROPERTY COMPILE_DEFINITIONS + VTK_PARSE_VERSION="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}") + ADD_DEPENDENCIES(vtkWrapIDL generate_txt) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/ParaView) @@ -86,6 +88,10 @@ FOREACH(f ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${PARAVIEW_INCLUDES} ${VTK_INCL SET(flags "${flags} ${f}") ENDFOREACH(f ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${PARAVIEW_INCLUDES} ${VTK_INCLUDES}) +#VTN TODO: +#IF(VTK_LEGACY_REMOVE) +# ADD_DEFINITIONS(-DVTK_PARSE_LEGACY_REMOVE) +#ENDIF() SET_TARGET_PROPERTIES(vtkWrapIDL PROPERTIES COMPILE_FLAGS "${flags}") TARGET_LINK_LIBRARIES(vtkWrapIDL ${PLATFORM_LDFLAGS} ${PLATFORM_LIBADD}) @@ -125,7 +131,7 @@ FOREACH(input ${BASEIDL_FILES} ${WRAP_IDL}) INSTALL(CODE "SET(IDL_FILE ${input})") INSTALL(CODE "SET(DIR lib/python${PYTHON_VERSION}/site-packages/salome)") INSTALL(CODE "SET(CMAKE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})") - INSTALL(CODE "SET(OMNIORB_IDL_PYTHON ${OMNIORB_IDL_PYTHON})") + INSTALL(CODE "SET(OMNIORB_IDL_COMPILER ${OMNIORB_IDL_COMPILER})") INSTALL(CODE "SET(IDLPYFLAGS -bpythonIDL -p${CMAKE_CURRENT_SOURCE_DIR} -I${CMAKE_CURRENT_SOURCE_DIR} -I${KERNEL_ROOT_DIR}/idl/salome)") INSTALL(SCRIPT ${KERNEL_ROOT_DIR}/salome_adm/cmake_files/deprecated/install_python_from_idl.cmake) diff --git a/idl/create_hints.py b/idl/create_hints.py index 31addda5..32092f62 100755 --- a/idl/create_hints.py +++ b/idl/create_hints.py @@ -24,7 +24,8 @@ CONF_DIR = os.path.dirname(sys.argv[0]) content = "" for filename in [ - os.path.join(sys.argv[1], "hints"), +# os.path.join(sys.argv[1], "hints"), + os.path.join(CONF_DIR, "hints"), os.path.join(CONF_DIR, "hints_paravis"), ]: stream = open(filename) diff --git a/idl/create_hints.sh b/idl/create_hints.sh index 85a8c980..6b15c544 100755 --- a/idl/create_hints.sh +++ b/idl/create_hints.sh @@ -21,5 +21,6 @@ CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` -cp $1/hints hints +#cp $1/hints hints +cp ${CONF_DIR}/hints hints cat ${CONF_DIR}/hints_paravis >> hints diff --git a/idl/hints b/idl/hints new file mode 100644 index 00000000..79132807 --- /dev/null +++ b/idl/hints @@ -0,0 +1,258 @@ +vtkAbstractMapper3D GetBounds 307 6 +vtkAbstractMapper3D GetCenter 307 3 +vtkAbstractTransform TransformDoubleNormalAtPoint 307 3 +vtkAbstractTransform TransformDoublePoint 307 3 +vtkAbstractTransform TransformDoubleVectorAtPoint 307 3 +vtkAbstractTransform TransformFloatNormalAtPoint 301 3 +vtkAbstractTransform TransformFloatPoint 301 3 +vtkAbstractTransform TransformFloatVectorAtPoint 301 3 +vtkAbstractTransform TransformNormalAtPoint 307 3 +vtkAbstractTransform TransformPoint 307 3 +vtkAbstractTransform TransformVectorAtPoint 307 3 +vtkAbstractVolumeMapper GetBounds 307 6 +vtkActor GetBounds 307 6 +vtkAlgorithm GetUpdateExtent 304 6 +vtkAnnotatedCubeActor GetBounds 307 6 +vtkAssembly GetBounds 307 6 +vtkAxesActor GetBounds 307 6 +vtkAxisActor GetBounds 307 6 +vtkBoxRepresentation GetBounds 307 6 +vtkCamera GetOrientation 307 3 +vtkCamera GetOrientationWXYZ 307 4 +vtkCell GetBounds 307 6 +vtkCharArray GetValueRange 303 2 +vtkColorTransferFunction GetColor 307 3 +vtkCompositePolyDataMapper2 GetBounds 307 6 +vtkCompositePolyDataMapper GetBounds 307 6 +vtkCoordinate GetComputedDisplayValue 304 2 +vtkCoordinate GetComputedDoubleDisplayValue 307 2 +vtkCoordinate GetComputedDoubleViewportValue 307 2 +vtkCoordinate GetComputedLocalDisplayValue 304 2 +vtkCoordinate GetComputedViewportValue 304 2 +vtkCoordinate GetComputedWorldValue 307 3 +vtkCubeAxesActor2D GetBounds 307 6 +vtkCubeAxesActor2D GetRanges 307 6 +vtkCubeAxesActor GetBounds 307 6 +vtkDataArray GetRange 307 2 +vtkDataArray GetTuple2 307 2 +vtkDataArray GetTuple3 307 3 +vtkDataArray GetTuple4 307 4 +vtkDataArray GetTuple9 307 9 +vtkDataObject GetUpdateExtent 304 6 +vtkDataObject GetWholeBoundingBox 307 6 +vtkDataObject GetWholeExtent 304 6 +vtkDataSet GetBounds 307 6 +vtkDataSet GetCenter 307 3 +vtkDataSet GetPoint 307 3 +vtkDataSet GetScalarRange 307 2 +vtkDICOMImageReader GetImageOrientationPatient 301 6 +vtkDICOMImageReader GetImagePositionPatient 301 3 +vtkDICOMImageReader GetPixelSpacing 307 3 +vtkDirectionEncoder GetDecodedGradient 301 3 +vtkDistanceRepresentation GetPoint1WorldPosition 307 3 +vtkDistanceRepresentation GetPoint2WorldPosition 307 3 +vtkDoubleArray GetValueRange 307 2 +vtkExtentSplitter GetSubExtent 304 6 +vtkExtractUnstructuredGrid GetExtent 307 6 +vtkFloatArray GetValueRange 301 2 +vtkFunctionParser GetVectorResult 307 3 +vtkFunctionParser GetVectorVariableValue 307 3 +vtkGeometryFilter GetExtent 307 6 +vtkGraph GetEdgePoint 307 3 +vtkGraphMapper GetBounds 307 6 +vtkGridSynchronizedTemplates3D GetExecuteExtent 304 6 +vtkHandleRepresentation GetDisplayPosition 307 3 +vtkHandleRepresentation GetWorldPosition 307 3 +vtkHexahedron GetEdgeArray 304 2 +vtkHexahedron GetFaceArray 304 4 +vtkHyperOctree GetPoint 307 3 +vtkHyperStreamline GetStartPosition 307 3 +vtkIDTypeArray GetValueRange 30A 2 +vtkImageAccumulate GetComponentExtent 304 6 +vtkImageActor GetBounds 307 6 +vtkImageActor GetDisplayExtent 304 6 +vtkImageButterworthHighPass GetCutOff 307 3 +vtkImageButterworthLowPass GetCutOff 307 3 +vtkImageClip GetOutputWholeExtent 304 6 +vtkImageConvolve GetKernel3x3 301 9 +vtkImageConvolve GetKernel3x3x3 301 27 +vtkImageConvolve GetKernel5x5 301 25 +vtkImageData GetDimensions 304 3 +vtkImageData GetExtent 304 6 +vtkImageData GetIncrements 30A 3 +vtkImageData GetPoint 307 3 +vtkImageEllipsoidSource GetWholeExtent 304 6 +vtkImageExport GetDataDimensions 304 3 +vtkImageExport GetDataExtent 304 6 +vtkImageExport GetDataOrigin 307 3 +vtkImageExport GetDataSpacing 307 3 +vtkImageMandelbrotSource GetSizeCX 307 4 +vtkImagePadFilter GetOutputWholeExtent 304 6 +vtkImagePlaneWidget GetCenter 307 3 +vtkImagePlaneWidget GetNormal 307 3 +vtkImagePlaneWidget GetOrigin 307 3 +vtkImagePlaneWidget GetPoint1 307 3 +vtkImagePlaneWidget GetPoint2 307 3 +vtkImageReslice GetResliceAxesDirectionCosines 307 9 +vtkImageReslice GetResliceAxesOrigin 307 3 +vtkImageSincInterpolator GetBlurFactors 307 3 +vtkImageSource GetExecuteExtent 304 6 +vtkImageSpatialAlgorithm GetKernelMiddle 304 3 +vtkImageSpatialAlgorithm GetKernelSize 304 3 +vtkImageSpatialFilter GetKernelMiddle 304 3 +vtkImageSpatialFilter GetKernelSize 304 3 +vtkImageTracerWidget GetHandlePosition 307 3 +vtkImageVectorConvolve GetKernel 301 3 +vtkImageViewer GetPosition 304 2 +vtkImageViewer GetSize 304 2 +vtkImplicitFunction FunctionGradient 307 3 +vtkImplicitPlaneRepresentation GetBounds 307 6 +vtkImplicitPlaneRepresentation GetNormal 307 3 +vtkImplicitPlaneRepresentation GetOrigin 307 3 +vtkImplicitPlaneWidget GetNormal 307 3 +vtkImplicitPlaneWidget GetOrigin 307 3 +vtk__Int64Array GetValueRange 30C 2 +vtkIntArray GetValueRange 304 2 +vtkKdNode GetMaxBounds 307 3 +vtkKdNode GetMaxDataBounds 307 3 +vtkKdNode GetMinBounds 307 3 +vtkKdNode GetMinDataBounds 307 3 +vtkLegendBoxActor GetEntryColor 307 3 +vtkLight GetColor 307 3 +vtkLight GetTransformedFocalPoint 307 3 +vtkLight GetTransformedPosition 307 3 +vtkLinearTransform TransformDoubleNormal 307 3 +vtkLinearTransform TransformDoubleVector 307 3 +vtkLinearTransform TransformFloatNormal 301 3 +vtkLinearTransform TransformFloatVector 301 3 +vtkLinearTransform TransformNormal 307 3 +vtkLinearTransform TransformVector 307 3 +vtkLineRepresentation GetBounds 307 6 +vtkLineRepresentation GetPoint1DisplayPosition 307 3 +vtkLineRepresentation GetPoint1WorldPosition 307 3 +vtkLineRepresentation GetPoint2DisplayPosition 307 3 +vtkLineRepresentation GetPoint2WorldPosition 307 3 +vtkLineWidget GetPoint1 307 3 +vtkLineWidget GetPoint2 307 3 +vtkLODProp3D GetBounds 307 6 +vtkLongArray GetValueRange 306 2 +vtkLongLongArray GetValueRange 30B 2 +vtkLookupTable GetColor 307 3 +vtkLookupTable GetRange 307 2 +vtkLookupTable GetTableValue 307 4 +vtkMapper GetBounds 307 6 +vtkMath HSVToRGB 2307 3 +vtkMath RGBToHSV 2307 3 +vtkMath SolveCubic 2307 5 +vtkMath SolveLinear 2307 3 +vtkMath SolveQuadratic 2307 4 +vtkMatrix4x4 MultiplyDoublePoint 307 4 +vtkMatrix4x4 MultiplyFloatPoint 301 4 +vtkMatrix4x4 MultiplyPoint 301 4 +vtkMedicalImageProperties GetNthWindowLevelPreset 307 2 +vtkMedicalImageProperties GetWindowLevelPreset 307 2 +vtkMINCImageReader GetDataRange 307 2 +vtkPainterPolyDataMapper GetBounds 307 6 +vtkParallelopipedRepresentation GetBounds 307 6 +vtkPiecewiseFunction GetRange 307 2 +vtkPlaneWidget GetCenter 307 3 +vtkPlaneWidget GetNormal 307 3 +vtkPlaneWidget GetOrigin 307 3 +vtkPlaneWidget GetPoint1 307 3 +vtkPlaneWidget GetPoint2 307 3 +vtkPointHandleRepresentation2D GetBounds 307 6 +vtkPointHandleRepresentation3D GetBounds 307 6 +vtkPointSet GetPoint 307 3 +vtkPoints GetBounds 307 6 +vtkPoints GetPoint 307 3 +vtkPointWidget GetPosition 307 3 +vtkPolyData GetUpdateExtent 304 6 +vtkPolyDataMapper GetBounds 307 6 +vtkPolygon ConvertEllipseToImplicit 307 5 +vtkPolygon FitEllipse 307 6 +vtkPolyLine ConvertEllipseToImplicit 307 5 +vtkPolyLine EllipseToImplicit 307 3 +vtkPolyLine FitEllipse 307 6 +vtkProjectedPolyDataRayBounder GetRayBounds 301 2 +vtkProp3D GetBounds 307 6 +vtkProp3D GetCenter 307 3 +vtkProp3D GetOrientation 307 3 +vtkProp3D GetOrientationWXYZ 307 4 +vtkProp3D GetXRange 307 2 +vtkProp3D GetYRange 307 2 +vtkProp3D GetZRange 307 2 +vtkPropAssembly GetBounds 307 6 +vtkProperty GetColor 307 3 +vtkProp GetBounds 307 6 +vtkPyramid GetEdgeArray 304 2 +vtkPyramid GetFaceArray 304 4 +vtkQuadricClustering GetNumberOfDivisions 304 3 +vtkRayCaster GetParallelIncrements 301 2 +vtkRayCaster GetParallelStartPosition 301 3 +vtkRectilinearGrid GetExtent 304 6 +vtkRectilinearGrid GetPoint 307 3 +vtkRecursiveSphereDirectionEncoder GetDecodedGradient 301 3 +vtkRenderer ComputeVisiblePropBounds 307 6 +vtkScalarsToColors GetColor 307 3 +vtkScalarsToColors GetRange 307 2 +vtkShortArray GetValueRange 305 2 +vtkSignedCharArray GetValueRange 30D 2 +vtkSliderRepresentation3D GetBounds 307 6 +vtkSphereHandleRepresentation GetBounds 307 6 +vtkSphereRepresentation GetCenter 307 3 +vtkSphereWidget GetCenter 307 3 +vtkSphericalDirectionEncoder GetDecodedGradient 301 3 +vtkSplineWidget GetHandlePosition 307 3 +vtkStreamer GetStartPosition 307 3 +vtkStreamingDemandDrivenPipeline GetWholeExtent 304 6 +vtkStructuredGrid GetDimensions 304 3 +vtkStructuredGrid GetExtent 304 6 +vtkStructuredGrid GetPoint 307 3 +vtkStructuredGrid GetScalarRange 307 2 +vtkStructuredPointsGeometryFilter GetExtent 304 6 +vtkSynchronizedTemplates3D GetExecuteExtent 304 6 +vtkTetra GetEdgeArray 304 2 +vtkTetra GetFaceArray 304 3 +vtkTextActor3D GetBounds 307 6 +vtkTransform GetDoublePoint 307 4 +vtkTransform GetOrientation 307 3 +vtkTransform GetOrientationWXYZ 307 4 +vtkTransform GetPoint 307 4 +vtkTransform GetPosition 307 3 +vtkTransform GetScale 307 3 +vtkTypeInt64Array GetValueRange 30B 2 +vtkTypeInt64Array GetValueRange 30C 2 +vtkTypeUInt64Array GetValueRange 31B 2 +vtkTypeUInt64Array GetValueRange 31C 2 +vtkUnsignedCharArray GetValueRange 313 2 +vtkUnsigned__Int64Array GetValueRange 31C 2 +vtkUnsignedIntArray GetValueRange 314 2 +vtkUnsignedLongArray GetValueRange 316 2 +vtkUnsignedLongLongArray GetValueRange 31B 2 +vtkUnsignedShortArray GetValueRange 315 2 +vtkUnstructuredGrid GetUpdateExtent 304 6 +vtkViewport GetCenter 307 2 +vtkViewport GetOrigin 304 2 +vtkViewport GetSize 304 2 +vtkViewRays GetParallelIncrements 301 2 +vtkViewRays GetParallelStartPosition 301 3 +vtkVolume GetBounds 307 6 +vtkVolumeMapper GetBounds 307 6 +vtkVoxel GetEdgeArray 304 2 +vtkVoxel GetFaceArray 304 4 +vtkWarpLens GetCenter 307 2 +vtkWedge GetEdgeArray 304 2 +vtkWedge GetFaceArray 304 4 +vtkWidgetRepresentation GetBounds 307 6 +vtkWin32OpenGLRenderWindow GetPosition 304 2 +vtkWin32OpenGLRenderWindow GetSize 304 2 +vtkWindow GetPosition 304 2 +vtkWindow GetSize 304 2 +vtkWindowLevelLookupTable GetMaximumTableValue 307 4 +vtkWindowLevelLookupTable GetMinimumTableValue 307 4 +vtkXImageWindow GetPosition 304 2 +vtkXImageWindow GetSize 304 2 +vtkXRenderWindow GetPosition 304 2 +vtkXRenderWindow GetScreenSize 304 2 +vtkXRenderWindow GetSize 304 2 +vtkXYPlotActor GetPlotColor 307 3 diff --git a/idl/vtkWrapIDL.c b/idl/vtkWrapIDL.c index 11e33cd8..784bb072 100644 --- a/idl/vtkWrapIDL.c +++ b/idl/vtkWrapIDL.c @@ -25,8 +25,10 @@ #include #include #include +#include "vtkConfigure.h" #include "vtkParse.h" #include "vtkParseType.h" +#include "vtkParseMain.h" #include "vtkWrapIDL.h" #include "vtkWrap.h" @@ -54,9 +56,11 @@ char* Copyright[] = { #define bs 12288 +HierarchyInfo *hierarchyInfo = NULL; int numberOfWrappedFunctions = 0; FunctionInfo *wrappedFunctions[1000]; extern FunctionInfo *currentFunction; +char *EmptyString = ""; static void add_to_sig(char *sig, const char *add, int *i) @@ -414,14 +418,16 @@ void output_type(char* result, int *currPos, int i, ValueInfo* aType, const char } } - if(IsChar(aType)) { - if(IsString(aType)) { - if(IsReturnArg(i)) - add_to_sig(result,"const ",currPos); - add_to_sig(result,"char",currPos); + if(IsString(aType)) { + if(IsReturnArg(i)) + add_to_sig(result,"const ",currPos); + if(strcmp(aType->Class, "vtkStdString") == 0) { + add_to_sig(result,"vtkStdString",currPos); } else { - add_to_sig(result,"CORBA::Char",currPos); + add_to_sig(result,"char",currPos); } + } else if(IsChar(aType)) { + add_to_sig(result,"CORBA::Char",currPos); } if(IsBoolean(aType)) { @@ -438,7 +444,9 @@ void output_type(char* result, int *currPos, int i, ValueInfo* aType, const char } if(IsArray(aType) || IsPtr(aType) || IsClass(aType) || IsString(aType)) { - add_to_sig(result,"*",currPos); + if(strcmp(aType->Class, "vtkStdString") != 0) { + add_to_sig(result,"*",currPos); + } } } @@ -743,8 +751,8 @@ void get_signature(const char* num, ClassInfo *data) ret = 1; } - for (j = 0; j < currentFunction->NumberOfArguments; j++) { - aArgVal = currentFunction->Arguments[j]; + for (j = 0; j < vtkWrap_CountWrappedParameters(currentFunction); j++) { + aArgVal = currentFunction->Parameters[j]; if(IsFunction(aArgVal)) ret == 1; if(IsClass(aArgVal) && ret == 0) { @@ -762,6 +770,7 @@ void get_signature(const char* num, ClassInfo *data) ret = 1; } + if(ret) { add_to_sig(result,"//\n",&currPos); /*currentFunction->Signature = (const char*)realloc((void*)currentFunction->Signature, @@ -802,8 +811,8 @@ void get_signature(const char* num, ClassInfo *data) add_to_sig(result,"* TObj;\n",&currPos); add_to_sig(result," TObj myObj;\n",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; //output_typedef(result, &currPos, i, currentFunction->ArgTypes[i], // currentFunction->ArgClasses[i]); output_typedef(result, &currPos, i, aArgVal, currentFunction->ArgClasses[i]); @@ -821,13 +830,13 @@ void get_signature(const char* num, ClassInfo *data) } add_to_sig(result,")",&currPos); add_to_sig(result,"(TObj theObj",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { sprintf(buf,", TParam%d theParam%d",i,i); add_to_sig(result,buf,&currPos); } add_to_sig(result,"):\n",&currPos); add_to_sig(result," myObj(theObj)",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { sprintf(buf,", myParam%d(theParam%d)",i,i); add_to_sig(result,buf,&currPos); } @@ -846,8 +855,8 @@ void get_signature(const char* num, ClassInfo *data) add_to_sig(result,"myObj->",&currPos); add_to_sig(result,currentFunction->Name,&currPos); add_to_sig(result,"(",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; if(i!=0) add_to_sig(result,", ",&currPos); if(IsClass(aArgVal) && IsPtr(aArgVal)) { @@ -895,23 +904,23 @@ void get_signature(const char* num, ClassInfo *data) /* print the arg list */ add_to_sig(result,"(",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; if( i != 0 ) { add_to_sig(result,", ",&currPos); } /* output_temp(result, &currPos, i, currentFunction->ArgTypes[i], (char*)currentFunction->ArgClasses[i], currentFunction->ArgCounts[i]);*/ - output_temp(result, &currPos, i, aArgVal, aArgVal->Class, currentFunction->NumberOfArguments); + output_temp(result, &currPos, i, aArgVal, aArgVal->Class, vtkWrap_CountWrappedParameters(currentFunction)); } add_to_sig(result,")",&currPos); #if defined(IDL_I_CC) add_to_sig(result," {\n",&currPos); add_to_sig(result," try {\n",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; if(IsClass(aArgVal)) { sprintf(buf," PARAVIS_Base_i* i_temp%d = GET_SERVANT(temp%d);\n",i,i); add_to_sig(result,buf,&currPos); @@ -1012,6 +1021,10 @@ void get_signature(const char* num, ClassInfo *data) add_to_sig(result,buf,&currPos); add_to_sig(result," ",&currPos); } + + if(IsArray(aRetVal) && IsUnsigned(aRetVal)) { + add_to_sig(result,"unsigned ",&currPos); + } if(IsFloat(aRetVal)) { if(IsArray(aRetVal)) { @@ -1092,8 +1105,8 @@ void get_signature(const char* num, ClassInfo *data) add_to_sig(result,"*)",&currPos); add_to_sig(result,"getVTKObject()\n",&currPos); - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; add_to_sig(result," , ",&currPos); //if(IsClass(currentFunction->ArgTypes[i]) && IsPtr(currentFunction->ArgTypes[i])) { @@ -1159,8 +1172,8 @@ void get_signature(const char* num, ClassInfo *data) add_to_sig(result,");\n",&currPos); } - for (i = 0; i < currentFunction->NumberOfArguments; i++) { - aArgVal = currentFunction->Arguments[i]; + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { + aArgVal = currentFunction->Parameters[i]; if(IsArray(aArgVal) && !IsVoid(aArgVal) && !IsString(aArgVal) && !IsClass(aArgVal)) { if (!IsIn(aArgVal)) { sprintf(buf," for(j_temp%d=0;j_temp%dSignature)[0]='\0'; + //((char*)currentFunction->Signature)[0]='\0'; + currentFunction->Signature = EmptyString; return; } } @@ -1373,7 +1387,6 @@ void outputFunction2(FILE *fp, ClassInfo *data) { sprintf(num,"_%d",j); } - get_signature(num,data); } /* create external type declarations for all object @@ -1385,7 +1398,7 @@ void outputFunction2(FILE *fp, ClassInfo *data) theName = NULL; theType = 0; - for (i = theFunc->NumberOfArguments; i >= 0; i--) + for (i = vtkWrap_CountWrappedParameters(theFunc); i >= 0; i--) { if (i==0)/* return type */ { @@ -1395,7 +1408,7 @@ void outputFunction2(FILE *fp, ClassInfo *data) } else /* arg type */ { - aArgVal = theFunc->Arguments[i-1]; + aArgVal = theFunc->Parameters[i-1]; //theType = theFunc->ArgTypes[i-1]; //theName = (char*)theFunc->ArgClasses[i-1]; } @@ -1416,7 +1429,7 @@ void outputFunction2(FILE *fp, ClassInfo *data) k = i+1; else k = 0; - for (j = backFunc->NumberOfArguments; j >= k; j--) + for (j = vtkWrap_CountWrappedParameters(backFunc); j >= k; j--) { if (j==0) /* return type */ { @@ -1426,7 +1439,7 @@ void outputFunction2(FILE *fp, ClassInfo *data) } else /* arg type */ { - aBackArgVal = backFunc->Arguments[j-1]; + aBackArgVal = backFunc->Parameters[j-1]; //backType = backFunc->ArgTypes[j-1]; //backName = (char*)backFunc->ArgClasses[j-1]; } @@ -1553,9 +1566,9 @@ void outputFunction(FILE *fp, ClassInfo *data) //printf("#### Check %s\n", currentFunction->Name); /* check to see if we can handle the args */ - for (i = 0; i < currentFunction->NumberOfArguments; i++) + for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { - aArgVal = currentFunction->Arguments[i]; + aArgVal = currentFunction->Parameters[i]; /*printf(" Argument: %s ", vtkWrap_GetTypeName(aArgVal)); if (vtkWrap_IsArray(aArgVal)) { printf("!!!! Argument %i is array\n", i); @@ -1652,12 +1665,12 @@ void outputFunction(FILE *fp, ClassInfo *data) if (aRetVal % VTK_PARSE_BASE_TYPE == 0x316) args_ok = 0; - if (currentFunction->NumberOfArguments && + if (vtkWrap_CountWrappedParameters(currentFunction) && (currentFunction->ArgTypes[0] == 0x5000) - &&(currentFunction->NumberOfArguments != 0x1)) args_ok = 0;*/ + &&(vtkWrap_CountWrappedParameters(currentFunction) != 0x1)) args_ok = 0;*/ /* make sure we have all the info we need for array arguments in */ - /*for (i = 0; i < currentFunction->NumberOfArguments; i++) + /*for (i = 0; i < vtkWrap_CountWrappedParameters(currentFunction); i++) { if (((currentFunction->ArgTypes[i] % VTK_PARSE_BASE_TYPE)/0x100 == 0x3)&& (currentFunction->ArgCounts[i] <= 0)&& @@ -1689,7 +1702,7 @@ void outputFunction(FILE *fp, ClassInfo *data) } /* check for New() function */ - if (!strcmp("New",currentFunction->Name) && currentFunction->NumberOfArguments == 0) + if (!strcmp("New",currentFunction->Name) && vtkWrap_CountWrappedParameters(currentFunction) == 0) { class_has_new = 1; } @@ -1707,17 +1720,41 @@ void outputFunction(FILE *fp, ClassInfo *data) } /* print the parsed structures */ -void vtkParseOutput(FILE *fp, FileInfo *file_info) +int main(int argc, char *argv[]) { - int i; + OptionInfo *options; + FileInfo *file_info; ClassInfo *data; + FILE *fp; + int i; + + /* get command-line args and parse the header file */ + file_info = vtkParse_Main(argc, argv); + + /* get the command-line options */ + options = vtkParse_GetCommandLineOptions(); + + /* get the output file */ + fp = fopen(options->OutputFileName, "w"); + + if (!fp) + { + fprintf(stderr, "Error opening output file %s\n", options->OutputFileName); + exit(1); + } /* get the main class */ - data = file_info->MainClass; + if ((data = file_info->MainClass) == NULL) + { + fclose(fp); + exit(0); + } - // Do not wrap this class - // if (strcmp(data->Name, "vtkVariant") == 0) - // return; + /* get the hierarchy info for accurate typing */ + if (options->HierarchyFileName) + { + hierarchyInfo = vtkParseHierarchy_ReadFile(options->HierarchyFileName); + } #if defined(IDL_I_HH) fprintf(fp, "// idl wrapper interface for %s object implementation\n//\n", data->Name); @@ -1753,6 +1790,10 @@ void vtkParseOutput(FILE *fp, FileInfo *file_info) for (i = 0; i < data->NumberOfFunctions; i++) { currentFunction = data->Functions[i]; +#ifdef VTK_LEGACY_REMOVE + if(currentFunction->IsLegacy) + continue; +#endif outputFunction(fp, data); } //printf("#### NbFunctions %i\n", numberOfWrappedFunctions); @@ -1768,5 +1809,8 @@ void vtkParseOutput(FILE *fp, FileInfo *file_info) #else fprintf(fp,"\n#endif\n"); #endif - return; + + vtkParse_Free(file_info); + + return 0; } diff --git a/idl/wrap.cmake b/idl/wrap.cmake index 39b6b578..cda9c7ea 100755 --- a/idl/wrap.cmake +++ b/idl/wrap.cmake @@ -17,6 +17,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +LIST(GET PARAVIEW_INCLUDE_DIRS 0 PARAVIEW_INCLUDE_DIR0) + ADD_CUSTOM_COMMAND( OUTPUT vtkWrapIDL.h COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/create_header.py ${CMAKE_BINARY_DIR} @@ -25,8 +27,9 @@ ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND( OUTPUT hints - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/create_hints.py ${PARAVIEW_LIBRARY_DIRS} - DEPENDS ${PARAVIEW_LIBRARY_DIRS}/hints ${CMAKE_CURRENT_SOURCE_DIR}/hints_paravis + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/create_hints.py ${PARAVIEW_LIBRARY_DIR0} +# DEPENDS ${PARAVIEW_LIBRARY_DIR0}/hints ${CMAKE_CURRENT_SOURCE_DIR}/hints_paravis + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hints ${CMAKE_CURRENT_SOURCE_DIR}/hints_paravis ) SET(WRAP_IDL) @@ -69,8 +72,8 @@ IF(EXISTS ${CMAKE_BINARY_DIR}/wrapfiles.txt) ENDIF(WINDOWS) ADD_CUSTOM_COMMAND( OUTPUT PARAVIS_Gen_${VAL}.idl - COMMAND ${vtkWrapIDL_EXEFILE} ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h hints 0 PARAVIS_Gen_${VAL}.idl - DEPENDS vtkWrapIDL ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h hints ${DEP} + COMMAND ${vtkWrapIDL_EXEFILE} -o PARAVIS_Gen_${VAL}.idl --hints hints ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h + DEPENDS vtkWrapIDL ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h hints ${DEP} ) ENDFOREACH(STR ${WRAP_LIST_REG}) diff --git a/src/PVGUI/CMakeLists.txt b/src/PVGUI/CMakeLists.txt index 35e01b79..4096204a 100644 --- a/src/PVGUI/CMakeLists.txt +++ b/src/PVGUI/CMakeLists.txt @@ -44,10 +44,14 @@ SET(vtkWrapIDL_HH_CPPFLAGS SET(vtkWrapIDL_CC_CPPFLAGS -DIDL_I_CC ) +#VTN TODO: +#IF(VTK_LEGACY_REMOVE) +# ADD_DEFINITIONS(-DVTK_PARSE_LEGACY_REMOVE) +#ENDIF() INCLUDE(wrap.cmake) -INCLUDE(${ParaView_CMAKE_DIR}/vtkClientServer.cmake) +INCLUDE(${ParaView_CMAKE_DIR}/vtkWrapClientServer.cmake) VTK_WRAP_ClientServer(vtkEDFCutterCS vtkEDFCutter_SRCS ${GUI_ROOT_DIR}/include/salome/vtkEDFCutter.h) # Library sources @@ -68,6 +72,8 @@ SET(dist_libPARAVIS_la_SOURCES PVGUI_Tools.cxx PVGUI_ParaViewSettingsPane.h PVGUI_ParaViewSettingsPane.cxx + PVGUI_MatplotlibMathTextUtilities.h + PVGUI_MatplotlibMathTextUtilities.cxx PV_I.h PARAVIS_Gen_i.hh PV_Events.h @@ -155,6 +161,12 @@ ENDFOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD SET_TARGET_PROPERTIES(PARAVIS PROPERTIES COMPILE_FLAGS "${flags}") SET_TARGET_PROPERTIES(PARAVIS PROPERTIES VERSION ${VERSION_INFO} SOVERSION ${SOVERSION_INFO}) +#FIND_PACKAGE(VTK 6.0 COMPONENTS vtkPVClientServerCoreCore vtkPVServerImplementationCore NO_MODULE) +#SET(VTK_LIBS vtkPVClientServerCoreCore vtkPVServerImplementationCore) +SET(VTK_LIBS) +FIND_PACKAGE(ParaView COMPONENTS pqApplicationComponents NO_MODULE) +SET(PARAVIEW_LIBS pqApplicationComponents) + TARGET_LINK_LIBRARIES(PARAVIS ${PLATFORM_LIBADD} ${PLATFORM_LDFLAGS} ${OMNIORB_LIBRARIES} @@ -177,13 +189,18 @@ FOREACH(name ${bin_PROGRAMS}) ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParse.tab.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParsePreprocess.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseHierarchy.c - ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseExtras.c + ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c + ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseData.c + ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseString.c ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrap.c - ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrapText.c +# ${CMAKE_SOURCE_DIR}/src/ParaView/vtkWrapText.c ${CMAKE_SOURCE_DIR}/idl/vtkWrapIDL.c) ADD_DEPENDENCIES(${name} generate_txt) + set_property(SOURCE ${CMAKE_SOURCE_DIR}/src/ParaView/vtkParseMain.c PROPERTY COMPILE_DEFINITIONS + VTK_PARSE_VERSION="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}") + SET(flags) FOREACH(f ${PARAVIEW_INCLUDES} ${VTK_INCLUDES} ${PLATFORM_CPPFLAGS} ${PTHREAD_CFLAGS} ${${name}_CPPFLAGS}) SET(flags "${flags} ${f}") diff --git a/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.cxx b/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.cxx new file mode 100644 index 00000000..372b78f8 --- /dev/null +++ b/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.cxx @@ -0,0 +1,24 @@ +// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include + +void PVGUI_MatplotlibMathTextUtilities::Disable() { + vtkMatplotlibMathTextUtilities::MPLMathTextAvailable = vtkMatplotlibMathTextUtilities::UNAVAILABLE; +} diff --git a/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.h b/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.h new file mode 100644 index 00000000..8244cbdf --- /dev/null +++ b/src/PVGUI/PVGUI_MatplotlibMathTextUtilities.h @@ -0,0 +1,42 @@ +// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _PVGUI_MatplotlibMathTextUtilities_h +#define _PVGUI_MatplotlibMathTextUtilities_h + +#include + +/*! +Disable vtkMatplotlibMathTextUtilities. It conflicts with SALOME Python console. + +To use, call PVGUI_MatplotlibMathTextUtilities::Disable() static method. + +This class is based on vtkMatplotlibMathTextUtilities VTK class. +*/ +class PVGUI_MatplotlibMathTextUtilities : public vtkMatplotlibMathTextUtilities +{ +public: + static void Disable(); + +private: + PVGUI_MatplotlibMathTextUtilities(); + ~PVGUI_MatplotlibMathTextUtilities(); +}; + +#endif // !_PVGUI_MatplotlibMathTextUtilities_h diff --git a/src/PVGUI/PVGUI_Module.cxx b/src/PVGUI/PVGUI_Module.cxx index 23649b9d..2d77ea12 100644 --- a/src/PVGUI/PVGUI_Module.cxx +++ b/src/PVGUI/PVGUI_Module.cxx @@ -114,7 +114,7 @@ #include #include #include -#include +//#include #include #include #include @@ -124,11 +124,18 @@ #include #include #include +#include +#include +#include +#include +#include #include #include +#include + #include CORBA_SERVER_HEADER(SALOME_ModuleCatalog) /* @@ -138,18 +145,18 @@ * collect. */ -#include -#include -#include -#include -#include -#include -#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include #include @@ -369,6 +376,9 @@ PVGUI_Module::~PVGUI_Module() */ void PVGUI_Module::initialize( CAM_Application* app ) { + //VTN: Disable conflict with python initialization for MatPlot. + PVGUI_MatplotlibMathTextUtilities::Disable(); + SalomeApp_Module::initialize( app ); // Create ParaViS actions @@ -416,7 +426,9 @@ void PVGUI_Module::initialize( CAM_Application* app ) // * adds support for standard paraview views. pgm->addInterface(new pqStandardViewModules(pgm)); + //VTN TODO Paraview 3.98.0: Unresolved symbol _ZN36pqStandardSummaryPanelImplementationC1EP7QObject pgm->addInterface(new pqStandardSummaryPanelImplementation(pgm)); + pgm->addInterface(new pqStandardPropertyWidgetInterface(pgm)); // Load plugins distributed with application. pqApplicationCore::instance()->loadDistributedPlugins(); @@ -442,6 +454,8 @@ void PVGUI_Module::initialize( CAM_Application* app ) new pqPersistentMainWindowStateBehavior(aDesktop); new pqObjectPickingBehavior(aDesktop); new pqCollaborationBehavior(this); + new pqMultiServerBehavior(this); + new pqViewStreamingBehavior(this); // Setup quick-launch shortcuts. QShortcut *ctrlSpace = new QShortcut(Qt::CTRL + Qt::Key_Space, aDesktop); @@ -564,11 +578,6 @@ void PVGUI_Module::onVariableChanged(pqVariableType t, const QString) { if( t == VARIABLE_TYPE_NONE ) return; - pqDataRepresentation* data = colorWidget->getRepresentation(); - - if( !data->getLookupTable() ) - return; - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); if(!aResourceMgr) @@ -579,12 +588,26 @@ void PVGUI_Module::onVariableChanged(pqVariableType t, const QString) { if(!visible) return; + /*//VTN: getRepresentation is protected + pqDataRepresentation* data = colorWidget->getRepresentation(); + + if( !data->getLookupTable() ) + return; + pqLookupTableManager* lut_mgr = pqApplicationCore::instance()->getLookupTableManager(); if(lut_mgr) { lut_mgr->setScalarBarVisibility(data,visible); } - + */ + pqColorToolbar* colorTooBar = qobject_cast(colorWidget->parent()); + if( !colorTooBar ) + return; + + pqScalarBarVisibilityReaction* scalarBarVisibility = colorTooBar->findChild(); + if(scalarBarVisibility) { + scalarBarVisibility->setScalarBarVisibility(visible); + } } @@ -677,6 +700,7 @@ bool PVGUI_Module::pvInit() return false; } + /* VTN: Looks like trash. For porting see branded_paraview_initializer.cxx.in // Not sure why this is needed. Andy added this ages ago with comment saying // needed for Mac apps. Need to check that it's indeed still required. QDir dir(QApplication::applicationDirPath()); @@ -696,7 +720,7 @@ bool PVGUI_Module::pvInit() plugin_string = ""; plugin_list = plugin_string.split(';',QString::SkipEmptyParts); loader.loadPlugins(plugin_list, true); //quietly skip not-found plugins. - + */ // End of Initializer code vtkOutputWindow::SetInstance(PVGUI_OutputWindowAdapter::New()); diff --git a/src/PVGUI/PVGUI_Module_widgets.cxx b/src/PVGUI/PVGUI_Module_widgets.cxx index feba87a6..168766a9 100644 --- a/src/PVGUI/PVGUI_Module_widgets.cxx +++ b/src/PVGUI/PVGUI_Module_widgets.cxx @@ -74,7 +74,7 @@ #include #include #include -#include +#include class ResizeHelper : public pqPVAnimationWidget { @@ -240,13 +240,12 @@ void PVGUI_Module::setupDockWidgets() // Memory inspector dock QDockWidget* memoryInspectorDock = new QDockWidget(tr( "TTL_MEMORY_INSPECTOR" ), desk); memoryInspectorDock->setObjectName("memoryInspectorDock"); - pqMemoryInspector* dockWidgetContents = new pqMemoryInspector(); + pqMemoryInspectorPanel* dockWidgetContents = new pqMemoryInspectorPanel(); dockWidgetContents->setObjectName("dockWidgetContents"); memoryInspectorDock->setWidget(dockWidgetContents); desk->addDockWidget(Qt::RightDockWidgetArea, memoryInspectorDock); myDockWidgets[memoryInspectorDock] = false; // hidden by default - // Setup the statusbar ... pqProgressWidget* aProgress = new pqProgressWidget(desk->statusBar()); desk->statusBar()->addPermanentWidget(aProgress); @@ -263,7 +262,6 @@ void PVGUI_Module::setupDockWidgets() collaborationPanelDock->hide(); memoryInspectorDock->hide(); - // Setup quick-launch shortcuts. QShortcut *ctrlSpace = new QShortcut(Qt::CTRL + Qt::Key_Space, desk); QObject::connect(ctrlSpace, SIGNAL(activated()), pqApplicationCore::instance(), SLOT(quickLaunch())); diff --git a/src/PVGUI/PVGUI_OutputWindowAdapter.cxx b/src/PVGUI/PVGUI_OutputWindowAdapter.cxx index 8c5c5734..8ab4d009 100644 --- a/src/PVGUI/PVGUI_OutputWindowAdapter.cxx +++ b/src/PVGUI/PVGUI_OutputWindowAdapter.cxx @@ -27,7 +27,6 @@ #include vtkStandardNewMacro(PVGUI_OutputWindowAdapter); -vtkCxxRevisionMacro(PVGUI_OutputWindowAdapter, "$Revision$"); diff --git a/src/PVGUI/PVGUI_OutputWindowAdapter.h b/src/PVGUI/PVGUI_OutputWindowAdapter.h index 86c6e41c..7fb34451 100644 --- a/src/PVGUI/PVGUI_OutputWindowAdapter.h +++ b/src/PVGUI/PVGUI_OutputWindowAdapter.h @@ -34,7 +34,7 @@ class PVGUI_OutputWindowAdapter : public vtkOutputWindow { public: static PVGUI_OutputWindowAdapter *New(); - vtkTypeRevisionMacro(PVGUI_OutputWindowAdapter, vtkOutputWindow); + vtkTypeMacro(PVGUI_OutputWindowAdapter, vtkOutputWindow); //! Returns the number of text messages received const unsigned int getTextCount(); diff --git a/src/PVGUI/PVGUI_ParaViewSettingsPane.h b/src/PVGUI/PVGUI_ParaViewSettingsPane.h index 5f7909df..e2adf298 100644 --- a/src/PVGUI/PVGUI_ParaViewSettingsPane.h +++ b/src/PVGUI/PVGUI_ParaViewSettingsPane.h @@ -30,7 +30,7 @@ #include -#include "pqComponentsExport.h" +#include "vtkPVConfig.h" class pqOptionsContainer; class OptionsDialogForm; diff --git a/src/PVGUI/wrap.cmake b/src/PVGUI/wrap.cmake index 3947abf0..dcc6f8dc 100755 --- a/src/PVGUI/wrap.cmake +++ b/src/PVGUI/wrap.cmake @@ -17,6 +17,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +LIST(GET PARAVIEW_INCLUDE_DIRS 0 PARAVIEW_INCLUDE_DIR0) + SET(WRAP_IDL_I_HH) SET(WRAP_IDL_I_CC) @@ -61,8 +63,8 @@ IF(EXISTS ${CMAKE_BINARY_DIR}/wrapfiles.txt) ADD_CUSTOM_COMMAND( OUTPUT PARAVIS_Gen_${VAL}_i.hh - COMMAND ${vtkWrapIDL_HH_EXEFILE} ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints 0 PARAVIS_Gen_${VAL}_i.hh - DEPENDS vtkWrapIDL_HH ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints ${DEP_HH} + COMMAND ${vtkWrapIDL_HH_EXEFILE} -o PARAVIS_Gen_${VAL}_i.hh --hints ${CMAKE_BINARY_DIR}/idl/hints ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h + DEPENDS vtkWrapIDL_HH ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints ${DEP_HH} ) SET(vtkWrapIDL_CC_EXEFILE ${CMAKE_CURRENT_BINARY_DIR}/vtkWrapIDL_CC) @@ -76,8 +78,8 @@ IF(EXISTS ${CMAKE_BINARY_DIR}/wrapfiles.txt) ADD_CUSTOM_COMMAND( OUTPUT PARAVIS_Gen_${VAL}_i.cc - COMMAND ${vtkWrapIDL_CC_EXEFILE} ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints 0 PARAVIS_Gen_${VAL}_i.cc - DEPENDS PARAVIS_Gen_${VAL}_i.hh vtkWrapIDL_CC ${PARAVIEW_INCLUDE_DIRS}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints ${DEP_CC} + COMMAND ${vtkWrapIDL_CC_EXEFILE} -o PARAVIS_Gen_${VAL}_i.cc --hints ${CMAKE_BINARY_DIR}/idl/hints ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h + DEPENDS PARAVIS_Gen_${VAL}_i.hh vtkWrapIDL_CC ${PARAVIEW_INCLUDE_DIR0}/${VAL}.h ${CMAKE_BINARY_DIR}/idl/hints ${DEP_CC} ) ENDFOREACH(STR ${WRAP_LIST_REG}) diff --git a/src/PV_SWIG/paravisSM.py b/src/PV_SWIG/paravisSM.py index b2abdb78..ac8bf1f2 100644 --- a/src/PV_SWIG/paravisSM.py +++ b/src/PV_SWIG/paravisSM.py @@ -51,7 +51,8 @@ A simple example: import re, os, new, sys from paravis import * - +# VTN: Avoid paraview.* instructions in this file. +# It leads to problems during execution. def _wrap_property(proxy, smproperty): """ Internal function. @@ -224,7 +225,7 @@ class Proxy(object): self.Observed = None self.ObserverTag = -1 observed.RemoveObserver(tag) - if self.SMProxy and (self.SMProxy, self.Port) in _pyproxies: + if _pyproxies and self.SMProxy and (self.SMProxy, self.Port) in _pyproxies: del _pyproxies[(self.SMProxy, self.Port)] def InitializeFromProxy(self, aProxy, update=True): @@ -956,14 +957,25 @@ class ArrayListProperty(VectorProperty): not isinstance(values, list): values = (values,) fullvalues = [] - for i in range(len(values)): - val = self.ConvertValue(values[i]) - fullvalues.append(val) - fullvalues.append('1') + + # WARNING: + # The order of the two loops below are delibrately set in this way + # so that values passed in will take precedence. + # This is needed for backward compatibility of the + # property ElementBlocks for vtkExodusIIReader. + # If you attemp to change this, please verify that + # python state files for opening old .ex2 file (<=3.14) still works. for array in self.Available: if not values.__contains__(array): fullvalues.append(array) fullvalues.append('0') + + for i in range(len(values)): + val = self.ConvertValue(values[i]) + fullvalues.append(val) + fullvalues.append('1') + + i = 0 for value in fullvalues: self.SMProperty.SetElement(i, value) @@ -1915,9 +1927,6 @@ def Connect(ds_host=None, ds_port=11111, rs_host=None, rs_port=22221): creates a new connection to the data server on ds_host:ds_port and to the render server on rs_host: rs_port. """ - global fromGUI - if fromGUI: - raise RuntimeError, "Cannot create a session through python. Use the GUI to setup the connection." if ds_host == None: session = vtkSMSession() elif rs_host == None: @@ -1941,9 +1950,6 @@ def ReverseConnect(port=11111): option). The optional port specified the port to listen to. """ - global fromGUI - if fromGUI: - raise RuntimeError, "Cannot create a connection through python. Use the GUI to setup the connection." session = vtkSMSessionClient() session.Connect("csrc://hostname:" + port) id = vtkProcessModule.GetProcessModule().RegisterSession(session) @@ -1957,7 +1963,9 @@ def Disconnect(session=None): global MultiServerConnections global fromGUI if fromGUI: - raise RuntimeError, "Cannot disconnect through python. Use the GUI to disconnect." + # Let the UI know that we want to disconnect + ActiveConnection.Session.InvokeEvent('ExitEvent') + return if ActiveConnection and (not session or session == ActiveConnection.Session): session = ActiveConnection.Session if MultiServerConnections: @@ -3001,3 +3009,6 @@ def GetConnectionAt(index): def GetNumberOfConnections(): return len(MultiServerConnections) + +#VTN: Problem during execution +#atexit.register(vtkPythonProgrammableFilter.DeleteGlobalPythonInterpretor) diff --git a/src/PV_SWIG/presentations.py b/src/PV_SWIG/presentations.py index 78a391f5..a9f26e14 100644 --- a/src/PV_SWIG/presentations.py +++ b/src/PV_SWIG/presentations.py @@ -32,13 +32,13 @@ import warnings from math import sqrt, sin, cos, radians from string import upper -try: - import pvsimple as pv - # TODO(MZN): to be removed (issue with Point Sprite texture) - #import paravisSM as sm -except: - import paraview.simple as pv - import paraview.servermanager as sm +import pvsimple as pv +#try: +# # TODO(MZN): to be removed (issue with Point Sprite texture) +# #import paravisSM as sm +#except: +# import paraview.simple as pv +# import paraview.servermanager as sm # Constants diff --git a/src/PV_SWIG/pvsimple.py b/src/PV_SWIG/pvsimple.py index 2a5d96a0..7412586b 100644 --- a/src/PV_SWIG/pvsimple.py +++ b/src/PV_SWIG/pvsimple.py @@ -42,41 +42,86 @@ import paravisSM servermanager = paravisSM -def _disconnect(): - if servermanager.ActiveConnection: - servermanager.ProxyManager().UnRegisterProxies() - active_objects.view = None - active_objects.source = None - import gc - gc.collect() - servermanager.Disconnect() +def enableMultiServer(): + servermanager.enableMultiServer() + +def switchActiveConnection(newActiveConnection=None, ns=None): + if not ns: + ns = globals() + _remove_functions(ns) + servermanager.switchActiveConnection(newActiveConnection) + _add_functions(ns) + +def Disconnect(ns=None, force=True): + if servermanager.ActiveConnection and (force or servermanager.MultiServerConnections == None): + if ns: + _remove_functions(ns) + _remove_functions(globals()) + if not servermanager.fromGUI: + servermanager.ProxyManager().DisableStateUpdateNotification() + servermanager.ProxyManager().UnRegisterProxies() + active_objects.view = None + active_objects.source = None + servermanager.Disconnect() + if not servermanager.fromGUI: + import gc + gc.collect() def Connect(ds_host=None, ds_port=11111, rs_host=None, rs_port=11111): """Creates a connection to a server. Example usage: > Connect("amber") # Connect to a single server at default port > Connect("amber", 12345) # Connect to a single server at port 12345 > Connect("amber", 11111, "vis_cluster", 11111) # connect to data server, render server pair""" - _disconnect() - session = servermanager.Connect(ds_host, ds_port, rs_host, rs_port) + Disconnect(globals(), False) + connection = servermanager.Connect(ds_host, ds_port, rs_host, rs_port) _add_functions(globals()) - tk = servermanager.misc.TimeKeeper() - servermanager.ProxyManager().RegisterProxy("timekeeper", "tk", tk) - scene = AnimationScene() - scene.TimeKeeper = tk - return session + servermanager.ProxyManager().DisableStateUpdateNotification() + servermanager.ProxyManager().UpdateFromRemote() + tk = servermanager.ProxyManager().GetProxy("timekeeper", "TimeKeeper") + if not tk: + try: + tk = servermanager.misc.TimeKeeper() + servermanager.ProxyManager().RegisterProxy("timekeeper", "TimeKeeper", tk) + except AttributeError: + print "Error: Could not create TimeKeeper" + + scene = servermanager.ProxyManager().GetProxy("animation", "AnimationScene") + if not scene: + try: + scene = AnimationScene() + scene.TimeKeeper = tk + except NameError: + print "Error: Could not create AnimationScene" + + servermanager.ProxyManager().EnableStateUpdateNotification() + servermanager.ProxyManager().TriggerStateUpdate() + + return connection def ReverseConnect(port=11111): """Create a reverse connection to a server. Listens on port and waits for an incoming connection from the server.""" - _disconnect() - session = servermanager.ReverseConnect(port) + Disconnect(globals(), False) + connection = servermanager.ReverseConnect(port) _add_functions(globals()) - tk = servermanager.misc.TimeKeeper() - servermanager.ProxyManager().RegisterProxy("timekeeper", "tk", tk) - scene = AnimationScene() - scene.TimeKeeper = tk - return session + + servermanager.ProxyManager().DisableStateUpdateNotification() + servermanager.ProxyManager().UpdateFromRemote() + tk = servermanager.ProxyManager().GetProxy("timekeeper", "TimeKeeper") + if not tk: + tk = servermanager.misc.TimeKeeper() + servermanager.ProxyManager().RegisterProxy("timekeeper", "TimeKeeper", tk) + + scene = servermanager.ProxyManager().GetProxy("animation", "AnimationScene") + if not scene: + scene = AnimationScene() + scene.TimeKeeper = tk + + servermanager.ProxyManager().EnableStateUpdateNotification() + servermanager.ProxyManager().TriggerStateUpdate() + + return connection def _create_view(view_xml_name): "Creates and returns a 3D render view." @@ -85,7 +130,7 @@ def _create_view(view_xml_name): "my_view%d" % _funcs_internals.view_counter, view) active_objects.view = view _funcs_internals.view_counter += 1 - + tk = servermanager.ProxyManager().GetProxiesInGroup("timekeeper").values()[0] views = tk.Views if not view in views: @@ -126,17 +171,19 @@ def OpenDataFile(filename, **extraArgs): """Creates a reader to read the give file, if possible. This uses extension matching to determine the best reader possible. If a reader cannot be identified, then this returns None.""" - reader_factor = servermanager.ProxyManager().GetReaderFactory() - if reader_factor.GetNumberOfRegisteredPrototypes() == 0: - reader_factor.RegisterPrototypes("sources") session = servermanager.ActiveConnection.Session + reader_factor = servermanager.vtkSMProxyManager.GetProxyManager().GetReaderFactory() + if reader_factor.GetNumberOfRegisteredPrototypes() == 0: + reader_factor.RegisterPrototypes(session, "sources") first_file = filename if type(filename) == list: first_file = filename[0] if not reader_factor.TestFileReadability(first_file, session): - raise RuntimeError, "File not readable: %s " % first_file + msg = "File not readable: %s " % first_file + raise RuntimeError, msg if not reader_factor.CanReadFile(first_file, session): - raise RuntimeError, "File not readable. No reader found for '%s' " % first_file + msg = "File not readable. No reader found for '%s' " % first_file + raise RuntimeError, msg prototype = servermanager.ProxyManager().GetPrototypeProxy( reader_factor.GetReaderGroup(), reader_factor.GetReaderName()) xml_name = paraview.make_name_valid(prototype.GetXMLLabel()) @@ -154,9 +201,10 @@ def CreateWriter(filename, proxy=None, **extraArgs): data, it simply creates the writer and returns it.""" if not filename: raise RuntimeError, "filename must be specified" - writer_factory = servermanager.ProxyManager().GetWriterFactory() + session = servermanager.ActiveConnection.Session + writer_factory = servermanager.vtkSMProxyManager.GetProxyManager().GetWriterFactory() if writer_factory.GetNumberOfRegisteredPrototypes() == 0: - writer_factory.RegisterPrototypes("writers") + writer_factory.RegisterPrototypes(session, "writers") if not proxy: proxy = GetActiveSource() if not proxy: @@ -619,10 +667,15 @@ def _create_func(key, module): # Register pipeline objects with the time keeper. This is used to extract time values # from sources. NOTE: This should really be in the servermanager controller layer. if group == "sources": - tk = servermanager.ProxyManager().GetProxiesInGroup("timekeeper").values()[0] - sources = tk.TimeSources - if not px in sources: - sources.append(px) + has_tk = True + try: + tk = servermanager.ProxyManager().GetProxiesInGroup("timekeeper").values()[0] + except IndexError: + has_tk = False + if has_tk: + sources = tk.TimeSources + if not px in sources: + sources.append(px) active_objects.source = px except servermanager.MissingRegistrationInformation: @@ -655,8 +708,9 @@ def _func_name_valid(name): return valid def _add_functions(g): - for m in [servermanager.filters, servermanager.sources, - servermanager.writers, servermanager.animation]: + activeModule = servermanager.ActiveConnection.Modules + for m in [activeModule.filters, activeModule.sources, + activeModule.writers, activeModule.animation]: dt = m.__dict__ for key in dt.keys(): cl = dt[key] @@ -665,6 +719,19 @@ def _add_functions(g): g[key] = _create_func(key, m) exec "g[key].__doc__ = _create_doc(m.%s.__doc__, g[key].__doc__)" % key +def _remove_functions(g): + list = [] + if servermanager.ActiveConnection: + list = [m for m in dir(servermanager.ActiveConnection.Modules) if m[0] != '_'] + + for m in list: + dt = servermanager.ActiveConnection.Modules.__dict__[m].__dict__ + for key in dt.keys(): + cl = dt[key] + if not isinstance(cl, str) and g.has_key(key): + g.pop(key) + #print "remove %s function" % key + def GetActiveView(): """Returns the active view.""" return active_objects.view @@ -878,9 +945,12 @@ def LoadDistributedPlugin(pluginname, remote=True, ns=None): information known about plugins distributed with ParaView to locate the shared library for the plugin to load. Raises a RuntimeError if the plugin was not found.""" - plm = servermanager.ProxyManager().GetSession().GetPluginManager() + if not servermanager.ActiveConnection: + raise RuntimeError, "Cannot load a plugin without a session." + plm = servermanager.vtkSMProxyManager.GetProxyManager().GetPluginManager() if remote: - info = plm.GetRemoteInformation() + session = servermanager.ActiveConnection.Session + info = plm.GetRemoteInformation(session) else: info = plm.GetLocalInformation() for cc in range(0, info.GetNumberOfPlugins()): @@ -888,15 +958,63 @@ def LoadDistributedPlugin(pluginname, remote=True, ns=None): return LoadPlugin(info.GetPluginFileName(cc), remote, ns) raise RuntimeError, "Plugin '%s' not found" % pluginname +def GetLayouts(): + """Returns the layout proxies on the active session. + Layout proxies are used to place views in a grid.""" + return servermanager.ProxyManager().GetProxiesInGroup("layouts") + +def GetLayout(view=None): + """Return the layout containing the give view, if any. + If no view is specified, active view is used. + """ + if not view: + view = GetActiveView() + if not view: + raise RuntimeError, "No active view was found." + layouts = GetLayouts() + for layout in layouts.values(): + if layout.GetViewLocation(view) != -1: + return layout + return None + + +def SelectCells(query=None, proxy=None): + """Select cells satisfying the query. If query is None, then all cells are + selected. If proxy is None, then the active source is used.""" + if not proxy: + proxy = GetActiveSource() + if not proxy: + raise RuntimeError, "No active source was found." + + if not query: + # This ends up being true for all cells. + query = "id >= 0" + + # Note, selSource is not registered with the proxy manager. + selSource = servermanager.sources.SelectionQuerySource() + selSource.FieldType = "CELL" + selSource.QueryString = str(query) + proxy.SMProxy.SetSelectionInput(proxy.Port, selSource.SMProxy, 0) + return selSource + +def ClearSelection(proxy=None): + """Clears the selection on the active source.""" + if not proxy: + proxy = GetActiveSource() + if not proxy: + raise RuntimeError, "No active source was found." + proxy.SMProxy.SetSelectionInput(proxy.Port, None, 0) class ActiveObjects(object): """This class manages the active objects (source and view). The active objects are shared between Python and the user interface. This class is for internal use. Use the Set/Get methods for setting and getting active objects.""" - def __get_selection_model(self, name): + def __get_selection_model(self, name, session=None): "Internal method." - pxm = servermanager.ProxyManager() + if session and not servermanager.ActiveConnection.Session.IsSame(session): + raise RuntimeError, "Try to set an active object with invalid active connection." + pxm = servermanager.ProxyManager(session) model = pxm.GetSelectionModel(name) if not model: model = servermanager.vtkSMProxySelectionModel() @@ -905,10 +1023,12 @@ class ActiveObjects(object): def set_view(self, view): "Sets the active view." - active_view_model = self.__get_selection_model("ActiveView") + active_view_model = self.__get_selection_model("ActiveView") if view: + active_view_model = self.__get_selection_model("ActiveView", view.GetSession()) active_view_model.SetCurrentProxy(view.SMProxy, 0) else: + active_view_model = self.__get_selection_model("ActiveView") active_view_model.SetCurrentProxy(None, 0) def get_view(self): @@ -918,11 +1038,13 @@ class ActiveObjects(object): def set_source(self, source): "Sets the active source." - active_sources_model = self.__get_selection_model("ActiveSources") + active_sources_model = self.__get_selection_model("ActiveSources") if source: # 3 == CLEAR_AND_SELECT + active_sources_model = self.__get_selection_model("ActiveSources", source.GetSession()) active_sources_model.SetCurrentProxy(source.SMProxy, 3) else: + active_sources_model = self.__get_selection_model("ActiveSources") active_sources_model.SetCurrentProxy(None, 3) def __convert_proxy(self, px): @@ -1037,10 +1159,10 @@ def SaveTrace(fileName): paravisSM.myParavis.SaveTrace(fileName) -_add_functions(globals()) - if not servermanager.ActiveConnection: Connect() +else: + _add_functions(globals()) def ImportFile(theFileName): paravisSM.ImportFile(theFileName) diff --git a/src/ParaView/lex.yy.c b/src/ParaView/lex.yy.c index d64e2ad9..a6c44384 100644 --- a/src/ParaView/lex.yy.c +++ b/src/ParaView/lex.yy.c @@ -373,8 +373,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 247 -#define YY_END_OF_BUFFER 248 +#define YY_NUM_RULES 173 +#define YY_END_OF_BUFFER 174 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -382,241 +382,149 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1956] = +static yyconst flex_int16_t yy_accept[1116] = { 0, - 0, 0, 248, 246, 216, 216, 245, 246, 245, 245, - 246, 245, 245, 245, 245, 245, 245, 245, 213, 212, - 245, 245, 245, 245, 208, 208, 208, 208, 208, 208, - 243, 246, 244, 245, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 245, 216, 11, 11, 15, 245, 246, - 238, 0, 16, 0, 229, 235, 230, 0, 0, 0, - 192, 193, 0, 0, 0, 0, 0, 227, 0, 223, - 225, 224, 226, 221, 0, 1, 13, 228, 209, 211, - 0, 0, 0, 212, 212, 212, 242, 219, 239, 237, - - 240, 222, 208, 208, 208, 208, 208, 208, 208, 208, - 214, 0, 232, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 142, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 231, 236, 0, 11, 15, 0, - 0, 15, 15, 15, 15, 12, 0, 16, 233, 17, - 17, 0, 0, 0, 0, 0, 0, 220, 241, 13, - 209, 209, 209, 211, 211, 210, 0, 212, 217, 218, - 208, 208, 208, 0, 208, 208, 215, 208, 208, 208, - - 140, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 98, 208, 208, - 208, 208, 130, 144, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 146, 234, - 12, 15, 15, 12, 12, 12, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 209, 211, 210, 210, 0, - 212, 208, 208, 208, 206, 205, 208, 208, 208, 208, - 208, 137, 208, 208, 102, 93, 208, 208, 208, 208, - 208, 208, 115, 208, 208, 208, 208, 208, 0, 208, - - 208, 208, 208, 88, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 0, 208, 208, 208, 208, 208, 208, 208, 208, 101, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 12, 12, 12, 12, 15, - 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, - 211, 0, 212, 208, 208, 208, 206, 205, 205, 205, - 205, 205, 205, 208, 208, 208, 208, 208, 208, 149, - 0, 208, 208, 110, 150, 118, 208, 208, 208, 208, - 208, 26, 208, 208, 0, 0, 0, 208, 208, 208, - - 208, 208, 0, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 143, 208, 208, 208, 208, 208, 208, 69, - 208, 208, 208, 208, 208, 0, 208, 208, 208, 208, - 208, 116, 208, 129, 208, 0, 0, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 12, 12, 12, 12, 15, 12, 12, - 12, 2, 3, 0, 0, 0, 0, 0, 190, 211, - 0, 212, 208, 208, 208, 205, 205, 205, 205, 199, - 208, 208, 208, 141, 148, 0, 0, 208, 208, 0, - 0, 191, 208, 131, 25, 208, 208, 124, 121, 122, - - 0, 0, 0, 0, 208, 208, 208, 208, 208, 0, - 0, 0, 0, 0, 208, 208, 208, 208, 208, 208, - 208, 145, 208, 208, 208, 208, 112, 208, 208, 0, - 208, 208, 208, 208, 100, 103, 208, 123, 0, 0, - 0, 208, 111, 208, 208, 208, 0, 208, 208, 0, - 0, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 147, 12, 12, 12, - 2, 3, 15, 12, 12, 12, 2, 3, 0, 0, - 0, 0, 0, 211, 0, 212, 208, 208, 208, 205, - 205, 205, 205, 196, 18, 208, 31, 0, 0, 208, - - 208, 0, 208, 208, 208, 0, 0, 0, 0, 0, - 86, 208, 208, 208, 201, 0, 0, 0, 0, 0, - 208, 87, 208, 208, 208, 119, 208, 208, 200, 113, - 208, 0, 208, 208, 208, 0, 0, 0, 208, 208, - 208, 208, 0, 208, 208, 208, 208, 208, 104, 208, - 0, 0, 0, 0, 0, 208, 127, 208, 0, 208, - 117, 0, 0, 0, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 0, 12, 12, 12, 2, - 3, 15, 12, 12, 12, 0, 0, 0, 0, 0, - - 194, 195, 211, 18, 18, 197, 198, 105, 205, 205, - 205, 205, 208, 0, 208, 208, 0, 0, 208, 208, - 0, 0, 0, 20, 208, 208, 132, 0, 0, 0, - 0, 86, 0, 0, 0, 0, 208, 208, 208, 67, - 208, 208, 0, 87, 0, 0, 0, 208, 0, 208, - 208, 50, 208, 208, 208, 120, 0, 208, 208, 0, - 208, 138, 208, 0, 0, 0, 68, 208, 208, 109, - 0, 0, 0, 0, 0, 208, 208, 208, 208, 208, - 208, 0, 0, 0, 0, 0, 125, 126, 0, 0, - 0, 22, 99, 0, 0, 139, 208, 208, 208, 208, - - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 12, 12, 12, 15, 5, 12, 12, 0, 0, 0, - 0, 18, 205, 205, 205, 205, 208, 0, 0, 208, - 208, 0, 0, 208, 208, 0, 208, 208, 0, 0, - 0, 0, 0, 0, 0, 67, 0, 0, 208, 208, - 208, 0, 208, 208, 97, 208, 0, 0, 0, 50, - 0, 0, 208, 208, 208, 0, 208, 208, 208, 208, - 208, 128, 0, 208, 114, 0, 208, 208, 68, 0, - 0, 0, 208, 208, 208, 208, 0, 0, 0, 0, - - 0, 208, 208, 96, 208, 208, 208, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 0, 208, - 208, 208, 208, 208, 0, 0, 208, 208, 208, 208, - 208, 208, 208, 208, 152, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 5, 12, 12, 15, 5, 12, 12, 0, 0, 205, - 18, 177, 205, 208, 0, 0, 208, 208, 0, 0, - 91, 208, 0, 135, 208, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 97, 0, 208, 208, 208, 208, - 208, 0, 208, 208, 208, 0, 0, 0, 0, 0, - - 0, 0, 0, 24, 208, 208, 208, 208, 208, 85, - 208, 0, 208, 0, 208, 0, 208, 208, 0, 0, - 0, 0, 208, 208, 208, 208, 0, 0, 96, 0, - 0, 208, 92, 0, 208, 208, 84, 208, 208, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 208, 208, 208, 208, 208, 0, 208, 208, - 208, 208, 208, 208, 208, 208, 19, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 5, 12, 12, 15, 12, 12, 0, 4, 205, - 205, 208, 0, 0, 208, 208, 91, 0, 208, 0, - - 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 48, 208, 208, 208, 208, 208, 208, - 95, 24, 0, 0, 0, 0, 0, 85, 0, 208, - 208, 49, 208, 208, 0, 208, 208, 0, 208, 0, - 208, 0, 208, 208, 0, 0, 0, 0, 208, 208, - 66, 208, 0, 92, 0, 0, 84, 0, 208, 208, - 208, 0, 208, 208, 65, 133, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 208, 208, - 94, 208, 208, 0, 208, 208, 208, 208, 154, 208, - 208, 208, 0, 0, 208, 153, 208, 208, 208, 208, - - 208, 208, 208, 208, 180, 208, 208, 208, 208, 208, - 208, 12, 12, 15, 12, 12, 0, 205, 205, 208, - 0, 0, 208, 208, 0, 90, 134, 0, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 0, 95, 0, - 208, 208, 208, 208, 208, 208, 208, 208, 0, 208, - 208, 0, 0, 49, 0, 0, 0, 0, 208, 208, - 0, 208, 208, 208, 208, 208, 77, 0, 208, 0, - 208, 0, 106, 208, 0, 0, 66, 0, 208, 208, - 0, 208, 208, 0, 0, 0, 0, 0, 65, 208, - 208, 208, 208, 208, 0, 208, 201, 200, 0, 0, - - 0, 0, 94, 0, 0, 208, 89, 0, 208, 208, - 76, 208, 0, 208, 204, 208, 208, 208, 208, 208, - 0, 19, 208, 208, 208, 208, 202, 208, 182, 184, - 186, 175, 208, 208, 208, 208, 181, 208, 208, 208, - 12, 12, 15, 12, 12, 0, 205, 205, 207, 0, - 0, 30, 208, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 208, 208, 82, 208, - 208, 208, 78, 208, 208, 208, 0, 0, 0, 0, - 0, 0, 0, 77, 81, 208, 208, 208, 208, 208, - 80, 0, 208, 0, 107, 0, 208, 208, 0, 0, - - 0, 0, 208, 208, 208, 58, 0, 0, 0, 0, - 0, 0, 29, 79, 208, 83, 208, 208, 0, 0, - 89, 0, 0, 76, 0, 208, 208, 208, 0, 208, - 208, 57, 0, 0, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 183, 185, 187, 208, 208, - 208, 12, 12, 15, 12, 12, 12, 12, 12, 0, - 205, 205, 30, 0, 208, 0, 0, 0, 82, 0, - 0, 0, 78, 0, 0, 0, 208, 208, 208, 63, - 208, 0, 208, 59, 208, 208, 81, 0, 0, 0, - - 0, 0, 80, 0, 208, 208, 208, 47, 208, 208, - 0, 208, 208, 0, 0, 0, 58, 62, 208, 61, - 0, 208, 29, 79, 0, 83, 0, 0, 0, 208, - 60, 46, 64, 0, 0, 0, 0, 0, 0, 57, - 208, 208, 208, 208, 208, 0, 208, 0, 23, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 188, 189, 208, - 208, 208, 208, 12, 12, 12, 12, 12, 14, 14, - 14, 14, 12, 12, 12, 12, 12, 0, 205, 178, - 0, 28, 0, 0, 0, 0, 63, 0, 0, 59, - - 0, 0, 208, 208, 74, 208, 208, 70, 208, 0, - 0, 0, 47, 0, 0, 73, 208, 208, 0, 208, - 208, 72, 0, 108, 208, 62, 0, 61, 0, 208, - 208, 0, 60, 46, 64, 208, 0, 208, 0, 0, - 0, 0, 0, 0, 0, 27, 71, 208, 75, 208, - 208, 160, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 12, 12, 12, 12, 12, 14, 14, - 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, - 6, 205, 28, 0, 0, 74, 0, 0, 70, 0, - - 208, 208, 55, 208, 0, 208, 51, 73, 0, 0, - 0, 0, 72, 208, 208, 208, 39, 136, 0, 0, - 54, 53, 0, 0, 208, 208, 202, 27, 71, 0, - 75, 0, 0, 0, 208, 52, 38, 56, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 157, 208, - 208, 208, 208, 208, 208, 208, 208, 203, 208, 208, - 12, 12, 12, 12, 6, 14, 14, 12, 12, 12, - 12, 6, 205, 0, 0, 55, 0, 0, 51, 44, - 208, 40, 208, 0, 0, 0, 39, 43, 208, 42, - 0, 208, 54, 53, 0, 0, 41, 45, 0, 52, - - 38, 56, 208, 0, 208, 208, 208, 208, 159, 156, - 208, 208, 208, 208, 170, 158, 155, 208, 208, 208, - 208, 169, 208, 208, 208, 12, 12, 12, 12, 6, - 12, 12, 12, 12, 179, 44, 0, 40, 0, 208, - 208, 43, 0, 42, 0, 208, 208, 41, 45, 0, - 0, 208, 208, 208, 208, 208, 165, 166, 167, 168, - 161, 162, 163, 164, 208, 208, 208, 12, 12, 12, - 12, 12, 12, 12, 12, 0, 0, 36, 32, 0, - 0, 35, 34, 0, 0, 33, 37, 208, 208, 208, - 208, 208, 208, 12, 12, 12, 12, 10, 12, 12, - - 12, 36, 32, 35, 34, 33, 37, 173, 208, 151, - 176, 208, 208, 10, 12, 12, 12, 10, 12, 8, - 9, 208, 208, 208, 10, 12, 8, 9, 12, 8, - 9, 208, 208, 208, 12, 8, 9, 12, 208, 208, - 172, 12, 7, 208, 208, 7, 7, 208, 208, 7, - 208, 171, 208, 174, 0 + 0, 0, 174, 172, 142, 143, 143, 171, 172, 171, + 171, 172, 171, 171, 171, 171, 171, 171, 171, 140, + 139, 171, 171, 171, 171, 133, 133, 133, 133, 133, + 133, 169, 172, 170, 171, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 171, 142, 11, 11, 14, 171, + 172, 142, 164, 0, 15, 0, 157, 161, 158, 0, + 0, 0, 116, 117, 0, 0, 0, 0, 155, 151, + 153, 152, 154, 149, 147, 0, 134, 1, 13, 156, + 135, 138, 0, 0, 139, 139, 139, 168, 146, 165, + + 163, 166, 150, 133, 133, 133, 133, 133, 133, 133, + 133, 141, 0, 160, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 70, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 159, 162, 142, 11, 14, + 0, 0, 14, 14, 12, 0, 15, 16, 16, 0, + 0, 0, 0, 0, 148, 167, 134, 134, 13, 135, + 135, 138, 138, 0, 136, 137, 144, 145, 133, 133, + 133, 133, 0, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 68, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 25, + 133, 133, 133, 133, 58, 72, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 74, 12, 14, 12, 12, 12, 12, 0, 0, + 0, 0, 0, 0, 0, 134, 0, 135, 136, 137, + 133, 133, 133, 133, 0, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 66, 133, 133, 29, + 24, 133, 133, 133, 133, 133, 133, 42, 133, 133, + + 133, 133, 133, 133, 23, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 0, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 28, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 0, 0, 0, 0, 133, + 133, 133, 133, 128, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 77, 37, + 78, 45, 133, 133, 133, 133, 133, 20, 133, 133, + 133, 133, 133, 133, 133, 71, 133, 133, 133, 133, + + 133, 133, 22, 133, 133, 133, 133, 133, 0, 133, + 133, 133, 61, 133, 133, 43, 133, 57, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 12, 12, 12, 12, 12, 12, + 12, 2, 3, 0, 0, 0, 0, 0, 133, 133, + 133, 133, 128, 133, 133, 133, 121, 133, 133, 133, + 133, 133, 133, 133, 133, 69, 76, 133, 59, 19, + 133, 133, 52, 49, 50, 133, 133, 133, 73, 133, + 133, 133, 133, 39, 133, 133, 133, 27, 30, 133, + 51, 0, 0, 0, 133, 38, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 75, 12, 12, 12, 2, + 3, 12, 12, 12, 2, 3, 0, 0, 0, 0, + 0, 133, 133, 133, 133, 133, 133, 133, 120, 133, + 131, 133, 133, 133, 21, 133, 133, 133, 133, 133, + 133, 47, 133, 133, 133, 40, 133, 0, 133, 133, + 133, 31, 133, 0, 0, 0, 124, 124, 133, 55, + 133, 133, 44, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 0, 12, 12, 12, 2, 3, 12, + + 12, 12, 0, 0, 0, 0, 0, 118, 119, 121, + 17, 121, 32, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 60, 123, 123, 133, 48, 122, + 122, 0, 133, 0, 67, 133, 0, 36, 133, 0, + 0, 0, 53, 54, 26, 46, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 12, + 12, 12, 5, 12, 12, 0, 0, 0, 0, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 56, 0, + 41, 0, 133, 133, 0, 0, 0, 133, 133, 133, + + 133, 133, 133, 133, 79, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 5, 12, 12, 5, 12, 12, 0, 0, 133, 132, + 133, 133, 130, 64, 133, 0, 0, 0, 133, 133, + 0, 0, 0, 133, 133, 133, 133, 133, 133, 133, + 18, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 5, 12, 12, 12, 12, + 0, 4, 133, 133, 133, 133, 0, 0, 0, 133, + 62, 0, 0, 0, 133, 133, 133, 81, 133, 133, + 133, 133, 80, 133, 133, 133, 133, 133, 133, 133, + + 133, 106, 133, 133, 133, 133, 133, 133, 12, 12, + 12, 12, 0, 133, 133, 133, 63, 0, 0, 0, + 133, 0, 0, 133, 127, 133, 133, 133, 133, 133, + 133, 133, 133, 125, 133, 108, 110, 112, 102, 133, + 133, 133, 133, 107, 133, 133, 133, 12, 12, 12, + 12, 0, 133, 133, 129, 0, 0, 0, 33, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 109, 111, 113, 133, 133, 133, 12, 12, 12, 12, + 12, 12, 12, 0, 133, 133, 0, 34, 0, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 114, 115, 133, + 133, 133, 133, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 0, 133, 104, 0, 133, 87, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 6, 133, + 0, 35, 65, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 84, 133, 133, 133, 133, 133, 133, 133, + 133, 126, 133, 133, 12, 12, 12, 12, 6, 12, + + 12, 12, 12, 6, 133, 133, 133, 86, 83, 133, + 133, 133, 133, 97, 85, 82, 133, 133, 133, 133, + 96, 133, 133, 133, 12, 12, 12, 12, 6, 12, + 12, 12, 12, 105, 133, 133, 92, 93, 94, 95, + 88, 89, 90, 91, 133, 133, 133, 12, 12, 12, + 12, 12, 12, 12, 12, 133, 133, 133, 133, 133, + 12, 12, 12, 12, 10, 12, 12, 12, 100, 133, + 103, 133, 133, 10, 12, 12, 12, 10, 12, 8, + 9, 133, 133, 133, 10, 12, 8, 9, 12, 8, + 9, 133, 133, 133, 12, 8, 9, 12, 133, 133, + + 99, 12, 7, 133, 133, 7, 7, 133, 133, 7, + 133, 98, 133, 101, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 4, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 8, 1, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 25, 27, 25, 28, 29, 30, - 31, 32, 1, 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, 1, 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, 16, 91, 16, 16, 1, 1, 1, 1, + 1, 6, 7, 8, 9, 1, 10, 11, 12, 13, + 14, 15, 16, 14, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 25, 27, 25, 28, 14, 29, + 30, 31, 1, 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, 40, + 58, 59, 60, 61, 62, 1, 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, 14, 89, 14, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -633,993 +541,581 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[92] = +static yyconst flex_int32_t yy_meta[90] = { 0, - 1, 2, 3, 2, 2, 1, 1, 1, 1, 4, - 5, 1, 6, 4, 1, 1, 1, 7, 1, 8, - 8, 8, 8, 8, 8, 8, 8, 9, 10, 1, - 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, - 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 1 - + 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, + 2, 4, 1, 1, 2, 1, 1, 5, 1, 6, + 6, 6, 6, 6, 6, 6, 6, 7, 1, 1, + 1, 1, 8, 8, 8, 8, 8, 8, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, + 1, 9, 8, 8, 8, 8, 8, 8, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 1 } ; -static yyconst flex_int16_t yy_base[2008] = +static yyconst flex_int16_t yy_base[1153] = { 0, - 0, 90, 4604, 4605, 4605, 4605, 4572, 89, 4571, 87, - 4540, 97, 4605, 101, 93, 95, 4582, 103, 117, 134, - 4571, 83, 4567, 84, 61, 4533, 85, 64, 83, 87, - 4605, 117, 4605, 4565, 107, 98, 99, 101, 100, 106, - 111, 118, 121, 82, 138, 126, 128, 122, 147, 135, - 150, 148, 158, 135, 236, 4605, 4605, 213, 215, 4522, - 4605, 181, 4605, 188, 4605, 4563, 4605, 186, 205, 248, - 4605, 4605, 207, 4565, 220, 215, 268, 4605, 4513, 4605, - 4605, 4605, 4605, 4577, 4572, 4605, 0, 4605, 265, 275, - 241, 322, 242, 289, 299, 344, 4605, 4558, 4605, 4605, - - 4605, 4557, 4523, 181, 230, 219, 290, 197, 286, 308, - 4605, 4583, 4605, 272, 336, 199, 267, 268, 254, 211, - 213, 316, 309, 311, 201, 312, 315, 319, 338, 339, - 320, 263, 341, 342, 343, 348, 349, 4521, 350, 356, - 358, 367, 357, 362, 364, 377, 379, 375, 380, 384, - 382, 385, 352, 383, 4605, 4553, 464, 4605, 449, 4564, - 4509, 4520, 468, 471, 410, 455, 300, 443, 4605, 4605, - 451, 4552, 4551, 449, 450, 452, 4500, 4605, 4605, 0, - 499, 518, 531, 549, 559, 604, 470, 580, 4605, 4605, - 438, 436, 273, 4549, 4512, 450, 4605, 437, 421, 418, - - 4511, 428, 451, 430, 449, 425, 423, 445, 495, 469, - 485, 434, 502, 496, 497, 523, 526, 612, 527, 346, - 524, 581, 4510, 4509, 529, 582, 530, 532, 568, 546, - 583, 555, 571, 570, 585, 531, 591, 629, 594, 483, - 595, 598, 614, 602, 597, 618, 619, 663, 4508, 4605, - 685, 633, 638, 0, 667, 4518, 4517, 4489, 4484, 726, - 668, 664, 679, 4484, 727, 735, 745, 790, 4528, 673, - 755, 674, 625, 668, 0, 785, 675, 677, 650, 680, - 736, 4501, 648, 719, 4500, 782, 724, 669, 734, 758, - 727, 729, 4499, 726, 757, 767, 730, 769, 832, 774, - - 797, 784, 728, 869, 599, 780, 812, 678, 802, 776, - 731, 811, 779, 804, 800, 813, 821, 4498, 824, 818, - 4533, 814, 831, 825, 832, 835, 838, 840, 839, 916, - 830, 843, 841, 848, 859, 861, 863, 862, 865, 868, - 875, 874, 876, 879, 906, 0, 928, 4507, 4506, 887, - 904, 4489, 4500, 4499, 4479, 4485, 922, 931, 930, 4469, - 963, 943, 974, 909, 938, 929, 0, 4488, 910, 907, - 939, 953, 944, 964, 954, 947, 950, 945, 951, 4487, - 1028, 952, 946, 1032, 4486, 1037, 979, 980, 981, 956, - 982, 4485, 983, 986, 4469, 980, 4469, 992, 993, 994, - - 995, 997, 1071, 1000, 999, 1002, 1007, 1005, 1018, 1020, - 1021, 1003, 4482, 1024, 1022, 1026, 1028, 1033, 1034, 1105, - 1040, 1050, 1061, 4481, 1048, 1047, 1057, 1058, 1059, 1063, - 1069, 1133, 1027, 4480, 1076, 1146, 1157, 1079, 1067, 1089, - 1099, 1091, 1093, 1111, 1101, 1102, 1104, 1103, 1116, 1112, - 1110, 1123, 1118, 1146, 4474, 4485, 4484, 1123, 4506, 4501, - 4455, 0, 0, 4468, 4454, 1166, 1168, 1167, 4605, 1190, - 1182, 1200, 1177, 1167, 1168, 1176, 1181, 1194, 1171, 1188, - 1183, 1175, 1218, 4471, 4470, 4460, 4454, 1179, 1180, 1257, - 1263, 4605, 1211, 4467, 4466, 1189, 1206, 4465, 1269, 4464, - - 4449, 4447, 4454, 4441, 1205, 1213, 1219, 1216, 1221, 4444, - 4444, 4442, 4447, 4441, 1217, 1220, 1222, 1228, 1223, 1224, - 1142, 4454, 1226, 1232, 1239, 1227, 1310, 1252, 1237, 1321, - 1253, 1254, 1256, 1246, 1334, 4453, 1284, 4452, 4432, 4431, - 4429, 1268, 1338, 1266, 1281, 1280, 1350, 1292, 1271, 1361, - 1367, 1282, 1303, 1295, 1298, 1317, 1344, 1314, 1065, 1373, - 1321, 1319, 1320, 1325, 1347, 1358, 4448, 4477, 4472, 4426, - 0, 0, 952, 4462, 4471, 4439, 0, 0, 4428, 4434, - 1363, 1369, 1427, 1422, 1397, 1442, 1360, 1356, 1363, 1375, - 1387, 1392, 1389, 4439, 4438, 1191, 1475, 4430, 4417, 1393, - - 1408, 1480, 1369, 4435, 1390, 1485, 4427, 4415, 4418, 4422, - 1489, 1432, 1406, 1388, 4430, 4408, 4408, 4413, 4419, 4406, - 1433, 1498, 1434, 1440, 1446, 4424, 1447, 1443, 4423, 1518, - 1448, 1524, 1460, 1449, 1466, 4408, 4412, 4406, 1451, 1469, - 1312, 1509, 1539, 1500, 1483, 1470, 1487, 1485, 4419, 1512, - 4398, 4397, 4398, 4416, 1582, 1490, 4414, 1492, 1588, 1499, - 4413, 1592, 1606, 1621, 1511, 1535, 1555, 1538, 1514, 1549, - 1563, 1557, 1564, 1566, 1567, 1524, 1571, 1573, 1568, 1574, - 1576, 1603, 1580, 1583, 1587, 4448, 4429, 4438, 4406, 0, - 0, 1651, 4434, 4418, 4388, 4400, 4403, 1620, 1630, 1666, - - 4605, 4439, 1661, 1643, 1671, 1613, 1626, 4402, 4401, 1481, - 1636, 4400, 1635, 1699, 1600, 1641, 4385, 4389, 1642, 1644, - 1719, 1724, 4433, 4605, 1649, 1672, 4396, 4383, 4374, 4388, - 4378, 1738, 4371, 4385, 4382, 1742, 1652, 1645, 1673, 1752, - 1666, 1685, 4386, 1756, 4380, 4372, 4376, 1674, 1762, 1698, - 1705, 1770, 1712, 1706, 1716, 4384, 1784, 1714, 1727, 4371, - 1715, 4382, 1728, 4361, 4373, 4360, 1794, 1729, 1736, 4605, - 4378, 4369, 4362, 4360, 4366, 1765, 1601, 1738, 1737, 1740, - 1741, 4355, 4354, 4362, 4369, 1828, 1846, 4369, 1857, 1861, - 4404, 4605, 1866, 1870, 1889, 4367, 1747, 1744, 1756, 1814, - - 1816, 1772, 1760, 1817, 1831, 1832, 1833, 1821, 1780, 1835, - 1838, 1839, 1840, 1842, 1843, 1845, 1394, 1749, 1847, 1876, - 4392, 4376, 4346, 1913, 0, 4385, 4353, 4347, 4357, 1920, - 1933, 1932, 1908, 1879, 1513, 1881, 1867, 4350, 4344, 1899, - 1898, 4352, 4349, 1903, 1849, 0, 1880, 1864, 4354, 4336, - 4340, 4343, 4336, 4341, 4335, 1974, 4344, 4333, 1902, 1919, - 1901, 1983, 1925, 1927, 1997, 1928, 4334, 4336, 4330, 2004, - 4338, 4335, 1946, 1940, 1929, 2015, 1949, 1930, 1950, 1957, - 1952, 4341, 4328, 1958, 2029, 4324, 1959, 1960, 2036, 4324, - 4328, 2042, 1962, 1972, 1984, 1978, 4327, 4334, 4314, 4319, - - 4317, 1987, 1988, 2079, 1991, 1990, 1992, 4326, 4325, 4315, - 4375, 2099, 2103, 4363, 4605, 2092, 4358, 0, 2111, 2022, - 1999, 2000, 2012, 2045, 2131, 4310, 2021, 2010, 2054, 2046, - 2047, 2073, 1994, 2056, 4324, 2062, 2074, 2075, 2077, 2080, - 2081, 2083, 2084, 2085, 2094, 1909, 2086, 2090, 2088, 2102, - 0, 4345, 4313, 2107, 0, 4337, 4304, 4299, 4313, 2115, - 4317, 4316, 2110, 2108, 4308, 4295, 2112, 2109, 4309, 4298, - 4311, 2116, 2193, 4310, 2119, 4290, 4287, 4291, 4291, 4291, - 4297, 4284, 4293, 4287, 2201, 4295, 2122, 2135, 2127, 2137, - 2124, 2207, 2150, 2151, 2152, 4294, 4291, 4278, 4282, 4286, - - 4280, 4289, 4278, 4291, 2154, 2155, 2160, 2162, 2163, 2232, - 2161, 4275, 2167, 2236, 2178, 4269, 2179, 2181, 4279, 4273, - 4281, 4278, 2184, 2183, 2185, 2186, 4270, 4265, 2254, 4275, - 4263, 2188, 4280, 2265, 2196, 2199, 2276, 2209, 2210, 4278, - 4277, 4270, 4250, 0, 4307, 2283, 2295, 4274, 4265, 4258, - 4256, 4262, 2238, 2227, 2225, 2237, 2231, 4260, 2257, 2242, - 2240, 2249, 2248, 2125, 2250, 2252, 2320, 1653, 2254, 2262, - 2275, 2272, 2278, 2270, 2334, 2280, 2274, 2279, 2294, 2281, - 2290, 0, 4284, 4251, 2315, 4283, 4245, 4263, 4605, 2330, - 2318, 4263, 4248, 4252, 2306, 2308, 4605, 4255, 2309, 2383, - - 2316, 4240, 4255, 4245, 4242, 4248, 4240, 4244, 4245, 4232, - 4235, 4241, 4244, 2387, 2314, 2310, 2329, 2331, 2332, 2335, - 2413, 4605, 4233, 4237, 4225, 4237, 4224, 2417, 4237, 2333, - 2337, 2421, 2349, 2364, 2427, 2369, 2341, 4221, 2370, 4228, - 2371, 4220, 2375, 4238, 4230, 4217, 4231, 4220, 2374, 2372, - 2438, 2380, 4213, 4605, 4217, 4223, 2452, 4210, 2420, 2384, - 2394, 2461, 2396, 2397, 2476, 4229, 4215, 4214, 4230, 4255, - 2489, 2505, 2510, 4215, 4222, 4202, 4207, 4205, 2404, 2405, - 2517, 2424, 2419, 4215, 2433, 2435, 2026, 2422, 4218, 2439, - 2462, 2463, 2530, 4268, 2483, 4216, 2452, 2477, 2479, 2480, - - 2466, 2441, 1285, 2507, 4215, 2488, 2482, 2532, 2490, 2520, - 2493, 4231, 4193, 2499, 4271, 4202, 4190, 2513, 2528, 2530, - 4204, 4201, 2505, 2500, 4203, 4206, 4205, 2599, 4184, 4202, - 2603, 2607, 4197, 4194, 4186, 4190, 4184, 4182, 2611, 2615, - 2506, 2519, 2512, 2521, 2518, 2527, 2557, 2558, 2621, 2563, - 2565, 4191, 4188, 2628, 4180, 4184, 4178, 4187, 2570, 2571, - 2641, 2522, 2572, 2583, 2577, 2575, 2652, 4171, 2625, 4174, - 2587, 4224, 4605, 2624, 4173, 4177, 2661, 4180, 2603, 2597, - 2671, 2605, 2613, 4222, 4169, 4167, 4167, 4165, 2703, 2646, - 2614, 2620, 2596, 2615, 2715, 2618, 4605, 4605, 4226, 2725, - - 4164, 4159, 2733, 4169, 4157, 2631, 4174, 2737, 2622, 2650, - 2746, 2639, 2753, 2645, 4173, 2657, 2668, 2697, 2699, 2747, - 4223, 4605, 2695, 2716, 2718, 2761, 4171, 2742, 4170, 4169, - 4168, 4167, 2702, 2726, 2750, 2753, 4166, 2710, 2715, 2727, - 4224, 4155, 2825, 2763, 4148, 4153, 4161, 2738, 2740, 4156, - 4145, 4158, 2717, 4605, 2845, 4137, 4147, 4141, 4150, 4139, - 4147, 4144, 4143, 4131, 4133, 4139, 2732, 2741, 4146, 2754, - 2733, 2734, 2857, 2744, 2787, 2788, 4133, 4112, 4106, 4090, - 4088, 4075, 4051, 2866, 4060, 2808, 2802, 2781, 2810, 2811, - 4049, 2877, 2812, 4074, 4605, 3996, 2819, 2827, 4000, 3976, - - 3951, 3960, 2829, 2820, 2830, 2901, 4003, 3955, 3937, 3934, - 3939, 3938, 3945, 2905, 2831, 3944, 2847, 2835, 3948, 3922, - 4605, 3916, 3901, 2920, 3882, 2837, 2848, 2849, 2927, 2856, - 2863, 2933, 2941, 2946, 2876, 2395, 2883, 2888, 2896, 2908, - 2911, 2916, 2918, 2902, 2904, 2912, 2914, 2924, 2927, 2937, - 2938, 2921, 2941, 2963, 2925, 3901, 3900, 3899, 2926, 2928, - 2944, 2958, 3877, 3041, 3890, 3885, 3884, 3880, 3870, 3868, - 2974, 2853, 4605, 3877, 2945, 3876, 3873, 3860, 4605, 3867, - 3867, 3856, 3016, 3849, 3844, 3832, 2950, 2951, 2958, 3843, - 2961, 3029, 2997, 3842, 2952, 2998, 4605, 3835, 3831, 3818, - - 3829, 3818, 4605, 3817, 2971, 2999, 3002, 3079, 3021, 3003, - 3811, 3001, 3014, 3825, 3814, 3807, 3091, 3823, 3022, 3822, - 3104, 3034, 4605, 3111, 3801, 4605, 3813, 3799, 3115, 3000, - 3818, 3119, 3817, 3806, 3833, 3777, 3775, 3773, 3771, 3123, - 3065, 3066, 3067, 3004, 3069, 3136, 3070, 3148, 4605, 3078, - 3090, 3080, 2973, 3096, 3035, 3046, 3071, 3081, 3098, 3091, - 3102, 3103, 3107, 3110, 3114, 3116, 3118, 3776, 3772, 3112, - 3120, 3104, 3124, 3770, 3756, 3752, 3751, 3738, 3754, 3744, - 3209, 3190, 3715, 3707, 3717, 3716, 3754, 3703, 3165, 3713, - 3708, 3708, 3202, 3693, 3697, 3701, 4605, 3699, 3688, 4605, - - 3686, 3658, 3131, 3137, 3674, 3166, 3167, 3244, 3169, 3667, - 3656, 3660, 3252, 3663, 3647, 66, 3194, 3172, 3257, 3186, - 3209, 172, 353, 4605, 3201, 4605, 449, 4605, 530, 3210, - 3202, 656, 4605, 3277, 4605, 3211, 3288, 3219, 727, 808, - 808, 834, 894, 1598, 1690, 1764, 3299, 3203, 1788, 3224, - 3212, 1877, 3248, 3234, 3241, 3242, 3243, 3247, 3249, 3255, - 3245, 3253, 3251, 3257, 3262, 3264, 3270, 3271, 3272, 3294, - 3277, 3278, 3279, 1983, 2178, 2213, 2248, 2378, 2528, 3348, - 2597, 3352, 2638, 3413, 3373, 3342, 2662, 2666, 2816, 2891, - 0, 3317, 4605, 2872, 2927, 4605, 2968, 3078, 3362, 3105, - - 3304, 3293, 3133, 3298, 3380, 3295, 3135, 4605, 3166, 3173, - 3174, 3200, 4605, 3322, 3309, 3296, 3389, 3220, 3279, 3265, - 3306, 3314, 3301, 3310, 3325, 3371, 4605, 4605, 3395, 3311, - 4605, 3330, 3318, 3402, 3369, 3344, 3447, 3346, 3347, 3390, - 3383, 3393, 3400, 3376, 3399, 3401, 3402, 3403, 3373, 3406, - 3413, 3404, 3405, 3416, 3424, 3426, 3396, 3375, 3427, 3425, - 3424, 3427, 3490, 3491, 0, 3494, 3496, 3436, 3420, 3469, - 3442, 0, 3463, 3442, 3434, 4605, 3442, 3435, 4605, 3451, - 3452, 3453, 3454, 3451, 3444, 3439, 3526, 3460, 3469, 3461, - 3532, 3462, 4605, 4605, 3468, 3457, 3478, 3479, 3465, 4605, - - 3543, 4605, 3485, 3548, 3490, 3492, 3494, 3496, 3497, 3498, - 3500, 3502, 3503, 3505, 3501, 3506, 3507, 3508, 3509, 3510, - 3511, 3512, 3519, 3513, 3528, 3513, 3511, 3560, 3530, 0, - 3512, 3525, 3524, 3525, 3538, 4605, 3534, 4605, 3526, 3542, - 3543, 4605, 3539, 4605, 3531, 3547, 3548, 4605, 4605, 3535, - 3539, 3554, 3555, 3556, 3558, 3560, 3559, 3562, 3563, 3564, - 3565, 3566, 3569, 3570, 3571, 3572, 3595, 3558, 3570, 3568, - 3569, 3563, 3567, 3565, 3566, 3582, 3580, 3588, 3590, 3587, - 3572, 3593, 3594, 3589, 3577, 3598, 3599, 3600, 3601, 3602, - 3603, 3604, 3605, 3589, 3593, 3591, 3592, 0, 3592, 3598, - - 3599, 4605, 4605, 4605, 4605, 4605, 4605, 3616, 3617, 3619, - 3621, 3622, 3625, 0, 3603, 3614, 3615, 0, 3622, 0, - 0, 3632, 3651, 3634, 0, 3626, 0, 0, 3621, 0, - 0, 3639, 3637, 3640, 3626, 0, 0, 3628, 3661, 3645, - 3644, 3632, 0, 3649, 3654, 0, 0, 3656, 3658, 0, - 3657, 3660, 3662, 3663, 4605, 3741, 3752, 3762, 3767, 3772, - 3776, 3787, 3791, 3802, 3806, 3811, 3822, 3826, 3837, 3841, - 3845, 3856, 3867, 3877, 3887, 3897, 3908, 3919, 3929, 3939, - 3949, 3959, 3970, 3717, 3981, 3718, 3992, 4002, 3719, 4012, - 4022, 4033, 4044, 4055, 4066, 4077, 4088, 4099, 4110, 4121, - - 4132, 4143, 4154, 4165, 4176, 4187, 4198 + 0, 88, 2594, 2595, 90, 2595, 2595, 2563, 87, 2562, + 87, 2532, 97, 2595, 2560, 85, 88, 113, 91, 133, + 151, 2561, 84, 2558, 92, 63, 2525, 83, 42, 128, + 85, 2595, 124, 2595, 2556, 2523, 103, 120, 122, 136, + 119, 87, 125, 86, 79, 145, 147, 131, 148, 159, + 164, 162, 171, 106, 113, 252, 2595, 2595, 2525, 217, + 2512, 214, 2595, 158, 2595, 186, 2595, 2595, 2595, 223, + 227, 257, 2595, 2595, 116, 2554, 216, 209, 2595, 2595, + 2595, 2595, 2595, 2566, 2595, 2562, 254, 2595, 0, 2595, + 273, 293, 311, 0, 321, 341, 353, 2595, 2549, 2595, + + 2595, 2595, 2548, 2515, 205, 227, 208, 335, 241, 142, + 239, 2595, 2573, 2595, 344, 221, 226, 240, 247, 203, + 242, 323, 321, 267, 324, 322, 339, 325, 332, 334, + 244, 328, 329, 352, 351, 356, 287, 2513, 357, 358, + 261, 361, 360, 362, 371, 378, 372, 366, 381, 383, + 386, 387, 389, 393, 390, 2595, 2595, 466, 2595, 2515, + 2554, 2501, 2512, 471, 447, 276, 248, 2595, 444, 2542, + 2541, 437, 433, 434, 2595, 2595, 466, 484, 0, 492, + 511, 521, 533, 541, 549, 557, 2595, 2595, 458, 417, + 478, 462, 2540, 2505, 461, 420, 523, 459, 293, 421, + + 524, 80, 2504, 525, 536, 526, 534, 545, 539, 546, + 542, 541, 330, 553, 556, 549, 569, 567, 548, 2503, + 571, 573, 574, 576, 2502, 2501, 577, 603, 579, 582, + 585, 584, 583, 586, 588, 587, 593, 437, 590, 625, + 602, 599, 594, 607, 613, 617, 616, 614, 291, 618, + 661, 2500, 683, 679, 0, 665, 2509, 2508, 2481, 2476, + 716, 656, 666, 658, 723, 731, 739, 747, 755, 763, + 662, 663, 670, 664, 0, 758, 743, 647, 666, 731, + 672, 741, 732, 637, 668, 770, 2495, 742, 744, 2494, + 2493, 753, 747, 754, 757, 761, 750, 2492, 746, 771, + + 776, 778, 779, 673, 2491, 780, 781, 808, 784, 786, + 674, 787, 790, 797, 791, 794, 798, 804, 2490, 802, + 811, 2523, 801, 816, 812, 467, 817, 822, 823, 825, + 826, 2488, 828, 827, 833, 829, 835, 837, 839, 838, + 844, 845, 846, 849, 850, 876, 0, 900, 2497, 2496, + 868, 2480, 2490, 2489, 2470, 2476, 894, 895, 896, 873, + 880, 895, 893, 0, 877, 896, 887, 900, 883, 885, + 886, 890, 884, 927, 894, 892, 898, 899, 2480, 2479, + 2478, 2477, 905, 907, 908, 906, 914, 2476, 916, 913, + 921, 919, 923, 924, 925, 2475, 929, 926, 932, 933, + + 934, 937, 2474, 938, 940, 968, 2473, 948, 938, 949, + 952, 958, 2472, 955, 961, 2471, 963, 2470, 964, 966, + 967, 969, 970, 971, 983, 974, 976, 980, 979, 978, + 985, 981, 993, 992, 1014, 2464, 2474, 2473, 2495, 2490, + 2445, 0, 0, 2458, 2444, 1034, 1035, 1036, 1016, 1017, + 1034, 1035, 0, 1020, 1036, 1040, 1026, 1014, 1018, 1021, + 1019, 1025, 1065, 1031, 1039, 2461, 2460, 1054, 2459, 2458, + 1041, 1037, 2457, 2456, 2455, 1043, 1045, 1047, 2454, 1049, + 1053, 1055, 1051, 1118, 1063, 1052, 1067, 2453, 2452, 1094, + 2451, 2431, 2430, 2428, 1180, 2447, 1072, 1073, 1074, 1075, + + 1076, 1077, 1078, 1081, 1083, 1108, 1084, 1104, 1181, 1096, + 1101, 1099, 1151, 1103, 1186, 2446, 2474, 2469, 2424, 0, + 0, 2459, 2468, 2437, 0, 0, 2426, 2432, 1187, 1139, + 1216, 1116, 1117, 1184, 1168, 1187, 1190, 1185, 2437, 1189, + 2436, 1155, 1172, 1192, 2435, 1183, 1196, 1198, 2434, 1194, + 1276, 2433, 1110, 1247, 1365, 1260, 1205, 1268, 1248, 1251, + 1336, 2432, 1278, 2411, 2410, 2411, 2595, 2428, 1249, 2427, + 1250, 1252, 2426, 1257, 1258, 1288, 1264, 1268, 1283, 1270, + 1284, 1337, 1338, 1286, 1291, 1293, 1339, 1294, 1340, 1367, + 1341, 1349, 1296, 2459, 2441, 2450, 2419, 0, 0, 2446, + + 2430, 2401, 2413, 2416, 1376, 1385, 1429, 2595, 2450, 1368, + 2415, 1388, 2414, 2413, 1375, 2412, 1376, 1377, 1347, 1378, + 1379, 1381, 1380, 1408, 2411, 2595, 2410, 1395, 2409, 2595, + 2408, 1461, 1297, 2395, 2406, 1385, 1466, 2595, 1344, 2387, + 2386, 2394, 2402, 2401, 2400, 2399, 1386, 1394, 1396, 1414, + 1261, 1413, 1415, 1419, 1420, 1421, 1423, 1427, 1428, 1430, + 1429, 1436, 1384, 1434, 1438, 1460, 1440, 1441, 1469, 2423, + 2407, 2378, 0, 2416, 2385, 2379, 2389, 1509, 1523, 1470, + 1473, 1479, 1451, 1455, 1465, 1472, 1461, 1482, 2391, 2378, + 1547, 2374, 1492, 1474, 2383, 2382, 2372, 1485, 1478, 1498, + + 1486, 1500, 1501, 1494, 2385, 1502, 1507, 1508, 1511, 1512, + 1513, 1515, 1517, 1518, 1519, 1523, 1525, 1529, 1528, 1527, + 0, 2405, 2374, 0, 2397, 2365, 2360, 2374, 1213, 2378, + 1536, 1535, 2377, 2376, 1531, 2360, 1608, 2354, 1537, 1541, + 2372, 2371, 2364, 1560, 1553, 1555, 1556, 1562, 1544, 1563, + 2370, 1564, 1566, 1567, 1568, 1569, 1572, 1573, 1624, 1575, + 1587, 1577, 1590, 1591, 1592, 0, 2384, 2352, 2383, 2346, + 2364, 2595, 1605, 1608, 2364, 1595, 2343, 2350, 2342, 2360, + 2359, 2345, 2344, 0, 1599, 1601, 1612, 2356, 1603, 1606, + 1604, 1631, 2355, 1609, 1610, 1616, 1618, 1619, 1656, 1661, + + 1666, 2354, 1630, 1632, 1676, 1633, 1663, 1642, 2369, 2332, + 2407, 2341, 2329, 1652, 1668, 1669, 2348, 2328, 2331, 1706, + 1679, 0, 0, 1655, 2345, 1648, 1674, 1681, 1723, 1670, + 1692, 1694, 1729, 2344, 1698, 2343, 2342, 2341, 2340, 1686, + 1701, 1707, 1716, 2339, 1696, 1688, 1700, 2394, 2328, 1735, + 2321, 2326, 2334, 1711, 1705, 1777, 2313, 1787, 2595, 1725, + 1697, 1719, 1732, 1736, 1739, 1751, 1755, 1757, 1741, 1710, + 1744, 1746, 1765, 1766, 1767, 1769, 1758, 1796, 1798, 1761, + 2332, 2331, 2330, 1762, 1763, 1764, 1801, 2314, 2327, 2322, + 2321, 2320, 2310, 2308, 1805, 1784, 1842, 2595, 2303, 1770, + + 1772, 1788, 1791, 1792, 1799, 1801, 1803, 1806, 1809, 1797, + 1810, 1811, 1816, 1818, 1821, 1823, 1825, 2321, 2320, 1826, + 1827, 1829, 1830, 2318, 2313, 2312, 2311, 2301, 2292, 2294, + 2307, 2306, 2344, 2295, 1856, 2308, 1892, 1834, 2307, 1855, + 1839, 1842, 1845, 1846, 1850, 1859, 1851, 1837, 1861, 1863, + 1864, 1865, 1870, 1871, 1866, 1889, 1875, 1777, 1876, 2284, + 2286, 2299, 2298, 2336, 2296, 2297, 2355, 2354, 0, 1905, + 1947, 2595, 2297, 1885, 1892, 1880, 1883, 1893, 1894, 1896, + 1899, 1900, 2296, 1901, 1903, 1902, 1904, 1906, 1907, 1908, + 1909, 2295, 1919, 1921, 2289, 2290, 2348, 2341, 0, 2275, + + 2249, 2287, 2248, 0, 1944, 1927, 1929, 2240, 2231, 1931, + 1932, 1933, 1934, 2222, 2213, 2204, 1935, 1937, 1938, 1939, + 2174, 1940, 1942, 1955, 2164, 2138, 2176, 2137, 0, 2109, + 2115, 2102, 2097, 2105, 1945, 1957, 2097, 2093, 2089, 2084, + 2076, 2071, 2059, 2054, 1958, 1961, 1981, 2030, 2036, 2032, + 2031, 2023, 2018, 2000, 1999, 1959, 1965, 1967, 1968, 1969, + 1998, 2000, 1996, 1995, 0, 1992, 1995, 1994, 2007, 1971, + 2005, 1972, 1975, 0, 1916, 1687, 1442, 0, 1154, 0, + 0, 1979, 1990, 1983, 0, 1024, 0, 0, 784, 0, + 0, 1985, 1986, 1989, 733, 0, 0, 629, 2008, 1992, + + 550, 313, 0, 1996, 1993, 0, 0, 2000, 1998, 0, + 2002, 211, 2006, 47, 2595, 2083, 2092, 2100, 2105, 2109, + 2118, 2122, 2126, 2135, 2139, 2144, 2148, 2156, 2160, 2164, + 2173, 2175, 2179, 2188, 2197, 2206, 2215, 2224, 2233, 2242, + 2249, 2256, 2263, 2272, 2281, 2290, 2299, 2308, 2317, 2326, + 2335, 2344 } ; -static yyconst flex_int16_t yy_def[2008] = +static yyconst flex_int16_t yy_def[1153] = { 0, - 1955, 1, 1955, 1955, 1955, 1955, 1955, 1956, 1955, 1955, - 1957, 1958, 1955, 1955, 1955, 1955, 1955, 1955, 1959, 1960, - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1962, 1955, 1955, - 1955, 1956, 1955, 1956, 1955, 1955, 1955, 1957, 1957, 1958, - 1955, 1955, 1963, 1963, 1963, 1963, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1964, 1955, 1965, 1966, - 1959, 1959, 1959, 1960, 1960, 1960, 1955, 1955, 1955, 1955, - - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1962, 1955, - 1955, 1962, 1962, 1962, 1962, 1967, 1955, 1956, 1955, 1955, - 1957, 1963, 1955, 1963, 1963, 1963, 1955, 1955, 1955, 1964, - 1965, 1965, 1965, 1966, 1966, 1968, 1959, 1960, 1955, 1955, - 1961, 1961, 1961, 1955, 1961, 1961, 1955, 1961, 1961, 1961, - - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1969, 1962, 1962, 1967, 1967, 1967, 1967, 1955, 1955, 1958, - 1963, 1963, 1963, 1955, 1955, 1965, 1966, 1968, 268, 1959, - 1960, 1961, 1961, 1961, 1970, 1971, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1969, 1969, 1969, 1969, 1962, - 1967, 1967, 1967, 1967, 1955, 1955, 1963, 1963, 1963, 1955, - 1966, 1959, 1960, 1961, 1961, 1961, 1970, 1971, 1971, 1971, - 1971, 1971, 1971, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1961, 1961, 1961, - - 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1969, 1969, 1969, 1969, 1962, 1967, 1967, - 1967, 1972, 1973, 1955, 1955, 1963, 1963, 1963, 1955, 1966, - 1959, 1960, 1961, 1961, 1961, 1971, 1971, 1971, 1971, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1961, 1974, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1955, - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1955, 1961, 1961, 1961, 1961, 1961, 1975, 1961, 1961, 1955, - 1976, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1969, 1969, 1969, - 1977, 1978, 1962, 1967, 1967, 1967, 1972, 1973, 1955, 1955, - 1963, 1963, 1963, 1966, 1959, 1960, 1961, 1961, 1961, 1971, - 1971, 1971, 1971, 1961, 1961, 1961, 1961, 1955, 1955, 1961, - - 1961, 1979, 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1955, - 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1955, 1955, 1955, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1955, 1955, 1955, 1980, 1961, 1961, 1961, 1981, 1961, - 1961, 1955, 1955, 1976, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1969, 1969, 1969, 1977, - 1978, 1962, 1967, 1967, 1967, 1955, 1955, 1963, 1963, 1955, - - 1955, 1963, 1966, 1959, 1960, 1961, 1961, 1961, 1971, 1971, - 1971, 1971, 1961, 1955, 1961, 1961, 1955, 1955, 1961, 1961, - 1955, 1979, 1955, 1955, 1961, 1961, 1961, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1955, 1955, 1955, 1955, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1955, - 1961, 1961, 1961, 1955, 1955, 1955, 1961, 1961, 1961, 1955, - 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1955, 1955, 1955, 1982, 1961, 1961, 1955, 1981, - 1955, 1955, 1961, 1955, 1955, 1961, 1961, 1961, 1961, 1961, - - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1969, 1969, 1969, 1962, 1983, 1967, 1967, 1955, 1955, 1963, - 1963, 1966, 1971, 1971, 1971, 1971, 1961, 1955, 1955, 1961, - 1961, 1955, 1955, 1961, 1961, 1984, 1961, 1961, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - 1955, 1955, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1955, 1961, 1961, 1955, 1955, - 1955, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1955, - 1955, 1955, 1982, 1955, 1955, 1955, 1985, 1986, 1955, 1961, - 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1987, 1969, 1969, 1962, 1983, 1967, 1967, 1955, 1955, 1971, - 1971, 1971, 1971, 1961, 1955, 1955, 1961, 1961, 1955, 1955, - 1961, 1961, 1988, 1961, 1961, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1955, - - 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1955, 1961, 1955, 1961, 1961, 1955, 1955, - 1955, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - 1955, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1955, - 1955, 1955, 1955, 1989, 1985, 1955, 1990, 1955, 1955, 1955, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1987, 1969, 1969, 1962, 1967, 1967, 1955, 1955, 1971, - 1971, 1961, 1955, 1955, 1961, 1961, 1955, 1955, 1961, 1988, - - 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1955, 1961, 1955, - 1961, 1955, 1961, 1961, 1955, 1955, 1955, 1955, 1961, 1961, - 1961, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - 1991, 1955, 1990, 1955, 1955, 1955, 1955, 1955, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1992, 1961, 1961, 1961, 1961, 1961, 1961, - - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1969, 1969, 1962, 1967, 1967, 1955, 1971, 1971, 1961, - 1955, 1955, 1961, 1961, 1955, 1961, 1961, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1955, - 1961, 1955, 1955, 1961, 1955, 1955, 1955, 1955, 1961, 1961, - 1955, 1961, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1955, 1955, 1991, - - 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1992, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1969, 1969, 1993, 1967, 1967, 1955, 1971, 1971, 1961, 1955, - 1955, 1961, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1955, 1955, 1955, 1961, 1961, 1955, 1955, - - 1955, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1969, 1969, 1994, 1967, 1967, 1967, 1967, 1967, 1955, - 1971, 1971, 1955, 1955, 1961, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1955, - - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1955, 1955, 1955, 1955, 1961, 1961, 1961, - 1955, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1961, - 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1969, 1969, 1969, 1969, 1969, 1995, 1996, - 1997, 1995, 1967, 1967, 1967, 1967, 1967, 1955, 1971, 1971, - 1955, 1961, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1955, 1955, 1961, 1955, 1955, 1955, 1955, 1961, - 1961, 1955, 1955, 1955, 1955, 1961, 1955, 1961, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1969, 1969, 1969, 1969, 1969, 1995, 1995, - 1996, 1996, 1995, 1997, 1995, 1995, 1967, 1967, 1967, 1967, - 1998, 1971, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1955, 1955, 1955, - 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1961, 1961, 1955, 1955, 1961, 1961, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1969, 1969, 1969, 1969, 1999, 1995, 1996, 1967, 1967, 1967, - 1967, 1998, 1971, 1955, 1955, 1955, 1955, 1955, 1955, 1961, - 1961, 1961, 1961, 1955, 1955, 1955, 1955, 1961, 1961, 1961, - 1955, 1961, 1955, 1955, 1955, 1955, 1961, 1961, 1955, 1955, - - 1955, 1955, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1969, 1969, 1969, 1969, 1999, - 1967, 1967, 1967, 1967, 1971, 1955, 1955, 1955, 1955, 1961, - 1961, 1955, 1955, 1955, 1955, 1961, 1961, 1955, 1955, 1955, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1969, 1969, 1969, - 1969, 1967, 1967, 1967, 1967, 1955, 1955, 1961, 1961, 1955, - 1955, 1961, 1961, 1955, 1955, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1969, 1969, 1969, 1969, 2000, 1967, 1967, - - 1967, 1955, 1955, 1955, 1955, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 2001, 1969, 1969, 1969, 2000, 1967, 2002, - 2003, 1961, 1961, 1961, 2001, 1969, 2004, 2005, 1967, 2002, - 2003, 1961, 1961, 1961, 1969, 2004, 2005, 1967, 1961, 1961, - 1961, 1969, 2006, 1961, 1961, 2007, 2006, 1961, 1961, 2007, - 1961, 1961, 1961, 1961, 0, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - - 1955, 1955, 1955, 1955, 1955, 1955, 1955 + 1115, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1115, + 1115, 1117, 1118, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1119, 1115, 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, + 1120, 1115, 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1115, 1115, 1115, 1115, 1121, 1115, + 1115, 1115, 1115, 1116, 1115, 1116, 1115, 1115, 1115, 1117, + 1117, 1118, 1115, 1115, 1122, 1122, 1122, 1122, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1123, 1115, 1124, 1115, + 1125, 1126, 1115, 1127, 1119, 1119, 1119, 1115, 1115, 1115, + + 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1115, 1115, 1115, 1115, 1121, + 1115, 1115, 1121, 1121, 1128, 1115, 1116, 1115, 1117, 1122, + 1115, 1122, 1122, 1122, 1115, 1115, 1123, 1123, 1124, 1125, + 1125, 1126, 1126, 1115, 1129, 1130, 1115, 1115, 1120, 1120, + 1120, 1120, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1131, 1121, 1128, 1128, 1128, 1128, 1115, 1115, + 1118, 1122, 1122, 1122, 1115, 1123, 1115, 1125, 1129, 1130, + 1120, 1120, 1120, 1120, 1132, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, 1131, 1131, + 1128, 1128, 1128, 1128, 1115, 1115, 1122, 1122, 1122, 1120, + 1120, 1120, 1120, 1133, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1115, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1131, 1131, 1131, 1131, 1128, 1128, + 1128, 1134, 1135, 1115, 1115, 1122, 1122, 1122, 1120, 1120, + 1120, 1120, 1133, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, 1131, 1136, + 1137, 1128, 1128, 1128, 1134, 1135, 1115, 1115, 1122, 1122, + 1122, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 495, 1120, 1120, 1120, 495, 1120, 1120, 1115, 1120, 1120, + 1120, 1120, 1120, 1115, 1115, 1115, 1115, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1115, 1131, 1131, 1131, 1136, 1137, 1128, + + 1128, 1128, 1115, 1115, 1122, 1122, 1115, 1115, 1122, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1115, 1120, 1120, 1120, 1115, + 1120, 1115, 1120, 1115, 1120, 1120, 1115, 1115, 1120, 1115, + 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1131, + 1131, 1131, 1138, 1128, 1128, 1115, 1115, 1122, 1122, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1115, + 1120, 1115, 1120, 1120, 1115, 1115, 1115, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1139, 1131, 1131, 1138, 1128, 1128, 1115, 1115, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1115, 1115, 1115, 1120, 1120, + 1115, 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1139, 1131, 1131, 1128, 1128, + 1115, 1115, 1120, 1120, 1120, 1120, 1115, 1115, 1115, 1120, + 1120, 1115, 1115, 1140, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, + 1128, 1128, 1115, 1120, 1120, 1120, 1120, 1115, 1115, 1115, + 1120, 1141, 1142, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, 1128, + 1128, 1115, 1120, 1120, 1120, 1115, 1115, 1115, 1115, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, 1128, 1128, + 1128, 1128, 1128, 1115, 1120, 1120, 1115, 1115, 1115, 1120, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1131, 1131, 1131, 1131, 1131, 1128, 1128, + 1128, 1128, 1128, 1115, 1120, 1120, 1115, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1131, + 1131, 1131, 1131, 1131, 1128, 1128, 1128, 1128, 1143, 1120, + 1115, 1115, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1131, 1131, 1131, 1131, 1144, 1128, + + 1128, 1128, 1128, 1143, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1131, 1131, 1131, 1131, 1144, 1128, + 1128, 1128, 1128, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1131, 1131, 1131, + 1131, 1128, 1128, 1128, 1128, 1120, 1120, 1120, 1120, 1120, + 1131, 1131, 1131, 1131, 1145, 1128, 1128, 1128, 1120, 1120, + 1120, 1120, 1120, 1146, 1131, 1131, 1131, 1145, 1128, 1147, + 1148, 1120, 1120, 1120, 1146, 1131, 1149, 1150, 1128, 1147, + 1148, 1120, 1120, 1120, 1131, 1149, 1150, 1128, 1120, 1120, + + 1120, 1131, 1151, 1120, 1120, 1152, 1151, 1120, 1120, 1152, + 1120, 1120, 1120, 1120, 0, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115 } ; -static yyconst flex_int16_t yy_nxt[4697] = +static yyconst flex_int16_t yy_nxt[2685] = { 0, - 4, 5, 6, 5, 5, 7, 8, 4, 9, 10, - 11, 12, 13, 14, 15, 13, 16, 17, 18, 19, - 20, 20, 20, 20, 20, 20, 20, 21, 13, 22, - 23, 24, 4, 25, 26, 27, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 28, - 26, 26, 26, 26, 29, 30, 26, 26, 26, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 26, 26, 42, 26, 26, 43, 44, 45, 46, 47, - 26, 48, 49, 50, 51, 52, 26, 53, 26, 26, - 54, 55, 56, 57, 55, 63, 66, 58, 70, 70, - - 70, 70, 77, 77, 77, 77, 71, 80, 59, 104, - 72, 82, 98, 99, 101, 102, 86, 67, 106, 111, - 112, 87, 60, 81, 105, 83, 84, 107, 110, 105, - 73, 78, 75, 88, 89, 109, 90, 90, 90, 90, - 90, 90, 90, 90, 114, 105, 105, 108, 105, 64, - 105, 89, 76, 94, 94, 94, 94, 94, 94, 94, - 94, 105, 105, 105, 105, 155, 133, 79, 123, 105, - 115, 118, 120, 92, 105, 116, 121, 119, 124, 122, - 93, 105, 117, 126, 105, 105, 128, 63, 125, 105, - 142, 105, 129, 127, 168, 130, 170, 96, 105, 132, - - 131, 105, 134, 147, 92, 137, 135, 138, 139, 140, - 105, 105, 141, 105, 163, 171, 136, 163, 143, 144, - 151, 105, 191, 148, 194, 156, 152, 149, 86, 145, - 146, 153, 150, 166, 173, 105, 154, 157, 158, 158, - 157, 64, 173, 159, 105, 88, 69, 173, 64, 70, - 70, 70, 70, 175, 160, 174, 176, 71, 1955, 1955, - 105, 72, 105, 192, 105, 69, 201, 114, 161, 77, - 77, 77, 77, 164, 105, 205, 105, 206, 211, 187, - 165, 73, 105, 75, 181, 181, 181, 181, 181, 181, - 181, 181, 89, 105, 90, 90, 90, 90, 90, 90, - - 90, 90, 183, 76, 93, 93, 89, 274, 94, 94, - 94, 94, 94, 94, 94, 94, 1955, 105, 91, 91, - 91, 91, 91, 91, 91, 91, 105, 114, 198, 195, - 105, 105, 204, 183, 79, 105, 105, 193, 185, 1955, - 220, 186, 186, 186, 186, 186, 186, 186, 186, 105, - 202, 203, 96, 105, 196, 186, 186, 186, 186, 186, - 186, 1955, 96, 91, 91, 91, 91, 91, 91, 91, - 91, 105, 105, 114, 105, 105, 258, 259, 105, 105, - 1624, 188, 105, 105, 209, 93, 186, 186, 186, 186, - 186, 186, 207, 208, 213, 210, 212, 215, 214, 105, - - 199, 105, 105, 219, 105, 105, 105, 96, 200, 105, - 216, 105, 105, 105, 217, 105, 304, 225, 222, 105, - 105, 105, 218, 230, 221, 105, 248, 105, 228, 223, - 105, 224, 234, 227, 229, 233, 236, 231, 105, 232, - 105, 237, 105, 105, 238, 105, 105, 105, 105, 63, - 163, 235, 242, 163, 241, 240, 244, 246, 239, 255, - 247, 170, 243, 245, 249, 157, 158, 158, 157, 163, - 164, 159, 163, 162, 252, 272, 173, 173, 253, 173, - 273, 105, 160, 277, 105, 278, 105, 1955, 105, 256, - 261, 105, 257, 105, 262, 280, 161, 105, 263, 105, - - 105, 105, 288, 64, 279, 285, 282, 287, 105, 164, - 293, 69, 105, 105, 105, 283, 165, 1719, 181, 181, - 181, 181, 181, 181, 181, 181, 270, 289, 164, 284, - 286, 164, 105, 93, 291, 165, 183, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 265, 105, 265, 105, 292, - 266, 266, 266, 266, 266, 266, 266, 266, 105, 105, - 105, 296, 324, 290, 295, 105, 1955, 183, 91, 91, - 91, 91, 91, 91, 91, 91, 1955, 294, 91, 91, - 91, 91, 91, 91, 91, 91, 105, 105, 305, 105, - 105, 297, 105, 105, 105, 105, 267, 1955, 298, 91, - - 91, 91, 91, 91, 91, 91, 91, 1720, 303, 105, - 308, 310, 185, 299, 299, 299, 299, 311, 105, 114, - 319, 313, 185, 186, 186, 186, 186, 186, 186, 186, - 186, 105, 315, 105, 105, 162, 271, 186, 186, 186, - 186, 186, 186, 96, 105, 105, 105, 317, 105, 306, - 309, 312, 316, 318, 105, 314, 321, 105, 105, 365, - 105, 105, 105, 325, 409, 105, 322, 269, 186, 186, - 186, 186, 186, 186, 320, 105, 326, 105, 323, 328, - 329, 105, 105, 331, 351, 330, 327, 300, 105, 347, - 1955, 173, 105, 164, 301, 173, 302, 332, 164, 333, - - 334, 335, 336, 352, 337, 357, 173, 350, 358, 338, - 366, 105, 359, 105, 339, 340, 341, 342, 343, 348, - 364, 362, 349, 374, 375, 379, 105, 1955, 1955, 1955, - 1955, 105, 105, 376, 1723, 71, 93, 105, 105, 72, - 105, 105, 412, 105, 385, 344, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 1955, 377, 91, 91, 91, 91, 91, 91, - 91, 91, 1955, 114, 91, 91, 91, 91, 91, 91, - 91, 91, 105, 381, 381, 381, 381, 105, 1727, 105, - 105, 105, 105, 105, 105, 415, 402, 105, 390, 105, - - 380, 361, 388, 363, 378, 389, 384, 393, 185, 91, - 91, 91, 91, 91, 91, 91, 91, 386, 96, 369, - 105, 105, 370, 91, 91, 91, 91, 91, 91, 371, - 105, 1728, 105, 299, 299, 299, 299, 105, 391, 105, - 372, 387, 105, 105, 414, 105, 394, 105, 373, 114, - 392, 417, 398, 269, 91, 91, 91, 91, 91, 91, - 105, 401, 410, 105, 382, 105, 383, 105, 399, 400, - 403, 403, 403, 403, 105, 105, 105, 105, 1729, 416, - 411, 105, 413, 419, 105, 421, 418, 105, 105, 422, - 425, 427, 424, 105, 105, 105, 420, 428, 105, 430, - - 429, 105, 105, 105, 105, 440, 105, 395, 433, 431, - 434, 105, 432, 438, 396, 1730, 397, 436, 436, 436, - 436, 439, 105, 435, 105, 105, 105, 437, 105, 443, - 444, 105, 105, 446, 442, 441, 404, 105, 105, 105, - 445, 405, 105, 114, 406, 454, 450, 164, 447, 173, - 459, 407, 449, 408, 451, 460, 448, 173, 173, 458, - 1955, 473, 452, 477, 455, 467, 475, 476, 466, 105, - 373, 474, 105, 373, 453, 483, 478, 1731, 468, 105, - 1955, 370, 91, 91, 91, 91, 91, 91, 91, 91, - 471, 1955, 105, 91, 91, 91, 91, 91, 91, 91, - - 91, 105, 373, 479, 481, 480, 93, 373, 105, 105, - 105, 470, 164, 105, 105, 105, 373, 105, 485, 105, - 692, 472, 497, 489, 488, 484, 185, 105, 482, 381, - 381, 381, 381, 490, 490, 490, 490, 96, 491, 491, - 491, 491, 105, 105, 105, 105, 105, 494, 495, 105, - 499, 502, 503, 496, 500, 105, 105, 105, 105, 498, - 105, 509, 105, 105, 507, 105, 105, 492, 105, 505, - 105, 506, 403, 403, 403, 403, 516, 508, 515, 518, - 517, 105, 519, 105, 105, 105, 523, 105, 524, 105, - 105, 105, 526, 520, 527, 105, 105, 105, 114, 521, - - 493, 522, 529, 105, 548, 525, 530, 530, 530, 530, - 486, 105, 487, 105, 538, 534, 528, 535, 675, 539, - 105, 105, 105, 544, 105, 540, 105, 542, 105, 541, - 105, 545, 105, 546, 547, 547, 547, 547, 510, 105, - 549, 543, 105, 511, 536, 553, 512, 436, 436, 436, - 436, 552, 105, 513, 105, 514, 105, 437, 550, 550, - 550, 550, 105, 558, 105, 105, 105, 105, 105, 556, - 551, 561, 554, 105, 105, 105, 557, 531, 555, 105, - 564, 105, 562, 164, 559, 560, 105, 532, 563, 533, - 566, 565, 568, 173, 173, 173, 105, 569, 567, 1955, - - 573, 582, 588, 589, 593, 105, 627, 1955, 583, 91, - 91, 91, 91, 91, 91, 91, 91, 1955, 581, 91, - 91, 91, 91, 91, 91, 91, 91, 587, 590, 591, - 105, 105, 585, 592, 373, 595, 594, 584, 105, 373, - 105, 597, 105, 105, 373, 93, 105, 596, 114, 600, - 586, 105, 105, 185, 105, 604, 713, 373, 490, 490, - 490, 490, 601, 96, 491, 491, 491, 491, 105, 105, - 606, 606, 606, 606, 105, 611, 105, 603, 605, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 614, 105, - 105, 105, 626, 492, 612, 105, 613, 615, 624, 623, - - 105, 621, 105, 622, 628, 625, 1330, 630, 629, 105, - 631, 632, 632, 632, 632, 105, 105, 105, 635, 105, - 634, 114, 530, 530, 530, 530, 640, 654, 642, 105, - 639, 105, 105, 641, 105, 643, 643, 643, 643, 655, - 655, 655, 655, 105, 105, 105, 661, 105, 105, 656, - 657, 547, 547, 547, 547, 105, 658, 665, 105, 667, - 660, 105, 550, 550, 550, 550, 105, 649, 662, 662, - 662, 662, 681, 105, 551, 105, 668, 105, 666, 663, - 105, 669, 105, 105, 105, 686, 683, 682, 105, 670, - 173, 671, 633, 636, 769, 672, 173, 644, 673, 707, - - 645, 105, 674, 637, 699, 638, 646, 105, 676, 647, - 105, 684, 709, 698, 1955, 708, 648, 706, 677, 105, - 678, 105, 685, 105, 679, 711, 105, 680, 700, 700, - 700, 700, 105, 725, 710, 947, 105, 712, 373, 1955, - 701, 91, 91, 91, 91, 91, 91, 91, 91, 704, - 373, 105, 373, 105, 173, 373, 105, 105, 742, 1955, - 93, 91, 91, 91, 91, 91, 91, 91, 91, 105, - 719, 105, 703, 727, 741, 702, 714, 714, 714, 714, - 720, 721, 721, 721, 721, 185, 606, 606, 606, 606, - 736, 736, 736, 736, 705, 105, 105, 105, 748, 749, - - 749, 749, 749, 105, 752, 96, 105, 723, 724, 105, - 105, 105, 105, 755, 105, 740, 759, 753, 754, 757, - 757, 757, 757, 105, 756, 632, 632, 632, 632, 105, - 762, 834, 105, 105, 767, 761, 770, 114, 105, 768, - 643, 643, 643, 643, 373, 763, 105, 778, 105, 114, - 105, 728, 105, 105, 777, 105, 780, 715, 787, 716, - 788, 105, 105, 776, 737, 779, 793, 729, 730, 731, - 962, 738, 105, 739, 105, 105, 373, 105, 781, 796, - 750, 105, 751, 655, 655, 655, 655, 105, 798, 789, - 789, 789, 789, 662, 662, 662, 662, 800, 105, 807, - - 758, 105, 771, 797, 663, 772, 760, 794, 794, 794, - 794, 773, 105, 801, 774, 791, 792, 795, 105, 799, - 105, 775, 662, 662, 662, 662, 105, 105, 802, 105, - 105, 105, 804, 663, 105, 808, 105, 105, 809, 105, - 803, 813, 811, 105, 814, 805, 105, 173, 815, 806, - 105, 810, 824, 816, 820, 824, 817, 173, 818, 812, - 1955, 594, 819, 105, 105, 903, 105, 700, 700, 700, - 700, 835, 840, 831, 594, 1732, 105, 830, 1955, 701, - 91, 91, 91, 91, 91, 91, 91, 91, 1955, 105, - 91, 91, 91, 91, 91, 91, 91, 91, 105, 373, - - 714, 714, 714, 714, 105, 105, 93, 105, 105, 114, - 844, 164, 105, 832, 845, 105, 105, 860, 841, 837, - 721, 721, 721, 721, 185, 721, 721, 721, 721, 105, - 859, 847, 1195, 865, 96, 105, 105, 105, 848, 736, - 736, 736, 736, 736, 736, 736, 736, 724, 105, 873, - 861, 723, 724, 862, 862, 862, 862, 749, 749, 749, - 749, 105, 866, 749, 749, 749, 749, 1733, 105, 105, - 874, 876, 876, 876, 876, 105, 881, 105, 105, 105, - 880, 838, 875, 839, 882, 757, 757, 757, 757, 884, - 105, 105, 105, 887, 885, 892, 892, 892, 892, 105, - - 105, 105, 114, 105, 105, 907, 895, 105, 896, 888, - 105, 927, 105, 853, 905, 105, 948, 853, 906, 105, - 854, 904, 855, 105, 854, 928, 855, 105, 105, 912, - 912, 912, 912, 105, 863, 105, 864, 902, 868, 929, - 869, 933, 877, 105, 868, 932, 869, 916, 916, 916, - 916, 105, 878, 939, 879, 914, 915, 105, 789, 789, - 789, 789, 789, 789, 789, 789, 883, 919, 919, 919, - 919, 794, 794, 794, 794, 917, 893, 105, 894, 105, - 105, 795, 931, 934, 105, 792, 930, 938, 791, 792, - 925, 925, 925, 925, 105, 105, 105, 937, 105, 935, - - 936, 105, 105, 105, 941, 105, 105, 945, 105, 105, - 105, 950, 105, 946, 824, 943, 940, 824, 963, 944, - 942, 700, 700, 700, 700, 949, 972, 105, 975, 920, - 105, 961, 921, 701, 700, 700, 700, 700, 922, 105, - 105, 923, 373, 105, 373, 370, 701, 173, 924, 1955, - 964, 91, 91, 91, 91, 91, 91, 91, 91, 960, - 173, 105, 105, 974, 105, 105, 105, 954, 702, 967, - 971, 373, 105, 164, 926, 862, 862, 862, 862, 987, - 968, 702, 105, 989, 862, 862, 862, 862, 105, 988, - 105, 105, 105, 105, 1077, 185, 995, 990, 992, 992, - - 992, 992, 1008, 105, 991, 876, 876, 876, 876, 105, - 1005, 1006, 105, 105, 1004, 105, 876, 876, 876, 876, - 105, 105, 105, 105, 1010, 105, 1007, 1009, 1018, 1011, - 1014, 1014, 1014, 1014, 1023, 105, 1013, 892, 892, 892, - 892, 105, 1017, 892, 892, 892, 892, 105, 1026, 1024, - 105, 105, 1025, 105, 105, 105, 983, 105, 984, 114, - 105, 1037, 105, 105, 1032, 983, 1065, 984, 1761, 1033, - 1054, 1038, 993, 105, 1039, 105, 999, 1055, 1316, 994, - 1034, 1034, 1034, 1034, 105, 1053, 1000, 999, 1001, 105, - 1056, 1060, 105, 916, 916, 916, 916, 1000, 1059, 1001, - - 912, 912, 912, 912, 912, 912, 912, 912, 105, 105, - 105, 1015, 919, 919, 919, 919, 1057, 105, 1019, 105, - 1020, 917, 1061, 1062, 1019, 105, 1020, 915, 1063, 1067, - 914, 915, 925, 925, 925, 925, 105, 105, 105, 1066, - 105, 1064, 105, 105, 105, 1070, 105, 105, 105, 105, - 1068, 105, 1071, 105, 1035, 1073, 1069, 105, 1079, 1085, - 1076, 1036, 1074, 1078, 1072, 105, 1091, 164, 1075, 1080, - 1090, 105, 105, 373, 1048, 105, 1092, 1049, 373, 105, - 1081, 1096, 105, 1050, 1099, 105, 1051, 105, 105, 1095, - 105, 1190, 1114, 1052, 721, 721, 721, 721, 105, 1116, - - 105, 1101, 992, 992, 992, 992, 1118, 1117, 992, 992, - 992, 992, 1115, 105, 105, 105, 926, 105, 105, 1121, - 723, 724, 1120, 105, 105, 105, 105, 1131, 1119, 1137, - 105, 1130, 1133, 1135, 1135, 1135, 1135, 1014, 1014, 1014, - 1014, 105, 105, 1132, 105, 1134, 105, 105, 105, 105, - 1139, 105, 1151, 1141, 1149, 1034, 1034, 1034, 1034, 105, - 1762, 1143, 105, 1152, 1144, 1150, 1034, 1034, 1034, 1034, - 1161, 1159, 105, 105, 1160, 114, 1111, 1162, 1162, 1162, - 1162, 1763, 1111, 1112, 1172, 1172, 1172, 1172, 105, 1112, - 105, 1180, 1165, 1166, 105, 105, 789, 789, 789, 789, - - 105, 105, 1185, 105, 1136, 105, 1186, 1187, 1181, 1183, - 1179, 105, 105, 105, 1182, 105, 1764, 105, 1140, 1188, - 105, 1193, 791, 792, 1193, 105, 1189, 1191, 1197, 1155, - 1192, 1194, 1196, 105, 1201, 105, 1156, 105, 105, 105, - 1155, 105, 105, 105, 105, 1209, 1207, 1156, 1163, 728, - 1199, 1164, 1198, 105, 1202, 1200, 1203, 105, 1214, 1204, - 1205, 1206, 1208, 1218, 1210, 729, 591, 731, 1211, 105, - 1219, 105, 105, 105, 1223, 164, 1226, 105, 1224, 105, - 1244, 373, 1243, 105, 721, 721, 721, 721, 1240, 1240, - 1240, 1240, 105, 373, 105, 105, 105, 105, 105, 1227, - - 105, 1259, 1273, 1246, 105, 1765, 1245, 1260, 1267, 1247, - 723, 724, 105, 1248, 1249, 1249, 1249, 1249, 1135, 1135, - 1135, 1135, 1261, 1261, 1261, 1261, 1264, 105, 1135, 1135, - 1135, 1135, 105, 105, 105, 105, 1265, 105, 105, 1281, - 1281, 1281, 1281, 105, 1280, 1290, 1266, 105, 1283, 1271, - 105, 1279, 1269, 1162, 1162, 1162, 1162, 105, 105, 105, - 105, 1291, 1162, 1162, 1162, 1162, 1329, 105, 105, 1241, - 1317, 1242, 1292, 1293, 1551, 1294, 105, 1295, 1295, 1295, - 1295, 1306, 105, 105, 105, 105, 1307, 105, 1250, 1257, - 912, 912, 912, 912, 1311, 1251, 105, 1314, 105, 1257, - - 1312, 105, 105, 1262, 105, 1263, 1172, 1172, 1172, 1172, - 1282, 789, 789, 789, 789, 105, 914, 915, 1308, 1308, - 1308, 1308, 1318, 1315, 1287, 105, 105, 1288, 1323, 105, - 1331, 1193, 1319, 1287, 1193, 1324, 1288, 791, 792, 105, - 105, 1194, 105, 105, 1320, 105, 105, 1325, 1296, 1328, - 1327, 105, 1334, 105, 1335, 1339, 105, 1336, 1337, 164, - 1326, 1347, 1343, 105, 1333, 1348, 1332, 114, 105, 105, - 105, 728, 1352, 1338, 1340, 105, 373, 1353, 1367, 1369, - 105, 105, 105, 105, 105, 105, 1371, 729, 1680, 731, - 105, 373, 1309, 1349, 1387, 105, 1368, 1372, 1370, 1310, - - 490, 490, 490, 490, 547, 547, 547, 547, 1240, 1240, - 1240, 1240, 1249, 1249, 1249, 1249, 1240, 1240, 1240, 1240, - 105, 105, 1249, 1249, 1249, 1249, 105, 1373, 105, 1261, - 1261, 1261, 1261, 105, 105, 105, 1376, 1385, 105, 1374, - 105, 1375, 1261, 1261, 1261, 1261, 105, 1390, 1386, 1388, - 105, 1389, 1395, 1392, 1392, 1392, 1392, 1682, 1391, 105, - 105, 114, 1281, 1281, 1281, 1281, 105, 1404, 105, 1413, - 1397, 1403, 1281, 1281, 1281, 1281, 105, 105, 105, 1416, - 1406, 105, 1405, 105, 1414, 105, 1365, 105, 105, 1357, - 1398, 1358, 1417, 1366, 105, 1418, 1365, 1357, 1680, 1358, - - 1427, 1415, 105, 1366, 1295, 1295, 1295, 1295, 105, 105, - 1379, 1435, 1380, 105, 1426, 105, 1295, 1295, 1295, 1295, - 105, 1428, 1432, 1379, 1393, 1380, 912, 912, 912, 912, - 1768, 105, 1769, 1401, 1308, 1308, 1308, 1308, 1308, 1308, - 1308, 1308, 1438, 1401, 1439, 1436, 1437, 1429, 1429, 1429, - 1429, 1456, 914, 915, 1433, 1433, 1433, 1433, 105, 1445, - 105, 1446, 105, 1447, 1453, 105, 1434, 1454, 1440, 1441, - 1442, 1457, 1443, 105, 1455, 1412, 1458, 114, 105, 105, - 105, 105, 1448, 1449, 1450, 1475, 1451, 1412, 1472, 105, - 105, 1459, 1444, 1460, 1461, 105, 105, 105, 1465, 1466, - - 1490, 373, 1487, 105, 105, 105, 1452, 105, 1422, 105, - 105, 1491, 1422, 105, 1467, 1423, 105, 105, 1430, 1423, - 1770, 1431, 1489, 1488, 105, 162, 162, 1494, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 105, 1468, 655, 655, 655, 655, - 105, 105, 162, 162, 162, 162, 162, 162, 1492, 1492, - 1492, 1492, 1541, 1507, 1495, 105, 1496, 1392, 1392, 1392, - 1392, 105, 1506, 105, 105, 105, 1505, 1508, 1392, 1392, - 1392, 1392, 105, 105, 162, 164, 162, 162, 1509, 1510, - 105, 1513, 105, 105, 105, 1771, 1518, 1519, 105, 1590, - - 105, 1512, 1521, 1521, 1521, 1521, 1529, 1529, 1529, 1529, - 105, 105, 105, 1520, 1531, 162, 373, 1532, 1533, 105, - 105, 1429, 1429, 1429, 1429, 1542, 105, 1543, 1429, 1429, - 1429, 1429, 1493, 1544, 1546, 1546, 1546, 1546, 1504, 105, - 1774, 1545, 1433, 1433, 1433, 1433, 105, 1548, 1548, 1504, - 1548, 105, 1553, 1555, 1434, 1552, 1556, 1550, 1549, 105, - 1554, 1557, 1568, 1558, 105, 105, 1559, 105, 105, 1563, - 1560, 105, 1564, 1522, 105, 105, 1561, 105, 1562, 105, - 1530, 105, 1565, 1566, 105, 1567, 1569, 105, 105, 105, - 105, 105, 1538, 1574, 1575, 1539, 105, 1775, 1571, 1538, - - 105, 105, 1539, 1570, 105, 1547, 1572, 105, 105, 1576, - 1589, 370, 1592, 105, 105, 105, 1573, 1492, 1492, 1492, - 1492, 105, 1608, 1604, 105, 1605, 105, 1603, 1624, 1606, - 1492, 1492, 1492, 1492, 105, 1776, 105, 373, 1616, 1655, - 1577, 1579, 1579, 1580, 1579, 1579, 1579, 1579, 1579, 1579, - 1579, 1579, 162, 1579, 1579, 1579, 1579, 1579, 1579, 1579, - 105, 105, 105, 105, 105, 105, 105, 105, 1579, 1579, - 1579, 1579, 1579, 1579, 1618, 1607, 1617, 105, 1636, 1609, - 1619, 1619, 1619, 1619, 105, 105, 1622, 1649, 1646, 1621, - 1630, 1599, 1521, 1521, 1521, 1521, 1625, 105, 105, 1657, - - 1579, 1582, 1579, 1579, 1599, 1521, 1521, 1521, 1521, 105, - 1658, 1631, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1637, 1637, 1637, 1637, 1546, 1546, 1546, 1546, 105, 105, - 105, 1579, 105, 105, 105, 1659, 1647, 1546, 1546, 1546, - 1546, 105, 105, 105, 105, 1660, 1650, 1651, 1648, 1548, - 1548, 1620, 1548, 105, 105, 1777, 1652, 1654, 1653, 105, - 1549, 105, 1656, 1629, 1661, 105, 105, 105, 1663, 1664, - 105, 1665, 1662, 105, 1666, 105, 1629, 105, 1667, 105, - 1668, 105, 105, 105, 1669, 1672, 1632, 105, 1779, 1670, - 1632, 1638, 162, 1686, 105, 1645, 105, 1671, 105, 1701, - - 105, 1673, 1692, 916, 916, 916, 916, 1702, 1645, 1683, - 1683, 1580, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, - 1679, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 373, 105, - 105, 917, 105, 1703, 1784, 105, 1683, 1683, 1683, 1683, - 1683, 1683, 1715, 1785, 1704, 1705, 1705, 1705, 1705, 105, - 1680, 1786, 1707, 1619, 1619, 1619, 1619, 105, 1619, 1619, - 1619, 1619, 1714, 1716, 105, 105, 105, 1787, 1683, 1685, - 1683, 1683, 105, 105, 105, 105, 1717, 1721, 1637, 1637, - 1637, 1637, 105, 105, 1718, 1722, 1736, 105, 1725, 1637, - 1637, 1637, 1637, 1739, 1737, 1738, 1726, 105, 1740, 1683, - - 1734, 1734, 1734, 1734, 105, 105, 105, 105, 105, 1744, - 105, 105, 105, 1745, 105, 1746, 105, 1741, 105, 1706, - 105, 1747, 1742, 1743, 1711, 105, 1748, 105, 1752, 1711, - 1753, 1749, 1750, 105, 105, 105, 1754, 1755, 1751, 1757, - 105, 105, 105, 1760, 162, 1759, 1793, 1758, 1794, 1724, - 1679, 1766, 1773, 1756, 1681, 1767, 105, 105, 105, 105, - 1724, 105, 105, 1705, 1705, 1705, 1705, 105, 1782, 105, - 1781, 1780, 105, 1783, 1735, 1679, 1766, 105, 1795, 1790, - 373, 1705, 1705, 1705, 1705, 105, 1789, 1796, 105, 1788, - 1791, 1791, 1791, 1791, 1800, 1797, 1734, 1734, 1734, 1734, - - 1801, 1802, 1680, 1734, 1734, 1734, 1734, 105, 1680, 105, - 105, 1806, 1682, 1683, 1683, 1580, 1683, 1683, 1683, 1683, - 1683, 1683, 1683, 1683, 1679, 1683, 1683, 1683, 1683, 1683, - 1683, 1683, 105, 1680, 105, 1808, 105, 1778, 105, 105, - 1683, 1683, 1683, 1683, 1683, 1683, 105, 1803, 1804, 1804, - 1804, 1804, 105, 105, 1798, 1778, 105, 1811, 1807, 105, - 1823, 1792, 105, 105, 105, 105, 105, 105, 105, 105, - 1799, 1809, 1683, 1685, 1683, 1683, 105, 1799, 1810, 105, - 1812, 1815, 1813, 1814, 1816, 1818, 1819, 105, 105, 105, - 105, 1817, 1826, 1827, 1828, 1829, 1679, 1820, 1681, 1824, - - 1831, 1832, 1833, 1683, 1822, 1821, 1834, 1835, 1825, 1836, - 105, 1837, 1838, 1839, 105, 105, 105, 105, 1842, 1805, - 1840, 1843, 1844, 105, 105, 105, 373, 1791, 1791, 1791, - 1791, 1841, 105, 1791, 1791, 1791, 1791, 1846, 1848, 1847, - 1849, 105, 105, 1850, 1804, 1804, 1804, 1804, 105, 1804, - 1804, 1804, 1804, 105, 1680, 105, 1682, 105, 1854, 105, - 105, 105, 1852, 105, 105, 105, 105, 1853, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 1868, 1857, 1855, - 1858, 1859, 105, 1860, 1856, 1865, 1861, 1862, 1863, 1864, - 1866, 105, 1869, 1870, 1871, 1872, 1867, 1873, 1845, 1874, - - 1875, 373, 1876, 1877, 1845, 105, 105, 1880, 1881, 1878, - 105, 105, 1884, 1879, 1882, 1851, 1885, 105, 105, 105, - 1851, 105, 105, 105, 1886, 105, 105, 105, 105, 105, - 1889, 1883, 105, 105, 105, 105, 1892, 1888, 1887, 1890, - 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, - 1903, 105, 1891, 105, 1904, 1905, 105, 105, 105, 1906, - 1907, 105, 105, 105, 105, 105, 105, 105, 105, 1913, - 1910, 1914, 1915, 1916, 1917, 1919, 1920, 1921, 1908, 105, - 105, 1911, 105, 1909, 105, 105, 1926, 1912, 105, 1922, - 1923, 1924, 1927, 1928, 1929, 105, 1933, 105, 1935, 1938, - - 105, 1940, 105, 105, 1942, 1943, 1944, 105, 105, 1946, - 1932, 1945, 105, 1948, 105, 1934, 1939, 105, 1941, 105, - 105, 105, 1951, 105, 105, 105, 105, 973, 1047, 1171, - 1713, 1712, 1710, 1709, 1708, 1949, 1952, 105, 1953, 1700, - 1954, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 68, 68, 68, 68, 1699, 68, 68, 68, - 68, 68, 68, 74, 74, 74, 1698, 1697, 1696, 1695, - 1694, 105, 74, 91, 91, 1693, 373, 91, 95, 95, - 1089, 1691, 95, 103, 1690, 1689, 103, 162, 162, 1688, - 162, 162, 162, 162, 162, 162, 162, 162, 172, 172, - - 1687, 172, 180, 180, 1682, 180, 180, 180, 180, 180, - 180, 180, 180, 182, 1680, 1678, 182, 184, 184, 1677, - 1676, 184, 254, 254, 1675, 254, 254, 254, 254, 254, - 254, 254, 254, 268, 1674, 105, 268, 346, 346, 105, - 346, 346, 346, 346, 346, 346, 346, 346, 367, 1644, - 1643, 367, 368, 1642, 1641, 368, 577, 577, 1640, 577, - 577, 577, 577, 577, 577, 577, 577, 578, 578, 1639, - 578, 578, 578, 578, 578, 578, 578, 578, 602, 602, - 105, 105, 1635, 1634, 1633, 105, 105, 602, 659, 659, - 1628, 1627, 1626, 1623, 1615, 1614, 1613, 659, 664, 664, - - 1612, 1611, 664, 1610, 664, 105, 105, 664, 690, 690, - 1602, 690, 690, 690, 690, 690, 690, 690, 690, 691, - 691, 1601, 691, 691, 691, 691, 691, 691, 691, 691, - 722, 722, 1600, 1598, 1597, 1596, 722, 722, 722, 722, - 786, 786, 1595, 1594, 1593, 1591, 1588, 1587, 1586, 786, - 790, 790, 1585, 1584, 1583, 1578, 790, 790, 790, 790, - 913, 913, 105, 105, 105, 1540, 913, 913, 913, 913, - 955, 955, 1537, 955, 955, 955, 955, 955, 955, 955, - 955, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1045, 1082, 1082, 1536, 1082, 1082, 1082, 1082, 1082, - - 1082, 1082, 1082, 1100, 1100, 1535, 1534, 105, 105, 1100, - 1100, 1100, 1100, 1173, 1173, 1528, 1527, 1526, 1525, 1173, - 1173, 1173, 1173, 1300, 1300, 1524, 1523, 1517, 1516, 1300, - 1300, 1300, 1300, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1464, 1464, 1515, 1464, 1464, 1464, - 1464, 1464, 1464, 1464, 1464, 1581, 1581, 1581, 1581, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1679, 1679, 1514, 1679, - 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1681, 1681, 1511, - 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1684, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1772, - - 1772, 1395, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, - 1830, 1830, 105, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1918, 1918, 105, 1918, 1918, 1918, 1918, 1918, 1918, - 1918, 1918, 1925, 1925, 1503, 1925, 1925, 1925, 1925, 1925, - 1925, 1925, 1925, 1930, 1930, 1502, 1930, 1930, 1930, 1930, - 1930, 1930, 1930, 1930, 1931, 1931, 1501, 1931, 1931, 1931, - 1931, 1931, 1931, 1931, 1931, 1936, 1936, 1500, 1936, 1936, - 1936, 1936, 1936, 1936, 1936, 1936, 1937, 1937, 1499, 1937, - 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1947, 1947, 1498, - 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1950, 1950, - - 1497, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 105, - 1486, 1485, 1484, 1483, 1482, 1481, 1480, 1479, 1478, 1477, - 1476, 105, 1474, 1473, 1471, 1470, 1469, 1463, 1462, 105, - 105, 105, 105, 105, 105, 1322, 105, 105, 1425, 1424, - 1421, 1420, 1419, 1411, 1410, 1409, 1408, 1407, 1402, 1400, - 1399, 1273, 1396, 1394, 1384, 1383, 1382, 1381, 1378, 1377, - 1364, 1363, 1362, 1361, 1360, 1359, 1356, 1355, 105, 105, - 1354, 1351, 1350, 1346, 1345, 1344, 1342, 1341, 105, 105, - 1322, 105, 1313, 1305, 1304, 1303, 1302, 1301, 1299, 654, - 1298, 1297, 105, 1289, 1286, 1285, 1284, 1278, 1277, 1276, - - 1275, 1274, 1272, 1270, 1268, 1258, 1256, 1255, 1254, 1253, - 1252, 1239, 1238, 1237, 1236, 1235, 1234, 1233, 1232, 1231, - 1230, 1229, 1228, 1225, 1222, 1221, 1220, 1217, 1216, 1215, - 1213, 1212, 1184, 1178, 1177, 1176, 1175, 1174, 1046, 1170, - 1169, 1168, 1167, 105, 1158, 1157, 1154, 1153, 1148, 1147, - 1146, 1145, 1142, 1138, 105, 1129, 1128, 1127, 1126, 1125, - 1124, 1123, 1122, 1113, 1110, 1109, 1108, 1107, 1106, 1105, - 1104, 1103, 1102, 105, 105, 1098, 1097, 1094, 1093, 373, - 373, 1089, 1088, 1087, 1086, 1084, 1083, 105, 1058, 1046, - 1044, 1043, 1042, 1041, 1040, 1031, 1030, 1029, 1028, 1027, - - 1022, 1021, 1016, 1012, 105, 1003, 1002, 998, 997, 996, - 986, 985, 982, 981, 980, 979, 978, 977, 976, 970, - 969, 966, 965, 959, 958, 957, 956, 953, 952, 951, - 105, 918, 105, 911, 910, 909, 908, 901, 900, 899, - 898, 897, 891, 890, 889, 105, 886, 105, 872, 871, - 870, 867, 858, 857, 856, 852, 851, 850, 849, 105, - 846, 843, 842, 836, 833, 105, 173, 829, 828, 827, - 826, 825, 823, 822, 821, 426, 105, 105, 785, 784, - 783, 782, 105, 766, 765, 764, 105, 105, 747, 746, - 745, 744, 743, 105, 735, 734, 733, 732, 726, 718, - - 717, 105, 105, 697, 696, 695, 694, 693, 689, 688, - 687, 105, 653, 652, 651, 650, 105, 105, 620, 619, - 618, 617, 616, 610, 609, 608, 607, 105, 105, 105, - 105, 599, 598, 105, 105, 580, 579, 576, 575, 574, - 572, 571, 570, 105, 537, 105, 504, 501, 105, 105, - 105, 373, 469, 465, 464, 463, 462, 461, 457, 456, - 426, 423, 105, 105, 105, 187, 360, 356, 355, 354, - 353, 345, 307, 105, 281, 276, 275, 264, 260, 173, - 164, 167, 251, 250, 226, 197, 105, 190, 189, 179, - 178, 177, 173, 169, 167, 113, 105, 100, 97, 85, - - 69, 65, 61, 1955, 3, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955 - + 4, 5, 6, 7, 7, 5, 8, 9, 4, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 21, 21, 21, 21, 21, 21, 22, 23, 24, + 25, 4, 26, 27, 28, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, + 27, 27, 27, 30, 31, 27, 27, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 27, 27, + 43, 27, 27, 44, 45, 46, 47, 48, 27, 49, + 50, 51, 52, 53, 27, 54, 27, 27, 55, 56, + 57, 62, 58, 56, 65, 62, 59, 68, 72, 72, + + 80, 72, 72, 108, 82, 88, 60, 73, 106, 89, + 105, 74, 99, 100, 81, 107, 69, 83, 84, 61, + 90, 102, 103, 109, 106, 111, 112, 85, 113, 75, + 86, 77, 87, 87, 87, 87, 87, 87, 87, 87, + 106, 106, 156, 171, 106, 66, 106, 106, 106, 285, + 91, 78, 92, 92, 92, 92, 92, 92, 92, 92, + 128, 133, 132, 172, 106, 65, 129, 106, 91, 93, + 95, 95, 95, 95, 95, 95, 95, 95, 116, 110, + 106, 106, 155, 106, 194, 117, 106, 97, 94, 106, + 118, 120, 106, 167, 126, 121, 119, 106, 122, 93, + + 130, 157, 123, 106, 127, 131, 106, 134, 106, 106, + 140, 135, 124, 141, 142, 62, 66, 97, 94, 62, + 106, 136, 125, 106, 137, 106, 138, 139, 143, 144, + 147, 88, 106, 148, 168, 165, 171, 150, 169, 145, + 146, 152, 151, 171, 66, 189, 90, 153, 173, 174, + 149, 191, 154, 158, 159, 65, 159, 158, 72, 72, + 160, 72, 72, 190, 106, 207, 106, 73, 193, 106, + 161, 74, 106, 87, 87, 87, 87, 87, 87, 87, + 87, 71, 106, 162, 195, 71, 203, 106, 106, 75, + 178, 77, 87, 87, 87, 87, 87, 87, 87, 87, + + 106, 106, 106, 106, 208, 106, 66, 204, 106, 181, + 91, 78, 92, 92, 92, 92, 92, 92, 92, 92, + 178, 205, 106, 206, 232, 221, 184, 184, 106, 183, + 185, 185, 185, 185, 185, 185, 185, 185, 91, 181, + 95, 95, 95, 95, 95, 95, 95, 95, 106, 212, + 259, 260, 106, 227, 106, 282, 332, 97, 1115, 183, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 184, 184, + 1115, 190, 185, 185, 185, 185, 185, 185, 185, 185, + 190, 192, 106, 106, 106, 106, 106, 97, 1106, 106, + 106, 106, 297, 106, 211, 106, 106, 209, 210, 213, + + 106, 217, 218, 222, 214, 106, 196, 219, 197, 198, + 223, 199, 106, 106, 200, 220, 215, 106, 106, 106, + 216, 106, 106, 106, 201, 202, 224, 106, 230, 233, + 236, 234, 106, 106, 231, 225, 235, 226, 229, 106, + 239, 238, 106, 240, 106, 243, 242, 106, 106, 237, + 106, 106, 256, 245, 106, 168, 247, 241, 244, 249, + 171, 171, 250, 246, 171, 251, 248, 158, 159, 252, + 159, 158, 272, 163, 160, 254, 263, 262, 106, 264, + 257, 106, 106, 258, 161, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 277, 271, 274, 283, 162, 106, 265, + + 265, 278, 71, 266, 266, 266, 266, 266, 266, 266, + 266, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 106, + 106, 273, 106, 106, 320, 281, 267, 267, 106, 164, + 268, 268, 268, 268, 268, 268, 268, 268, 1115, 106, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 184, 184, + 1115, 413, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 186, 186, 186, 186, + 186, 186, 186, 186, 106, 106, 106, 106, 279, 186, + 186, 186, 186, 186, 186, 106, 280, 106, 288, 290, + + 106, 287, 106, 106, 296, 284, 106, 106, 295, 106, + 106, 106, 289, 291, 106, 300, 293, 106, 303, 186, + 186, 186, 186, 186, 186, 292, 294, 298, 106, 299, + 106, 301, 106, 302, 106, 106, 306, 106, 106, 190, + 106, 305, 307, 106, 106, 106, 106, 106, 106, 106, + 304, 106, 322, 315, 106, 106, 309, 314, 311, 319, + 106, 316, 318, 106, 106, 312, 313, 317, 106, 310, + 326, 321, 323, 327, 106, 106, 325, 106, 106, 106, + 333, 163, 351, 171, 324, 171, 106, 329, 348, 328, + 359, 330, 357, 171, 334, 331, 335, 336, 106, 337, + + 352, 338, 375, 362, 1103, 363, 339, 360, 106, 358, + 361, 340, 341, 342, 343, 344, 349, 1115, 1115, 350, + 1115, 1115, 106, 106, 106, 106, 73, 106, 369, 106, + 74, 106, 370, 106, 106, 106, 372, 164, 376, 391, + 397, 345, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 368, 365, 106, 106, 190, 1115, 1115, 1115, 1115, 1115, + + 1115, 366, 106, 106, 106, 106, 190, 106, 106, 1102, + 371, 106, 367, 374, 106, 106, 386, 378, 106, 106, + 381, 373, 106, 379, 385, 1115, 1115, 1115, 1115, 1115, + 1115, 106, 106, 380, 384, 382, 377, 106, 383, 106, + 106, 106, 106, 392, 190, 106, 395, 106, 106, 398, + 387, 106, 106, 389, 390, 106, 399, 388, 106, 106, + 1098, 393, 106, 106, 396, 106, 404, 400, 407, 106, + 405, 401, 106, 106, 394, 402, 410, 106, 106, 403, + 411, 408, 414, 106, 106, 412, 106, 106, 106, 106, + 106, 417, 415, 418, 106, 422, 106, 416, 106, 106, + + 106, 424, 425, 421, 427, 106, 106, 106, 419, 420, + 106, 106, 190, 439, 423, 426, 431, 435, 440, 428, + 430, 171, 171, 171, 449, 432, 450, 451, 447, 452, + 429, 433, 455, 454, 106, 436, 456, 106, 106, 446, + 457, 106, 434, 448, 106, 106, 106, 106, 106, 459, + 460, 106, 463, 106, 106, 106, 106, 106, 464, 106, + 106, 106, 458, 461, 467, 462, 106, 106, 106, 106, + 472, 469, 465, 470, 106, 106, 466, 106, 471, 475, + 106, 474, 106, 476, 106, 106, 106, 106, 106, 473, + 106, 481, 477, 106, 106, 106, 483, 484, 106, 106, + + 478, 106, 479, 486, 190, 488, 480, 482, 492, 106, + 106, 487, 491, 106, 493, 485, 106, 495, 494, 106, + 497, 498, 106, 499, 106, 106, 501, 106, 106, 106, + 106, 106, 106, 496, 507, 106, 502, 106, 500, 106, + 106, 106, 106, 503, 106, 510, 106, 505, 512, 489, + 504, 513, 506, 106, 106, 508, 511, 509, 515, 517, + 514, 171, 171, 171, 518, 532, 533, 530, 534, 535, + 516, 536, 538, 539, 537, 106, 531, 106, 106, 106, + 106, 106, 106, 542, 540, 529, 106, 106, 545, 544, + 190, 541, 106, 546, 1095, 106, 106, 106, 106, 543, + + 106, 106, 106, 547, 106, 549, 106, 550, 106, 553, + 106, 552, 106, 106, 106, 106, 106, 551, 548, 558, + 558, 556, 558, 558, 106, 554, 106, 555, 106, 559, + 190, 560, 557, 106, 106, 106, 106, 106, 106, 106, + 570, 572, 106, 576, 106, 106, 589, 561, 571, 573, + 574, 575, 578, 569, 579, 106, 583, 106, 580, 577, + 106, 581, 106, 591, 106, 106, 171, 590, 611, 106, + 582, 106, 610, 606, 628, 562, 593, 106, 106, 106, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, + + 568, 568, 568, 568, 568, 568, 568, 567, 567, 567, + 567, 567, 106, 594, 171, 584, 106, 607, 607, 613, + 607, 607, 615, 614, 1089, 585, 612, 586, 618, 106, + 608, 587, 616, 106, 588, 592, 605, 567, 567, 567, + 567, 106, 106, 171, 106, 106, 106, 106, 106, 619, + 106, 106, 617, 106, 620, 106, 621, 106, 622, 106, + 623, 632, 632, 609, 632, 632, 106, 773, 567, 558, + 558, 633, 558, 558, 106, 625, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 627, 627, 627, 627, 627, + + 627, 627, 627, 626, 626, 626, 626, 626, 106, 106, + 106, 106, 106, 106, 190, 643, 644, 645, 106, 106, + 648, 106, 106, 646, 647, 106, 629, 635, 636, 106, + 650, 106, 702, 626, 626, 626, 626, 637, 637, 106, + 637, 637, 639, 649, 106, 106, 651, 106, 634, 106, + 653, 652, 106, 657, 106, 106, 658, 106, 106, 656, + 660, 669, 691, 638, 626, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 631, 631, 631, 631, 631, 631, + 631, 631, 630, 630, 630, 630, 630, 106, 106, 106, + + 106, 106, 106, 171, 662, 106, 694, 663, 106, 681, + 106, 664, 171, 684, 654, 539, 665, 667, 655, 666, + 659, 661, 630, 630, 630, 630, 668, 679, 106, 106, + 607, 607, 678, 607, 607, 539, 106, 106, 106, 106, + 106, 106, 106, 608, 190, 106, 106, 106, 698, 106, + 541, 685, 541, 630, 686, 106, 106, 106, 683, 714, + 687, 689, 632, 632, 693, 632, 632, 637, 637, 106, + 637, 637, 688, 699, 106, 106, 106, 700, 701, 704, + 106, 106, 106, 707, 106, 705, 706, 708, 106, 106, + 106, 106, 703, 638, 711, 106, 715, 106, 709, 106, + + 717, 106, 106, 720, 716, 718, 190, 710, 712, 713, + 607, 607, 106, 607, 607, 731, 106, 719, 1088, 733, + 729, 106, 106, 608, 607, 607, 106, 607, 607, 730, + 106, 106, 732, 106, 106, 106, 171, 608, 541, 106, + 106, 690, 734, 106, 735, 541, 106, 106, 737, 737, + 171, 737, 737, 106, 740, 106, 609, 745, 739, 106, + 744, 106, 106, 106, 746, 747, 748, 751, 106, 106, + 609, 749, 106, 106, 106, 750, 106, 754, 106, 106, + 106, 752, 755, 760, 106, 757, 106, 753, 106, 106, + 106, 774, 106, 758, 756, 763, 106, 106, 106, 759, + + 762, 775, 106, 765, 785, 106, 761, 764, 106, 737, + 737, 776, 737, 737, 106, 786, 106, 106, 780, 790, + 787, 106, 781, 106, 106, 106, 789, 106, 106, 106, + 106, 794, 788, 106, 106, 798, 106, 814, 106, 791, + 806, 792, 793, 795, 799, 796, 800, 797, 106, 801, + 802, 106, 106, 106, 803, 361, 106, 804, 805, 815, + 106, 824, 106, 826, 106, 106, 106, 106, 808, 106, + 106, 106, 807, 106, 828, 830, 817, 106, 832, 106, + 106, 836, 837, 829, 827, 106, 834, 825, 778, 838, + 831, 106, 106, 106, 106, 833, 841, 846, 842, 853, + + 835, 843, 844, 106, 854, 190, 839, 858, 858, 106, + 858, 858, 840, 106, 845, 190, 106, 106, 863, 861, + 878, 847, 106, 879, 106, 864, 881, 106, 882, 106, + 855, 106, 870, 859, 862, 106, 871, 106, 872, 883, + 106, 190, 106, 860, 865, 866, 867, 106, 868, 106, + 873, 874, 875, 106, 876, 106, 880, 106, 106, 106, + 896, 106, 106, 1087, 885, 886, 106, 869, 106, 889, + 890, 106, 106, 877, 910, 884, 901, 106, 897, 897, + 106, 897, 897, 905, 106, 891, 106, 900, 858, 858, + 106, 858, 858, 106, 903, 906, 902, 106, 904, 907, + + 106, 908, 106, 909, 898, 106, 911, 106, 912, 913, + 914, 915, 106, 916, 859, 892, 106, 918, 106, 106, + 917, 919, 106, 106, 106, 106, 106, 106, 106, 936, + 106, 106, 921, 106, 923, 924, 925, 920, 106, 922, + 935, 190, 993, 897, 897, 106, 897, 897, 939, 106, + 938, 926, 106, 106, 940, 941, 942, 106, 106, 106, + 106, 943, 106, 944, 106, 945, 106, 106, 946, 898, + 106, 106, 106, 947, 949, 950, 948, 106, 951, 106, + 952, 927, 106, 953, 106, 954, 106, 106, 106, 955, + 106, 106, 970, 971, 971, 106, 971, 971, 106, 974, + + 106, 956, 957, 106, 975, 959, 106, 106, 958, 978, + 979, 106, 106, 983, 980, 973, 106, 106, 976, 972, + 106, 977, 106, 981, 106, 106, 106, 106, 986, 987, + 982, 106, 106, 991, 988, 989, 106, 106, 994, 1005, + 984, 106, 985, 992, 106, 990, 106, 1006, 971, 971, + 106, 971, 971, 106, 106, 106, 1008, 106, 1007, 1009, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 1022, 1010, 1011, 972, 1012, 1014, 1015, 1013, 1016, + 106, 1017, 106, 1018, 1021, 1019, 1020, 1034, 106, 1023, + 106, 1035, 106, 106, 106, 106, 106, 1086, 106, 106, + + 106, 106, 1024, 106, 1045, 106, 106, 1037, 1038, 1039, + 1040, 1041, 1036, 1042, 1043, 1044, 106, 1046, 106, 106, + 106, 1047, 106, 1059, 1056, 1060, 106, 1057, 106, 106, + 106, 1073, 106, 106, 1093, 1069, 106, 1058, 1083, 1084, + 106, 1082, 106, 1071, 106, 1070, 106, 106, 1100, 1072, + 106, 106, 1104, 106, 106, 1092, 1105, 106, 1108, 106, + 1099, 106, 1094, 106, 1111, 1101, 106, 106, 106, 106, + 1081, 1080, 1109, 1079, 1112, 1077, 1076, 1075, 1074, 1068, + 1067, 1113, 1114, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 70, 70, 70, 1066, 70, 70, 70, 70, + + 70, 76, 76, 1065, 1064, 1063, 1062, 76, 76, 96, + 96, 1061, 96, 96, 104, 106, 104, 104, 163, 163, + 106, 163, 163, 163, 163, 163, 163, 170, 170, 170, + 170, 177, 106, 177, 177, 179, 179, 106, 179, 179, + 179, 179, 179, 179, 180, 106, 180, 180, 182, 182, + 106, 182, 182, 186, 106, 186, 255, 255, 106, 255, + 255, 255, 255, 255, 255, 269, 106, 269, 269, 270, + 1055, 270, 270, 347, 347, 1054, 347, 347, 347, 347, + 347, 347, 364, 364, 453, 1053, 453, 453, 525, 525, + 1052, 525, 525, 525, 525, 525, 525, 526, 526, 1051, + + 526, 526, 526, 526, 526, 526, 598, 598, 1050, 598, + 598, 598, 598, 598, 598, 599, 599, 1049, 599, 599, + 599, 599, 599, 599, 724, 724, 1048, 724, 724, 724, + 724, 724, 724, 766, 766, 106, 766, 766, 766, 766, + 766, 766, 567, 567, 567, 567, 567, 567, 567, 626, + 626, 626, 626, 626, 626, 626, 630, 630, 630, 630, + 630, 630, 630, 1004, 1004, 106, 1004, 1004, 1004, 1004, + 1004, 1004, 1029, 1029, 106, 1029, 1029, 1029, 1029, 1029, + 1029, 1078, 1078, 106, 1078, 1078, 1078, 1078, 1078, 1078, + 1085, 1085, 106, 1085, 1085, 1085, 1085, 1085, 1085, 1090, + + 1090, 106, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1091, + 1033, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1032, + 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1031, 1097, + 1097, 1097, 1097, 1097, 1097, 1107, 1107, 1030, 1107, 1107, + 1107, 1107, 1107, 1107, 1110, 1110, 1028, 1110, 1110, 1110, + 1110, 1110, 1110, 1027, 1026, 1025, 106, 106, 106, 1003, + 1002, 1001, 1000, 999, 998, 997, 996, 995, 106, 106, + 772, 969, 968, 967, 966, 965, 964, 963, 962, 961, + 960, 106, 106, 937, 934, 933, 932, 931, 930, 929, + 928, 106, 106, 106, 899, 895, 894, 893, 888, 887, + + 106, 106, 106, 106, 106, 106, 106, 857, 856, 106, + 852, 851, 850, 849, 848, 106, 106, 106, 823, 822, + 106, 821, 820, 819, 818, 816, 813, 812, 811, 810, + 809, 106, 784, 783, 782, 779, 777, 106, 106, 106, + 772, 771, 770, 769, 768, 767, 106, 743, 742, 741, + 738, 736, 106, 728, 727, 726, 725, 723, 722, 721, + 106, 106, 106, 106, 697, 696, 695, 106, 692, 106, + 106, 106, 106, 682, 680, 106, 106, 171, 677, 676, + 675, 674, 673, 672, 671, 670, 409, 106, 106, 106, + 642, 641, 640, 106, 106, 624, 106, 106, 106, 604, + + 603, 602, 601, 600, 597, 596, 595, 106, 106, 566, + 565, 564, 563, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 528, 527, 524, 523, 522, 521, 520, + 519, 106, 106, 106, 490, 106, 106, 106, 468, 106, + 106, 106, 445, 444, 443, 442, 441, 438, 437, 106, + 409, 406, 106, 106, 106, 106, 106, 356, 355, 354, + 353, 346, 308, 106, 106, 286, 276, 275, 261, 171, + 164, 166, 253, 164, 228, 112, 106, 188, 187, 176, + 175, 171, 166, 164, 115, 114, 106, 101, 98, 79, + 71, 67, 63, 1115, 3, 1115, 1115, 1115, 1115, 1115, + + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115 } ; -static yyconst flex_int16_t yy_chk[4697] = +static yyconst flex_int16_t yy_chk[2685] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1629,533 +1125,307 @@ static yyconst flex_int16_t yy_chk[4697] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 8, 10, 2, 12, 12, - - 12, 12, 14, 14, 14, 14, 12, 15, 2, 25, - 12, 16, 22, 22, 24, 24, 18, 10, 27, 32, - 32, 18, 2, 15, 25, 16, 16, 28, 30, 1616, - 12, 14, 12, 18, 19, 29, 19, 19, 19, 19, - 19, 19, 19, 19, 35, 44, 29, 28, 27, 8, - 30, 20, 12, 20, 20, 20, 20, 20, 20, 20, - 20, 36, 37, 39, 38, 54, 44, 14, 39, 40, - 35, 37, 38, 19, 41, 36, 38, 37, 39, 38, - 19, 42, 36, 40, 43, 48, 41, 62, 39, 46, - 48, 47, 41, 40, 64, 42, 68, 20, 50, 43, - - 42, 45, 45, 50, 19, 46, 45, 46, 46, 47, - 49, 52, 47, 51, 58, 69, 45, 58, 49, 49, - 52, 53, 104, 50, 108, 54, 52, 51, 59, 49, - 49, 52, 51, 59, 73, 1622, 53, 55, 55, 55, - 55, 62, 76, 55, 104, 59, 68, 75, 64, 70, - 70, 70, 70, 75, 55, 73, 76, 70, 91, 93, - 108, 70, 116, 106, 125, 69, 116, 105, 55, 77, - 77, 77, 77, 58, 120, 120, 121, 121, 125, 93, - 58, 70, 106, 70, 89, 89, 89, 89, 89, 89, - 89, 89, 90, 105, 90, 90, 90, 90, 90, 90, - - 90, 90, 89, 70, 91, 93, 94, 193, 94, 94, - 94, 94, 94, 94, 94, 94, 95, 119, 95, 95, - 95, 95, 95, 95, 95, 95, 132, 107, 114, 109, - 117, 118, 119, 89, 77, 114, 193, 107, 90, 92, - 132, 92, 92, 92, 92, 92, 92, 92, 92, 109, - 117, 118, 94, 107, 110, 92, 92, 92, 92, 92, - 92, 96, 95, 96, 96, 96, 96, 96, 96, 96, - 96, 110, 123, 115, 124, 126, 167, 167, 127, 122, - 1623, 96, 128, 131, 123, 92, 92, 92, 92, 92, - 92, 92, 122, 122, 127, 124, 126, 128, 127, 115, - - 115, 129, 130, 131, 133, 134, 135, 96, 115, 220, - 129, 136, 137, 139, 130, 153, 220, 137, 134, 140, - 143, 141, 130, 141, 133, 144, 153, 145, 140, 135, - 142, 136, 144, 139, 140, 143, 145, 142, 148, 142, - 146, 146, 147, 149, 146, 151, 154, 150, 152, 168, - 159, 144, 149, 159, 148, 147, 150, 152, 146, 166, - 152, 171, 149, 151, 154, 157, 157, 157, 157, 163, - 165, 157, 163, 164, 164, 191, 174, 175, 165, 176, - 192, 200, 157, 196, 199, 198, 207, 187, 206, 166, - 174, 202, 166, 204, 175, 200, 157, 212, 176, 192, - - 198, 191, 207, 168, 199, 204, 202, 206, 208, 159, - 212, 171, 205, 196, 203, 203, 159, 1627, 181, 181, - 181, 181, 181, 181, 181, 181, 187, 208, 163, 203, - 205, 164, 210, 187, 210, 163, 181, 182, 182, 182, - 182, 182, 182, 182, 182, 183, 240, 183, 211, 211, - 183, 183, 183, 183, 183, 183, 183, 183, 209, 214, - 215, 215, 240, 209, 214, 213, 184, 181, 184, 184, - 184, 184, 184, 184, 184, 184, 185, 213, 185, 185, - 185, 185, 185, 185, 185, 185, 216, 221, 221, 217, - 219, 216, 225, 227, 236, 228, 185, 188, 217, 188, - - 188, 188, 188, 188, 188, 188, 188, 1629, 219, 230, - 225, 227, 184, 218, 218, 218, 218, 228, 232, 226, - 236, 230, 185, 186, 186, 186, 186, 186, 186, 186, - 186, 229, 232, 234, 233, 252, 188, 186, 186, 186, - 186, 186, 186, 188, 222, 226, 231, 234, 235, 222, - 226, 229, 233, 235, 237, 231, 238, 239, 241, 273, - 245, 242, 305, 241, 305, 244, 239, 186, 186, 186, - 186, 186, 186, 186, 237, 218, 242, 243, 239, 244, - 245, 246, 247, 247, 255, 246, 243, 218, 273, 251, - 270, 262, 238, 252, 218, 261, 218, 248, 253, 248, - - 248, 248, 248, 255, 248, 261, 263, 253, 262, 248, - 274, 283, 263, 279, 248, 248, 248, 248, 248, 251, - 272, 270, 251, 277, 278, 283, 248, 260, 260, 260, - 260, 274, 288, 279, 1632, 260, 270, 272, 277, 260, - 278, 308, 308, 280, 288, 248, 265, 265, 265, 265, - 265, 265, 265, 265, 266, 266, 266, 266, 266, 266, - 266, 266, 267, 280, 267, 267, 267, 267, 267, 267, - 267, 267, 271, 281, 271, 271, 271, 271, 271, 271, - 271, 271, 284, 286, 286, 286, 286, 287, 1639, 294, - 291, 303, 292, 297, 311, 311, 303, 289, 294, 281, - - 284, 267, 291, 271, 281, 292, 287, 297, 267, 268, - 268, 268, 268, 268, 268, 268, 268, 289, 271, 276, - 295, 290, 276, 268, 268, 268, 268, 268, 268, 276, - 296, 1640, 298, 299, 299, 299, 299, 300, 295, 310, - 276, 290, 313, 306, 310, 286, 298, 302, 276, 307, - 296, 313, 300, 268, 268, 268, 268, 268, 268, 268, - 301, 302, 306, 315, 286, 309, 286, 314, 301, 301, - 304, 304, 304, 304, 312, 307, 316, 322, 1641, 312, - 307, 320, 309, 315, 317, 317, 314, 319, 324, 317, - 320, 322, 319, 331, 323, 325, 316, 323, 326, 325, - - 324, 327, 329, 328, 333, 333, 332, 299, 327, 325, - 328, 334, 326, 331, 299, 1642, 299, 330, 330, 330, - 330, 332, 335, 329, 336, 338, 337, 330, 339, 336, - 337, 340, 304, 339, 335, 334, 304, 342, 341, 343, - 338, 304, 344, 345, 304, 347, 342, 350, 339, 357, - 351, 304, 341, 304, 343, 351, 340, 359, 358, 350, - 362, 364, 344, 370, 347, 358, 366, 369, 357, 345, - 370, 365, 364, 369, 345, 377, 371, 1643, 359, 330, - 361, 373, 361, 361, 361, 361, 361, 361, 361, 361, - 362, 363, 366, 363, 363, 363, 363, 363, 363, 363, - - 363, 365, 371, 372, 375, 374, 362, 373, 378, 383, - 376, 361, 573, 377, 379, 382, 372, 375, 379, 390, - 573, 363, 390, 383, 382, 378, 361, 374, 376, 381, - 381, 381, 381, 384, 384, 384, 384, 363, 386, 386, - 386, 386, 387, 388, 389, 391, 393, 387, 388, 394, - 393, 396, 396, 389, 394, 398, 399, 400, 401, 391, - 402, 402, 405, 404, 400, 406, 412, 386, 408, 398, - 407, 399, 403, 403, 403, 403, 405, 401, 404, 407, - 406, 409, 408, 410, 411, 415, 412, 414, 414, 416, - 433, 417, 416, 409, 417, 384, 418, 419, 423, 410, - - 386, 411, 419, 421, 433, 415, 420, 420, 420, 420, - 381, 425, 381, 422, 425, 421, 418, 422, 559, 426, - 427, 428, 429, 429, 423, 426, 430, 427, 559, 426, - 439, 430, 431, 431, 432, 432, 432, 432, 403, 435, - 435, 428, 438, 403, 423, 439, 403, 436, 436, 436, - 436, 438, 440, 403, 442, 403, 443, 436, 437, 437, - 437, 437, 441, 444, 445, 446, 448, 447, 420, 442, - 437, 447, 440, 451, 444, 450, 443, 420, 441, 449, - 450, 453, 448, 458, 445, 446, 452, 420, 449, 420, - 452, 451, 454, 466, 468, 467, 432, 454, 453, 471, - - 458, 467, 474, 475, 479, 521, 521, 470, 468, 470, - 470, 470, 470, 470, 470, 470, 470, 472, 466, 472, - 472, 472, 472, 472, 472, 472, 472, 473, 476, 477, - 474, 475, 471, 478, 479, 481, 480, 470, 482, 476, - 473, 483, 488, 489, 477, 471, 481, 482, 493, 488, - 472, 480, 496, 470, 596, 496, 596, 478, 490, 490, - 490, 490, 489, 472, 491, 491, 491, 491, 505, 497, - 499, 499, 499, 499, 493, 505, 506, 493, 497, 508, - 515, 483, 507, 516, 509, 517, 519, 520, 508, 523, - 526, 518, 520, 491, 506, 524, 507, 509, 518, 517, - - 529, 515, 525, 516, 523, 519, 1203, 525, 524, 534, - 526, 527, 527, 527, 527, 528, 531, 532, 529, 533, - 528, 537, 530, 530, 530, 530, 532, 542, 534, 544, - 531, 542, 499, 533, 549, 535, 535, 535, 535, 543, - 543, 543, 543, 546, 545, 552, 549, 537, 1203, 544, - 545, 547, 547, 547, 547, 548, 546, 552, 554, 554, - 548, 555, 550, 550, 550, 550, 553, 537, 551, 551, - 551, 551, 561, 527, 550, 641, 555, 558, 553, 551, - 556, 556, 562, 563, 561, 566, 563, 562, 564, 557, - 581, 557, 527, 530, 641, 557, 582, 535, 557, 588, - - 535, 543, 558, 530, 582, 530, 535, 557, 560, 535, - 565, 564, 590, 581, 585, 589, 535, 587, 560, 588, - 560, 566, 565, 587, 560, 592, 589, 560, 583, 583, - 583, 583, 603, 603, 591, 817, 560, 593, 590, 584, - 583, 584, 584, 584, 584, 584, 584, 584, 584, 585, - 591, 614, 593, 605, 583, 592, 600, 817, 614, 586, - 585, 586, 586, 586, 586, 586, 586, 586, 586, 613, - 600, 601, 584, 605, 613, 583, 597, 597, 597, 597, - 601, 602, 602, 602, 602, 584, 606, 606, 606, 606, - 611, 611, 611, 611, 586, 612, 621, 623, 621, 622, - - 622, 622, 622, 624, 623, 586, 628, 602, 602, 625, - 627, 631, 634, 627, 639, 612, 631, 624, 625, 630, - 630, 630, 630, 633, 628, 632, 632, 632, 632, 635, - 634, 710, 640, 646, 639, 633, 642, 644, 597, 640, - 643, 643, 643, 643, 710, 635, 645, 646, 648, 650, - 647, 606, 611, 656, 645, 658, 648, 597, 656, 597, - 658, 622, 660, 644, 611, 647, 660, 606, 606, 606, - 835, 611, 642, 611, 665, 650, 835, 669, 650, 665, - 622, 630, 622, 655, 655, 655, 655, 676, 667, 659, - 659, 659, 659, 662, 662, 662, 662, 669, 666, 676, - - 630, 668, 643, 666, 662, 643, 632, 663, 663, 663, - 663, 643, 670, 670, 643, 659, 659, 663, 667, 668, - 672, 643, 664, 664, 664, 664, 671, 673, 671, 674, - 675, 679, 673, 664, 677, 677, 678, 680, 678, 681, - 672, 682, 680, 683, 682, 674, 684, 698, 682, 675, - 685, 679, 692, 682, 685, 692, 682, 699, 683, 681, - 704, 706, 684, 715, 777, 777, 682, 700, 700, 700, - 700, 711, 715, 699, 707, 1644, 706, 698, 703, 700, - 703, 703, 703, 703, 703, 703, 703, 703, 705, 707, - 705, 705, 705, 705, 705, 705, 705, 705, 713, 711, - - 714, 714, 714, 714, 716, 719, 704, 720, 738, 726, - 719, 692, 725, 703, 720, 737, 1068, 738, 716, 713, - 721, 721, 721, 721, 703, 722, 722, 722, 722, 741, - 737, 725, 1068, 741, 705, 726, 739, 748, 726, 732, - 732, 732, 732, 736, 736, 736, 736, 721, 742, 748, - 739, 722, 722, 740, 740, 740, 740, 744, 744, 744, - 744, 750, 742, 749, 749, 749, 749, 1645, 751, 754, - 750, 752, 752, 752, 752, 753, 754, 758, 761, 755, - 753, 714, 751, 714, 755, 757, 757, 757, 757, 758, - 759, 763, 768, 761, 759, 767, 767, 767, 767, 769, - - 779, 778, 776, 780, 781, 781, 768, 798, 769, 763, - 797, 797, 818, 732, 779, 740, 818, 736, 780, 799, - 732, 778, 732, 803, 736, 798, 736, 1646, 776, 786, - 786, 786, 786, 752, 740, 802, 740, 776, 744, 799, - 744, 803, 752, 809, 749, 802, 749, 787, 787, 787, - 787, 1649, 752, 809, 752, 786, 786, 767, 789, 789, - 789, 789, 790, 790, 790, 790, 757, 793, 793, 793, - 793, 794, 794, 794, 794, 787, 767, 800, 767, 801, - 804, 794, 801, 804, 808, 789, 800, 808, 790, 790, - 795, 795, 795, 795, 805, 806, 807, 807, 810, 805, - - 806, 811, 812, 813, 811, 814, 815, 815, 816, 787, - 819, 820, 845, 816, 824, 813, 810, 824, 836, 814, - 812, 830, 830, 830, 830, 819, 845, 848, 848, 793, - 837, 834, 793, 830, 831, 831, 831, 831, 793, 820, - 1652, 793, 834, 847, 836, 833, 831, 830, 793, 832, - 837, 832, 832, 832, 832, 832, 832, 832, 832, 833, - 831, 841, 840, 847, 861, 859, 844, 824, 830, 840, - 844, 833, 946, 824, 795, 856, 856, 856, 856, 859, - 841, 831, 860, 861, 862, 862, 862, 862, 863, 860, - 864, 866, 875, 878, 946, 832, 866, 863, 865, 865, - - 865, 865, 878, 874, 864, 870, 870, 870, 870, 873, - 874, 875, 877, 879, 873, 881, 876, 876, 876, 876, - 880, 884, 887, 888, 880, 893, 877, 879, 888, 881, - 885, 885, 885, 885, 893, 894, 884, 889, 889, 889, - 889, 896, 887, 892, 892, 892, 892, 895, 896, 894, - 902, 903, 895, 906, 905, 907, 856, 933, 856, 920, - 865, 905, 921, 922, 902, 862, 933, 862, 1674, 903, - 921, 906, 865, 928, 907, 923, 870, 922, 1187, 865, - 904, 904, 904, 904, 927, 920, 870, 876, 870, 1187, - 923, 928, 885, 916, 916, 916, 916, 876, 927, 876, - - 912, 912, 912, 912, 913, 913, 913, 913, 924, 930, - 931, 885, 919, 919, 919, 919, 924, 929, 889, 934, - 889, 916, 929, 930, 892, 936, 892, 912, 931, 936, - 913, 913, 925, 925, 925, 925, 932, 937, 938, 934, - 939, 932, 904, 940, 941, 939, 942, 943, 944, 947, - 937, 949, 940, 948, 904, 942, 938, 945, 948, 954, - 945, 904, 943, 947, 941, 950, 963, 954, 944, 949, - 960, 964, 968, 963, 919, 967, 964, 919, 960, 972, - 950, 968, 975, 919, 972, 987, 919, 991, 1064, 967, - 989, 1064, 987, 919, 973, 973, 973, 973, 988, 989, - - 990, 975, 985, 985, 985, 985, 991, 990, 992, 992, - 992, 992, 988, 993, 994, 995, 925, 1005, 1006, 995, - 973, 973, 994, 1007, 1011, 1008, 1009, 1006, 993, 1011, - 1013, 1005, 1008, 1010, 1010, 1010, 1010, 1014, 1014, 1014, - 1014, 1015, 1017, 1007, 1018, 1009, 1024, 1023, 1025, 1026, - 1013, 1032, 1025, 1015, 1023, 1029, 1029, 1029, 1029, 1035, - 1675, 1017, 1036, 1026, 1018, 1024, 1034, 1034, 1034, 1034, - 1036, 1032, 1038, 1039, 1035, 1053, 985, 1037, 1037, 1037, - 1037, 1676, 992, 985, 1046, 1046, 1046, 1046, 1055, 992, - 1054, 1054, 1038, 1039, 1057, 1010, 1047, 1047, 1047, 1047, - - 1056, 1053, 1059, 1061, 1010, 1060, 1060, 1061, 1055, 1057, - 1053, 1063, 1062, 1065, 1056, 1066, 1677, 1069, 1014, 1062, - 1059, 1067, 1047, 1047, 1067, 1070, 1063, 1065, 1070, 1029, - 1066, 1067, 1069, 1074, 1074, 1072, 1029, 1077, 1071, 1037, - 1034, 1073, 1078, 1076, 1080, 1079, 1077, 1034, 1037, 1046, - 1072, 1037, 1071, 1081, 1075, 1073, 1075, 1079, 1085, 1075, - 1075, 1076, 1078, 1090, 1080, 1046, 1091, 1046, 1081, 1095, - 1091, 1096, 1099, 1116, 1095, 1085, 1099, 1115, 1096, 1101, - 1116, 1091, 1115, 1067, 1100, 1100, 1100, 1100, 1114, 1114, - 1114, 1114, 1117, 1090, 1118, 1119, 1130, 1075, 1120, 1101, - - 1131, 1130, 1143, 1118, 1137, 1678, 1117, 1131, 1137, 1119, - 1100, 1100, 1133, 1120, 1121, 1121, 1121, 1121, 1128, 1128, - 1128, 1128, 1132, 1132, 1132, 1132, 1133, 1134, 1135, 1135, - 1135, 1135, 1136, 1139, 1141, 1150, 1134, 1149, 1143, 1151, - 1151, 1151, 1151, 1152, 1150, 1159, 1136, 1160, 1152, 1141, - 1114, 1149, 1139, 1157, 1157, 1157, 1157, 1161, 1436, 1163, - 1164, 1160, 1162, 1162, 1162, 1162, 1202, 1179, 1180, 1114, - 1188, 1114, 1161, 1163, 1436, 1164, 1121, 1165, 1165, 1165, - 1165, 1179, 1183, 1159, 1132, 1188, 1180, 1182, 1121, 1128, - 1171, 1171, 1171, 1171, 1182, 1121, 1185, 1185, 1186, 1135, - - 1183, 1151, 1190, 1132, 1202, 1132, 1172, 1172, 1172, 1172, - 1151, 1173, 1173, 1173, 1173, 1197, 1171, 1171, 1181, 1181, - 1181, 1181, 1190, 1186, 1157, 1191, 1192, 1157, 1195, 1201, - 1204, 1193, 1191, 1162, 1193, 1197, 1162, 1173, 1173, 1165, - 1198, 1193, 1199, 1200, 1192, 1207, 1195, 1198, 1165, 1201, - 1200, 1206, 1208, 1209, 1208, 1210, 1211, 1208, 1208, 1214, - 1199, 1218, 1214, 1224, 1207, 1219, 1206, 1220, 1223, 1241, - 1204, 1172, 1223, 1209, 1211, 1243, 1218, 1224, 1241, 1243, - 1181, 1245, 1242, 1210, 1244, 1262, 1245, 1172, 1679, 1172, - 1246, 1219, 1181, 1220, 1262, 1208, 1242, 1246, 1244, 1181, - - 1228, 1228, 1228, 1228, 1231, 1231, 1231, 1231, 1232, 1232, - 1232, 1232, 1239, 1239, 1239, 1239, 1240, 1240, 1240, 1240, - 1247, 1248, 1249, 1249, 1249, 1249, 1250, 1247, 1251, 1254, - 1254, 1254, 1254, 1259, 1260, 1263, 1251, 1259, 1266, 1248, - 1265, 1250, 1261, 1261, 1261, 1261, 1264, 1265, 1260, 1263, - 1271, 1264, 1269, 1267, 1267, 1267, 1267, 1681, 1266, 1293, - 1280, 1274, 1277, 1277, 1277, 1277, 1279, 1280, 1282, 1290, - 1271, 1279, 1281, 1281, 1281, 1281, 1283, 1291, 1294, 1293, - 1283, 1296, 1282, 1292, 1291, 1309, 1239, 1274, 1269, 1232, - 1274, 1232, 1294, 1239, 1306, 1296, 1249, 1240, 1683, 1240, - - 1309, 1292, 1312, 1249, 1289, 1289, 1289, 1289, 1314, 1290, - 1254, 1314, 1254, 1310, 1306, 1267, 1295, 1295, 1295, 1295, - 1316, 1310, 1312, 1261, 1267, 1261, 1300, 1300, 1300, 1300, - 1687, 1317, 1688, 1277, 1303, 1303, 1303, 1303, 1308, 1308, - 1308, 1308, 1318, 1281, 1319, 1316, 1317, 1311, 1311, 1311, - 1311, 1334, 1300, 1300, 1313, 1313, 1313, 1313, 1323, 1323, - 1318, 1324, 1319, 1325, 1328, 1333, 1313, 1328, 1320, 1320, - 1320, 1335, 1320, 1338, 1333, 1289, 1336, 1349, 1339, 1324, - 1353, 1325, 1326, 1326, 1326, 1353, 1326, 1295, 1348, 1334, - 1340, 1338, 1320, 1339, 1340, 1367, 1371, 1372, 1344, 1344, - - 1371, 1348, 1367, 1349, 1368, 1328, 1326, 1374, 1303, 1311, - 1320, 1372, 1308, 1335, 1344, 1303, 1336, 1370, 1311, 1308, - 1689, 1311, 1370, 1368, 1326, 1343, 1343, 1374, 1343, 1343, - 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, - 1343, 1343, 1343, 1343, 1388, 1344, 1355, 1355, 1355, 1355, - 1375, 1376, 1343, 1343, 1343, 1343, 1343, 1343, 1373, 1373, - 1373, 1373, 1426, 1388, 1375, 1387, 1376, 1384, 1384, 1384, - 1384, 1386, 1387, 1389, 1390, 1393, 1386, 1389, 1392, 1392, - 1392, 1392, 1397, 1404, 1343, 1343, 1343, 1343, 1390, 1393, - 1398, 1398, 1403, 1405, 1415, 1690, 1403, 1404, 1418, 1472, - - 1426, 1397, 1406, 1406, 1406, 1406, 1414, 1414, 1414, 1414, - 1417, 1427, 1428, 1405, 1415, 1343, 1472, 1417, 1418, 1430, - 1373, 1424, 1424, 1424, 1424, 1427, 1431, 1428, 1429, 1429, - 1429, 1429, 1373, 1430, 1432, 1432, 1432, 1432, 1384, 1435, - 1694, 1431, 1433, 1433, 1433, 1433, 1437, 1434, 1434, 1392, - 1434, 1438, 1438, 1440, 1433, 1437, 1441, 1435, 1434, 1439, - 1439, 1442, 1453, 1443, 1406, 1444, 1444, 1445, 1414, 1448, - 1445, 1440, 1449, 1406, 1441, 1446, 1446, 1447, 1447, 1442, - 1414, 1443, 1450, 1451, 1452, 1452, 1454, 1448, 1455, 1459, - 1449, 1460, 1424, 1462, 1462, 1424, 1432, 1695, 1459, 1429, - - 1450, 1451, 1429, 1455, 1453, 1432, 1460, 1461, 1475, 1462, - 1471, 1471, 1475, 1487, 1488, 1495, 1461, 1483, 1483, 1483, - 1483, 1489, 1495, 1488, 1491, 1489, 1454, 1487, 1512, 1491, - 1492, 1492, 1492, 1492, 1505, 1697, 1553, 1471, 1505, 1553, - 1462, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 1493, 1496, 1506, 1530, 1512, 1507, 1510, 1544, 1464, 1464, - 1464, 1464, 1464, 1464, 1507, 1493, 1506, 1513, 1530, 1496, - 1508, 1508, 1508, 1508, 1509, 1519, 1510, 1544, 1541, 1509, - 1519, 1483, 1517, 1517, 1517, 1517, 1513, 1522, 1555, 1555, - - 1464, 1464, 1464, 1464, 1492, 1521, 1521, 1521, 1521, 1556, - 1556, 1522, 1524, 1524, 1524, 1524, 1529, 1529, 1529, 1529, - 1532, 1532, 1532, 1532, 1540, 1540, 1540, 1540, 1541, 1542, - 1543, 1464, 1545, 1547, 1557, 1557, 1542, 1546, 1546, 1546, - 1546, 1550, 1508, 1552, 1558, 1558, 1545, 1547, 1543, 1548, - 1548, 1508, 1548, 1551, 1560, 1698, 1550, 1552, 1551, 1554, - 1548, 1559, 1554, 1517, 1559, 1561, 1562, 1572, 1561, 1562, - 1563, 1563, 1560, 1564, 1564, 1570, 1521, 1565, 1565, 1566, - 1566, 1567, 1532, 1571, 1567, 1572, 1524, 1573, 1700, 1570, - 1529, 1532, 1582, 1582, 1603, 1540, 1703, 1571, 1707, 1603, - - 1604, 1573, 1589, 1593, 1593, 1593, 1593, 1604, 1546, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1589, 1606, - 1607, 1593, 1609, 1606, 1709, 1618, 1581, 1581, 1581, 1581, - 1581, 1581, 1618, 1710, 1607, 1608, 1608, 1608, 1608, 1620, - 1582, 1711, 1609, 1613, 1613, 1613, 1613, 1617, 1619, 1619, - 1619, 1619, 1617, 1620, 1625, 1631, 1648, 1712, 1581, 1581, - 1581, 1581, 1621, 1630, 1636, 1651, 1621, 1630, 1634, 1634, - 1634, 1634, 1638, 1718, 1625, 1631, 1648, 1650, 1636, 1637, - 1637, 1637, 1637, 1653, 1650, 1651, 1638, 1654, 1653, 1581, - - 1647, 1647, 1647, 1647, 1655, 1656, 1657, 1608, 1661, 1657, - 1658, 1653, 1659, 1658, 1663, 1659, 1662, 1654, 1660, 1608, - 1664, 1660, 1655, 1656, 1613, 1665, 1661, 1666, 1665, 1619, - 1666, 1662, 1663, 1667, 1668, 1669, 1667, 1668, 1664, 1670, - 1671, 1672, 1673, 1673, 1686, 1672, 1719, 1671, 1720, 1634, - 1680, 1680, 1692, 1669, 1682, 1682, 1702, 1670, 1706, 1716, - 1637, 1704, 1647, 1699, 1699, 1699, 1699, 1701, 1704, 1721, - 1702, 1701, 1715, 1706, 1647, 1685, 1685, 1722, 1723, 1716, - 1692, 1705, 1705, 1705, 1705, 1714, 1715, 1724, 1725, 1714, - 1717, 1717, 1717, 1717, 1730, 1725, 1729, 1729, 1729, 1729, - - 1732, 1733, 1686, 1734, 1734, 1734, 1734, 1736, 1680, 1738, - 1739, 1739, 1682, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1735, 1685, 1726, 1741, 1749, 1699, 1758, 1744, - 1684, 1684, 1684, 1684, 1684, 1684, 1741, 1735, 1737, 1737, - 1737, 1737, 1717, 1740, 1726, 1705, 1742, 1744, 1740, 1757, - 1757, 1717, 1745, 1743, 1746, 1747, 1748, 1752, 1753, 1750, - 1729, 1742, 1684, 1684, 1684, 1684, 1751, 1734, 1743, 1754, - 1745, 1748, 1746, 1747, 1750, 1752, 1753, 1755, 1760, 1756, - 1759, 1751, 1761, 1762, 1763, 1764, 1766, 1754, 1767, 1759, - - 1768, 1769, 1770, 1684, 1756, 1755, 1771, 1773, 1760, 1774, - 1737, 1775, 1777, 1778, 1780, 1781, 1782, 1783, 1784, 1737, - 1781, 1785, 1786, 1788, 1790, 1792, 1773, 1787, 1787, 1787, - 1787, 1783, 1789, 1791, 1791, 1791, 1791, 1789, 1795, 1792, - 1796, 1797, 1798, 1799, 1801, 1801, 1801, 1801, 1803, 1804, - 1804, 1804, 1804, 1805, 1766, 1806, 1767, 1807, 1806, 1808, - 1809, 1810, 1803, 1811, 1815, 1812, 1813, 1805, 1814, 1816, - 1817, 1818, 1819, 1820, 1821, 1822, 1824, 1826, 1811, 1807, - 1812, 1813, 1823, 1814, 1808, 1823, 1818, 1819, 1820, 1821, - 1824, 1825, 1827, 1828, 1829, 1831, 1825, 1832, 1787, 1833, - - 1834, 1835, 1837, 1839, 1791, 1840, 1841, 1843, 1845, 1840, - 1846, 1847, 1850, 1841, 1846, 1801, 1851, 1852, 1853, 1854, - 1804, 1855, 1857, 1856, 1852, 1858, 1859, 1860, 1861, 1862, - 1855, 1847, 1863, 1864, 1865, 1866, 1866, 1854, 1853, 1856, - 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, - 1877, 1878, 1865, 1879, 1880, 1881, 1882, 1883, 1867, 1884, - 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1893, - 1890, 1894, 1895, 1896, 1897, 1899, 1900, 1901, 1888, 1908, - 1909, 1891, 1910, 1889, 1911, 1912, 1915, 1892, 1913, 1909, - 1912, 1913, 1916, 1917, 1919, 1922, 1923, 1924, 1926, 1929, - - 1933, 1933, 1932, 1934, 1935, 1938, 1939, 1941, 1940, 1942, - 1922, 1940, 1944, 1944, 1923, 1924, 1932, 1945, 1934, 1948, - 1951, 1949, 1948, 1952, 1939, 1953, 1954, 1984, 1986, 1989, - 1615, 1614, 1612, 1611, 1610, 1945, 1949, 1605, 1951, 1602, - 1953, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, - 1956, 1956, 1957, 1957, 1957, 1957, 1601, 1957, 1957, 1957, - 1957, 1957, 1957, 1958, 1958, 1958, 1599, 1598, 1596, 1595, - 1594, 1592, 1958, 1959, 1959, 1591, 1590, 1959, 1960, 1960, - 1588, 1587, 1960, 1961, 1586, 1585, 1961, 1962, 1962, 1584, - 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1963, 1963, - - 1583, 1963, 1964, 1964, 1580, 1964, 1964, 1964, 1964, 1964, - 1964, 1964, 1964, 1965, 1579, 1578, 1965, 1966, 1966, 1577, - 1576, 1966, 1967, 1967, 1575, 1967, 1967, 1967, 1967, 1967, - 1967, 1967, 1967, 1968, 1574, 1569, 1968, 1969, 1969, 1568, - 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1970, 1539, - 1538, 1970, 1971, 1537, 1536, 1971, 1972, 1972, 1535, 1972, - 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1973, 1973, 1534, - 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1974, 1974, - 1533, 1531, 1528, 1527, 1525, 1520, 1518, 1974, 1975, 1975, - 1516, 1515, 1514, 1511, 1504, 1502, 1501, 1975, 1976, 1976, - - 1500, 1499, 1976, 1498, 1976, 1494, 1490, 1976, 1977, 1977, - 1486, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1978, - 1978, 1485, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, - 1979, 1979, 1484, 1482, 1481, 1480, 1979, 1979, 1979, 1979, - 1980, 1980, 1478, 1477, 1476, 1474, 1470, 1469, 1468, 1980, - 1981, 1981, 1467, 1466, 1465, 1463, 1981, 1981, 1981, 1981, - 1982, 1982, 1458, 1457, 1456, 1425, 1982, 1982, 1982, 1982, - 1983, 1983, 1423, 1983, 1983, 1983, 1983, 1983, 1983, 1983, - 1983, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, - 1985, 1985, 1987, 1987, 1422, 1987, 1987, 1987, 1987, 1987, - - 1987, 1987, 1987, 1988, 1988, 1420, 1419, 1416, 1413, 1988, - 1988, 1988, 1988, 1990, 1990, 1412, 1411, 1410, 1409, 1990, - 1990, 1990, 1990, 1991, 1991, 1408, 1407, 1402, 1401, 1991, - 1991, 1991, 1991, 1992, 1992, 1992, 1992, 1992, 1992, 1992, - 1992, 1992, 1992, 1992, 1993, 1993, 1400, 1993, 1993, 1993, - 1993, 1993, 1993, 1993, 1993, 1994, 1994, 1994, 1994, 1994, - 1994, 1994, 1994, 1994, 1994, 1994, 1995, 1995, 1399, 1995, - 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1996, 1996, 1396, - 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1997, 1997, - 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1998, - - 1998, 1394, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1999, 1999, 1391, 1999, 1999, 1999, 1999, 1999, 1999, 1999, - 1999, 2000, 2000, 1385, 2000, 2000, 2000, 2000, 2000, 2000, - 2000, 2000, 2001, 2001, 1383, 2001, 2001, 2001, 2001, 2001, - 2001, 2001, 2001, 2002, 2002, 1382, 2002, 2002, 2002, 2002, - 2002, 2002, 2002, 2002, 2003, 2003, 1381, 2003, 2003, 2003, - 2003, 2003, 2003, 2003, 2003, 2004, 2004, 1380, 2004, 2004, - 2004, 2004, 2004, 2004, 2004, 2004, 2005, 2005, 1379, 2005, - 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2006, 1378, - 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2007, 2007, - - 1377, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 1369, - 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 1358, 1357, - 1356, 1352, 1351, 1350, 1347, 1346, 1345, 1342, 1341, 1337, - 1332, 1331, 1330, 1329, 1327, 1321, 1315, 1307, 1305, 1304, - 1302, 1301, 1299, 1288, 1287, 1286, 1285, 1284, 1278, 1276, - 1275, 1272, 1270, 1268, 1258, 1257, 1256, 1255, 1253, 1252, - 1238, 1237, 1236, 1235, 1234, 1233, 1230, 1229, 1227, 1226, - 1225, 1222, 1221, 1217, 1216, 1215, 1213, 1212, 1205, 1196, - 1194, 1189, 1184, 1178, 1177, 1176, 1175, 1174, 1170, 1169, - 1168, 1167, 1166, 1158, 1156, 1155, 1153, 1148, 1147, 1146, - - 1145, 1144, 1142, 1140, 1138, 1129, 1127, 1126, 1125, 1124, - 1123, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1106, 1105, - 1104, 1103, 1102, 1098, 1094, 1093, 1092, 1088, 1087, 1086, - 1084, 1083, 1058, 1052, 1051, 1050, 1049, 1048, 1045, 1043, - 1042, 1041, 1040, 1033, 1031, 1030, 1028, 1027, 1022, 1021, - 1020, 1019, 1016, 1012, 1004, 1003, 1002, 1001, 1000, 999, - 998, 997, 996, 986, 984, 983, 982, 981, 980, 979, - 978, 977, 976, 974, 971, 970, 969, 966, 965, 962, - 961, 959, 958, 957, 956, 953, 952, 935, 926, 917, - 914, 911, 910, 909, 908, 901, 900, 899, 898, 897, - - 891, 890, 886, 883, 882, 872, 871, 869, 868, 867, - 858, 857, 855, 854, 853, 852, 851, 850, 849, 843, - 842, 839, 838, 829, 828, 827, 826, 823, 822, 821, - 796, 791, 788, 785, 784, 783, 782, 775, 774, 773, - 772, 771, 766, 765, 764, 762, 760, 756, 747, 746, - 745, 743, 735, 734, 733, 731, 730, 729, 728, 727, - 723, 718, 717, 712, 709, 708, 702, 697, 696, 695, - 694, 693, 689, 688, 687, 686, 661, 657, 654, 653, - 652, 651, 649, 638, 637, 636, 629, 626, 620, 619, - 618, 617, 616, 615, 610, 609, 608, 607, 604, 599, - - 598, 595, 594, 580, 579, 576, 575, 574, 570, 569, - 568, 567, 541, 540, 539, 538, 536, 522, 514, 513, - 512, 511, 510, 504, 503, 502, 501, 500, 498, 495, - 494, 487, 486, 485, 484, 465, 464, 461, 460, 459, - 457, 456, 455, 434, 424, 413, 397, 395, 392, 385, - 380, 368, 360, 356, 355, 354, 353, 352, 349, 348, - 321, 318, 293, 285, 282, 269, 264, 259, 258, 257, - 256, 249, 224, 223, 201, 195, 194, 177, 173, 172, - 162, 161, 160, 156, 138, 112, 103, 102, 98, 85, - 84, 79, 74, 66, 60, 34, 26, 23, 21, 17, - - 11, 9, 7, 3, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955 - + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 5, 2, 2, 9, 5, 2, 11, 13, 13, + + 16, 13, 13, 29, 17, 19, 2, 13, 1114, 19, + 26, 13, 23, 23, 16, 28, 11, 17, 17, 2, + 19, 25, 25, 29, 26, 31, 33, 18, 33, 13, + 18, 13, 18, 18, 18, 18, 18, 18, 18, 18, + 45, 202, 55, 75, 28, 9, 31, 44, 42, 202, + 20, 13, 20, 20, 20, 20, 20, 20, 20, 20, + 42, 45, 44, 75, 37, 64, 42, 54, 21, 20, + 21, 21, 21, 21, 21, 21, 21, 21, 37, 30, + 41, 38, 54, 39, 110, 37, 43, 21, 20, 30, + 38, 39, 48, 66, 41, 39, 38, 40, 39, 20, + + 43, 55, 40, 110, 41, 43, 46, 46, 47, 49, + 48, 46, 40, 48, 49, 62, 64, 21, 20, 62, + 50, 46, 40, 52, 47, 51, 47, 47, 50, 50, + 51, 60, 53, 51, 70, 60, 78, 52, 71, 50, + 50, 53, 52, 77, 66, 105, 60, 53, 77, 78, + 51, 107, 53, 56, 56, 167, 56, 56, 72, 72, + 56, 72, 72, 106, 120, 120, 105, 72, 109, 107, + 56, 72, 1112, 87, 87, 87, 87, 87, 87, 87, + 87, 70, 116, 56, 111, 71, 116, 117, 106, 72, + 87, 72, 91, 91, 91, 91, 91, 91, 91, 91, + + 111, 118, 109, 121, 121, 131, 167, 117, 119, 91, + 92, 72, 92, 92, 92, 92, 92, 92, 92, 92, + 87, 118, 141, 119, 141, 131, 93, 93, 124, 92, + 93, 93, 93, 93, 93, 93, 93, 93, 95, 91, + 95, 95, 95, 95, 95, 95, 95, 95, 137, 124, + 166, 166, 249, 137, 199, 199, 249, 95, 96, 92, + 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, + 97, 108, 97, 97, 97, 97, 97, 97, 97, 97, + 115, 108, 123, 126, 122, 125, 128, 95, 1102, 132, + 133, 213, 213, 129, 123, 130, 108, 122, 122, 125, + + 127, 128, 129, 132, 126, 115, 115, 130, 115, 115, + 133, 115, 135, 134, 115, 130, 127, 136, 139, 140, + 127, 143, 142, 144, 115, 115, 134, 148, 140, 142, + 144, 142, 145, 147, 140, 135, 143, 136, 139, 146, + 146, 145, 149, 146, 150, 148, 147, 151, 152, 144, + 153, 155, 165, 150, 154, 169, 151, 146, 149, 153, + 173, 174, 153, 150, 172, 154, 152, 158, 158, 155, + 158, 158, 190, 164, 158, 164, 173, 172, 190, 174, + 165, 196, 200, 165, 158, 177, 177, 177, 177, 177, + 177, 177, 177, 195, 189, 192, 200, 158, 238, 178, + + 178, 196, 169, 178, 178, 178, 178, 178, 178, 178, + 178, 180, 180, 180, 180, 180, 180, 180, 180, 189, + 198, 191, 195, 192, 238, 198, 181, 181, 326, 164, + 181, 181, 181, 181, 181, 181, 181, 181, 182, 191, + 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, + 183, 326, 183, 183, 183, 183, 183, 183, 183, 183, + 184, 184, 184, 184, 184, 184, 184, 184, 185, 185, + 185, 185, 185, 185, 185, 185, 186, 186, 186, 186, + 186, 186, 186, 186, 197, 201, 204, 206, 197, 186, + 186, 186, 186, 186, 186, 207, 197, 205, 205, 206, + + 209, 204, 212, 211, 212, 201, 208, 210, 211, 219, + 216, 1101, 205, 207, 214, 216, 209, 215, 219, 186, + 186, 186, 186, 186, 186, 208, 210, 214, 218, 215, + 217, 217, 221, 218, 222, 223, 223, 224, 227, 228, + 229, 222, 224, 230, 233, 232, 231, 234, 236, 235, + 221, 239, 240, 233, 237, 243, 227, 232, 229, 237, + 242, 234, 236, 241, 228, 230, 231, 235, 244, 228, + 243, 239, 241, 244, 245, 248, 242, 247, 246, 250, + 250, 254, 256, 262, 241, 264, 240, 246, 253, 245, + 264, 247, 262, 263, 251, 248, 251, 251, 284, 251, + + 256, 251, 284, 273, 1098, 274, 251, 271, 278, 263, + 272, 251, 251, 251, 251, 251, 253, 261, 261, 253, + 261, 261, 251, 271, 272, 274, 261, 279, 278, 285, + 261, 273, 279, 281, 304, 311, 281, 254, 285, 304, + 311, 251, 265, 265, 265, 265, 265, 265, 265, 265, + 266, 266, 266, 266, 266, 266, 266, 266, 267, 267, + 267, 267, 267, 267, 267, 267, 268, 268, 268, 268, + 268, 268, 268, 268, 269, 269, 269, 269, 269, 269, + 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, + 277, 276, 280, 283, 276, 270, 270, 270, 270, 270, + + 270, 276, 282, 288, 277, 289, 286, 299, 293, 1095, + 280, 297, 276, 283, 292, 294, 299, 288, 295, 276, + 293, 282, 296, 289, 297, 270, 270, 270, 270, 270, + 270, 286, 300, 292, 296, 294, 286, 301, 295, 302, + 303, 306, 307, 306, 308, 309, 309, 310, 312, 312, + 300, 313, 315, 302, 303, 316, 313, 301, 314, 317, + 1089, 307, 323, 320, 310, 318, 318, 314, 320, 308, + 318, 315, 321, 325, 308, 316, 323, 324, 327, 317, + 324, 321, 327, 328, 329, 325, 330, 331, 334, 333, + 336, 329, 327, 330, 335, 335, 337, 328, 338, 340, + + 339, 337, 338, 334, 340, 341, 342, 343, 331, 333, + 344, 345, 346, 351, 336, 339, 343, 348, 351, 340, + 342, 357, 358, 359, 360, 344, 361, 362, 358, 363, + 341, 345, 366, 365, 360, 348, 367, 346, 365, 357, + 368, 361, 346, 359, 369, 373, 370, 371, 367, 370, + 371, 372, 374, 376, 363, 375, 362, 366, 375, 377, + 378, 368, 369, 372, 378, 373, 383, 386, 384, 385, + 386, 383, 376, 384, 390, 387, 377, 389, 385, 390, + 392, 389, 391, 391, 393, 394, 395, 398, 374, 387, + 397, 397, 392, 399, 400, 401, 399, 400, 402, 404, + + 393, 405, 394, 402, 406, 405, 395, 398, 409, 408, + 410, 404, 408, 411, 409, 401, 414, 410, 409, 412, + 412, 414, 415, 415, 417, 419, 419, 420, 421, 406, + 422, 423, 424, 411, 425, 426, 420, 427, 417, 430, + 429, 428, 432, 421, 425, 428, 431, 423, 430, 406, + 422, 431, 424, 434, 433, 426, 429, 427, 433, 435, + 432, 446, 447, 448, 435, 449, 450, 447, 451, 452, + 434, 454, 456, 457, 455, 458, 448, 449, 450, 459, + 461, 454, 460, 460, 458, 446, 462, 457, 463, 462, + 468, 459, 464, 464, 1086, 451, 452, 455, 472, 461, + + 465, 456, 471, 465, 476, 471, 477, 472, 478, 478, + 480, 477, 483, 486, 481, 468, 482, 476, 468, 484, + 484, 482, 484, 484, 485, 480, 463, 481, 487, 485, + 490, 486, 483, 497, 498, 499, 500, 501, 502, 503, + 498, 500, 504, 504, 505, 507, 510, 487, 499, 501, + 502, 503, 506, 497, 506, 490, 508, 510, 506, 505, + 512, 506, 511, 512, 514, 508, 530, 511, 533, 506, + 507, 553, 532, 530, 553, 490, 514, 532, 533, 484, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 513, 515, 529, 509, 542, 531, 531, 535, + 531, 531, 537, 536, 1079, 509, 534, 509, 542, 535, + 531, 509, 538, 543, 509, 513, 529, 495, 495, 495, + 495, 495, 509, 531, 546, 534, 538, 515, 536, 543, + 540, 537, 540, 544, 544, 550, 546, 547, 547, 548, + 548, 556, 556, 531, 556, 556, 557, 729, 495, 558, + 558, 557, 558, 558, 729, 550, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + + 551, 551, 551, 551, 551, 551, 551, 551, 554, 559, + 569, 571, 560, 572, 563, 569, 571, 572, 574, 575, + 576, 556, 651, 574, 575, 577, 554, 559, 560, 578, + 578, 580, 651, 551, 551, 551, 551, 561, 561, 563, + 561, 561, 563, 577, 579, 581, 579, 584, 558, 576, + 581, 580, 585, 585, 586, 588, 586, 593, 633, 584, + 588, 593, 633, 561, 551, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 561, 582, 583, + + 587, 589, 591, 605, 590, 639, 639, 590, 619, 615, + 592, 590, 606, 619, 582, 610, 590, 591, 583, 590, + 587, 589, 555, 555, 555, 555, 592, 606, 590, 610, + 607, 607, 605, 607, 607, 612, 615, 617, 618, 620, + 621, 623, 622, 607, 624, 663, 636, 647, 647, 612, + 618, 620, 621, 555, 622, 648, 628, 649, 617, 663, + 623, 628, 632, 632, 636, 632, 632, 637, 637, 624, + 637, 637, 624, 648, 652, 650, 653, 649, 650, 653, + 654, 655, 656, 656, 657, 654, 655, 657, 658, 659, + 661, 660, 652, 637, 660, 664, 664, 662, 658, 665, + + 666, 667, 668, 669, 665, 667, 680, 659, 661, 662, + 678, 678, 683, 678, 678, 682, 684, 668, 1077, 684, + 680, 666, 687, 678, 679, 679, 685, 679, 679, 681, + 669, 680, 683, 686, 681, 694, 678, 679, 685, 699, + 682, 632, 687, 688, 688, 686, 698, 701, 691, 691, + 679, 691, 691, 693, 694, 704, 678, 699, 693, 700, + 698, 702, 703, 706, 700, 701, 702, 706, 707, 708, + 679, 703, 709, 710, 711, 704, 712, 709, 713, 714, + 715, 707, 710, 715, 716, 712, 717, 708, 720, 719, + 718, 731, 735, 713, 711, 718, 732, 731, 739, 714, + + 717, 732, 740, 720, 744, 749, 716, 719, 691, 737, + 737, 735, 737, 737, 745, 745, 746, 747, 739, 749, + 746, 744, 740, 748, 750, 752, 748, 753, 754, 755, + 756, 754, 747, 757, 758, 758, 760, 773, 762, 750, + 763, 752, 753, 755, 759, 756, 759, 757, 761, 759, + 759, 763, 764, 765, 760, 774, 776, 761, 762, 774, + 785, 785, 786, 787, 789, 791, 773, 790, 765, 774, + 794, 795, 764, 787, 790, 792, 776, 796, 795, 797, + 798, 799, 800, 791, 789, 759, 797, 786, 737, 801, + 794, 803, 792, 804, 806, 796, 805, 807, 805, 814, + + 798, 805, 805, 808, 815, 816, 803, 820, 820, 826, + 820, 820, 804, 814, 806, 821, 824, 799, 827, 824, + 835, 808, 800, 835, 807, 828, 841, 801, 842, 815, + 816, 830, 830, 820, 826, 827, 831, 805, 832, 843, + 821, 855, 828, 821, 829, 829, 829, 840, 829, 846, + 833, 833, 833, 831, 833, 832, 840, 845, 861, 835, + 854, 847, 841, 1076, 846, 847, 855, 829, 842, 850, + 850, 870, 854, 833, 870, 845, 861, 843, 856, 856, + 862, 856, 856, 865, 829, 850, 860, 860, 858, 858, + 833, 858, 858, 863, 863, 866, 862, 864, 864, 867, + + 865, 868, 869, 869, 856, 871, 871, 872, 872, 873, + 874, 875, 866, 876, 858, 850, 867, 878, 868, 877, + 877, 879, 880, 884, 885, 886, 873, 874, 875, 896, + 876, 900, 884, 901, 886, 887, 887, 880, 958, 885, + 895, 895, 958, 897, 897, 896, 897, 897, 901, 902, + 900, 887, 903, 904, 902, 903, 904, 878, 910, 879, + 905, 905, 906, 906, 907, 907, 895, 908, 908, 897, + 909, 911, 912, 909, 911, 912, 910, 913, 913, 914, + 914, 887, 915, 915, 916, 916, 917, 920, 921, 917, + 922, 923, 935, 937, 937, 938, 937, 937, 948, 940, + + 941, 920, 921, 942, 940, 923, 943, 944, 922, 943, + 944, 945, 947, 948, 945, 938, 940, 935, 941, 937, + 946, 942, 949, 946, 950, 951, 952, 955, 951, 952, + 947, 953, 954, 956, 953, 954, 957, 959, 959, 970, + 949, 976, 950, 957, 977, 955, 974, 974, 971, 971, + 956, 971, 971, 975, 978, 979, 976, 980, 975, 977, + 981, 982, 984, 986, 985, 987, 970, 988, 989, 990, + 991, 991, 978, 979, 971, 980, 982, 984, 981, 985, + 993, 986, 994, 987, 990, 988, 989, 1005, 1006, 993, + 1007, 1006, 1010, 1011, 1012, 1013, 1017, 1075, 1018, 1019, + + 1020, 1022, 994, 1023, 1022, 1005, 1035, 1010, 1011, 1012, + 1013, 1017, 1007, 1018, 1019, 1020, 1024, 1023, 1036, 1045, + 1056, 1024, 1046, 1046, 1035, 1047, 1057, 1036, 1058, 1059, + 1060, 1060, 1070, 1072, 1083, 1056, 1073, 1045, 1072, 1073, + 1082, 1070, 1047, 1058, 1084, 1057, 1092, 1093, 1093, 1059, + 1094, 1083, 1099, 1100, 1105, 1082, 1100, 1104, 1104, 1109, + 1092, 1108, 1084, 1111, 1108, 1094, 1071, 1113, 1069, 1099, + 1068, 1067, 1105, 1066, 1109, 1064, 1063, 1062, 1061, 1055, + 1054, 1111, 1113, 1116, 1116, 1116, 1116, 1116, 1116, 1116, + 1116, 1116, 1117, 1117, 1117, 1053, 1117, 1117, 1117, 1117, + + 1117, 1118, 1118, 1052, 1051, 1050, 1049, 1118, 1118, 1119, + 1119, 1048, 1119, 1119, 1120, 1044, 1120, 1120, 1121, 1121, + 1043, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1122, 1122, + 1122, 1123, 1042, 1123, 1123, 1124, 1124, 1041, 1124, 1124, + 1124, 1124, 1124, 1124, 1125, 1040, 1125, 1125, 1126, 1126, + 1039, 1126, 1126, 1127, 1038, 1127, 1128, 1128, 1037, 1128, + 1128, 1128, 1128, 1128, 1128, 1129, 1034, 1129, 1129, 1130, + 1033, 1130, 1130, 1131, 1131, 1032, 1131, 1131, 1131, 1131, + 1131, 1131, 1132, 1132, 1133, 1031, 1133, 1133, 1134, 1134, + 1030, 1134, 1134, 1134, 1134, 1134, 1134, 1135, 1135, 1028, + + 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136, 1027, 1136, + 1136, 1136, 1136, 1136, 1136, 1137, 1137, 1026, 1137, 1137, + 1137, 1137, 1137, 1137, 1138, 1138, 1025, 1138, 1138, 1138, + 1138, 1138, 1138, 1139, 1139, 1021, 1139, 1139, 1139, 1139, + 1139, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141, + 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1143, 1143, 1016, 1143, 1143, 1143, 1143, + 1143, 1143, 1144, 1144, 1015, 1144, 1144, 1144, 1144, 1144, + 1144, 1145, 1145, 1014, 1145, 1145, 1145, 1145, 1145, 1145, + 1146, 1146, 1009, 1146, 1146, 1146, 1146, 1146, 1146, 1147, + + 1147, 1008, 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, + 1003, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1002, + 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150, 1001, 1150, + 1150, 1150, 1150, 1150, 1150, 1151, 1151, 1000, 1151, 1151, + 1151, 1151, 1151, 1151, 1152, 1152, 998, 1152, 1152, 1152, + 1152, 1152, 1152, 997, 996, 995, 992, 983, 973, 968, + 967, 966, 965, 964, 963, 962, 961, 960, 939, 936, + 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, + 924, 919, 918, 899, 894, 893, 892, 891, 890, 889, + 888, 883, 882, 881, 857, 853, 852, 851, 849, 848, + + 844, 839, 838, 837, 836, 834, 825, 819, 818, 817, + 813, 812, 811, 810, 809, 802, 793, 788, 783, 782, + 781, 780, 779, 778, 777, 775, 771, 770, 769, 768, + 767, 751, 743, 742, 741, 738, 736, 734, 733, 730, + 728, 727, 726, 725, 723, 722, 705, 697, 696, 695, + 692, 690, 689, 677, 676, 675, 674, 672, 671, 670, + 646, 645, 644, 643, 642, 641, 640, 635, 634, 631, + 629, 627, 625, 616, 614, 613, 611, 609, 604, 603, + 602, 601, 600, 597, 596, 595, 594, 573, 570, 568, + 566, 565, 564, 562, 552, 549, 545, 541, 539, 528, + + 527, 524, 523, 522, 519, 518, 517, 516, 496, 494, + 493, 492, 491, 489, 488, 479, 475, 474, 473, 470, + 469, 467, 466, 445, 444, 441, 440, 439, 438, 437, + 436, 418, 416, 413, 407, 403, 396, 388, 382, 381, + 380, 379, 356, 355, 354, 353, 352, 350, 349, 332, + 322, 319, 305, 298, 291, 290, 287, 260, 259, 258, + 257, 252, 226, 225, 220, 203, 194, 193, 171, 170, + 163, 162, 161, 160, 138, 113, 104, 103, 99, 86, + 84, 76, 61, 59, 36, 35, 27, 24, 22, 15, + 12, 10, 8, 3, 1115, 1115, 1115, 1115, 1115, 1115, + + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115 } ; /* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[248] = +static yyconst flex_int32_t yy_rule_can_match_eol[174] = { 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; @@ -2221,18 +1491,27 @@ Modify lex.yy.c: * Return 0 if no match found. */ static int skip_comment(); +static int skip_trailing_comment(const char *text, size_t l); static int skip_ahead_multi(const char *strings[]); static int skip_ahead_until(const char *text); static int skip_to_next_directive(); static int skip_conditional_block(); +static void preprocessor_directive(const char *text, size_t l); static void print_preprocessor_error(int result, const char *cp, size_t n); static const char *get_macro_arguments(); static void push_buffer(); static int pop_buffer(); -#line 2236 "lex.yy.c" +static void push_include(const char *filename); +static void pop_include(); + +static void push_macro(MacroInfo *macro); +static void pop_macro(); +static int in_macro(); + +#line 1515 "lex.yy.c" #define INITIAL 0 @@ -2417,10 +1696,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 65 "vtkParse.l" +#line 77 "vtkParse.l" -#line 2424 "lex.yy.c" +#line 1703 "lex.yy.c" if ( !(yy_init) ) { @@ -2474,13 +1753,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1956 ) + if ( yy_current_state >= 1116 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 4605 ); + while ( yy_base[yy_current_state] != 2595 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2516,1508 +1795,1118 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 67 "vtkParse.l" -{ skip_comment(); }; +#line 79 "vtkParse.l" +{ skip_comment(); } YY_BREAK case 2: YY_RULE_SETUP -#line 69 "vtkParse.l" +#line 81 "vtkParse.l" { - if (!IgnoreBTX) { - skip_ahead_until("//ETX"); - } - }; + if (!IgnoreBTX) { + skip_ahead_until("//ETX"); + } + } YY_BREAK case 3: YY_RULE_SETUP -#line 75 "vtkParse.l" -; +#line 87 "vtkParse.l" +/* eat mismatched ETX */ YY_BREAK case 4: YY_RULE_SETUP -#line 77 "vtkParse.l" +#line 89 "vtkParse.l" { - skip_ahead_until("@end"); - }; + skip_ahead_until("@end"); + } YY_BREAK case 5: YY_RULE_SETUP -#line 81 "vtkParse.l" +#line 93 "vtkParse.l" { - size_t pos = 1; - while (yytext[pos-1] != 'M' || yytext[pos] != 'E') - { - pos++; - } - data.NameComment = vtkstrndup(&yytext[pos + 1], yyleng - pos - 1); - }; + size_t pos = 1; + while (yytext[pos-1] != 'M' || yytext[pos] != 'E') + { + pos++; + } + data->NameComment = vtkstrndup(&yytext[pos + 1], yyleng - pos - 1); + } YY_BREAK case 6: YY_RULE_SETUP -#line 90 "vtkParse.l" -{ setCommentState(1); }; +#line 102 "vtkParse.l" +{ setCommentState(1); } YY_BREAK case 7: YY_RULE_SETUP -#line 91 "vtkParse.l" -{ setCommentState(2); }; +#line 103 "vtkParse.l" +{ setCommentState(2); } YY_BREAK case 8: YY_RULE_SETUP -#line 92 "vtkParse.l" -{ setCommentState(3); }; +#line 104 "vtkParse.l" +{ setCommentState(3); } YY_BREAK case 9: YY_RULE_SETUP -#line 93 "vtkParse.l" -{ setCommentState(3); }; +#line 105 "vtkParse.l" +{ setCommentState(3); } YY_BREAK case 10: YY_RULE_SETUP -#line 94 "vtkParse.l" -{ setCommentState(4); }; +#line 106 "vtkParse.l" +{ setCommentState(4); } YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP -#line 95 "vtkParse.l" -{ closeOrClearComment(); }; +#line 107 "vtkParse.l" +{ closeOrClearComment(); } YY_BREAK case 12: YY_RULE_SETUP -#line 96 "vtkParse.l" +#line 108 "vtkParse.l" { - size_t pos = 2; - while (yytext[pos-2] != '/' || yytext[pos-1] != '/') pos++; - addCommentLine(&yytext[pos], yyleng - pos); - }; + size_t pos = 2; + while (yytext[pos-2] != '/' || yytext[pos-1] != '/') pos++; + addCommentLine(&yytext[pos], yyleng - pos); + } YY_BREAK case 13: YY_RULE_SETUP -#line 102 "vtkParse.l" -; +#line 114 "vtkParse.l" +/* eat C++ comments */ YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP -#line 104 "vtkParse.l" +#line 116 "vtkParse.l" { - int result; - MacroInfo *macro; - result = vtkParsePreprocess_HandleDirective(&preprocessor, yytext); - if (result == VTK_PARSE_OK) - { - macro = preprocessor.Macros[preprocessor.NumberOfMacros-1]; - if (!macro->IsFunction) - { - add_constant(macro->Name, vtkstrdup(macro->Definition), 0, NULL, 1); - } - } - }; + skip_trailing_comment(yytext, yyleng); + preprocessor_directive(yytext, yyleng); + } YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP -#line 118 "vtkParse.l" +#line 121 "vtkParse.l" { - int result = 0; - result = vtkParsePreprocess_HandleDirective(&preprocessor, yytext); - if (result == VTK_PARSE_SKIP) - { - skip_conditional_block(); - } - else if (result != VTK_PARSE_OK) - { - print_preprocessor_error(result, yytext, yyleng); - } - }; + yylval.str = vtkstrndup(yytext, yyleng); + return(STRING_LITERAL); + } YY_BREAK case 16: /* rule 16 can match eol */ YY_RULE_SETUP -#line 131 "vtkParse.l" +#line 126 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(STRING_LITERAL); } + yylval.str = vtkstrndup(yytext, yyleng); + return(CHAR_LITERAL); + } YY_BREAK case 17: -/* rule 17 can match eol */ YY_RULE_SETUP -#line 135 "vtkParse.l" -{ - yylval.str = vtkstrndup(yytext, yyleng); - return(CHAR_LITERAL); } +#line 131 "vtkParse.l" +/* ignore EXPORT macros */ YY_BREAK case 18: YY_RULE_SETUP -#line 139 "vtkParse.l" -; +#line 133 "vtkParse.l" +{ /* let the wrappers see the parameter */ + const char *args = NULL; + const char *cp; + size_t l = 0; + args = get_macro_arguments(); + if (args) + { + cp = args; + if (*cp == '(') { cp++; } + while (*cp == ' ' || *cp == '\t') { cp++; } + l = vtkidlen(cp); + if (l) + { + yylval.str = vtkstrndup(cp, l); + free((char *)args); + return(ID); + } + free((char *)args); + } + } YY_BREAK case 19: -/* rule 19 can match eol */ YY_RULE_SETUP -#line 141 "vtkParse.l" -{ - size_t i; size_t j = 0; - yylval.str = ""; - if (yytext[yyleng-1] == ')') - { - while (yytext[j]!='(') { j++; } - while (yytext[j]==' ' || yytext[j]=='\t') { j++; } - j++; i = j; - while (yytext[j]!=')' && yytext[j] != ' ' && yytext[j] != '\t') { j++; } - yylval.str = vtkstrndup(&yytext[i], j-i); - return(ID); - } - }; +#line 154 "vtkParse.l" +return(DOUBLE); YY_BREAK case 20: -/* rule 20 can match eol */ YY_RULE_SETUP #line 155 "vtkParse.l" -{ - return(CLASS_REF); - }; +return(FLOAT); YY_BREAK case 21: -/* rule 21 can match eol */ YY_RULE_SETUP -#line 159 "vtkParse.l" -{ - return(CLASS_REF); - }; +#line 156 "vtkParse.l" +return(INT64__); YY_BREAK case 22: -/* rule 22 can match eol */ YY_RULE_SETUP -#line 163 "vtkParse.l" -{ - return(CLASS_REF); - }; +#line 157 "vtkParse.l" +return(SHORT); YY_BREAK case 23: -/* rule 23 can match eol */ YY_RULE_SETUP -#line 167 "vtkParse.l" -{ - size_t i = 0; size_t j = 0; - while (yytext[j] != '*') { i++; j++; } - i++; j++; - while (yytext[i] != ' ' && yytext[i] != '\t' && - yytext[i] != '\n' && yytext[i] != '\r' && yytext[i] != ')') {i++;} - yylval.str = vtkstrndup(&yytext[j], i-j); - return(VAR_FUNCTION); - }; +#line 158 "vtkParse.l" +return(LONG); YY_BREAK case 24: -/* rule 24 can match eol */ YY_RULE_SETUP -#line 177 "vtkParse.l" -return(LONG_DOUBLE); +#line 159 "vtkParse.l" +return(CHAR); YY_BREAK case 25: YY_RULE_SETUP -#line 178 "vtkParse.l" -return(DOUBLE); +#line 160 "vtkParse.l" +return(INT); YY_BREAK case 26: YY_RULE_SETUP -#line 179 "vtkParse.l" -return(FLOAT); +#line 162 "vtkParse.l" +return(UNSIGNED); YY_BREAK case 27: -/* rule 27 can match eol */ YY_RULE_SETUP -#line 181 "vtkParse.l" -return(UNSIGNED_INT64__); +#line 163 "vtkParse.l" +return(SIGNED); YY_BREAK case 28: -/* rule 28 can match eol */ YY_RULE_SETUP -#line 182 "vtkParse.l" -return(UNSIGNED_INT64__); +#line 165 "vtkParse.l" +return(VOID); YY_BREAK case 29: -/* rule 29 can match eol */ YY_RULE_SETUP -#line 184 "vtkParse.l" -return(INT64__); +#line 166 "vtkParse.l" +return(BOOL); YY_BREAK case 30: -/* rule 30 can match eol */ YY_RULE_SETUP -#line 185 "vtkParse.l" -return(INT64__); +#line 168 "vtkParse.l" +return(SIZE_T); YY_BREAK case 31: YY_RULE_SETUP -#line 186 "vtkParse.l" -return(INT64__); +#line 169 "vtkParse.l" +return(SSIZE_T); YY_BREAK case 32: -/* rule 32 can match eol */ YY_RULE_SETUP -#line 188 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 171 "vtkParse.l" +/* ignore the Q_OBJECT macro from Qt */ YY_BREAK case 33: /* rule 33 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 189 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 172 "vtkParse.l" +return(PUBLIC); YY_BREAK case 34: /* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 190 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 173 "vtkParse.l" +return(PRIVATE); YY_BREAK case 35: /* rule 35 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 191 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 174 "vtkParse.l" +return(PROTECTED); YY_BREAK case 36: /* rule 36 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 192 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 175 "vtkParse.l" +return(PROTECTED); YY_BREAK case 37: -/* rule 37 can match eol */ YY_RULE_SETUP -#line 193 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 177 "vtkParse.l" +return(CLASS); YY_BREAK case 38: -/* rule 38 can match eol */ YY_RULE_SETUP -#line 194 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 178 "vtkParse.l" +return(STRUCT); YY_BREAK case 39: -/* rule 39 can match eol */ YY_RULE_SETUP -#line 195 "vtkParse.l" -return(UNSIGNED_LONG_LONG); +#line 179 "vtkParse.l" +return(PUBLIC); YY_BREAK case 40: -/* rule 40 can match eol */ YY_RULE_SETUP -#line 197 "vtkParse.l" -return(LONG_LONG); +#line 180 "vtkParse.l" +return(PRIVATE); YY_BREAK case 41: -/* rule 41 can match eol */ YY_RULE_SETUP -#line 198 "vtkParse.l" -return(LONG_LONG); +#line 181 "vtkParse.l" +return(PROTECTED); YY_BREAK case 42: -/* rule 42 can match eol */ YY_RULE_SETUP -#line 199 "vtkParse.l" -return(LONG_LONG); +#line 182 "vtkParse.l" +return(ENUM); YY_BREAK case 43: -/* rule 43 can match eol */ YY_RULE_SETUP -#line 200 "vtkParse.l" -return(LONG_LONG); +#line 183 "vtkParse.l" +return(UNION); YY_BREAK case 44: -/* rule 44 can match eol */ YY_RULE_SETUP -#line 201 "vtkParse.l" -return(LONG_LONG); +#line 184 "vtkParse.l" +return(VIRTUAL); YY_BREAK case 45: -/* rule 45 can match eol */ YY_RULE_SETUP -#line 202 "vtkParse.l" -return(LONG_LONG); +#line 185 "vtkParse.l" +return(CONST); YY_BREAK case 46: -/* rule 46 can match eol */ YY_RULE_SETUP -#line 203 "vtkParse.l" -return(LONG_LONG); +#line 186 "vtkParse.l" +return(VOLATILE); YY_BREAK case 47: -/* rule 47 can match eol */ YY_RULE_SETUP -#line 204 "vtkParse.l" -return(LONG_LONG); +#line 187 "vtkParse.l" +return(MUTABLE); YY_BREAK case 48: -/* rule 48 can match eol */ YY_RULE_SETUP -#line 205 "vtkParse.l" -return(LONG_LONG); +#line 188 "vtkParse.l" +return(OPERATOR); YY_BREAK case 49: -/* rule 49 can match eol */ YY_RULE_SETUP -#line 206 "vtkParse.l" -return(LONG_LONG); +#line 189 "vtkParse.l" +return(FRIEND); YY_BREAK case 50: -/* rule 50 can match eol */ YY_RULE_SETUP -#line 207 "vtkParse.l" -return(LONG_LONG); +#line 190 "vtkParse.l" +return(INLINE); YY_BREAK case 51: -/* rule 51 can match eol */ YY_RULE_SETUP -#line 209 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 191 "vtkParse.l" +return(STATIC); YY_BREAK case 52: -/* rule 52 can match eol */ YY_RULE_SETUP -#line 210 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 192 "vtkParse.l" +return(EXTERN); YY_BREAK case 53: -/* rule 53 can match eol */ YY_RULE_SETUP -#line 211 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 193 "vtkParse.l" +return(TEMPLATE); YY_BREAK case 54: -/* rule 54 can match eol */ YY_RULE_SETUP -#line 212 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 194 "vtkParse.l" +return(TYPENAME); YY_BREAK case 55: -/* rule 55 can match eol */ YY_RULE_SETUP -#line 213 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 195 "vtkParse.l" +return(TYPEDEF); YY_BREAK case 56: -/* rule 56 can match eol */ YY_RULE_SETUP -#line 214 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 196 "vtkParse.l" +return(NAMESPACE); YY_BREAK case 57: -/* rule 57 can match eol */ YY_RULE_SETUP -#line 215 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 197 "vtkParse.l" +return(USING); YY_BREAK case 58: -/* rule 58 can match eol */ YY_RULE_SETUP -#line 216 "vtkParse.l" -return(UNSIGNED_SHORT); +#line 198 "vtkParse.l" +return(NEW); YY_BREAK case 59: -/* rule 59 can match eol */ YY_RULE_SETUP -#line 218 "vtkParse.l" -return(SHORT); +#line 199 "vtkParse.l" +return(DELETE); YY_BREAK case 60: -/* rule 60 can match eol */ YY_RULE_SETUP -#line 219 "vtkParse.l" -return(SHORT); +#line 200 "vtkParse.l" +return(EXPLICIT); YY_BREAK case 61: -/* rule 61 can match eol */ YY_RULE_SETUP -#line 220 "vtkParse.l" -return(SHORT); +#line 201 "vtkParse.l" +return(THROW); YY_BREAK case 62: -/* rule 62 can match eol */ YY_RULE_SETUP -#line 221 "vtkParse.l" -return(SHORT); +#line 203 "vtkParse.l" +return(STATIC_CAST); YY_BREAK case 63: -/* rule 63 can match eol */ YY_RULE_SETUP -#line 222 "vtkParse.l" -return(SHORT); +#line 204 "vtkParse.l" +return(DYNAMIC_CAST); YY_BREAK case 64: -/* rule 64 can match eol */ YY_RULE_SETUP -#line 223 "vtkParse.l" -return(SHORT); +#line 205 "vtkParse.l" +return(CONST_CAST); YY_BREAK case 65: -/* rule 65 can match eol */ YY_RULE_SETUP -#line 224 "vtkParse.l" -return(SHORT); +#line 206 "vtkParse.l" +return(REINTERPRET_CAST); YY_BREAK case 66: -/* rule 66 can match eol */ YY_RULE_SETUP -#line 225 "vtkParse.l" -return(SHORT); +#line 208 "vtkParse.l" +/* irrelevant to wrappers */ YY_BREAK case 67: -/* rule 67 can match eol */ YY_RULE_SETUP -#line 226 "vtkParse.l" -return(SHORT); +#line 209 "vtkParse.l" +/* irrelevant to wrappers */ YY_BREAK case 68: -/* rule 68 can match eol */ YY_RULE_SETUP -#line 227 "vtkParse.l" -return(SHORT); +#line 211 "vtkParse.l" +return(OP_LOGIC_AND); YY_BREAK case 69: YY_RULE_SETUP -#line 228 "vtkParse.l" -return(SHORT); +#line 212 "vtkParse.l" +return(OP_AND_EQ); YY_BREAK case 70: -/* rule 70 can match eol */ YY_RULE_SETUP -#line 230 "vtkParse.l" -return(UNSIGNED_LONG); +#line 213 "vtkParse.l" +return(OP_LOGIC_OR); YY_BREAK case 71: -/* rule 71 can match eol */ YY_RULE_SETUP -#line 231 "vtkParse.l" -return(UNSIGNED_LONG); +#line 214 "vtkParse.l" +return(OP_OR_EQ); YY_BREAK case 72: -/* rule 72 can match eol */ YY_RULE_SETUP -#line 232 "vtkParse.l" -return(UNSIGNED_LONG); +#line 215 "vtkParse.l" +return('!'); YY_BREAK case 73: -/* rule 73 can match eol */ YY_RULE_SETUP -#line 233 "vtkParse.l" -return(UNSIGNED_LONG); +#line 216 "vtkParse.l" +return(OP_LOGIC_NEQ); YY_BREAK case 74: -/* rule 74 can match eol */ YY_RULE_SETUP -#line 234 "vtkParse.l" -return(UNSIGNED_LONG); +#line 217 "vtkParse.l" +return('^'); YY_BREAK case 75: -/* rule 75 can match eol */ YY_RULE_SETUP -#line 235 "vtkParse.l" -return(UNSIGNED_LONG); +#line 218 "vtkParse.l" +return(OP_XOR_EQ); YY_BREAK case 76: -/* rule 76 can match eol */ YY_RULE_SETUP -#line 236 "vtkParse.l" -return(UNSIGNED_LONG); +#line 219 "vtkParse.l" +return('&'); YY_BREAK case 77: -/* rule 77 can match eol */ YY_RULE_SETUP -#line 237 "vtkParse.l" -return(UNSIGNED_LONG); +#line 220 "vtkParse.l" +return('|'); YY_BREAK case 78: -/* rule 78 can match eol */ YY_RULE_SETUP -#line 239 "vtkParse.l" -return(LONG); +#line 221 "vtkParse.l" +return('~'); YY_BREAK case 79: -/* rule 79 can match eol */ YY_RULE_SETUP -#line 240 "vtkParse.l" -return(LONG); +#line 223 "vtkParse.l" +return(IdType); YY_BREAK case 80: -/* rule 80 can match eol */ YY_RULE_SETUP -#line 241 "vtkParse.l" -return(LONG); +#line 224 "vtkParse.l" +return(SetMacro); YY_BREAK case 81: -/* rule 81 can match eol */ YY_RULE_SETUP -#line 242 "vtkParse.l" -return(LONG); +#line 225 "vtkParse.l" +return(GetMacro); YY_BREAK case 82: -/* rule 82 can match eol */ YY_RULE_SETUP -#line 243 "vtkParse.l" -return(LONG); +#line 226 "vtkParse.l" +return(SetStringMacro); YY_BREAK case 83: -/* rule 83 can match eol */ YY_RULE_SETUP -#line 244 "vtkParse.l" -return(LONG); +#line 227 "vtkParse.l" +return(GetStringMacro); YY_BREAK case 84: -/* rule 84 can match eol */ YY_RULE_SETUP -#line 245 "vtkParse.l" -return(LONG); +#line 228 "vtkParse.l" +return(SetClampMacro); YY_BREAK case 85: -/* rule 85 can match eol */ YY_RULE_SETUP -#line 246 "vtkParse.l" -return(LONG); +#line 229 "vtkParse.l" +return(SetObjectMacro); YY_BREAK case 86: -/* rule 86 can match eol */ YY_RULE_SETUP -#line 247 "vtkParse.l" -return(LONG); +#line 230 "vtkParse.l" +return(GetObjectMacro); YY_BREAK case 87: -/* rule 87 can match eol */ YY_RULE_SETUP -#line 248 "vtkParse.l" -return(LONG); +#line 231 "vtkParse.l" +return(BooleanMacro); YY_BREAK case 88: YY_RULE_SETUP -#line 249 "vtkParse.l" -return(LONG); +#line 232 "vtkParse.l" +return(SetVector2Macro); YY_BREAK case 89: -/* rule 89 can match eol */ YY_RULE_SETUP -#line 251 "vtkParse.l" -return(UNSIGNED_CHAR); +#line 233 "vtkParse.l" +return(SetVector3Macro); YY_BREAK case 90: -/* rule 90 can match eol */ YY_RULE_SETUP -#line 252 "vtkParse.l" -return(UNSIGNED_CHAR); +#line 234 "vtkParse.l" +return(SetVector4Macro); YY_BREAK case 91: -/* rule 91 can match eol */ YY_RULE_SETUP -#line 253 "vtkParse.l" -return(SIGNED_CHAR); +#line 235 "vtkParse.l" +return(SetVector6Macro); YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP -#line 254 "vtkParse.l" -return(SIGNED_CHAR); +#line 236 "vtkParse.l" +return(GetVector2Macro); YY_BREAK case 93: YY_RULE_SETUP -#line 255 "vtkParse.l" -return(CHAR); +#line 237 "vtkParse.l" +return(GetVector3Macro); YY_BREAK case 94: -/* rule 94 can match eol */ YY_RULE_SETUP -#line 257 "vtkParse.l" -return(UNSIGNED_INT); +#line 238 "vtkParse.l" +return(GetVector4Macro); YY_BREAK case 95: -/* rule 95 can match eol */ YY_RULE_SETUP -#line 258 "vtkParse.l" -return(UNSIGNED_INT); +#line 239 "vtkParse.l" +return(GetVector6Macro); YY_BREAK case 96: -/* rule 96 can match eol */ YY_RULE_SETUP -#line 260 "vtkParse.l" -return(INT); +#line 240 "vtkParse.l" +return(SetVectorMacro); YY_BREAK case 97: -/* rule 97 can match eol */ YY_RULE_SETUP -#line 261 "vtkParse.l" -return(INT); +#line 241 "vtkParse.l" +return(GetVectorMacro); YY_BREAK case 98: YY_RULE_SETUP -#line 262 "vtkParse.l" -return(INT); +#line 242 "vtkParse.l" +return(ViewportCoordinateMacro); YY_BREAK case 99: YY_RULE_SETUP -#line 264 "vtkParse.l" -return(UNSIGNED); +#line 243 "vtkParse.l" +return(WorldCoordinateMacro); YY_BREAK case 100: YY_RULE_SETUP -#line 265 "vtkParse.l" -return(SIGNED); +#line 244 "vtkParse.l" +return(TypeMacro); YY_BREAK case 101: YY_RULE_SETUP -#line 267 "vtkParse.l" -return(VOID); +#line 245 "vtkParse.l" +return(TypeMacro); YY_BREAK case 102: YY_RULE_SETUP -#line 268 "vtkParse.l" -return(BOOL); +#line 246 "vtkParse.l" +return(TypeMacro); YY_BREAK case 103: YY_RULE_SETUP -#line 270 "vtkParse.l" -return(SIZE_T); +#line 247 "vtkParse.l" +return(TypeMacro); YY_BREAK case 104: YY_RULE_SETUP -#line 271 "vtkParse.l" -return(SSIZE_T); +#line 248 "vtkParse.l" +; YY_BREAK case 105: YY_RULE_SETUP -#line 273 "vtkParse.l" -; +#line 249 "vtkParse.l" +return(VTK_BYTE_SWAP_DECL); YY_BREAK case 106: -/* rule 106 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 274 "vtkParse.l" -return(PUBLIC); +#line 250 "vtkParse.l" +return(TypeInt8); YY_BREAK case 107: -/* rule 107 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 275 "vtkParse.l" -return(PRIVATE); +#line 251 "vtkParse.l" +return(TypeUInt8); YY_BREAK case 108: -/* rule 108 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 276 "vtkParse.l" -return(PROTECTED); +#line 252 "vtkParse.l" +return(TypeInt16); YY_BREAK case 109: -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp = yy_bp + 7; -YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 277 "vtkParse.l" -return(PROTECTED); +#line 253 "vtkParse.l" +return(TypeUInt16); YY_BREAK case 110: YY_RULE_SETUP -#line 279 "vtkParse.l" -return(CLASS); +#line 254 "vtkParse.l" +return(TypeInt32); YY_BREAK case 111: YY_RULE_SETUP -#line 280 "vtkParse.l" -return(STRUCT); +#line 255 "vtkParse.l" +return(TypeUInt32); YY_BREAK case 112: YY_RULE_SETUP -#line 281 "vtkParse.l" -return(PUBLIC); +#line 256 "vtkParse.l" +return(TypeInt64); YY_BREAK case 113: YY_RULE_SETUP -#line 282 "vtkParse.l" -return(PRIVATE); +#line 257 "vtkParse.l" +return(TypeUInt64); YY_BREAK case 114: YY_RULE_SETUP -#line 283 "vtkParse.l" -return(PROTECTED); +#line 258 "vtkParse.l" +return(TypeFloat32); YY_BREAK case 115: YY_RULE_SETUP -#line 284 "vtkParse.l" -return(ENUM); +#line 259 "vtkParse.l" +return(TypeFloat64); YY_BREAK case 116: +/* rule 116 can match eol */ YY_RULE_SETUP -#line 285 "vtkParse.l" -return(UNION); +#line 261 "vtkParse.l" +{ + size_t i = 1; + size_t j; + while (yytext[i]==' ' || yytext[i]=='\t' || + yytext[i]=='\r' || yytext[i]=='\n') { i++; } + j = i; + while (yytext[j]!='&') { j++; } + yylval.str = vtkstrndup(&yytext[i], j-i); + return(LA); + } YY_BREAK case 117: +/* rule 117 can match eol */ YY_RULE_SETUP -#line 286 "vtkParse.l" -return(VIRTUAL); +#line 272 "vtkParse.l" +{ + size_t i = 1; + size_t j; + while (yytext[i]==' ' || yytext[i]=='\t' || + yytext[i]=='\r' || yytext[i]=='\n') { i++; } + j = i; + while (yytext[j]!='*') { j++; } + yylval.str = vtkstrndup(&yytext[i], j-i); + return(LP); + } YY_BREAK case 118: +/* rule 118 can match eol */ YY_RULE_SETUP -#line 287 "vtkParse.l" -return(CONST); +#line 283 "vtkParse.l" +{ + yylval.str = ""; + return(LP); + } YY_BREAK case 119: +/* rule 119 can match eol */ YY_RULE_SETUP #line 288 "vtkParse.l" -return(MUTABLE); +{ + yylval.str = ""; + return(LP); + } YY_BREAK case 120: YY_RULE_SETUP -#line 289 "vtkParse.l" -return(OPERATOR); +#line 293 "vtkParse.l" +return('*'); YY_BREAK case 121: YY_RULE_SETUP -#line 290 "vtkParse.l" -return(FRIEND); +#line 295 "vtkParse.l" +/* misc unused win32 macros */ YY_BREAK case 122: +/* rule 122 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 291 "vtkParse.l" -return(INLINE); +#line 297 "vtkParse.l" +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(OSTREAM); + } YY_BREAK case 123: +/* rule 123 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 292 "vtkParse.l" -return(STATIC); +#line 302 "vtkParse.l" +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(ISTREAM); + } YY_BREAK case 124: +/* rule 124 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 293 "vtkParse.l" -return(EXTERN); +#line 307 "vtkParse.l" +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(StdString); + } YY_BREAK case 125: YY_RULE_SETUP -#line 294 "vtkParse.l" -return(TEMPLATE); - YY_BREAK -case 126: -YY_RULE_SETUP -#line 295 "vtkParse.l" -return(TYPENAME); - YY_BREAK -case 127: -YY_RULE_SETUP -#line 296 "vtkParse.l" -return(TYPEDEF); - YY_BREAK -case 128: -YY_RULE_SETUP -#line 297 "vtkParse.l" -return(NAMESPACE); - YY_BREAK -case 129: -YY_RULE_SETUP -#line 298 "vtkParse.l" -return(USING); - YY_BREAK -case 130: -YY_RULE_SETUP -#line 299 "vtkParse.l" -return(NEW); - YY_BREAK -case 131: -YY_RULE_SETUP -#line 300 "vtkParse.l" -return(DELETE); - YY_BREAK -case 132: -YY_RULE_SETUP -#line 301 "vtkParse.l" -return(EXPLICIT); - YY_BREAK -case 133: -YY_RULE_SETUP -#line 303 "vtkParse.l" -return(STATIC_CAST); - YY_BREAK -case 134: -YY_RULE_SETUP -#line 304 "vtkParse.l" -return(DYNAMIC_CAST); - YY_BREAK -case 135: -YY_RULE_SETUP -#line 305 "vtkParse.l" -return(CONST_CAST); - YY_BREAK -case 136: -YY_RULE_SETUP -#line 306 "vtkParse.l" -return(REINTERPRET_CAST); - YY_BREAK -case 137: -YY_RULE_SETUP -#line 308 "vtkParse.l" -; - YY_BREAK -case 138: -YY_RULE_SETUP -#line 309 "vtkParse.l" -; - YY_BREAK -case 139: -YY_RULE_SETUP -#line 310 "vtkParse.l" -; - YY_BREAK -case 140: -YY_RULE_SETUP #line 312 "vtkParse.l" -return(OP_LOGIC_AND); - YY_BREAK -case 141: -YY_RULE_SETUP -#line 313 "vtkParse.l" -return(OP_AND_EQ); - YY_BREAK -case 142: -YY_RULE_SETUP -#line 314 "vtkParse.l" -return(OP_LOGIC_OR); - YY_BREAK -case 143: -YY_RULE_SETUP -#line 315 "vtkParse.l" -return(OP_OR_EQ); - YY_BREAK -case 144: -YY_RULE_SETUP -#line 316 "vtkParse.l" -return('!'); +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(StdString); + } YY_BREAK -case 145: +case 126: YY_RULE_SETUP #line 317 "vtkParse.l" -return(OP_LOGIC_NEQ); - YY_BREAK -case 146: -YY_RULE_SETUP -#line 318 "vtkParse.l" -return('^'); - YY_BREAK -case 147: -YY_RULE_SETUP -#line 319 "vtkParse.l" -return(OP_XOR_EQ); - YY_BREAK -case 148: -YY_RULE_SETUP -#line 320 "vtkParse.l" -return('&'); - YY_BREAK -case 149: -YY_RULE_SETUP -#line 321 "vtkParse.l" -return('|'); +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(UnicodeString); + } YY_BREAK -case 150: +case 127: YY_RULE_SETUP #line 322 "vtkParse.l" -return('~'); - YY_BREAK -case 151: -YY_RULE_SETUP -#line 324 "vtkParse.l" -return(FloatType); - YY_BREAK -case 152: -YY_RULE_SETUP -#line 325 "vtkParse.l" -return(IdType); - YY_BREAK -case 153: -YY_RULE_SETUP -#line 326 "vtkParse.l" -return(SetMacro); +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(VTK_ID); + } YY_BREAK -case 154: +case 128: YY_RULE_SETUP #line 327 "vtkParse.l" -return(GetMacro); - YY_BREAK -case 155: -YY_RULE_SETUP -#line 328 "vtkParse.l" -return(SetStringMacro); - YY_BREAK -case 156: -YY_RULE_SETUP -#line 329 "vtkParse.l" -return(GetStringMacro); - YY_BREAK -case 157: -YY_RULE_SETUP -#line 330 "vtkParse.l" -return(SetClampMacro); - YY_BREAK -case 158: -YY_RULE_SETUP -#line 331 "vtkParse.l" -return(SetObjectMacro); +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(QT_ID); + } YY_BREAK -case 159: +case 129: YY_RULE_SETUP #line 332 "vtkParse.l" -return(GetObjectMacro); +get_macro_arguments(); /* gcc attributes */ YY_BREAK -case 160: -YY_RULE_SETUP -#line 333 "vtkParse.l" -return(BooleanMacro); - YY_BREAK -case 161: +case 130: YY_RULE_SETUP #line 334 "vtkParse.l" -return(SetVector2Macro); +get_macro_arguments(); /* Windows linkage */ YY_BREAK -case 162: -YY_RULE_SETUP -#line 335 "vtkParse.l" -return(SetVector3Macro); - YY_BREAK -case 163: +case 131: YY_RULE_SETUP #line 336 "vtkParse.l" -return(SetVector4Macro); +/* Windows */ YY_BREAK -case 164: -YY_RULE_SETUP -#line 337 "vtkParse.l" -return(SetVector6Macro); - YY_BREAK -case 165: +case 132: YY_RULE_SETUP #line 338 "vtkParse.l" -return(GetVector2Macro); - YY_BREAK -case 166: -YY_RULE_SETUP -#line 339 "vtkParse.l" -return(GetVector3Macro); - YY_BREAK -case 167: -YY_RULE_SETUP -#line 340 "vtkParse.l" -return(GetVector4Macro); - YY_BREAK -case 168: -YY_RULE_SETUP -#line 341 "vtkParse.l" -return(GetVector6Macro); - YY_BREAK -case 169: -YY_RULE_SETUP -#line 342 "vtkParse.l" -return(SetVectorMacro); - YY_BREAK -case 170: -YY_RULE_SETUP -#line 343 "vtkParse.l" -return(GetVectorMacro); - YY_BREAK -case 171: -YY_RULE_SETUP -#line 344 "vtkParse.l" -return(ViewportCoordinateMacro); - YY_BREAK -case 172: -YY_RULE_SETUP -#line 345 "vtkParse.l" -return(WorldCoordinateMacro); - YY_BREAK -case 173: -YY_RULE_SETUP -#line 346 "vtkParse.l" -return(TypeMacro); - YY_BREAK -case 174: -YY_RULE_SETUP -#line 347 "vtkParse.l" -return(TypeMacro); - YY_BREAK -case 175: -YY_RULE_SETUP -#line 348 "vtkParse.l" -return(TypeMacro); - YY_BREAK -case 176: -YY_RULE_SETUP -#line 349 "vtkParse.l" -return(TypeMacro); - YY_BREAK -case 177: -YY_RULE_SETUP -#line 350 "vtkParse.l" -return(VTK_LEGACY); - YY_BREAK -case 178: -YY_RULE_SETUP -#line 351 "vtkParse.l" -; - YY_BREAK -case 179: -YY_RULE_SETUP -#line 352 "vtkParse.l" -return(VTK_BYTE_SWAP_DECL); - YY_BREAK -case 180: -YY_RULE_SETUP -#line 353 "vtkParse.l" -return(TypeInt8); - YY_BREAK -case 181: -YY_RULE_SETUP -#line 354 "vtkParse.l" -return(TypeUInt8); - YY_BREAK -case 182: -YY_RULE_SETUP -#line 355 "vtkParse.l" -return(TypeInt16); - YY_BREAK -case 183: -YY_RULE_SETUP -#line 356 "vtkParse.l" -return(TypeUInt16); - YY_BREAK -case 184: -YY_RULE_SETUP -#line 357 "vtkParse.l" -return(TypeInt32); - YY_BREAK -case 185: -YY_RULE_SETUP -#line 358 "vtkParse.l" -return(TypeUInt32); - YY_BREAK -case 186: -YY_RULE_SETUP -#line 359 "vtkParse.l" -return(TypeInt64); - YY_BREAK -case 187: -YY_RULE_SETUP -#line 360 "vtkParse.l" -return(TypeUInt64); - YY_BREAK -case 188: -YY_RULE_SETUP -#line 361 "vtkParse.l" -return(TypeFloat32); - YY_BREAK -case 189: -YY_RULE_SETUP -#line 362 "vtkParse.l" -return(TypeFloat64); - YY_BREAK -case 190: -/* rule 190 can match eol */ -YY_RULE_SETUP -#line 364 "vtkParse.l" -return(CONST_PTR); - YY_BREAK -case 191: -/* rule 191 can match eol */ -YY_RULE_SETUP -#line 365 "vtkParse.l" -return(CONST_EQUAL); - YY_BREAK -case 192: -/* rule 192 can match eol */ -YY_RULE_SETUP -#line 367 "vtkParse.l" -{ - size_t i = 1; - size_t j; - while (yytext[i]==' ' || yytext[i]=='\t' || - yytext[i]=='\r' || yytext[i]=='\n') { i++; } - j = i; - while (yytext[j]!='&') { j++; } - yylval.str = vtkstrndup(&yytext[i], j-i); - return(LA); } - YY_BREAK -case 193: -/* rule 193 can match eol */ -YY_RULE_SETUP -#line 377 "vtkParse.l" -{ - size_t i = 1; - size_t j; - while (yytext[i]==' ' || yytext[i]=='\t' || - yytext[i]=='\r' || yytext[i]=='\n') { i++; } - j = i; - while (yytext[j]!='*') { j++; } - yylval.str = vtkstrndup(&yytext[i], j-i); - return(LP); } - YY_BREAK -case 194: -/* rule 194 can match eol */ -YY_RULE_SETUP -#line 387 "vtkParse.l" -{ - yylval.str = ""; - return(LP); } - YY_BREAK -case 195: -/* rule 195 can match eol */ -YY_RULE_SETUP -#line 391 "vtkParse.l" -{ - yylval.str = ""; - return(LP); } - YY_BREAK -case 196: -YY_RULE_SETUP -#line 395 "vtkParse.l" -{ return('*'); } - YY_BREAK -case 197: -YY_RULE_SETUP -#line 397 "vtkParse.l" -; - YY_BREAK -case 198: -YY_RULE_SETUP -#line 398 "vtkParse.l" -; - YY_BREAK -case 199: -YY_RULE_SETUP -#line 399 "vtkParse.l" -; - YY_BREAK -case 200: -YY_RULE_SETUP -#line 401 "vtkParse.l" -{ - yylval.str = vtkstrndup(yytext, yyleng); - return(OSTREAM); } - YY_BREAK -case 201: -YY_RULE_SETUP -#line 405 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(ISTREAM); } + const char *args = get_macro_arguments(); + if (args && args[0] != '\0' && args[1] != '\0') + { + size_t l = strlen(args); + push_macro(NULL); + push_buffer(); + macroName = "VTK_LEGACY"; + macroUsed = 0; + macroEnded = 0; + yy_switch_to_buffer(yy_scan_bytes(&args[1],l-2)); + } + free((char *)args); + } YY_BREAK -case 202: +case 133: YY_RULE_SETUP -#line 409 "vtkParse.l" +#line 353 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(StdString); } - YY_BREAK -case 203: -YY_RULE_SETUP -#line 413 "vtkParse.l" -{ yylval.str = vtkstrndup(yytext, yyleng); - return(UnicodeString); } - YY_BREAK -case 204: -YY_RULE_SETUP -#line 416 "vtkParse.l" -{ yylval.str = vtkstrdup("vtkDataArray"); return(VTK_ID); } - YY_BREAK -case 205: -YY_RULE_SETUP -#line 418 "vtkParse.l" -{ yylval.str = vtkstrndup(yytext, yyleng); - return(ID); } - YY_BREAK -case 206: -YY_RULE_SETUP -#line 421 "vtkParse.l" -{ yylval.str = vtkstrndup(yytext, yyleng); - return(QT_ID); } + const char *name = vtkstrndup(yytext, yyleng); + MacroInfo *macro = vtkParsePreprocess_GetMacro(preprocessor, name); + int expanded = 0; + if (macro) + { + const char *args = NULL; + const char *emacro = NULL; + + /* make sure that vtkNotUsed is never expanded */ + MacroInfo *ex; + ex = vtkParsePreprocess_GetMacro(preprocessor, "vtkNotUsed"); + if (ex) + { + ex->IsExcluded = 1; + } + + if (macro->IsFunction) + { + args = get_macro_arguments(); + if (args) + { + emacro = vtkParsePreprocess_ExpandMacro(preprocessor, macro, args); + if (!emacro) + { + print_preprocessor_error(VTK_PARSE_MACRO_NUMARGS, NULL, 0); + } + free((char *)args); + } + } + else if (macro->Definition && macro->Definition[0]) + { + /* first see if macro evaluates to a constant value */ + preproc_int_t val; + int is_unsigned; + int r; + macro->IsExcluded = 1; + r = vtkParsePreprocess_EvaluateExpression( + preprocessor, macro->Definition, &val, &is_unsigned); + macro->IsExcluded = 0; + /* if it isn't a constant expression, then expand it */ + if (r >= VTK_PARSE_MACRO_UNDEFINED) + { + emacro = vtkParsePreprocess_ExpandMacro(preprocessor, macro, NULL); + if (!emacro) + { + print_preprocessor_error(r, NULL, 0); + } + } + } + else + { + /* macros with no definition expand to nothing */ + expanded = 1; + } + if (emacro) + { + /* invoke the parser on any expanded macros */ + push_macro(macro); + push_buffer(); + yy_switch_to_buffer(yy_scan_string(emacro)); + vtkParsePreprocess_FreeMacroExpansion(preprocessor, macro, emacro); + expanded = 1; + } + } + if (!expanded) + { + /* if no macro expansion occurred, return the ID */ + yylval.str = name; + if (yyleng > 3 && name[0] == 'v' && name[1] == 't' && name[2] == 'k') + { + return(VTK_ID); + } + else if (name[0] == 'Q') + { + return(QT_ID); + } + else + { + return(ID); + } + } + } YY_BREAK -case 207: +case 134: YY_RULE_SETUP -#line 424 "vtkParse.l" -{ get_macro_arguments(); }; +#line 437 "vtkParse.l" +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(FLOAT_LITERAL); + } YY_BREAK -case 208: +case 135: YY_RULE_SETUP -#line 426 "vtkParse.l" +#line 442 "vtkParse.l" { - const char *name = vtkstrndup(yytext, yyleng); - MacroInfo *macro = vtkParsePreprocess_GetMacro(&preprocessor, name); - int expanded = 0; - - if (macro) - { - if (macro->IsFunction) - { - const char *args = get_macro_arguments(); - const char *emacro = NULL; - if (args) - { - emacro = vtkParsePreprocess_ExpandMacro(macro, args); - free((char *)args); - if (emacro) - { - push_buffer(); - yy_switch_to_buffer(yy_scan_string(emacro)); - vtkParsePreprocess_FreeExpandedMacro(emacro); - expanded = 1; - } - else - { - print_preprocessor_error( - VTK_PARSE_MACRO_NUMARGS, macro->Name, strlen(macro->Name)); - } - } - } - /* non-function macro expansion breaks "real superclass" trick - else if (macro->Definition) - { - push_buffer(); - yy_switch_to_buffer(yy_scan_string(macro->Definition)); - expanded = 1; - } - */ - } - if (!expanded) - { - yylval.str = name; - if (yyleng > 3 && name[0] == 'v' && name[1] == 't' && name[2] == 'k') - { - return(VTK_ID); - } - else if (name[0] == 'Q') - { - return(QT_ID); - } - else - { - return(ID); - } - } - }; + yylval.str = vtkstrndup(yytext, yyleng); + return(FLOAT_LITERAL); + } YY_BREAK -case 209: +case 136: YY_RULE_SETUP -#line 482 "vtkParse.l" +#line 447 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(FLOAT_LITERAL); } + yylval.str = vtkstrndup(yytext, yyleng); + return(FLOAT_LITERAL); + } YY_BREAK -case 210: +case 137: YY_RULE_SETUP -#line 486 "vtkParse.l" +#line 452 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(HEX_LITERAL); } + yylval.str = vtkstrndup(yytext, yyleng); + return(HEX_LITERAL); + } YY_BREAK -case 211: +case 138: YY_RULE_SETUP -#line 490 "vtkParse.l" +#line 457 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(OCT_LITERAL); } + yylval.str = vtkstrndup(yytext, yyleng); + return(OCT_LITERAL); + } YY_BREAK -case 212: +case 139: YY_RULE_SETUP -#line 494 "vtkParse.l" +#line 462 "vtkParse.l" { - yylval.str = vtkstrndup(yytext, yyleng); - return(INT_LITERAL); } + yylval.str = vtkstrndup(yytext, yyleng); + return(INT_LITERAL); + } YY_BREAK -case 213: +case 140: YY_RULE_SETUP -#line 498 "vtkParse.l" -{ yylval.str = vtkstrndup(yytext, yyleng); - return(ZERO); }; +#line 467 "vtkParse.l" +{ + yylval.str = vtkstrndup(yytext, yyleng); + return(ZERO); + } YY_BREAK -case 214: -/* rule 214 can match eol */ +case 141: +/* rule 141 can match eol */ YY_RULE_SETUP -#line 501 "vtkParse.l" -; +#line 472 "vtkParse.l" +/* escaped newlines */ YY_BREAK -case 215: -/* rule 215 can match eol */ +case 142: YY_RULE_SETUP -#line 502 "vtkParse.l" -; +#line 473 "vtkParse.l" +/* whitespace */ YY_BREAK -case 216: -/* rule 216 can match eol */ +case 143: +/* rule 143 can match eol */ YY_RULE_SETUP -#line 503 "vtkParse.l" -; +#line 474 "vtkParse.l" +/* whitespace */ YY_BREAK -case 217: +case 144: YY_RULE_SETUP -#line 505 "vtkParse.l" +#line 476 "vtkParse.l" return(OP_LSHIFT_EQ); YY_BREAK -case 218: +case 145: YY_RULE_SETUP -#line 506 "vtkParse.l" +#line 477 "vtkParse.l" return(OP_RSHIFT_EQ); YY_BREAK -case 219: +case 146: YY_RULE_SETUP -#line 507 "vtkParse.l" +#line 478 "vtkParse.l" return(OP_LSHIFT); YY_BREAK -case 220: +case 147: +YY_RULE_SETUP +#line 479 "vtkParse.l" +return(OP_DOT_POINTER); + YY_BREAK +case 148: YY_RULE_SETUP -#line 508 "vtkParse.l" +#line 480 "vtkParse.l" return(OP_ARROW_POINTER); YY_BREAK -case 221: +case 149: YY_RULE_SETUP -#line 509 "vtkParse.l" +#line 481 "vtkParse.l" return(OP_ARROW); YY_BREAK -case 222: +case 150: YY_RULE_SETUP -#line 510 "vtkParse.l" +#line 482 "vtkParse.l" return(OP_RSHIFT); YY_BREAK -case 223: +case 151: YY_RULE_SETUP -#line 511 "vtkParse.l" +#line 483 "vtkParse.l" return(OP_INCR); YY_BREAK -case 224: +case 152: YY_RULE_SETUP -#line 512 "vtkParse.l" +#line 484 "vtkParse.l" return(OP_DECR); YY_BREAK -case 225: +case 153: YY_RULE_SETUP -#line 513 "vtkParse.l" +#line 485 "vtkParse.l" return(OP_PLUS_EQ); YY_BREAK -case 226: +case 154: YY_RULE_SETUP -#line 514 "vtkParse.l" +#line 486 "vtkParse.l" return(OP_MINUS_EQ); YY_BREAK -case 227: +case 155: YY_RULE_SETUP -#line 515 "vtkParse.l" +#line 487 "vtkParse.l" return(OP_TIMES_EQ); YY_BREAK -case 228: +case 156: YY_RULE_SETUP -#line 516 "vtkParse.l" +#line 488 "vtkParse.l" return(OP_DIVIDE_EQ); YY_BREAK -case 229: +case 157: YY_RULE_SETUP -#line 517 "vtkParse.l" +#line 489 "vtkParse.l" return(OP_REMAINDER_EQ); YY_BREAK -case 230: +case 158: YY_RULE_SETUP -#line 518 "vtkParse.l" +#line 490 "vtkParse.l" return(OP_AND_EQ); YY_BREAK -case 231: +case 159: YY_RULE_SETUP -#line 519 "vtkParse.l" +#line 491 "vtkParse.l" return(OP_OR_EQ); YY_BREAK -case 232: +case 160: YY_RULE_SETUP -#line 520 "vtkParse.l" +#line 492 "vtkParse.l" return(OP_XOR_EQ); YY_BREAK -case 233: -YY_RULE_SETUP -#line 521 "vtkParse.l" -return(OP_LOGIC_AND_EQ); - YY_BREAK -case 234: -YY_RULE_SETUP -#line 522 "vtkParse.l" -return(OP_LOGIC_OR_EQ); - YY_BREAK -case 235: +case 161: YY_RULE_SETUP -#line 523 "vtkParse.l" +#line 493 "vtkParse.l" return(OP_LOGIC_AND); YY_BREAK -case 236: +case 162: YY_RULE_SETUP -#line 524 "vtkParse.l" +#line 494 "vtkParse.l" return(OP_LOGIC_OR); YY_BREAK -case 237: +case 163: YY_RULE_SETUP -#line 525 "vtkParse.l" +#line 495 "vtkParse.l" return(OP_LOGIC_EQ); YY_BREAK -case 238: +case 164: YY_RULE_SETUP -#line 526 "vtkParse.l" +#line 496 "vtkParse.l" return(OP_LOGIC_NEQ); YY_BREAK -case 239: +case 165: YY_RULE_SETUP -#line 527 "vtkParse.l" +#line 497 "vtkParse.l" return(OP_LOGIC_LEQ); YY_BREAK -case 240: +case 166: YY_RULE_SETUP -#line 528 "vtkParse.l" +#line 498 "vtkParse.l" return(OP_LOGIC_GEQ); YY_BREAK -case 241: +case 167: YY_RULE_SETUP -#line 529 "vtkParse.l" +#line 499 "vtkParse.l" return(ELLIPSIS); YY_BREAK -case 242: +case 168: YY_RULE_SETUP -#line 530 "vtkParse.l" +#line 500 "vtkParse.l" return(DOUBLE_COLON); YY_BREAK -case 243: +case 169: YY_RULE_SETUP -#line 532 "vtkParse.l" -{ return(yytext[0]); } +#line 502 "vtkParse.l" +return('['); YY_BREAK -case 244: +case 170: YY_RULE_SETUP -#line 533 "vtkParse.l" -{ return(yytext[0]); } +#line 503 "vtkParse.l" +return(']'); YY_BREAK -case 245: +case 171: YY_RULE_SETUP -#line 535 "vtkParse.l" -{ return(yytext[0]); } +#line 505 "vtkParse.l" +return(yytext[0]); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 537 "vtkParse.l" +#line 507 "vtkParse.l" { if (!pop_buffer()) { yyterminate(); } } YY_BREAK -case 246: +case 172: YY_RULE_SETUP -#line 539 "vtkParse.l" +#line 509 "vtkParse.l" { return(OTHER); } YY_BREAK -case 247: +case 173: YY_RULE_SETUP -#line 541 "vtkParse.l" +#line 511 "vtkParse.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 4021 "lex.yy.c" +#line 2910 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -4308,7 +3197,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1956 ) + if ( yy_current_state >= 1116 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -4336,11 +3225,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1956 ) + if ( yy_current_state >= 1116 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1955); + yy_is_jam = (yy_current_state == 1115); return yy_is_jam ? 0 : yy_current_state; } @@ -5026,7 +3915,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 541 "vtkParse.l" +#line 511 "vtkParse.l" @@ -5041,6 +3930,15 @@ const char *get_macro_arguments() int ws = 0; int sl = 0; int c1 = input(); + + if (c1 == '\0') + { + if (pop_buffer() == 0) + { + return NULL; + } + } + while (c1 == ' ' || c1 == '\t' || c1 == '\r' || c1 == '\n') { c1 = input(); @@ -5188,7 +4086,8 @@ int skip_comment() { if (c2 == 0) { - fprintf(yyout,"Cannot find closing comment.\n"); + print_preprocessor_error(VTK_PARSE_SYNTAX_ERROR, + "Cannot find end of comment.", 27); return 0; } if (c1 == '*' && c2 == '/') break; @@ -5197,6 +4096,72 @@ int skip_comment() return 1; } +/* + * If token contains a comment, make sure whole comment is skipped. + */ +int skip_trailing_comment(const char *text, size_t l) +{ + const char *cp = text; + const char *ep = text + l; + int incomment = 0; + + while (cp < ep) + { + while (cp < ep && *cp != '/' && *cp != '\"') { cp++; }; + if (cp >= ep) + { + break; + } + else if (cp[0] == '/' && cp[1] == '*') + { + incomment = 1; + cp += 2; + while (cp < ep && *cp != '*') { cp++; }; + if (cp[0] == '*' && cp[1] == '/') + { + incomment = 0; + cp += 2; + } + else + { + cp++; + } + } + else if (cp[0] == '\"') + { + cp++; + while (cp < ep) + { + while (cp < ep && *cp != '\\' && *cp != '\"') { cp++; }; + if (cp >= ep) + { + break; + } + else if (*cp == '\"') + { + cp++; + break; + } + else /* if (*cp == '\\') */ + { + cp += 2; + } + } + } + else + { + cp++; + } + } + + if (incomment) + { + return skip_comment(); + } + + return 1; +} + /* * Skip ahead until the next preprocessor directive. * This will eat the '#' that starts the directive. @@ -5204,26 +4169,29 @@ int skip_comment() */ int skip_to_next_directive() { + /* state == 0 at the start of a line */ int state = 0; int c; - do + c = input(); + + while (c != 0) { - c = input(); - if (c == 0) + /* whitespace */ + if (c == ' ' || c == '\t') { - break; + c = input(); } - - /* newline changes state */ - if (c == '\n') + /* newline renews the start-of-line state */ + else if (c == '\n') { state = 0; c = input(); } /* skip comments */ - if (c == '/') + else if (c == '/') { + state = 1; if ( (c = input()) == '*') { if (skip_comment() == 0) @@ -5233,30 +4201,33 @@ int skip_to_next_directive() c = input(); } } - /* skip escaped newlines */ - if (c == '\\') + /* skip escaped characters */ + else if (c == '\\') { + state = 1; if ( (c = input()) == '\r') { - c = input(); + if ( (c = input()) == '\n') + { + c = input(); + } } - if (c == '\n') + else if (c != 0) { c = input(); } } - /* skip allowed whitespace */ - while (c == ' ' || c == '\t') + /* any other chars except '#' at start of line */ + else if (c != '#' || state != 0) { + state = 1; c = input(); } - /* look for the directive */ - if (state == 0 && c == '#') + else { break; } } - while (c != 0); return c; } @@ -5319,7 +4290,7 @@ int skip_conditional_block() } linebuf[i++] = c; - result = vtkParsePreprocess_HandleDirective(&preprocessor, linebuf); + result = vtkParsePreprocess_HandleDirective(preprocessor, linebuf); if (result != VTK_PARSE_SKIP && result != VTK_PARSE_OK) { print_preprocessor_error(result, linebuf, i); @@ -5357,7 +4328,7 @@ int skip_ahead_multi(const char *strings[]) if ((c = (char)input()) == '\0') { - fprintf(yyout, "Cannot find matching %s.\n", strings[0]); + print_preprocessor_error(VTK_PARSE_SYNTAX_ERROR, NULL, 0); return 0; } @@ -5413,7 +4384,7 @@ void push_buffer() { buffer_stack = (YY_BUFFER_STATE *)malloc(4*sizeof(YY_BUFFER_STATE)); } - // grow the stack whenever size reaches a power of two + /* grow the stack whenever size reaches a power of two */ else if (n >= 4 && (n & (n-1)) == 0) { buffer_stack = (YY_BUFFER_STATE *)realloc( @@ -5427,6 +4398,14 @@ void push_buffer() */ int pop_buffer() { + if (in_macro()) + { + pop_macro(); + } + else + { + pop_include(); + } if (buffer_stack_size == 0) { return 0; @@ -5437,12 +4416,150 @@ int pop_buffer() } /* - * print an error with filename and line number. + * include stack, to tell what include is being evaluated + */ +static size_t include_stack_size = 0; +static FileInfo **include_stack = NULL; +static int *lineno_stack = NULL; + +/* + * push the current include onto the include stack. + */ +void push_include(const char *filename) +{ + FileInfo *file_info = NULL; + int same_file = 0; + size_t n = include_stack_size; + + if (include_stack == NULL) + { + include_stack = (FileInfo **)malloc(4*sizeof(FileInfo *)); + lineno_stack = (int *)malloc(4*sizeof(int)); + } + + /* grow the stack whenever size reaches a power of two */ + else if (n >= 4 && (n & (n-1)) == 0) + { + include_stack = (FileInfo **)realloc( + include_stack, 2*n*sizeof(FileInfo *)); + lineno_stack = (int *)realloc( + lineno_stack, 2*n*sizeof(int)); + } + + lineno_stack[include_stack_size] = yyget_lineno(); + yyset_lineno(0); + include_stack[include_stack_size++] = data; + + /* if the file is including itself */ + if (filename == data->FileName || + (filename != 0 && data->FileName != 0 && + strcmp(filename, data->FileName) == 0)) + { + same_file = 1; + } + + /* make a new fileinfo, but only if we are in the base namespace + * and only if the only items added so far are constants */ + if (!same_file && currentNamespace == data->Contents && + data->Contents->NumberOfItems == data->Contents->NumberOfConstants) + { + file_info = (FileInfo *)malloc(sizeof(FileInfo)); + vtkParse_InitFile(file_info); + file_info->FileName = vtkstrdup(filename); + file_info->Contents = (NamespaceInfo *)malloc(sizeof(NamespaceInfo)); + vtkParse_InitNamespace(file_info->Contents); + vtkParse_AddIncludeToFile(data, file_info); + file_info->Strings = data->Strings; + data = file_info; + currentNamespace = file_info->Contents; + } +} + +/* + * pop the include stack + */ +void pop_include() +{ + if (include_stack_size > 0) + { + --include_stack_size; + fclose(yyin); + yyset_lineno(lineno_stack[include_stack_size]); + if (data != include_stack[include_stack_size]) + { + data = include_stack[include_stack_size]; + currentNamespace = data->Contents; + } + } +} + + +/* + * macro stack, to tell what macro is being evaluated + */ +static size_t macro_stack_size = 0; +static MacroInfo **macro_stack = NULL; + +/* + * push the current macro onto the macro stack. + */ +void push_macro(MacroInfo *macro) +{ + size_t n = macro_stack_size; + if (macro_stack == NULL) + { + macro_stack = (MacroInfo **)malloc(4*sizeof(MacroInfo *)); + } + /* grow the stack whenever size reaches a power of two */ + else if (n >= 4 && (n & (n-1)) == 0) + { + macro_stack = (MacroInfo **)realloc( + macro_stack, 2*n*sizeof(MacroInfo *)); + } + macro_stack[macro_stack_size++] = macro; + if (macro) + { + macro->IsExcluded = 1; + if (macro_stack_size == 1) + { + macroName = macro->Name; + macroUsed = 0; + macroEnded = 0; + } + } +} + +/* + * pop the macro stack + */ +void pop_macro() +{ + MacroInfo *macro; + + if (macro_stack_size > 0) + { + macro = macro_stack[--macro_stack_size]; + if (macro) + { + macro->IsExcluded = 0; + } + } + macroEnded = 1; +} + +/* + * are we currently processing a macro? + */ +int in_macro() +{ + return (macro_stack_size > 0); +} + +/* + * print a preprocessor error code with filename and line number. */ void print_preprocessor_error(int result, const char *cp, size_t n) { - size_t j = 0; - const char *fn = ""; const char *text = ""; switch (result) @@ -5475,7 +4592,7 @@ void print_preprocessor_error(int result, const char *cp, size_t n) text = "input/output error"; break; case VTK_PARSE_MACRO_NUMARGS: - text = "wrong number of args for macro"; + text = "wrong number of macro args"; break; case VTK_PARSE_SYNTAX_ERROR: text = "syntax error"; @@ -5488,12 +4605,118 @@ void print_preprocessor_error(int result, const char *cp, size_t n) return; } - if (data.FileName) + print_parser_error(text, cp, n); +} + +/* + * print an error with filename and line number. + */ +void print_parser_error(const char *text, const char *cp, size_t n) +{ + size_t j = 0; + const char *fn = "(none)"; + + if (data->FileName) + { + fn = data->FileName; + } + fprintf(yyout, "In %s:", fn); + for (j = 0; j < include_stack_size; j++) + { + fprintf(yyout, "%i:\nIn %s:", + lineno_stack[j], include_stack[j]->FileName); + } + fprintf(yyout, "%i:\n", yylineno); + + if (cp) + { + fprintf(yyout, "%s: %*.*s\n", text, (int)n, (int)n, cp); + } + else if (text) + { + fprintf(yyout, "%s.\n", text); + } +} + +/* + * Execute a preprocessor directive. + */ +void preprocessor_directive(const char *text, size_t l) +{ + int result = 0; + size_t n = 0; + const char *cp = text; + const char *ep = text + l; + const char *directive = NULL; + + /* find the directive, store its length in "n" */ + while (*cp == ' ' || *cp == '\t') { cp++; } + if (*cp == '#') { cp++; } + while ((*cp == ' ' || *cp == '\t') && cp < ep) { cp++; } + directive = cp; + while (*cp >= 'a' && *cp <= 'z' && cp < ep) { cp++; } + n = cp - directive; + while ((*cp == ' ' || *cp == '\t') && cp < ep) { cp++; } + + if (n == 7 && strncmp(directive, "include", n) == 0) + { + /* include files */ + int already_loaded = 0; + if (*cp == '<' || *cp == '\"') + { + /* if asked to recurse into header files */ + if (Recursive && ep - cp > 3) + { + const char *dp; + dp = vtkParsePreprocess_FindIncludeFile(preprocessor, + &cp[1], (*cp != '\"'), &already_loaded); + if (dp) + { + yyin = fopen(dp, "r"); + if (yyin) + { + push_include(dp); + push_buffer(); + yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); + return; + } + } + } + } + } + + /* let the preprocessor handle the directive */ + result = vtkParsePreprocess_HandleDirective(preprocessor, text); + + if (result == VTK_PARSE_SKIP) + { + skip_conditional_block(); + } + else if (result != VTK_PARSE_OK) + { + print_preprocessor_error(result, text, l); + } + else if (n == 6 && strncmp(directive, "define", n) == 0 && + ep - cp > 4 && strncmp(cp, "VTK", 3) == 0) { - j = strlen(data.FileName); - while (j > 0 && data.FileName[j-1] != '/') { j--; } - fn = &data.FileName[j]; + /* macros that start with "VTK" */ + MacroInfo *macro; + + macro = vtkParsePreprocess_GetMacro(preprocessor, cp); + if (macro && macro->Definition && !macro->IsFunction) + { + /* if macro evaluates to a constant, add it as a constant */ + macro->IsExcluded = 1; + if (guess_constant_type(macro->Definition) == 0) + { + result = VTK_PARSE_MACRO_UNDEFINED; + } + macro->IsExcluded = 0; + if (result < VTK_PARSE_MACRO_UNDEFINED) + { + add_constant( + vtkstrdup(macro->Name), vtkstrdup(macro->Definition), 0, NULL, 1); + } + } } - fprintf(yyout, "In %s:%i: %s: ", fn, yylineno, text); - fprintf(yyout, "%*.*s\n", (int)n, (int)n, cp); } diff --git a/src/ParaView/vtkParse.tab.c b/src/ParaView/vtkParse.tab.c index bb807521..59894246 100644 --- a/src/ParaView/vtkParse.tab.c +++ b/src/ParaView/vtkParse.tab.c @@ -87,6 +87,68 @@ Modify vtkParse.tab.c: */ +/* +The purpose of this parser is to read C++ header files in order to +generate data structures that describe the C++ interface of a library, +one header file at a time. As such, it is not a complete C++ parser. +It only parses what is relevant to the interface and skips the rest. + +While the parser reads method definitions, type definitions, and +template definitions it generates a "signature" which is a string +that matches (apart from whitespace) the text that was parsed. + +While parsing types, the parser creates an unsigned int that describes +the type as well as creating other data structures for arrays, function +pointers, etc. The parser also creates a typeId string, which is either +a simple id that gives the class name or type name, or is "function" for +function pointer types, or "method" for method pointer types. +*/ + +/* +Conformance Notes: + +This parser was designed empirically and incrementally. It has been +refactored to make it more similar to the ANSI C++ 1996 BNF grammar, +but there are still many very significant differences. + +The most significant difference between this parser and a "standard" +parser is that it only parses declarations in detail. All other +statements and expressions are parsed as arbitrary sequences of symbols, +without any syntactic analysis. + +The "unqualified_id" does not directly include "operator_function_id" or +"conversion_function_id" (e.g. ids like "operator=" or "operator int*"). +Instead, these two id types are used to allow operator functions to be +handled by their own rules, rather than by the generic function rules. +These ids can only be used in function declarations and using declarations. + +Types are handled quite differently from the ANSI BNF. These differences +represent a prolonged (and ultimately successful) attempt to empirically +create a yacc parser without any shift/reduce conflicts. The rules for +types are organized according to the way that types are usually defined +in working code, rather than strictly according to C++ grammar. + +The declaration specifiers "friend" and "typedef" can only appear at the +beginning of a declaration sequence. There are also restrictions on +where class and enum specifiers can be used: you can declare a new struct +within a variable declaration, but not within a parameter declaration. + +The lexer returns each of "(scope::*", "(*", "(a::b::*", etc. as single +tokens. The ANSI BNF, in contrast, would consider these to be a "(" +followed by a "ptr_operator". The lexer concatenates these tokens in +order to eliminate shift/reduce conflicts in the parser. However, this +means that this parser will only recognize "scope::*" as valid if it is +preceded by "(", e.g. as part of a member function pointer specification. + +An odd bit of C++ ambiguity is that y(x); can be interpreted variously +as declaration of variable "x" of type "y", as a function call if "y" +is the name of a function, or as a constructor if "y" is the name of +a class. This parser always interprets this pattern as a constructor +declaration, because function calls are ignored by the parser, and +variable declarations of the form y(x); are exceedingly rare compared +to the more usual form y x; without parentheses. +*/ + #include #include #include @@ -117,12 +179,12 @@ Modify vtkParse.tab.c: # pragma warn -8066 /* unreachable code */ #endif -/* Map from the type anonymous_enumeration in vtkType.h to the VTK wrapping type - system number for the type. */ +/* Map from the type anonymous_enumeration in vtkType.h to the + VTK wrapping type system number for the type. */ #include "vtkParse.h" -#include "vtkParseInternal.h" #include "vtkParsePreprocess.h" +#include "vtkParseData.h" #include "vtkType.h" static unsigned int vtkParseTypeMap[] = @@ -153,7 +215,7 @@ static unsigned int vtkParseTypeMap[] = }; /* Define some constants to simplify references to the table lookup in - the type_primitive production rule code. */ + the primitive_type production rule code. */ #define VTK_PARSE_INT8 vtkParseTypeMap[VTK_TYPE_INT8] #define VTK_PARSE_UINT8 vtkParseTypeMap[VTK_TYPE_UINT8] #define VTK_PARSE_INT16 vtkParseTypeMap[VTK_TYPE_INT16] @@ -171,55 +233,74 @@ static unsigned int vtkParseTypeMap[] = /* the tokenizer */ int yylex(void); +/* global variables */ +FileInfo *data = NULL; +int parseDebug; + /* the "preprocessor" */ -PreprocessInfo preprocessor = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +PreprocessInfo *preprocessor = NULL; -/* global variables */ -FileInfo data; +/* include dirs specified on the command line */ +int NumberOfIncludeDirectories= 0; +const char **IncludeDirectories; -int NumberOfConcreteClasses = 0; -const char **ConcreteClasses; +/* macros specified on the command line */ +int NumberOfDefinitions = 0; +const char **Definitions; + +/* options that can be set by the programs that use the parser */ +int IgnoreBTX = 0; +int Recursive = 0; +/* various state variables */ NamespaceInfo *currentNamespace = NULL; ClassInfo *currentClass = NULL; FunctionInfo *currentFunction = NULL; -TemplateArgs *currentTemplate = NULL; - -const char *currentEnumName = 0; -const char *currentEnumValue = 0; - -int parseDebug; +TemplateInfo *currentTemplate = NULL; +const char *currentEnumName = NULL; +const char *currentEnumValue = NULL; parse_access_t access_level = VTK_ACCESS_PUBLIC; -int IgnoreBTX = 0; + +/* functions from vtkParse.l */ +void print_parser_error(const char *text, const char *cp, size_t n); /* helper functions */ +const char *type_class(unsigned int type, const char *classname); void start_class(const char *classname, int is_struct_or_union); void reject_class(const char *classname, int is_struct_or_union); void end_class(); +void add_base_class(ClassInfo *cls, const char *name, int access_lev, + int is_virtual); +void output_friend_function(void); void output_function(void); void reject_function(void); void set_return(FunctionInfo *func, unsigned int type, const char *typeclass, int count); -void add_argument(FunctionInfo *func, unsigned int type, - const char *classname, int count); +void add_parameter(FunctionInfo *func, unsigned int type, + const char *classname, int count); +void add_template_parameter(unsigned int datatype, + unsigned int extra, const char *funcSig); void add_using(const char *name, int is_namespace); void start_enum(const char *enumname); void add_enum(const char *name, const char *value); void end_enum(); +unsigned int guess_constant_type(const char *value); void add_constant(const char *name, const char *value, unsigned int type, const char *typeclass, int global); const char *add_const_scope(const char *name); void prepend_scope(char *cp, const char *arg); +unsigned int guess_id_type(const char *cp); unsigned int add_indirection(unsigned int tval, unsigned int ptr); unsigned int add_indirection_to_array(unsigned int ptr); void handle_complex_type(ValueInfo *val, unsigned int datatype, unsigned int extra, const char *funcSig); -void handle_function_type(ValueInfo *arg, const char *name, +void handle_function_type(ValueInfo *param, const char *name, const char *funcSig); +void add_legacy_parameter(FunctionInfo *func, ValueInfo *param); -void outputSetVectorMacro(const char *var, unsigned int argType, +void outputSetVectorMacro(const char *var, unsigned int paramType, const char *typeText, int n); -void outputGetVectorMacro(const char *var, unsigned int argType, +void outputGetVectorMacro(const char *var, unsigned int paramType, const char *typeText, int n); /*---------------------------------------------------------------- @@ -227,72 +308,13 @@ void outputGetVectorMacro(const char *var, unsigned int argType, * * Strings are centrally allocated and are const, and they are not * freed until the program exits. If they need to be freed before - * then, vtkstrfree() can be called. + * then, vtkParse_FreeStringCache() can be called. */ -size_t stringChunkPos = 0; -int numberOfChunks = 0; -char **stringArray = NULL; - -/* allocate a string of n+1 bytes */ -static char *vtkstralloc(size_t n) -{ - size_t chunk_size = 8176; - size_t nextChunkPos; - char *cp; - - // align next start position on an 8-byte boundary - nextChunkPos = (((stringChunkPos + n + 8) | 7 ) - 7); - - if (numberOfChunks == 0 || nextChunkPos > chunk_size) - { - if (n + 1 > chunk_size) - { - chunk_size = n + 1; - } - cp = (char *)malloc(chunk_size); - vtkParse_AddStringToArray((const char ***)&stringArray, &numberOfChunks, - cp); - stringChunkPos = 0; - nextChunkPos = (((n + 8) | 7) - 7); - } - - cp = &stringArray[numberOfChunks-1][stringChunkPos]; - cp[0] = '\0'; - - stringChunkPos = nextChunkPos; - - return cp; -} - -/* free all allocated strings */ -void vtkstrfree() -{ - int i; - - for (i = 0; i < numberOfChunks; i++) - { - free(stringArray[i]); - } - if (stringArray) - { - free(stringArray); - } - - stringArray = NULL; - numberOfChunks = 0; -} - /* duplicate the first n bytes of a string and terminate */ static const char *vtkstrndup(const char *in, size_t n) { - char *res = NULL; - - res = vtkstralloc(n); - strncpy(res, in, n); - res[n] = '\0'; - - return res; + return vtkParse_CacheString(data->Strings, in, n); } /* duplicate a string */ @@ -300,7 +322,7 @@ static const char *vtkstrdup(const char *in) { if (in) { - return vtkstrndup(in, strlen(in)); + in = vtkParse_CacheString(data->Strings, in, strlen(in)); } return in; @@ -323,7 +345,7 @@ static const char *vtkstrncat(size_t n, const char **str) m += j[i]; } } - cp = vtkstralloc(m); + cp = vtkParse_NewString(data->Strings, m); m = 0; for (i = 0; i < n; i++) { @@ -385,21 +407,6 @@ static const char *vtkstrcat5(const char *str1, const char *str2, return vtkstrncat(5, cp); } -static const char *vtkstrcat6(const char *str1, const char *str2, - const char *str3, const char *str4, - const char *str5, const char *str6) -{ - const char *cp[6]; - - cp[0] = str1; - cp[1] = str2; - cp[2] = str3; - cp[3] = str4; - cp[4] = str5; - cp[5] = str6; - return vtkstrncat(6, cp); -} - static const char *vtkstrcat7(const char *str1, const char *str2, const char *str3, const char *str4, const char *str5, const char *str6, @@ -417,6 +424,28 @@ static const char *vtkstrcat7(const char *str1, const char *str2, return vtkstrncat(7, cp); } +static size_t vtkidlen(const char *text) +{ + size_t i = 0; + char c = text[0]; + + if ((c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + c == '_') + { + do + { + c = text[++i]; + } + while ((c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '_'); + } + + return i; +} + /*---------------------------------------------------------------- * Comments */ @@ -485,15 +514,15 @@ void closeComment() commentState = -1; break; case 2: - data.Description = vtkstrdup(getComment()); + data->Description = vtkstrdup(getComment()); clearComment(); break; case 3: - data.SeeAlso = vtkstrdup(getComment()); + data->SeeAlso = vtkstrdup(getComment()); clearComment(); break; case 4: - data.Caveats = vtkstrdup(getComment()); + data->Caveats = vtkstrdup(getComment()); clearComment(); break; } @@ -528,6 +557,26 @@ void setCommentState(int state) } +/*---------------------------------------------------------------- + * Macros + */ + +/* "private" variables */ +const char *macroName = NULL; +int macroUsed = 0; +int macroEnded = 0; + +const char *getMacro() +{ + if (macroUsed == 0) + { + macroUsed = macroEnded; + return macroName; + } + return NULL; +} + + /*---------------------------------------------------------------- * Namespaces * @@ -558,7 +607,7 @@ void pushNamespace(const char *name) { currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo)); vtkParse_InitNamespace(currentNamespace); - currentNamespace->Name = vtkstrdup(name); + currentNamespace->Name = name; vtkParse_AddNamespaceToNamespace(oldNamespace, currentNamespace); } @@ -605,14 +654,14 @@ void popClass() */ /* "private" variables */ -TemplateArgs *templateStack[10]; +TemplateInfo *templateStack[10]; int templateDepth = 0; /* begin a template */ void startTemplate() { - currentTemplate = (TemplateArgs *)malloc(sizeof(TemplateArgs)); - vtkParse_InitTemplateArgs(currentTemplate); + currentTemplate = (TemplateInfo *)malloc(sizeof(TemplateInfo)); + vtkParse_InitTemplate(currentTemplate); } /* clear a template, if set */ @@ -669,6 +718,21 @@ const char *getSig() return signature; } +/* get the signature length */ +size_t getSigLength() +{ + return sigLength; +} + +/* reset the sig to the specified length */ +void resetSig(size_t n) +{ + if (n < sigLength) + { + sigLength = n; + } +} + /* reallocate Signature if n chars cannot be appended */ void checkSigSize(size_t n) { @@ -676,15 +740,16 @@ void checkSigSize(size_t n) if (sigAllocatedLength == 0) { + sigLength = 0; sigAllocatedLength = 80 + n; - signature = vtkstralloc(sigAllocatedLength); + signature = vtkParse_NewString(data->Strings, sigAllocatedLength); signature[0] = '\0'; } else if (sigLength + n > sigAllocatedLength) { sigAllocatedLength += sigLength + n; ccp = signature; - signature = vtkstralloc(sigAllocatedLength); + signature = vtkParse_NewString(data->Strings, sigAllocatedLength); strncpy(signature, ccp, sigLength); signature[sigLength] = '\0'; } @@ -705,23 +770,16 @@ void openSig() /* insert text at the beginning of the signature */ void preSig(const char *arg) { - size_t n; - - n = strlen(arg); - - if (!signature) - { - checkSigSize(n); - strncpy(signature, arg, n); - signature[n] = '\0'; - sigLength = n; - } - else if (!sigClosed && n > 0) + if (!sigClosed) { + size_t n = strlen(arg); checkSigSize(n); - memmove(&signature[n], signature, sigLength); - strncpy(signature, arg, n); - sigLength += n; + if (n > 0) + { + memmove(&signature[n], signature, sigLength); + strncpy(signature, arg, n); + sigLength += n; + } signature[sigLength] = '\0'; } } @@ -729,48 +787,19 @@ void preSig(const char *arg) /* append text to the end of the signature */ void postSig(const char *arg) { - size_t n; - - n = strlen(arg); - - if (!signature) - { - checkSigSize(n); - strncpy(signature, arg, n); - signature[n] = '\0'; - sigLength = n; - } - else if (!sigClosed) + if (!sigClosed) { + size_t n = strlen(arg); checkSigSize(n); - strncpy(&signature[sigLength], arg, n); - sigLength += n; + if (n > 0) + { + strncpy(&signature[sigLength], arg, n); + sigLength += n; + } signature[sigLength] = '\0'; } } -/* prepend a scope:: to the ID at the end of the signature */ -void preScopeSig(const char *arg) -{ - size_t n; - - n = strlen(arg); - - if (!signature) - { - checkSigSize(n); - strncpy(signature, arg, n); - signature[n] = '\0'; - sigLength = n; - } - else if (!sigClosed) - { - checkSigSize(n+2); - prepend_scope(signature, arg); - sigLength = strlen(signature); - } -} - /* set a mark in the signature for later operations */ void markSig() { @@ -794,7 +823,7 @@ const char *copySig() { cp = &signature[sigMark[sigMarkDepth]]; } - return cp; + return vtkstrdup(cp); } /* swap the signature text using the mark as the radix */ @@ -844,39 +873,141 @@ void chopSig(void) } } -/* mark this signature as legacy */ -void legacySig(void) -{ - currentFunction->IsLegacy = 1; -} - /*---------------------------------------------------------------- - * Storage type for vars and functions + * Subroutines for building a type */ /* "private" variables */ -unsigned int storageType = 0; +unsigned int storedType; +unsigned int typeStack[10]; +int typeDepth = 0; + +/* save the type on the stack */ +void pushType() +{ + typeStack[typeDepth++] = storedType; +} + +/* pop the type stack */ +void popType() +{ + storedType = typeStack[--typeDepth]; +} + +/* clear the storage type */ +void clearType() +{ + storedType = 0; +} + +/* save the type */ +void setTypeBase(unsigned int base) +{ + storedType &= ~(unsigned int)(VTK_PARSE_BASE_TYPE); + storedType |= base; +} -/* save the storage type */ -void setStorageType(unsigned int val) +/* set a type modifier bit */ +void setTypeMod(unsigned int mod) { - storageType = val; + storedType |= mod; } /* modify the indirection (pointers, refs) in the storage type */ -void setStorageTypeIndirection(unsigned int ind) +void setTypePtr(unsigned int ind) { - storageType = (storageType & ~VTK_PARSE_INDIRECT); - ind = (ind & VTK_PARSE_INDIRECT); - storageType = (storageType | ind); + storedType &= ~(unsigned int)(VTK_PARSE_INDIRECT); + ind &= VTK_PARSE_INDIRECT; + storedType |= ind; } /* retrieve the storage type */ -unsigned int getStorageType() +unsigned int getType() { - return storageType; + return storedType; +} + +/* combine two primitive type parts, e.g. "long int" */ +unsigned int buildTypeBase(unsigned int a, unsigned int b) +{ + unsigned int base = (a & VTK_PARSE_BASE_TYPE); + unsigned int basemod = (b & VTK_PARSE_BASE_TYPE); + + switch (base) + { + case 0: + base = basemod; + break; + case VTK_PARSE_UNSIGNED_INT: + base = (basemod | VTK_PARSE_UNSIGNED); + break; + case VTK_PARSE_INT: + base = basemod; + if (base == VTK_PARSE_CHAR) + { + base = VTK_PARSE_SIGNED_CHAR; + } + break; + case VTK_PARSE_CHAR: + if (basemod == VTK_PARSE_INT) + { + base = VTK_PARSE_SIGNED_CHAR; + } + else if (basemod == VTK_PARSE_UNSIGNED_INT) + { + base = VTK_PARSE_UNSIGNED_CHAR; + } + break; + case VTK_PARSE_SHORT: + if (basemod == VTK_PARSE_UNSIGNED_INT) + { + base = VTK_PARSE_UNSIGNED_SHORT; + } + break; + case VTK_PARSE_LONG: + if (basemod == VTK_PARSE_UNSIGNED_INT) + { + base = VTK_PARSE_UNSIGNED_LONG; + } + else if (basemod == VTK_PARSE_LONG) + { + base = VTK_PARSE_LONG_LONG; + } + else if (basemod == VTK_PARSE_DOUBLE) + { + base = VTK_PARSE_LONG_DOUBLE; + } + break; + case VTK_PARSE_UNSIGNED_LONG: + if (basemod == VTK_PARSE_LONG) + { + base = VTK_PARSE_UNSIGNED_LONG_LONG; + } + break; + case VTK_PARSE_LONG_LONG: + if (basemod == VTK_PARSE_UNSIGNED_INT) + { + base = VTK_PARSE_UNSIGNED_LONG_LONG; + } + break; + case VTK_PARSE___INT64: + if (basemod == VTK_PARSE_UNSIGNED_INT) + { + base = VTK_PARSE_UNSIGNED___INT64; + } + break; + case VTK_PARSE_DOUBLE: + if (basemod == VTK_PARSE_LONG) + { + base = VTK_PARSE_LONG_DOUBLE; + } + break; + } + + return ((a & ~(unsigned int)(VTK_PARSE_BASE_TYPE)) | base); } + /*---------------------------------------------------------------- * Array information */ @@ -896,7 +1027,7 @@ void clearArray(void) void pushArraySize(const char *size) { vtkParse_AddStringToArray(&arrayDimensions, &numberOfDimensions, - vtkstrdup(size)); + size); } /* add another dimension to the front */ @@ -911,7 +1042,7 @@ void pushArrayFront(const char *size) arrayDimensions[i] = arrayDimensions[i-1]; } - arrayDimensions[0] = vtkstrdup(size); + arrayDimensions[0] = size; } /* get the number of dimensions */ @@ -931,13 +1062,13 @@ const char **getArray() } /*---------------------------------------------------------------- - * Variables and Arguments + * Variables and Parameters */ /* "private" variables */ -char *currentVarName = 0; -char *currentVarValue = 0; -char *currentId = 0; +const char *currentVarName = 0; +const char *currentVarValue = 0; +const char *currentId = 0; /* clear the var Id */ void clearVarName(void) @@ -948,9 +1079,7 @@ void clearVarName(void) /* set the var Id */ void setVarName(const char *text) { - static char static_text[2048]; - currentVarName = static_text; - strcpy(static_text, text); + currentVarName = text; } /* return the var id */ @@ -970,9 +1099,7 @@ void clearVarValue(void) /* set the var value */ void setVarValue(const char *text) { - static char static_text[2048]; - currentVarValue = static_text; - strcpy(static_text, text); + currentVarValue = text; } /* return the var value */ @@ -992,19 +1119,15 @@ void clearTypeId(void) /* set the current Id, it is sticky until cleared */ void setTypeId(const char *text) { - static char static_text[2048]; if (currentId == NULL) { - currentId = static_text; - strcpy(static_text, text); + currentId = text; } } /* set the signature and type together */ void typeSig(const char *text) { - size_t n; - postSig(text); postSig(" "); @@ -1012,13 +1135,6 @@ void typeSig(const char *text) { setTypeId(text); } - else if ((currentId[0] == 'u' && strcmp(currentId, "unsigned") == 0) || - (currentId[0] == 's' && strcmp(currentId, "signed") == 0)) - { - n = strlen(currentId); - currentId[n] = ' '; - strcpy(¤tId[n+1], text); - } } /* return the current Id */ @@ -1076,8 +1192,10 @@ void pushFunction() { startSig(); } - functionVarNameStack[functionDepth] = vtkstrdup(getVarName()); - functionTypeIdStack[functionDepth] = vtkstrdup(getTypeId()); + functionVarNameStack[functionDepth] = getVarName(); + functionTypeIdStack[functionDepth] = getTypeId(); + pushType(); + clearType(); clearVarName(); clearTypeId(); functionDepth++; @@ -1100,6 +1218,7 @@ void popFunction() { setTypeId(functionTypeIdStack[functionDepth]); } + popType(); functionStack[functionDepth+1] = newFunction; } @@ -1231,7 +1350,7 @@ unsigned int add_indirection_to_array(unsigned int type) /* Line 189 of yacc.c */ -#line 1235 "vtkParse.tab.c" +#line 1354 "vtkParse.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -1258,137 +1377,123 @@ unsigned int add_indirection_to_array(unsigned int type) /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { - STRUCT = 258, - CLASS = 259, - PUBLIC = 260, - PRIVATE = 261, - PROTECTED = 262, - VIRTUAL = 263, - ID = 264, - STRING_LITERAL = 265, - INT_LITERAL = 266, - HEX_LITERAL = 267, - OCT_LITERAL = 268, - FLOAT_LITERAL = 269, - CHAR_LITERAL = 270, - ZERO = 271, - FLOAT = 272, - DOUBLE = 273, - LONG_DOUBLE = 274, - INT = 275, - UNSIGNED_INT = 276, - SHORT = 277, - UNSIGNED_SHORT = 278, - LONG = 279, - UNSIGNED_LONG = 280, - LONG_LONG = 281, - UNSIGNED_LONG_LONG = 282, - INT64__ = 283, - UNSIGNED_INT64__ = 284, - CHAR = 285, - SIGNED_CHAR = 286, - UNSIGNED_CHAR = 287, - VOID = 288, - BOOL = 289, - SSIZE_T = 290, - SIZE_T = 291, - OSTREAM = 292, - ISTREAM = 293, - ENUM = 294, - UNION = 295, - CLASS_REF = 296, - OTHER = 297, - CONST = 298, - CONST_PTR = 299, - CONST_EQUAL = 300, - OPERATOR = 301, - UNSIGNED = 302, - SIGNED = 303, - FRIEND = 304, - INLINE = 305, - MUTABLE = 306, - TEMPLATE = 307, - TYPENAME = 308, - TYPEDEF = 309, - NAMESPACE = 310, - USING = 311, - VTK_ID = 312, - STATIC = 313, - EXTERN = 314, - VAR_FUNCTION = 315, - VTK_LEGACY = 316, - NEW = 317, - DELETE = 318, - EXPLICIT = 319, - STATIC_CAST = 320, - DYNAMIC_CAST = 321, - CONST_CAST = 322, - REINTERPRET_CAST = 323, - OP_LSHIFT_EQ = 324, - OP_RSHIFT_EQ = 325, - OP_LSHIFT = 326, - OP_RSHIFT = 327, - OP_ARROW_POINTER = 328, - OP_ARROW = 329, - OP_INCR = 330, - OP_DECR = 331, - OP_PLUS_EQ = 332, - OP_MINUS_EQ = 333, - OP_TIMES_EQ = 334, - OP_DIVIDE_EQ = 335, - OP_REMAINDER_EQ = 336, - OP_AND_EQ = 337, - OP_OR_EQ = 338, - OP_XOR_EQ = 339, - OP_LOGIC_AND_EQ = 340, - OP_LOGIC_OR_EQ = 341, - OP_LOGIC_AND = 342, - OP_LOGIC_OR = 343, - OP_LOGIC_EQ = 344, - OP_LOGIC_NEQ = 345, - OP_LOGIC_LEQ = 346, - OP_LOGIC_GEQ = 347, - ELLIPSIS = 348, - DOUBLE_COLON = 349, - LP = 350, - LA = 351, - QT_ID = 352, - StdString = 353, - UnicodeString = 354, - IdType = 355, - FloatType = 356, - TypeInt8 = 357, - TypeUInt8 = 358, - TypeInt16 = 359, - TypeUInt16 = 360, - TypeInt32 = 361, - TypeUInt32 = 362, - TypeInt64 = 363, - TypeUInt64 = 364, - TypeFloat32 = 365, - TypeFloat64 = 366, - SetMacro = 367, - GetMacro = 368, - SetStringMacro = 369, - GetStringMacro = 370, - SetClampMacro = 371, - SetObjectMacro = 372, - GetObjectMacro = 373, - BooleanMacro = 374, - SetVector2Macro = 375, - SetVector3Macro = 376, - SetVector4Macro = 377, - SetVector6Macro = 378, - GetVector2Macro = 379, - GetVector3Macro = 380, - GetVector4Macro = 381, - GetVector6Macro = 382, - SetVectorMacro = 383, - GetVectorMacro = 384, - ViewportCoordinateMacro = 385, - WorldCoordinateMacro = 386, - TypeMacro = 387, - VTK_BYTE_SWAP_DECL = 388 + ID = 258, + VTK_ID = 259, + QT_ID = 260, + StdString = 261, + UnicodeString = 262, + OSTREAM = 263, + ISTREAM = 264, + LP = 265, + LA = 266, + STRING_LITERAL = 267, + INT_LITERAL = 268, + HEX_LITERAL = 269, + OCT_LITERAL = 270, + FLOAT_LITERAL = 271, + CHAR_LITERAL = 272, + ZERO = 273, + STRUCT = 274, + CLASS = 275, + UNION = 276, + ENUM = 277, + PUBLIC = 278, + PRIVATE = 279, + PROTECTED = 280, + CONST = 281, + VOLATILE = 282, + MUTABLE = 283, + STATIC = 284, + VIRTUAL = 285, + EXPLICIT = 286, + INLINE = 287, + FRIEND = 288, + EXTERN = 289, + OPERATOR = 290, + TEMPLATE = 291, + THROW = 292, + TYPENAME = 293, + TYPEDEF = 294, + NAMESPACE = 295, + USING = 296, + NEW = 297, + DELETE = 298, + STATIC_CAST = 299, + DYNAMIC_CAST = 300, + CONST_CAST = 301, + REINTERPRET_CAST = 302, + OP_LSHIFT_EQ = 303, + OP_RSHIFT_EQ = 304, + OP_LSHIFT = 305, + OP_RSHIFT = 306, + OP_DOT_POINTER = 307, + OP_ARROW_POINTER = 308, + OP_ARROW = 309, + OP_INCR = 310, + OP_DECR = 311, + OP_PLUS_EQ = 312, + OP_MINUS_EQ = 313, + OP_TIMES_EQ = 314, + OP_DIVIDE_EQ = 315, + OP_REMAINDER_EQ = 316, + OP_AND_EQ = 317, + OP_OR_EQ = 318, + OP_XOR_EQ = 319, + OP_LOGIC_AND = 320, + OP_LOGIC_OR = 321, + OP_LOGIC_EQ = 322, + OP_LOGIC_NEQ = 323, + OP_LOGIC_LEQ = 324, + OP_LOGIC_GEQ = 325, + ELLIPSIS = 326, + DOUBLE_COLON = 327, + OTHER = 328, + VOID = 329, + BOOL = 330, + FLOAT = 331, + DOUBLE = 332, + INT = 333, + SHORT = 334, + LONG = 335, + INT64__ = 336, + CHAR = 337, + SIGNED = 338, + UNSIGNED = 339, + SSIZE_T = 340, + SIZE_T = 341, + IdType = 342, + TypeInt8 = 343, + TypeUInt8 = 344, + TypeInt16 = 345, + TypeUInt16 = 346, + TypeInt32 = 347, + TypeUInt32 = 348, + TypeInt64 = 349, + TypeUInt64 = 350, + TypeFloat32 = 351, + TypeFloat64 = 352, + SetMacro = 353, + GetMacro = 354, + SetStringMacro = 355, + GetStringMacro = 356, + SetClampMacro = 357, + SetObjectMacro = 358, + GetObjectMacro = 359, + BooleanMacro = 360, + SetVector2Macro = 361, + SetVector3Macro = 362, + SetVector4Macro = 363, + SetVector6Macro = 364, + GetVector2Macro = 365, + GetVector3Macro = 366, + GetVector4Macro = 367, + GetVector6Macro = 368, + SetVectorMacro = 369, + GetVectorMacro = 370, + ViewportCoordinateMacro = 371, + WorldCoordinateMacro = 372, + TypeMacro = 373, + VTK_BYTE_SWAP_DECL = 374 }; #endif @@ -1399,16 +1504,16 @@ unsigned int add_indirection_to_array(unsigned int type) typedef union YYSTYPE { -/* Line 214 of yacc.c */ -#line 1182 "vtkParse.y" +/* Line 222 of yacc.c */ +#line 1302 "vtkParse.y" const char *str; unsigned int integer; -/* Line 214 of yacc.c */ -#line 1544 "vtkParse.tab.c" +/* Line 222 of yacc.c */ +#line 1635 "vtkParse.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -1420,7 +1525,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 1556 "vtkParse.tab.c" +#line 1647 "vtkParse.tab.c" #ifdef short # undef short @@ -1633,22 +1738,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 +#define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 7055 +#define YYLAST 5657 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 157 +#define YYNTOKENS 143 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 196 +#define YYNNTS 240 /* YYNRULES -- Number of rules. */ -#define YYNRULES 581 +#define YYNRULES 603 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1021 +#define YYNSTATES 968 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 388 +#define YYMAXUTOK 374 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1659,16 +1764,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 155, 2, 2, 2, 149, 150, 2, - 135, 136, 147, 145, 142, 144, 156, 148, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 141, 134, - 139, 143, 140, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 139, 2, 2, 2, 135, 133, 2, + 126, 127, 134, 138, 125, 137, 142, 136, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 124, 120, + 128, 123, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 153, 2, 154, 152, 2, 2, 2, 2, 2, + 2, 130, 2, 131, 141, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 137, 151, 138, 146, 2, 2, 2, + 2, 2, 2, 121, 140, 122, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1693,8 +1798,7 @@ static const yytype_uint8 yytranslate[] = 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, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133 + 115, 116, 117, 118, 119 }; #if YYDEBUG @@ -1702,297 +1806,299 @@ static const yytype_uint8 yytranslate[] = YYRHS. */ static const yytype_uint16 yyprhs[] = { - 0, 0, 3, 4, 5, 9, 11, 15, 17, 19, - 21, 23, 27, 32, 34, 37, 41, 44, 47, 50, - 54, 57, 59, 62, 67, 72, 77, 79, 85, 86, - 93, 98, 99, 107, 108, 119, 120, 128, 129, 140, - 145, 146, 154, 155, 166, 171, 172, 173, 177, 181, - 183, 187, 189, 191, 195, 200, 203, 206, 208, 211, - 215, 219, 222, 226, 230, 233, 239, 241, 243, 244, - 247, 249, 253, 255, 258, 261, 264, 266, 268, 270, - 271, 278, 279, 285, 286, 288, 292, 294, 298, 300, - 302, 304, 306, 308, 310, 312, 314, 316, 318, 319, - 323, 324, 329, 330, 335, 337, 339, 341, 343, 345, - 347, 349, 351, 353, 355, 357, 359, 361, 364, 368, - 372, 375, 379, 382, 384, 390, 394, 399, 404, 409, - 413, 415, 420, 425, 429, 433, 434, 440, 442, 443, - 448, 451, 454, 455, 459, 461, 463, 464, 465, 469, - 474, 479, 482, 486, 491, 497, 501, 506, 513, 521, - 527, 534, 537, 541, 544, 548, 552, 554, 557, 560, - 563, 567, 569, 572, 575, 579, 583, 585, 588, 592, - 593, 594, 603, 604, 608, 609, 610, 618, 619, 623, - 624, 627, 630, 632, 634, 638, 639, 645, 646, 647, - 657, 658, 662, 663, 669, 670, 674, 675, 679, 684, - 686, 687, 693, 694, 695, 698, 700, 702, 703, 708, - 709, 710, 716, 718, 720, 723, 724, 726, 727, 731, - 736, 741, 745, 748, 749, 752, 753, 754, 759, 760, - 763, 764, 768, 771, 772, 778, 781, 782, 788, 790, - 792, 794, 796, 798, 799, 801, 802, 803, 809, 811, - 813, 816, 818, 821, 822, 824, 826, 827, 829, 830, - 833, 834, 840, 841, 843, 844, 846, 848, 850, 852, - 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, - 874, 876, 878, 880, 882, 884, 886, 888, 890, 893, - 896, 900, 903, 906, 910, 912, 915, 917, 920, 922, - 925, 928, 930, 932, 934, 936, 937, 941, 942, 948, - 949, 955, 956, 962, 964, 965, 970, 972, 974, 976, - 978, 980, 982, 984, 986, 988, 990, 992, 996, 1000, - 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1019, 1021, - 1023, 1026, 1028, 1030, 1032, 1035, 1038, 1041, 1044, 1046, - 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, - 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, - 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, - 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, - 1128, 1130, 1132, 1133, 1140, 1141, 1143, 1144, 1145, 1150, - 1152, 1153, 1157, 1158, 1162, 1164, 1165, 1170, 1171, 1172, - 1182, 1184, 1186, 1188, 1190, 1192, 1195, 1197, 1199, 1201, - 1203, 1205, 1207, 1209, 1210, 1218, 1219, 1220, 1221, 1231, - 1232, 1238, 1239, 1245, 1246, 1247, 1258, 1259, 1267, 1268, - 1269, 1270, 1280, 1287, 1288, 1296, 1297, 1305, 1306, 1314, - 1315, 1323, 1324, 1332, 1333, 1341, 1342, 1350, 1351, 1359, - 1360, 1370, 1371, 1381, 1386, 1391, 1399, 1402, 1405, 1409, - 1413, 1415, 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431, - 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447, 1449, 1451, - 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471, - 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, - 1493, 1495, 1496, 1499, 1500, 1503, 1505, 1507, 1509, 1511, - 1513, 1515, 1517, 1519, 1521, 1523, 1525, 1527, 1529, 1531, - 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, 1549, 1551, - 1553, 1555, 1557, 1559, 1561, 1563, 1565, 1567, 1569, 1571, - 1573, 1575, 1577, 1579, 1581, 1583, 1585, 1587, 1589, 1591, - 1593, 1595, 1597, 1599, 1601, 1603, 1605, 1607, 1611, 1615, - 1619, 1623 + 0, 0, 3, 5, 6, 7, 11, 13, 15, 17, + 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, + 40, 42, 45, 48, 51, 54, 60, 65, 66, 73, + 79, 81, 84, 88, 93, 98, 104, 105, 111, 112, + 117, 118, 122, 124, 126, 128, 129, 130, 134, 138, + 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, + 160, 162, 164, 167, 170, 172, 175, 178, 181, 185, + 188, 192, 193, 195, 198, 200, 204, 206, 210, 214, + 215, 217, 218, 220, 222, 224, 226, 231, 237, 238, + 244, 247, 249, 250, 252, 254, 257, 261, 263, 264, + 269, 276, 280, 285, 288, 292, 298, 302, 304, 307, + 313, 319, 326, 332, 339, 342, 343, 347, 350, 352, + 354, 355, 356, 364, 366, 370, 372, 375, 378, 381, + 385, 389, 394, 398, 399, 405, 407, 408, 413, 414, + 415, 421, 422, 423, 429, 430, 431, 432, 440, 442, + 444, 445, 447, 448, 452, 454, 457, 460, 463, 466, + 469, 472, 476, 479, 483, 486, 490, 494, 497, 501, + 506, 509, 511, 513, 516, 518, 521, 524, 525, 526, + 534, 537, 538, 542, 543, 549, 552, 554, 557, 558, + 561, 562, 566, 568, 571, 575, 577, 578, 584, 586, + 588, 589, 590, 596, 597, 603, 604, 607, 609, 613, + 616, 617, 618, 621, 623, 624, 629, 633, 634, 635, + 641, 642, 644, 645, 649, 654, 657, 658, 661, 662, + 663, 668, 671, 672, 674, 677, 678, 684, 687, 688, + 694, 696, 698, 700, 702, 704, 705, 706, 707, 714, + 716, 717, 720, 723, 727, 729, 732, 734, 737, 738, + 740, 742, 746, 748, 750, 752, 753, 755, 756, 759, + 761, 764, 765, 770, 771, 772, 775, 777, 779, 781, + 783, 786, 789, 792, 795, 798, 802, 806, 807, 813, + 815, 817, 818, 824, 826, 828, 830, 832, 834, 836, + 838, 841, 844, 847, 850, 853, 856, 859, 861, 863, + 865, 867, 869, 871, 873, 875, 877, 879, 881, 883, + 885, 887, 889, 891, 893, 895, 897, 899, 900, 903, + 905, 907, 909, 911, 913, 916, 918, 920, 922, 924, + 926, 929, 931, 933, 935, 937, 939, 941, 943, 946, + 949, 950, 954, 955, 960, 962, 963, 967, 969, 971, + 974, 977, 980, 981, 985, 986, 991, 993, 995, 997, + 1000, 1003, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, + 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, + 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, + 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1079, 1081, + 1083, 1084, 1088, 1090, 1093, 1094, 1102, 1103, 1104, 1105, + 1115, 1116, 1122, 1123, 1129, 1130, 1131, 1142, 1143, 1151, + 1152, 1153, 1154, 1164, 1171, 1172, 1180, 1181, 1189, 1190, + 1198, 1199, 1207, 1208, 1216, 1217, 1225, 1226, 1234, 1235, + 1243, 1244, 1254, 1255, 1265, 1270, 1275, 1283, 1284, 1286, + 1289, 1292, 1296, 1300, 1302, 1304, 1306, 1308, 1310, 1312, + 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332, + 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348, 1350, 1352, + 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372, + 1374, 1376, 1378, 1380, 1382, 1384, 1386, 1388, 1390, 1392, + 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408, 1410, 1412, + 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432, + 1434, 1436, 1438, 1440, 1443, 1445, 1447, 1449, 1451, 1453, + 1455, 1457, 1459, 1461, 1463, 1465, 1466, 1469, 1471, 1473, + 1475, 1477, 1479, 1481, 1483, 1485, 1486, 1489, 1490, 1493, + 1495, 1497, 1499, 1501, 1503, 1504, 1509, 1510, 1515, 1516, + 1521, 1522, 1527, 1528, 1533, 1534, 1539, 1540, 1543, 1544, + 1547, 1549, 1551, 1553, 1555, 1557, 1559, 1561, 1563, 1565, + 1567, 1569, 1571, 1573, 1575, 1577, 1579, 1581, 1583, 1587, + 1591, 1595, 1597, 1599 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 158, 0, -1, -1, -1, 158, 159, 160, -1, 252, - -1, 178, 254, 134, -1, 196, -1, 162, -1, 161, - -1, 194, -1, 164, 254, 134, -1, 197, 164, 254, - 134, -1, 41, -1, 214, 226, -1, 197, 214, 226, - -1, 213, 226, -1, 208, 226, -1, 209, 226, -1, - 197, 208, 226, -1, 206, 226, -1, 321, -1, 299, - 134, -1, 9, 135, 346, 136, -1, 57, 135, 346, - 136, -1, 97, 135, 346, 136, -1, 134, -1, 59, - 10, 137, 158, 138, -1, -1, 55, 299, 163, 137, - 158, 138, -1, 55, 137, 346, 138, -1, -1, 4, - 280, 165, 174, 137, 171, 138, -1, -1, 4, 280, - 139, 294, 140, 166, 174, 137, 171, 138, -1, -1, - 3, 280, 167, 174, 137, 171, 138, -1, -1, 3, - 280, 139, 294, 140, 168, 174, 137, 171, 138, -1, - 3, 137, 346, 138, -1, -1, 40, 280, 169, 174, - 137, 171, 138, -1, -1, 40, 280, 139, 294, 140, - 170, 174, 137, 171, 138, -1, 40, 137, 346, 138, - -1, -1, -1, 171, 172, 173, -1, 171, 177, 141, - -1, 252, -1, 178, 254, 134, -1, 196, -1, 194, - -1, 164, 254, 134, -1, 197, 164, 254, 134, -1, - 49, 192, -1, 49, 191, -1, 41, -1, 214, 226, - -1, 49, 214, 226, -1, 197, 214, 226, -1, 211, - 226, -1, 49, 211, 226, -1, 197, 211, 226, -1, - 207, 226, -1, 133, 135, 346, 136, 134, -1, 321, - -1, 134, -1, -1, 141, 175, -1, 176, -1, 176, - 142, 175, -1, 297, -1, 6, 297, -1, 7, 297, - -1, 5, 297, -1, 5, -1, 6, -1, 7, -1, - -1, 39, 280, 179, 137, 181, 138, -1, -1, 39, - 180, 137, 181, 138, -1, -1, 182, -1, 182, 142, - 181, -1, 280, -1, 280, 143, 185, -1, 184, -1, - 280, -1, 298, -1, 290, -1, 16, -1, 11, -1, - 13, -1, 12, -1, 15, -1, 183, -1, -1, 189, - 186, 185, -1, -1, 183, 190, 187, 185, -1, -1, - 135, 188, 185, 136, -1, 144, -1, 145, -1, 146, - -1, 144, -1, 145, -1, 147, -1, 148, -1, 149, - -1, 150, -1, 151, -1, 152, -1, 71, -1, 72, - -1, 197, 192, -1, 4, 280, 193, -1, 3, 280, - 193, -1, 3, 193, -1, 40, 280, 193, -1, 40, - 193, -1, 134, -1, 137, 346, 138, 347, 134, -1, - 141, 347, 134, -1, 195, 285, 262, 134, -1, 195, - 164, 248, 134, -1, 195, 178, 248, 134, -1, 195, - 60, 134, -1, 54, -1, 56, 55, 297, 134, -1, - 56, 53, 297, 134, -1, 56, 297, 134, -1, 52, - 139, 140, -1, -1, 52, 139, 198, 199, 140, -1, - 201, -1, -1, 201, 142, 200, 199, -1, 304, 204, - -1, 203, 204, -1, -1, 202, 197, 204, -1, 4, - -1, 53, -1, -1, -1, 280, 205, 249, -1, 61, - 135, 208, 136, -1, 61, 135, 211, 136, -1, 283, - 223, -1, 283, 210, 223, -1, 299, 94, 146, 238, - -1, 50, 299, 94, 146, 238, -1, 299, 94, 231, - -1, 50, 299, 94, 231, -1, 299, 94, 299, 94, - 146, 238, -1, 50, 299, 94, 299, 94, 146, 238, - -1, 299, 94, 299, 94, 231, -1, 50, 299, 94, - 299, 94, 231, -1, 299, 94, -1, 210, 299, 94, - -1, 146, 238, -1, 50, 146, 238, -1, 8, 146, - 238, -1, 231, -1, 50, 231, -1, 212, 231, -1, - 283, 223, -1, 8, 283, 223, -1, 64, -1, 50, - 64, -1, 64, 50, -1, 299, 94, 215, -1, 283, - 210, 218, -1, 215, -1, 283, 218, -1, 8, 285, - 218, -1, -1, -1, 46, 283, 135, 216, 241, 136, - 217, 225, -1, -1, 220, 219, 225, -1, -1, -1, - 46, 344, 221, 135, 222, 241, 136, -1, -1, 227, - 224, 225, -1, -1, 143, 16, -1, 45, 16, -1, - 43, -1, 134, -1, 137, 346, 138, -1, -1, 280, - 135, 228, 241, 136, -1, -1, -1, 280, 139, 229, - 294, 140, 135, 230, 241, 136, -1, -1, 233, 232, - 235, -1, -1, 280, 135, 234, 241, 136, -1, -1, - 141, 237, 236, -1, -1, 142, 237, 236, -1, 297, - 135, 346, 136, -1, 239, -1, -1, 280, 135, 240, - 241, 136, -1, -1, -1, 242, 243, -1, 93, -1, - 245, -1, -1, 245, 142, 244, 243, -1, -1, -1, - 246, 285, 260, 247, 249, -1, 60, -1, 280, -1, - 300, 280, -1, -1, 250, -1, -1, 143, 251, 307, - -1, 283, 253, 255, 134, -1, 58, 60, 255, 134, - -1, 60, 255, 134, -1, 262, 249, -1, -1, 257, - 255, -1, -1, -1, 255, 142, 256, 257, -1, -1, - 258, 253, -1, -1, 300, 259, 253, -1, 271, 273, - -1, -1, 264, 269, 136, 261, 267, -1, 272, 273, - -1, -1, 265, 270, 136, 263, 267, -1, 135, -1, - 95, -1, 96, -1, 95, -1, 96, -1, -1, 43, - -1, -1, -1, 135, 268, 241, 136, 266, -1, 274, - -1, 260, -1, 300, 260, -1, 262, -1, 300, 262, - -1, -1, 272, -1, 280, -1, -1, 274, -1, -1, - 275, 276, -1, -1, 278, 153, 277, 279, 154, -1, - -1, 276, -1, -1, 185, -1, 57, -1, 97, -1, - 9, -1, 38, -1, 37, -1, 98, -1, 99, -1, - 281, -1, 282, -1, 102, -1, 103, -1, 104, -1, - 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, - 110, -1, 111, -1, 100, -1, 101, -1, 285, -1, - 51, 285, -1, 59, 285, -1, 59, 10, 285, -1, - 50, 285, -1, 284, 285, -1, 50, 284, 285, -1, - 58, -1, 58, 50, -1, 286, -1, 286, 300, -1, - 288, -1, 287, 288, -1, 288, 287, -1, 43, -1, - 303, -1, 290, -1, 298, -1, -1, 53, 289, 297, - -1, -1, 57, 139, 291, 294, 140, -1, -1, 9, - 139, 292, 294, 140, -1, -1, 97, 139, 293, 294, - 140, -1, 296, -1, -1, 296, 142, 295, 294, -1, - 285, -1, 184, -1, 57, -1, 9, -1, 97, -1, - 38, -1, 37, -1, 98, -1, 99, -1, 290, -1, - 298, -1, 299, 94, 297, -1, 290, 94, 297, -1, - 9, -1, 97, -1, 57, -1, 38, -1, 37, -1, - 98, -1, 99, -1, 150, -1, 301, 150, -1, 301, - -1, 302, -1, 301, 302, -1, 147, -1, 44, -1, - 304, -1, 4, 305, -1, 3, 305, -1, 40, 305, - -1, 39, 305, -1, 306, -1, 305, -1, 98, -1, - 99, -1, 37, -1, 38, -1, 9, -1, 57, -1, - 97, -1, 33, -1, 34, -1, 35, -1, 36, -1, - 102, -1, 103, -1, 104, -1, 105, -1, 106, -1, - 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, - 100, -1, 101, -1, 17, -1, 18, -1, 19, -1, - 30, -1, 31, -1, 32, -1, 20, -1, 21, -1, - 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, - 27, -1, 28, -1, 29, -1, 48, -1, 47, -1, - 312, -1, -1, 137, 308, 307, 310, 309, 138, -1, - -1, 142, -1, -1, -1, 310, 142, 311, 307, -1, - 320, -1, -1, 145, 313, 320, -1, -1, 144, 314, - 320, -1, 319, -1, -1, 135, 315, 312, 136, -1, - -1, -1, 318, 139, 316, 286, 140, 135, 317, 312, - 136, -1, 65, -1, 67, -1, 66, -1, 68, -1, - 10, -1, 319, 10, -1, 16, -1, 11, -1, 13, - -1, 12, -1, 14, -1, 15, -1, 297, -1, -1, - 112, 135, 280, 142, 322, 285, 136, -1, -1, -1, - -1, 113, 135, 323, 280, 142, 324, 285, 325, 136, - -1, -1, 114, 135, 326, 280, 136, -1, -1, 115, - 135, 327, 280, 136, -1, -1, -1, 116, 135, 280, - 142, 328, 303, 329, 142, 347, 136, -1, -1, 117, - 135, 280, 142, 330, 303, 136, -1, -1, -1, -1, - 118, 135, 331, 280, 142, 332, 303, 333, 136, -1, - 119, 135, 280, 142, 303, 136, -1, -1, 120, 135, - 280, 142, 334, 303, 136, -1, -1, 124, 135, 280, - 142, 335, 303, 136, -1, -1, 121, 135, 280, 142, - 336, 303, 136, -1, -1, 125, 135, 280, 142, 337, - 303, 136, -1, -1, 122, 135, 280, 142, 338, 303, - 136, -1, -1, 126, 135, 280, 142, 339, 303, 136, - -1, -1, 123, 135, 280, 142, 340, 303, 136, -1, - -1, 127, 135, 280, 142, 341, 303, 136, -1, -1, - 128, 135, 280, 142, 342, 303, 142, 11, 136, -1, - -1, 129, 135, 280, 142, 343, 303, 142, 11, 136, - -1, 130, 135, 280, 136, -1, 131, 135, 280, 136, - -1, 132, 135, 280, 142, 280, 309, 136, -1, 135, - 136, -1, 153, 154, -1, 62, 153, 154, -1, 63, - 153, 154, -1, 345, -1, 143, -1, 147, -1, 148, - -1, 144, -1, 145, -1, 155, -1, 146, -1, 142, - -1, 139, -1, 140, -1, 150, -1, 151, -1, 152, - -1, 149, -1, 62, -1, 63, -1, 69, -1, 70, - -1, 71, -1, 72, -1, 73, -1, 74, -1, 77, - -1, 78, -1, 79, -1, 80, -1, 81, -1, 75, - -1, 76, -1, 82, -1, 83, -1, 84, -1, 85, - -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, - -1, 91, -1, 92, -1, -1, 346, 348, -1, -1, - 347, 349, -1, 134, -1, 349, -1, 42, -1, 350, - -1, 352, -1, 351, -1, 54, -1, 345, -1, 141, - -1, 156, -1, 94, -1, 4, -1, 52, -1, 38, - -1, 37, -1, 98, -1, 99, -1, 306, -1, 13, - -1, 11, -1, 12, -1, 14, -1, 15, -1, 10, - -1, 41, -1, 43, -1, 44, -1, 45, -1, 3, - -1, 46, -1, 58, -1, 50, -1, 8, -1, 39, - -1, 40, -1, 53, -1, 16, -1, 60, -1, 93, - -1, 5, -1, 7, -1, 6, -1, 55, -1, 56, - -1, 59, -1, 9, -1, 57, -1, 97, -1, 67, - -1, 66, -1, 65, -1, 68, -1, 137, 346, 138, - -1, 153, 346, 154, -1, 135, 346, 136, -1, 95, - 346, 136, -1, 96, 346, 136, -1 + 144, 0, -1, 145, -1, -1, -1, 145, 146, 147, + -1, 198, -1, 196, -1, 153, -1, 150, -1, 152, + -1, 149, -1, 186, -1, 259, -1, 175, -1, 155, + -1, 216, -1, 148, -1, 327, -1, 289, 120, -1, + 120, -1, 199, 155, -1, 199, 216, -1, 199, 183, + -1, 199, 148, -1, 34, 12, 121, 145, 122, -1, + 40, 121, 375, 122, -1, -1, 40, 299, 151, 121, + 145, 122, -1, 40, 299, 123, 291, 120, -1, 154, + -1, 199, 154, -1, 161, 289, 120, -1, 302, 161, + 289, 120, -1, 156, 300, 261, 120, -1, 302, 156, + 300, 261, 120, -1, -1, 158, 157, 121, 162, 122, + -1, -1, 161, 289, 159, 168, -1, -1, 161, 160, + 168, -1, 20, -1, 19, -1, 21, -1, -1, -1, + 162, 163, 165, -1, 162, 164, 124, -1, 23, -1, + 24, -1, 25, -1, 196, -1, 153, -1, 167, -1, + 186, -1, 259, -1, 175, -1, 155, -1, 220, -1, + 166, -1, 327, -1, 119, 381, -1, 289, 120, -1, + 120, -1, 199, 155, -1, 199, 220, -1, 33, 184, + -1, 33, 199, 184, -1, 33, 153, -1, 33, 221, + 237, -1, -1, 169, -1, 124, 170, -1, 171, -1, + 170, 125, 171, -1, 289, -1, 30, 173, 289, -1, + 174, 172, 289, -1, -1, 30, -1, -1, 174, -1, + 23, -1, 24, -1, 25, -1, 176, 300, 261, 120, + -1, 302, 176, 300, 261, 120, -1, -1, 178, 121, + 177, 179, 122, -1, 22, 289, -1, 22, -1, -1, + 180, -1, 181, -1, 180, 125, -1, 180, 125, 181, + -1, 298, -1, -1, 298, 123, 182, 355, -1, 308, + 292, 298, 123, 376, 120, -1, 161, 289, 185, -1, + 302, 161, 289, 185, -1, 161, 185, -1, 302, 161, + 185, -1, 121, 375, 122, 376, 120, -1, 124, 376, + 120, -1, 187, -1, 302, 187, -1, 39, 308, 195, + 189, 120, -1, 39, 156, 300, 188, 120, -1, 39, + 302, 156, 300, 188, 120, -1, 39, 176, 300, 188, + 120, -1, 39, 302, 176, 300, 188, 120, -1, 190, + 189, -1, -1, 189, 125, 190, -1, 265, 195, -1, + 268, -1, 192, -1, -1, -1, 279, 126, 193, 249, + 127, 194, 275, -1, 191, -1, 41, 197, 120, -1, + 289, -1, 38, 289, -1, 292, 231, -1, 292, 226, + -1, 295, 292, 231, -1, 295, 292, 226, -1, 41, + 40, 289, 120, -1, 36, 128, 129, -1, -1, 36, + 128, 200, 201, 129, -1, 203, -1, -1, 201, 125, + 202, 203, -1, -1, -1, 204, 314, 266, 205, 212, + -1, -1, -1, 206, 211, 266, 207, 212, -1, -1, + -1, -1, 208, 199, 20, 209, 266, 210, 212, -1, + 20, -1, 38, -1, -1, 213, -1, -1, 123, 214, + 215, -1, 363, -1, 215, 363, -1, 217, 237, -1, + 222, 237, -1, 218, 237, -1, 219, 237, -1, 308, + 233, -1, 308, 292, 233, -1, 292, 241, -1, 302, + 292, 241, -1, 292, 223, -1, 302, 292, 223, -1, + 308, 292, 227, -1, 221, 237, -1, 292, 231, 120, + -1, 302, 292, 231, 120, -1, 308, 233, -1, 222, + -1, 241, -1, 302, 241, -1, 223, -1, 302, 223, + -1, 308, 227, -1, -1, -1, 226, 126, 224, 249, + 127, 225, 234, -1, 232, 308, -1, -1, 229, 228, + 234, -1, -1, 231, 126, 230, 249, 127, -1, 232, + 351, -1, 35, -1, 238, 234, -1, -1, 234, 235, + -1, -1, 37, 236, 369, -1, 26, -1, 123, 18, + -1, 121, 375, 122, -1, 120, -1, -1, 240, 126, + 239, 249, 127, -1, 298, -1, 296, -1, -1, -1, + 244, 242, 246, 243, 234, -1, -1, 240, 126, 245, + 249, 127, -1, -1, 124, 247, -1, 248, -1, 247, + 125, 248, -1, 289, 381, -1, -1, -1, 250, 251, + -1, 253, -1, -1, 251, 125, 252, 253, -1, 251, + 125, 71, -1, -1, -1, 254, 308, 266, 255, 256, + -1, -1, 257, -1, -1, 123, 258, 355, -1, 308, + 260, 262, 120, -1, 268, 256, -1, -1, 264, 262, + -1, -1, -1, 262, 125, 263, 264, -1, 265, 260, + -1, -1, 322, -1, 278, 281, -1, -1, 270, 276, + 127, 267, 272, -1, 279, 281, -1, -1, 271, 277, + 127, 269, 272, -1, 126, -1, 10, -1, 11, -1, + 10, -1, 11, -1, -1, -1, -1, 126, 273, 249, + 127, 274, 275, -1, 282, -1, -1, 275, 28, -1, + 275, 26, -1, 275, 37, 381, -1, 266, -1, 322, + 266, -1, 268, -1, 322, 268, -1, -1, 279, -1, + 298, -1, 298, 124, 280, -1, 15, -1, 13, -1, + 14, -1, -1, 282, -1, -1, 283, 284, -1, 285, + -1, 284, 285, -1, -1, 130, 286, 287, 131, -1, + -1, -1, 288, 355, -1, 290, -1, 291, -1, 298, + -1, 296, -1, 292, 290, -1, 295, 290, -1, 295, + 291, -1, 294, 295, -1, 296, 295, -1, 292, 294, + 295, -1, 292, 296, 295, -1, -1, 292, 36, 293, + 296, 295, -1, 299, -1, 72, -1, -1, 299, 128, + 297, 361, 129, -1, 4, -1, 5, -1, 3, -1, + 9, -1, 8, -1, 6, -1, 7, -1, 132, 4, + -1, 132, 5, -1, 132, 3, -1, 132, 9, -1, + 132, 8, -1, 132, 6, -1, 132, 7, -1, 86, + -1, 85, -1, 88, -1, 89, -1, 90, -1, 91, + -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, + -1, 97, -1, 87, -1, 3, -1, 5, -1, 4, + -1, 9, -1, 8, -1, 6, -1, 7, -1, -1, + 300, 301, -1, 303, -1, 321, -1, 39, -1, 33, + -1, 303, -1, 302, 303, -1, 304, -1, 305, -1, + 306, -1, 28, -1, 34, -1, 34, 12, -1, 29, + -1, 32, -1, 30, -1, 31, -1, 26, -1, 27, + -1, 306, -1, 307, 306, -1, 309, 265, -1, -1, + 312, 310, 300, -1, -1, 302, 312, 311, 300, -1, + 319, -1, -1, 38, 313, 289, -1, 296, -1, 291, + -1, 161, 289, -1, 22, 289, -1, 315, 265, -1, + -1, 318, 316, 300, -1, -1, 302, 312, 317, 300, + -1, 319, -1, 296, -1, 291, -1, 19, 289, -1, + 21, 289, -1, 22, 289, -1, 321, -1, 320, -1, + 6, -1, 7, -1, 8, -1, 9, -1, 3, -1, + 4, -1, 5, -1, 85, -1, 86, -1, 88, -1, + 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, + 94, -1, 95, -1, 96, -1, 97, -1, 87, -1, + 74, -1, 75, -1, 76, -1, 77, -1, 82, -1, + 78, -1, 79, -1, 80, -1, 81, -1, 83, -1, + 84, -1, 323, -1, 326, -1, 326, 323, -1, 133, + -1, 134, -1, -1, 134, 325, 307, -1, 324, -1, + 326, 324, -1, -1, 98, 126, 298, 125, 328, 308, + 127, -1, -1, -1, -1, 99, 126, 329, 298, 125, + 330, 308, 331, 127, -1, -1, 100, 126, 332, 298, + 127, -1, -1, 101, 126, 333, 298, 127, -1, -1, + -1, 102, 126, 298, 125, 334, 308, 335, 125, 376, + 127, -1, -1, 103, 126, 298, 125, 336, 308, 127, + -1, -1, -1, -1, 104, 126, 337, 298, 125, 338, + 308, 339, 127, -1, 105, 126, 298, 125, 308, 127, + -1, -1, 106, 126, 298, 125, 340, 308, 127, -1, + -1, 110, 126, 298, 125, 341, 308, 127, -1, -1, + 107, 126, 298, 125, 342, 308, 127, -1, -1, 111, + 126, 298, 125, 343, 308, 127, -1, -1, 108, 126, + 298, 125, 344, 308, 127, -1, -1, 112, 126, 298, + 125, 345, 308, 127, -1, -1, 109, 126, 298, 125, + 346, 308, 127, -1, -1, 113, 126, 298, 125, 347, + 308, 127, -1, -1, 114, 126, 298, 125, 348, 308, + 125, 13, 127, -1, -1, 115, 126, 298, 125, 349, + 308, 125, 13, 127, -1, 116, 126, 298, 127, -1, + 117, 126, 298, 127, -1, 118, 126, 298, 125, 298, + 350, 127, -1, -1, 125, -1, 126, 127, -1, 130, + 131, -1, 42, 130, 131, -1, 43, 130, 131, -1, + 128, -1, 129, -1, 125, -1, 123, -1, 352, -1, + 135, -1, 134, -1, 136, -1, 137, -1, 138, -1, + 139, -1, 132, -1, 133, -1, 140, -1, 141, -1, + 42, -1, 43, -1, 48, -1, 49, -1, 50, -1, + 51, -1, 52, -1, 53, -1, 54, -1, 57, -1, + 58, -1, 59, -1, 60, -1, 61, -1, 55, -1, + 56, -1, 62, -1, 63, -1, 64, -1, 65, -1, + 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, + 39, -1, 38, -1, 20, -1, 19, -1, 21, -1, + 36, -1, 23, -1, 25, -1, 24, -1, 26, -1, + 29, -1, 32, -1, 30, -1, 34, -1, 40, -1, + 35, -1, 22, -1, 37, -1, 46, -1, 45, -1, + 44, -1, 47, -1, 15, -1, 13, -1, 14, -1, + 16, -1, 17, -1, 12, -1, 18, -1, 358, -1, + 355, 358, -1, 367, -1, 369, -1, 373, -1, 352, + -1, 124, -1, 142, -1, 72, -1, 353, -1, 354, + -1, 321, -1, 320, -1, -1, 357, 359, -1, 356, + -1, 128, -1, 129, -1, 358, -1, 123, -1, 125, + -1, 359, -1, 120, -1, -1, 361, 364, -1, -1, + 362, 360, -1, 365, -1, 356, -1, 363, -1, 123, + -1, 125, -1, -1, 128, 366, 361, 129, -1, -1, + 130, 368, 357, 131, -1, -1, 126, 370, 357, 127, + -1, -1, 10, 371, 357, 127, -1, -1, 11, 372, + 357, 127, -1, -1, 121, 374, 362, 122, -1, -1, + 375, 377, -1, -1, 376, 378, -1, 378, -1, 120, + -1, 379, -1, 381, -1, 380, -1, 72, -1, 71, + -1, 352, -1, 124, -1, 142, -1, 128, -1, 129, + -1, 123, -1, 125, -1, 353, -1, 354, -1, 319, + -1, 73, -1, 121, 375, 122, -1, 130, 375, 131, + -1, 382, 375, 127, -1, 126, -1, 10, -1, 11, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 1332, 1332, 1333, 1332, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1364, 1370, 1370, - 1372, 1378, 1378, 1380, 1380, 1382, 1382, 1384, 1384, 1386, - 1387, 1387, 1389, 1389, 1391, 1393, 1395, 1394, 1397, 1400, - 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, - 1412, 1413, 1414, 1416, 1417, 1418, 1419, 1420, 1422, 1422, - 1424, 1424, 1426, 1427, 1428, 1429, 1436, 1437, 1438, 1448, - 1448, 1450, 1450, 1453, 1453, 1453, 1455, 1456, 1458, 1459, - 1460, 1460, 1462, 1462, 1462, 1462, 1462, 1464, 1465, 1465, - 1469, 1469, 1473, 1473, 1478, 1478, 1479, 1481, 1481, 1482, - 1482, 1483, 1483, 1484, 1484, 1485, 1486, 1492, 1494, 1495, - 1496, 1497, 1498, 1500, 1501, 1502, 1508, 1531, 1532, 1533, - 1535, 1542, 1543, 1544, 1551, 1552, 1552, 1558, 1559, 1559, - 1562, 1572, 1580, 1580, 1592, 1593, 1595, 1595, 1595, 1602, - 1604, 1610, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, - 1620, 1622, 1623, 1625, 1626, 1627, 1632, 1633, 1634, 1641, - 1642, 1650, 1650, 1650, 1652, 1653, 1656, 1657, 1658, 1668, - 1672, 1667, 1684, 1684, 1693, 1694, 1693, 1701, 1701, 1710, - 1711, 1720, 1730, 1736, 1736, 1739, 1738, 1743, 1744, 1743, - 1751, 1751, 1758, 1758, 1760, 1760, 1762, 1762, 1764, 1766, - 1775, 1775, 1781, 1781, 1781, 1784, 1785, 1786, 1786, 1789, - 1791, 1789, 1820, 1844, 1844, 1846, 1846, 1848, 1848, 1855, - 1856, 1857, 1859, 1910, 1911, 1913, 1914, 1914, 1917, 1917, - 1918, 1918, 1922, 1923, 1923, 1937, 1938, 1938, 1951, 1952, - 1954, 1957, 1959, 1962, 1962, 1964, 1965, 1965, 1967, 1970, - 1971, 1975, 1976, 1979, 1979, 1981, 1983, 1983, 1985, 1985, - 1987, 1987, 1989, 1989, 1991, 1992, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013, - 2014, 2015, 2016, 2017, 2018, 2021, 2022, 2029, 2030, 2031, - 2032, 2034, 2035, 2037, 2041, 2042, 2044, 2045, 2047, 2048, - 2049, 2051, 2053, 2054, 2056, 2058, 2058, 2062, 2062, 2065, - 2065, 2068, 2068, 2072, 2073, 2073, 2076, 2076, 2078, 2079, - 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2088, 2093, 2099, - 2099, 2099, 2099, 2099, 2100, 2100, 2116, 2117, 2118, 2123, - 2124, 2136, 2137, 2140, 2141, 2142, 2143, 2144, 2147, 2148, - 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2160, 2161, 2162, - 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, - 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2183, - 2184, 2186, 2187, 2189, 2190, 2192, 2193, 2195, 2196, 2198, - 2199, 2205, 2206, 2206, 2212, 2212, 2214, 2215, 2215, 2220, - 2221, 2221, 2222, 2222, 2226, 2227, 2227, 2228, 2230, 2228, - 2250, 2251, 2252, 2253, 2255, 2256, 2259, 2260, 2261, 2262, - 2263, 2264, 2265, 2275, 2275, 2285, 2286, 2286, 2285, 2295, - 2295, 2305, 2305, 2314, 2314, 2314, 2347, 2346, 2357, 2358, - 2358, 2357, 2367, 2385, 2385, 2390, 2390, 2395, 2395, 2400, - 2400, 2405, 2405, 2410, 2410, 2415, 2415, 2420, 2420, 2425, - 2425, 2442, 2442, 2456, 2493, 2531, 2588, 2589, 2590, 2591, - 2592, 2594, 2595, 2595, 2596, 2596, 2597, 2597, 2598, 2598, - 2599, 2599, 2600, 2600, 2601, 2602, 2603, 2604, 2605, 2606, - 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, - 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, - 2627, 2633, 2633, 2634, 2634, 2636, 2636, 2638, 2638, 2638, - 2638, 2638, 2639, 2639, 2639, 2639, 2639, 2639, 2640, 2640, - 2640, 2640, 2640, 2641, 2641, 2641, 2641, 2641, 2642, 2642, - 2642, 2642, 2642, 2642, 2643, 2643, 2643, 2643, 2643, 2643, - 2643, 2644, 2644, 2644, 2644, 2644, 2644, 2645, 2645, 2645, - 2645, 2645, 2645, 2646, 2646, 2646, 2646, 2648, 2649, 2650, - 2650, 2650 + 0, 1460, 1460, 1462, 1464, 1463, 1474, 1475, 1476, 1477, + 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, + 1488, 1491, 1492, 1493, 1494, 1501, 1508, 1509, 1509, 1513, + 1520, 1521, 1524, 1525, 1528, 1529, 1532, 1532, 1546, 1546, + 1548, 1548, 1552, 1553, 1554, 1556, 1558, 1557, 1566, 1570, + 1571, 1572, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, + 1583, 1584, 1585, 1586, 1587, 1590, 1591, 1594, 1595, 1596, + 1597, 1599, 1600, 1603, 1606, 1607, 1610, 1612, 1614, 1618, + 1619, 1622, 1623, 1626, 1627, 1628, 1639, 1640, 1644, 1644, + 1657, 1658, 1660, 1661, 1664, 1665, 1666, 1669, 1670, 1670, + 1678, 1681, 1682, 1683, 1684, 1687, 1688, 1696, 1697, 1700, + 1701, 1703, 1705, 1707, 1711, 1713, 1714, 1717, 1720, 1721, + 1724, 1725, 1724, 1729, 1763, 1766, 1767, 1768, 1770, 1772, + 1774, 1778, 1785, 1788, 1787, 1805, 1807, 1806, 1811, 1813, + 1811, 1815, 1817, 1815, 1819, 1820, 1822, 1819, 1833, 1834, + 1836, 1837, 1840, 1840, 1850, 1851, 1859, 1860, 1861, 1862, + 1865, 1868, 1869, 1870, 1873, 1874, 1875, 1878, 1879, 1880, + 1883, 1884, 1885, 1886, 1889, 1890, 1891, 1895, 1899, 1894, + 1911, 1915, 1915, 1926, 1925, 1934, 1938, 1941, 1950, 1951, + 1954, 1954, 1955, 1956, 1964, 1965, 1969, 1968, 1976, 1977, + 1985, 1986, 1985, 2004, 2004, 2007, 2008, 2011, 2012, 2015, + 2021, 2022, 2022, 2025, 2026, 2026, 2028, 2032, 2034, 2032, + 2058, 2059, 2062, 2062, 2070, 2073, 2132, 2133, 2135, 2136, + 2136, 2139, 2142, 2143, 2147, 2148, 2148, 2167, 2168, 2168, + 2186, 2187, 2189, 2193, 2195, 2198, 2199, 2200, 2199, 2205, + 2207, 2208, 2209, 2210, 2213, 2214, 2218, 2219, 2223, 2224, + 2227, 2228, 2231, 2232, 2233, 2236, 2237, 2240, 2240, 2243, + 2244, 2247, 2247, 2250, 2251, 2251, 2258, 2259, 2262, 2263, + 2266, 2268, 2270, 2274, 2276, 2278, 2280, 2282, 2282, 2287, + 2290, 2293, 2293, 2308, 2309, 2310, 2311, 2312, 2313, 2314, + 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, + 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, + 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2354, 2355, 2358, + 2359, 2361, 2362, 2365, 2366, 2369, 2370, 2371, 2374, 2375, + 2376, 2377, 2380, 2381, 2382, 2385, 2386, 2389, 2390, 2399, + 2402, 2402, 2404, 2404, 2408, 2409, 2409, 2411, 2413, 2415, + 2417, 2421, 2424, 2424, 2426, 2426, 2430, 2431, 2433, 2435, + 2437, 2439, 2443, 2444, 2447, 2448, 2449, 2450, 2451, 2452, + 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, + 2463, 2464, 2465, 2466, 2469, 2470, 2471, 2472, 2473, 2474, + 2475, 2476, 2477, 2478, 2479, 2499, 2500, 2501, 2504, 2507, + 2508, 2508, 2523, 2524, 2541, 2541, 2551, 2552, 2552, 2551, + 2561, 2561, 2571, 2571, 2580, 2580, 2580, 2613, 2612, 2623, + 2624, 2624, 2623, 2633, 2651, 2651, 2656, 2656, 2661, 2661, + 2666, 2666, 2671, 2671, 2676, 2676, 2681, 2681, 2686, 2686, + 2691, 2691, 2708, 2708, 2722, 2759, 2797, 2834, 2835, 2842, + 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2853, 2854, + 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, + 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, + 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, + 2885, 2886, 2887, 2890, 2891, 2892, 2893, 2894, 2895, 2896, + 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, + 2907, 2908, 2909, 2910, 2911, 2914, 2915, 2916, 2917, 2918, + 2919, 2920, 2927, 2928, 2931, 2932, 2933, 2934, 2965, 2965, + 2966, 2967, 2968, 2969, 2970, 2993, 2994, 2996, 2997, 2998, + 3000, 3001, 3002, 3004, 3005, 3007, 3008, 3010, 3011, 3014, + 3015, 3018, 3019, 3020, 3024, 3023, 3037, 3037, 3041, 3041, + 3043, 3043, 3045, 3045, 3049, 3049, 3054, 3055, 3057, 3058, + 3061, 3062, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3071, + 3071, 3071, 3071, 3071, 3072, 3072, 3073, 3074, 3077, 3080, + 3083, 3086, 3086, 3086 }; #endif @@ -2001,26 +2107,22 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "STRUCT", "CLASS", "PUBLIC", "PRIVATE", - "PROTECTED", "VIRTUAL", "ID", "STRING_LITERAL", "INT_LITERAL", - "HEX_LITERAL", "OCT_LITERAL", "FLOAT_LITERAL", "CHAR_LITERAL", "ZERO", - "FLOAT", "DOUBLE", "LONG_DOUBLE", "INT", "UNSIGNED_INT", "SHORT", - "UNSIGNED_SHORT", "LONG", "UNSIGNED_LONG", "LONG_LONG", - "UNSIGNED_LONG_LONG", "INT64__", "UNSIGNED_INT64__", "CHAR", - "SIGNED_CHAR", "UNSIGNED_CHAR", "VOID", "BOOL", "SSIZE_T", "SIZE_T", - "OSTREAM", "ISTREAM", "ENUM", "UNION", "CLASS_REF", "OTHER", "CONST", - "CONST_PTR", "CONST_EQUAL", "OPERATOR", "UNSIGNED", "SIGNED", "FRIEND", - "INLINE", "MUTABLE", "TEMPLATE", "TYPENAME", "TYPEDEF", "NAMESPACE", - "USING", "VTK_ID", "STATIC", "EXTERN", "VAR_FUNCTION", "VTK_LEGACY", - "NEW", "DELETE", "EXPLICIT", "STATIC_CAST", "DYNAMIC_CAST", "CONST_CAST", + "$end", "error", "$undefined", "ID", "VTK_ID", "QT_ID", "StdString", + "UnicodeString", "OSTREAM", "ISTREAM", "LP", "LA", "STRING_LITERAL", + "INT_LITERAL", "HEX_LITERAL", "OCT_LITERAL", "FLOAT_LITERAL", + "CHAR_LITERAL", "ZERO", "STRUCT", "CLASS", "UNION", "ENUM", "PUBLIC", + "PRIVATE", "PROTECTED", "CONST", "VOLATILE", "MUTABLE", "STATIC", + "VIRTUAL", "EXPLICIT", "INLINE", "FRIEND", "EXTERN", "OPERATOR", + "TEMPLATE", "THROW", "TYPENAME", "TYPEDEF", "NAMESPACE", "USING", "NEW", + "DELETE", "STATIC_CAST", "DYNAMIC_CAST", "CONST_CAST", "REINTERPRET_CAST", "OP_LSHIFT_EQ", "OP_RSHIFT_EQ", "OP_LSHIFT", - "OP_RSHIFT", "OP_ARROW_POINTER", "OP_ARROW", "OP_INCR", "OP_DECR", - "OP_PLUS_EQ", "OP_MINUS_EQ", "OP_TIMES_EQ", "OP_DIVIDE_EQ", - "OP_REMAINDER_EQ", "OP_AND_EQ", "OP_OR_EQ", "OP_XOR_EQ", - "OP_LOGIC_AND_EQ", "OP_LOGIC_OR_EQ", "OP_LOGIC_AND", "OP_LOGIC_OR", - "OP_LOGIC_EQ", "OP_LOGIC_NEQ", "OP_LOGIC_LEQ", "OP_LOGIC_GEQ", - "ELLIPSIS", "DOUBLE_COLON", "LP", "LA", "QT_ID", "StdString", - "UnicodeString", "IdType", "FloatType", "TypeInt8", "TypeUInt8", + "OP_RSHIFT", "OP_DOT_POINTER", "OP_ARROW_POINTER", "OP_ARROW", "OP_INCR", + "OP_DECR", "OP_PLUS_EQ", "OP_MINUS_EQ", "OP_TIMES_EQ", "OP_DIVIDE_EQ", + "OP_REMAINDER_EQ", "OP_AND_EQ", "OP_OR_EQ", "OP_XOR_EQ", "OP_LOGIC_AND", + "OP_LOGIC_OR", "OP_LOGIC_EQ", "OP_LOGIC_NEQ", "OP_LOGIC_LEQ", + "OP_LOGIC_GEQ", "ELLIPSIS", "DOUBLE_COLON", "OTHER", "VOID", "BOOL", + "FLOAT", "DOUBLE", "INT", "SHORT", "LONG", "INT64__", "CHAR", "SIGNED", + "UNSIGNED", "SSIZE_T", "SIZE_T", "IdType", "TypeInt8", "TypeUInt8", "TypeInt16", "TypeUInt16", "TypeInt32", "TypeUInt32", "TypeInt64", "TypeUInt64", "TypeFloat32", "TypeFloat64", "SetMacro", "GetMacro", "SetStringMacro", "GetStringMacro", "SetClampMacro", "SetObjectMacro", @@ -2028,46 +2130,73 @@ static const char *const yytname[] = "SetVector4Macro", "SetVector6Macro", "GetVector2Macro", "GetVector3Macro", "GetVector4Macro", "GetVector6Macro", "SetVectorMacro", "GetVectorMacro", "ViewportCoordinateMacro", - "WorldCoordinateMacro", "TypeMacro", "VTK_BYTE_SWAP_DECL", "';'", "'('", - "')'", "'{'", "'}'", "'<'", "'>'", "':'", "','", "'='", "'-'", "'+'", - "'~'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", "'['", "']'", "'!'", - "'.'", "$accept", "strt", "$@1", "file_item", "extern", "namespace", - "$@2", "class_def", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", - "class_def_body", "$@9", "class_def_item", "optional_scope", - "scope_list", "scope_list_item", "scope_type", "enum_def", "$@10", - "$@11", "enum_list", "enum_item", "integer_value", "integer_literal", - "integer_expression", "$@12", "$@13", "$@14", "math_unary_op", - "math_binary_op", "template_internal_class", "internal_class", - "internal_class_body", "type_def", "typedef_start", "using", "template", - "$@15", "template_args", "$@16", "template_arg", "$@17", - "class_or_typename", "maybe_template_id", "$@18", "legacy_function", - "legacy_method", "function", "scoped_method", "scope", "method", - "explicit_mod", "scoped_operator", "operator", "typecast_op_func", - "$@19", "$@20", "op_func", "$@21", "op_sig", "$@22", "$@23", "func", - "$@24", "func_trailer", "func_body", "func_sig", "$@25", "$@26", "@27", - "constructor", "$@28", "constructor_sig", "$@29", "maybe_initializers", - "more_initializers", "initializer", "destructor", "destructor_sig", - "$@30", "args_list", "$@31", "more_args", "$@32", "arg", "$@33", "$@34", - "maybe_indirect_id", "maybe_var_assign", "var_assign", "$@35", "var", - "var_id_maybe_assign", "maybe_vars", "maybe_other_vars", "$@36", - "other_var", "$@37", "$@38", "maybe_complex_var_id", "$@39", - "complex_var_id", "$@40", "p_or_lp_or_la", "lp_or_la", - "maybe_func_const", "maybe_array_or_args", "$@41", - "maybe_indirect_maybe_var_id", "maybe_indirect_var_id", "maybe_var_id", - "var_id", "maybe_var_array", "var_array", "$@42", "array", "$@43", - "more_array", "array_size", "any_id", "sized_type_id", "special_type_id", - "storage_type", "static_mod", "type", "type_red", "const_mod", - "type_red1", "$@44", "templated_id", "$@45", "$@46", "$@47", - "template_params", "$@48", "template_param", "maybe_scoped_id", - "scoped_id", "class_id", "type_indirection", "pointers", - "pointer_or_const_pointer", "type_red2", "type_simple", "type_id", - "type_primitive", "value", "$@49", "maybe_comma", "more_values", "$@50", - "literal", "$@51", "$@52", "$@53", "$@54", "$@55", "any_cast", - "string_literal", "literal2", "macro", "$@56", "$@57", "$@58", "$@59", - "$@60", "$@61", "$@62", "$@63", "$@64", "$@65", "$@66", "$@67", "$@68", - "$@69", "$@70", "$@71", "$@72", "$@73", "$@74", "$@75", "$@76", "$@77", - "op_token", "op_token_no_delim", "maybe_other", "maybe_other_no_semi", - "other_stuff", "other_stuff_no_semi", "braces", "brackets", "parens", 0 + "WorldCoordinateMacro", "TypeMacro", "VTK_BYTE_SWAP_DECL", "';'", "'{'", + "'}'", "'='", "':'", "','", "'('", "')'", "'<'", "'>'", "'['", "']'", + "'~'", "'&'", "'*'", "'%'", "'/'", "'-'", "'+'", "'!'", "'|'", "'^'", + "'.'", "$accept", "translation_unit", "opt_declaration_seq", "$@1", + "declaration", "template_declaration", "linkage_specification", + "namespace_definition", "$@2", "namespace_alias_definition", + "forward_declaration", "simple_forward_declaration", "class_definition", + "class_specifier", "$@3", "class_head", "$@4", "$@5", "class_key", + "member_specification", "$@6", "member_access_specifier", + "member_declaration", "template_member_declaration", + "friend_declaration", "opt_base_clause", "base_clause", + "base_specifier_list", "base_specifier", "opt_virtual", + "opt_access_specifier", "access_specifier", "enum_definition", + "enum_specifier", "$@7", "enum_head", "opt_enumerator_list", + "enumerator_list", "enumerator_definition", "$@8", + "nested_variable_initialization", "ignored_class", "ignored_class_body", + "typedef_declaration", "basic_typedef_declaration", + "typedef_declarator_list", "typedef_declarator_list_cont", + "typedef_declarator", "typedef_direct_declarator", + "function_direct_declarator", "$@9", "$@10", "typedef_declarator_id", + "using_declaration", "using_id", "using_directive", "template_head", + "$@11", "template_parameter_list", "$@12", "template_parameter", "$@13", + "$@14", "$@15", "$@16", "$@17", "$@18", "$@19", "class_or_typename", + "opt_template_parameter_initializer", "template_parameter_initializer", + "$@20", "template_parameter_value", "function_definition", + "function_declaration", "nested_method_declaration", + "nested_operator_declaration", "method_definition", "method_declaration", + "operator_declaration", "conversion_function", "$@21", "$@22", + "conversion_function_id", "operator_function_nr", "$@23", + "operator_function_sig", "$@24", "operator_function_id", "operator_sig", + "function_nr", "function_trailer_clause", "function_trailer", "$@25", + "function_body", "function_sig", "$@26", "function_name", + "structor_declaration", "$@27", "$@28", "structor_sig", "$@29", + "opt_ctor_initializer", "mem_initializer_list", "mem_initializer", + "parameter_declaration_clause", "$@30", "parameter_list", "$@31", + "parameter_declaration", "$@32", "$@33", "opt_initializer", + "initializer", "$@34", "variable_declaration", "init_declarator_id", + "opt_declarator_list", "declarator_list_cont", "$@35", "init_declarator", + "opt_ptr_operator_seq", "direct_abstract_declarator", "$@36", + "direct_declarator", "$@37", "p_or_lp_or_la", "lp_or_la", + "opt_array_or_parameters", "$@38", "$@39", "function_qualifiers", + "abstract_declarator", "declarator", "opt_declarator_id", + "declarator_id", "bitfield_size", "opt_array_decorator_seq", + "array_decorator_seq", "$@40", "array_decorator_seq_impl", + "array_decorator", "$@41", "array_size_specifier", "$@42", + "id_expression", "unqualified_id", "qualified_id", + "nested_name_specifier", "$@43", "identifier_sig", "scope_operator_sig", + "template_id", "$@44", "simple_id", "identifier", + "opt_decl_specifier_seq", "decl_specifier2", "decl_specifier_seq", + "decl_specifier", "storage_class_specifier", "function_specifier", + "cv_qualifier", "cv_qualifier_seq", "store_type", "store_type_specifier", + "$@45", "$@46", "type_specifier", "$@47", "tparam_type", + "tparam_type_specifier2", "$@48", "$@49", "tparam_type_specifier", + "simple_type_specifier", "type_name", "primitive_type", + "ptr_operator_seq", "reference", "pointer", "$@50", "pointer_seq", + "declaration_macro", "$@51", "$@52", "$@53", "$@54", "$@55", "$@56", + "$@57", "$@58", "$@59", "$@60", "$@61", "$@62", "$@63", "$@64", "$@65", + "$@66", "$@67", "$@68", "$@69", "$@70", "$@71", "$@72", "opt_comma", + "operator_id", "operator_id_no_delim", "keyword", "literal", + "constant_expression", "common_bracket_item", "any_bracket_contents", + "bracket_pitem", "any_bracket_item", "braces_item", + "angle_bracket_contents", "braces_contents", "angle_bracket_pitem", + "angle_bracket_item", "angle_brackets_sig", "$@73", "brackets_sig", + "$@74", "parentheses_sig", "$@75", "$@76", "$@77", "braces_sig", "$@78", + "ignored_items", "ignored_expression", "ignored_item", + "ignored_item_no_semi", "ignored_braces", "ignored_brackets", + "ignored_parentheses", "ignored_left_parenthesis", 0 }; #endif @@ -2088,139 +2217,142 @@ static const yytype_uint16 yytoknum[] = 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 59, 40, 41, 123, 125, 60, - 62, 58, 44, 61, 45, 43, 126, 42, 47, 37, - 38, 124, 94, 91, 93, 33, 46 + 59, 123, 125, 61, 58, 44, 40, 41, 60, 62, + 91, 93, 126, 38, 42, 37, 47, 45, 43, 33, + 124, 94, 46 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 157, 158, 159, 158, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 161, 163, 162, - 162, 165, 164, 166, 164, 167, 164, 168, 164, 164, - 169, 164, 170, 164, 164, 171, 172, 171, 171, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 174, 174, - 175, 175, 176, 176, 176, 176, 177, 177, 177, 179, - 178, 180, 178, 181, 181, 181, 182, 182, 183, 183, - 183, 183, 184, 184, 184, 184, 184, 185, 186, 185, - 187, 185, 188, 185, 189, 189, 189, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 191, 192, 192, - 192, 192, 192, 193, 193, 193, 194, 194, 194, 194, - 195, 196, 196, 196, 197, 198, 197, 199, 200, 199, - 201, 201, 202, 201, 203, 203, 204, 205, 204, 206, - 207, 208, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 210, 210, 211, 211, 211, 211, 211, 211, 211, - 211, 212, 212, 212, 213, 213, 214, 214, 214, 216, - 217, 215, 219, 218, 221, 222, 220, 224, 223, 225, - 225, 225, 225, 226, 226, 228, 227, 229, 230, 227, - 232, 231, 234, 233, 235, 235, 236, 236, 237, 238, - 240, 239, 241, 242, 241, 243, 243, 244, 243, 246, - 247, 245, 245, 248, 248, 249, 249, 251, 250, 252, - 252, 252, 253, 254, 254, 255, 256, 255, 258, 257, - 259, 257, 260, 261, 260, 262, 263, 262, 264, 264, - 264, 265, 265, 266, 266, 267, 268, 267, 267, 269, - 269, 270, 270, 271, 271, 272, 273, 273, 275, 274, - 277, 276, 278, 278, 279, 279, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 281, 282, 282, 283, 283, 283, - 283, 283, 283, 283, 284, 284, 285, 285, 286, 286, - 286, 287, 288, 288, 288, 289, 288, 291, 290, 292, - 290, 293, 290, 294, 295, 294, 296, 296, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 298, 298, 299, - 299, 299, 299, 299, 299, 299, 300, 300, 300, 301, - 301, 302, 302, 303, 303, 303, 303, 303, 304, 304, - 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 307, 308, 307, 309, 309, 310, 311, 310, 312, - 313, 312, 314, 312, 312, 315, 312, 316, 317, 312, - 318, 318, 318, 318, 319, 319, 320, 320, 320, 320, - 320, 320, 320, 322, 321, 323, 324, 325, 321, 326, - 321, 327, 321, 328, 329, 321, 330, 321, 331, 332, - 333, 321, 321, 334, 321, 335, 321, 336, 321, 337, - 321, 338, 321, 339, 321, 340, 321, 341, 321, 342, - 321, 343, 321, 321, 321, 321, 344, 344, 344, 344, - 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 346, 346, 347, 347, 348, 348, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 350, 351, 352, - 352, 352 + 0, 143, 144, 145, 146, 145, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 148, 148, 148, 148, 149, 150, 151, 150, 152, + 153, 153, 154, 154, 155, 155, 157, 156, 159, 158, + 160, 158, 161, 161, 161, 162, 163, 162, 162, 164, + 164, 164, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 166, 166, 167, 167, 167, + 167, 168, 168, 169, 170, 170, 171, 171, 171, 172, + 172, 173, 173, 174, 174, 174, 175, 175, 177, 176, + 178, 178, 179, 179, 180, 180, 180, 181, 182, 181, + 183, 184, 184, 184, 184, 185, 185, 186, 186, 187, + 187, 187, 187, 187, 188, 189, 189, 190, 191, 191, + 193, 194, 192, 195, 196, 197, 197, 197, 197, 197, + 197, 198, 199, 200, 199, 201, 202, 201, 204, 205, + 203, 206, 207, 203, 208, 209, 210, 203, 211, 211, + 212, 212, 214, 213, 215, 215, 216, 216, 216, 216, + 217, 218, 218, 218, 219, 219, 219, 220, 220, 220, + 221, 221, 221, 221, 222, 222, 222, 224, 225, 223, + 226, 228, 227, 230, 229, 231, 232, 233, 234, 234, + 236, 235, 235, 235, 237, 237, 239, 238, 240, 240, + 242, 243, 241, 245, 244, 246, 246, 247, 247, 248, + 249, 250, 249, 251, 252, 251, 251, 254, 255, 253, + 256, 256, 258, 257, 259, 260, 261, 261, 262, 263, + 262, 264, 265, 265, 266, 267, 266, 268, 269, 268, + 270, 270, 270, 271, 271, 272, 273, 274, 272, 272, + 275, 275, 275, 275, 276, 276, 277, 277, 278, 278, + 279, 279, 280, 280, 280, 281, 281, 283, 282, 284, + 284, 286, 285, 287, 288, 287, 289, 289, 290, 290, + 291, 291, 291, 292, 292, 292, 292, 293, 292, 294, + 295, 297, 296, 298, 298, 298, 298, 298, 298, 298, + 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, + 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, + 299, 299, 299, 299, 299, 299, 299, 300, 300, 301, + 301, 301, 301, 302, 302, 303, 303, 303, 304, 304, + 304, 304, 305, 305, 305, 306, 306, 307, 307, 308, + 310, 309, 311, 309, 312, 313, 312, 312, 312, 312, + 312, 314, 316, 315, 317, 315, 318, 318, 318, 318, + 318, 318, 319, 319, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 322, 322, 322, 323, 324, + 325, 324, 326, 326, 328, 327, 329, 330, 331, 327, + 332, 327, 333, 327, 334, 335, 327, 336, 327, 337, + 338, 339, 327, 327, 340, 327, 341, 327, 342, 327, + 343, 327, 344, 327, 345, 327, 346, 327, 347, 327, + 348, 327, 349, 327, 327, 327, 327, 350, 350, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 353, 353, 353, 353, 353, 353, 353, + 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 353, 353, 353, 353, 354, 354, 354, 354, 354, + 354, 354, 355, 355, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 357, 357, 358, 358, 358, + 359, 359, 359, 360, 360, 361, 361, 362, 362, 363, + 363, 364, 364, 364, 366, 365, 368, 367, 370, 369, + 371, 369, 372, 369, 374, 373, 375, 375, 376, 376, + 377, 377, 378, 378, 378, 378, 378, 378, 378, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 379, 380, + 381, 382, 382, 382 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 0, 0, 3, 1, 3, 1, 1, 1, - 1, 3, 4, 1, 2, 3, 2, 2, 2, 3, - 2, 1, 2, 4, 4, 4, 1, 5, 0, 6, - 4, 0, 7, 0, 10, 0, 7, 0, 10, 4, - 0, 7, 0, 10, 4, 0, 0, 3, 3, 1, - 3, 1, 1, 3, 4, 2, 2, 1, 2, 3, - 3, 2, 3, 3, 2, 5, 1, 1, 0, 2, - 1, 3, 1, 2, 2, 2, 1, 1, 1, 0, - 6, 0, 5, 0, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, - 0, 4, 0, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, - 2, 3, 2, 1, 5, 3, 4, 4, 4, 3, - 1, 4, 4, 3, 3, 0, 5, 1, 0, 4, - 2, 2, 0, 3, 1, 1, 0, 0, 3, 4, - 4, 2, 3, 4, 5, 3, 4, 6, 7, 5, - 6, 2, 3, 2, 3, 3, 1, 2, 2, 2, - 3, 1, 2, 2, 3, 3, 1, 2, 3, 0, - 0, 8, 0, 3, 0, 0, 7, 0, 3, 0, - 2, 2, 1, 1, 3, 0, 5, 0, 0, 9, - 0, 3, 0, 5, 0, 3, 0, 3, 4, 1, - 0, 5, 0, 0, 2, 1, 1, 0, 4, 0, - 0, 5, 1, 1, 2, 0, 1, 0, 3, 4, - 4, 3, 2, 0, 2, 0, 0, 4, 0, 2, - 0, 3, 2, 0, 5, 2, 0, 5, 1, 1, - 1, 1, 1, 0, 1, 0, 0, 5, 1, 1, - 2, 1, 2, 0, 1, 1, 0, 1, 0, 2, - 0, 5, 0, 1, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 3, 2, 2, 3, 1, 2, 1, 2, 1, 2, - 2, 1, 1, 1, 1, 0, 3, 0, 5, 0, - 5, 0, 5, 1, 0, 4, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 1, 0, 0, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 2, 2, 2, 2, 5, 4, 0, 6, 5, + 1, 2, 3, 4, 4, 5, 0, 5, 0, 4, + 0, 3, 1, 1, 1, 0, 0, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 2, 2, 2, 3, 2, + 3, 0, 1, 2, 1, 3, 1, 3, 3, 0, + 1, 0, 1, 1, 1, 1, 4, 5, 0, 5, + 2, 1, 0, 1, 1, 2, 3, 1, 0, 4, + 6, 3, 4, 2, 3, 5, 3, 1, 2, 5, + 5, 6, 5, 6, 2, 0, 3, 2, 1, 1, + 0, 0, 7, 1, 3, 1, 2, 2, 2, 3, + 3, 4, 3, 0, 5, 1, 0, 4, 0, 0, + 5, 0, 0, 5, 0, 0, 0, 7, 1, 1, + 0, 1, 0, 3, 1, 2, 2, 2, 2, 2, + 2, 3, 2, 3, 2, 3, 3, 2, 3, 4, + 2, 1, 1, 2, 1, 2, 2, 0, 0, 7, + 2, 0, 3, 0, 5, 2, 1, 2, 0, 2, + 0, 3, 1, 2, 3, 1, 0, 5, 1, 1, + 0, 0, 5, 0, 5, 0, 2, 1, 3, 2, + 0, 0, 2, 1, 0, 4, 3, 0, 0, 5, + 0, 1, 0, 3, 4, 2, 0, 2, 0, 0, + 4, 2, 0, 1, 2, 0, 5, 2, 0, 5, + 1, 1, 1, 1, 1, 0, 0, 0, 6, 1, + 0, 2, 2, 3, 1, 2, 1, 2, 0, 1, + 1, 3, 1, 1, 1, 0, 1, 0, 2, 1, + 2, 0, 4, 0, 0, 2, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 3, 3, 0, 5, 1, + 1, 0, 5, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 0, 3, 0, 4, 1, 0, 3, 1, 1, 2, + 2, 2, 0, 3, 0, 4, 1, 1, 1, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 0, 1, 0, 0, 4, 1, - 0, 3, 0, 3, 1, 0, 4, 0, 0, 9, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 7, 0, 0, 0, 9, 0, - 5, 0, 5, 0, 0, 10, 0, 7, 0, 0, - 0, 9, 6, 0, 7, 0, 7, 0, 7, 0, - 7, 0, 7, 0, 7, 0, 7, 0, 7, 0, - 9, 0, 9, 4, 4, 7, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 0, 3, 1, 2, 0, 7, 0, 0, 0, 9, + 0, 5, 0, 5, 0, 0, 10, 0, 7, 0, + 0, 0, 9, 6, 0, 7, 0, 7, 0, 7, + 0, 7, 0, 7, 0, 7, 0, 7, 0, 7, + 0, 9, 0, 9, 4, 4, 7, 0, 1, 2, + 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 0, 2, 1, + 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, - 3, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -2228,1803 +2360,1513 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 3, 1, 0, 0, 0, 0, 364, 383, 384, - 385, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 386, 387, 388, 367, 368, 369, 370, 362, 363, - 81, 0, 13, 311, 0, 400, 399, 0, 0, 0, - 315, 130, 0, 0, 365, 304, 0, 235, 0, 366, - 360, 361, 381, 382, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 0, 0, 0, 0, 0, 0, + 3, 0, 4, 1, 0, 378, 379, 380, 374, 375, + 376, 377, 43, 42, 44, 91, 345, 346, 338, 341, + 343, 344, 342, 339, 186, 0, 355, 0, 0, 0, + 290, 394, 395, 396, 397, 399, 400, 401, 402, 398, + 403, 404, 381, 382, 393, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 4, 9, 8, 238, - 238, 10, 0, 7, 0, 0, 0, 0, 0, 0, - 176, 5, 0, 0, 297, 306, 0, 308, 313, 314, - 0, 312, 353, 359, 358, 21, 364, 362, 363, 365, - 366, 360, 361, 295, 296, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 521, 35, 283, 284, 355, - 31, 354, 0, 0, 364, 0, 0, 365, 366, 0, - 0, 521, 319, 0, 79, 357, 521, 40, 356, 0, - 304, 0, 0, 0, 301, 0, 298, 135, 0, 339, - 343, 342, 341, 340, 344, 345, 521, 28, 329, 332, - 331, 0, 0, 328, 330, 333, 334, 335, 0, 336, - 521, 317, 305, 235, 0, 299, 0, 0, 521, 321, - 0, 435, 439, 441, 0, 0, 448, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 5, 17, + 11, 9, 10, 8, 30, 15, 327, 36, 40, 14, + 327, 0, 12, 107, 7, 6, 0, 16, 0, 0, + 0, 0, 174, 0, 0, 13, 0, 276, 358, 0, + 0, 0, 357, 278, 289, 0, 333, 335, 336, 337, + 0, 232, 350, 354, 373, 372, 18, 295, 293, 294, + 298, 299, 297, 296, 308, 307, 319, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 360, 277, 0, + 279, 340, 133, 0, 378, 379, 380, 374, 375, 376, + 377, 339, 381, 382, 393, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 327, 40, 327, 358, 357, + 0, 0, 320, 322, 321, 325, 326, 324, 323, 576, + 27, 0, 0, 0, 125, 0, 0, 0, 416, 420, + 422, 0, 0, 429, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 302, 300, + 301, 305, 306, 304, 303, 232, 0, 71, 359, 232, + 88, 0, 24, 31, 21, 23, 0, 22, 0, 0, + 195, 576, 156, 158, 159, 157, 177, 0, 0, 180, + 19, 287, 164, 0, 162, 200, 280, 0, 279, 278, + 283, 281, 282, 284, 291, 327, 40, 327, 108, 175, + 0, 334, 352, 243, 244, 176, 181, 0, 0, 160, + 188, 0, 228, 220, 0, 265, 0, 199, 260, 408, + 409, 349, 233, 405, 412, 406, 327, 279, 3, 132, + 138, 356, 340, 232, 359, 232, 327, 327, 295, 293, + 294, 298, 299, 297, 296, 123, 119, 115, 118, 265, + 260, 0, 0, 0, 126, 0, 124, 128, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 352, 351, 346, 0, 235, 0, 240, 348, 349, - 0, 0, 0, 0, 0, 238, 0, 0, 0, 193, - 521, 20, 17, 18, 16, 14, 278, 280, 279, 0, - 276, 251, 252, 277, 281, 282, 0, 177, 182, 151, - 187, 235, 225, 0, 266, 265, 0, 302, 307, 309, - 310, 0, 0, 22, 0, 0, 68, 0, 68, 364, - 362, 363, 365, 366, 360, 361, 178, 0, 0, 0, - 83, 0, 0, 0, 68, 0, 179, 303, 0, 134, - 142, 316, 0, 0, 0, 0, 133, 0, 0, 0, - 2, 300, 231, 236, 0, 0, 0, 0, 278, 280, - 279, 276, 277, 281, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 234, 239, 265, - 0, 347, 350, 6, 129, 0, 223, 0, 0, 0, - 0, 19, 15, 0, 0, 495, 496, 497, 498, 499, - 500, 501, 502, 508, 509, 503, 504, 505, 506, 507, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 0, 489, 490, 488, 481, 484, 485, 487, 482, - 483, 494, 491, 492, 493, 0, 486, 184, 480, 175, - 152, 0, 189, 189, 0, 227, 232, 226, 261, 0, - 0, 245, 267, 272, 195, 197, 161, 338, 329, 332, - 331, 328, 330, 333, 334, 0, 174, 155, 200, 0, - 337, 0, 553, 536, 564, 566, 565, 557, 570, 548, - 544, 545, 543, 546, 547, 561, 539, 538, 558, 559, - 549, 527, 550, 551, 552, 554, 556, 537, 560, 531, - 567, 568, 571, 555, 569, 562, 495, 496, 575, 574, - 573, 576, 563, 535, 521, 521, 572, 540, 541, 525, - 521, 521, 39, 533, 521, 534, 542, 532, 522, 526, - 528, 530, 529, 93, 95, 94, 96, 92, 327, 326, - 0, 323, 0, 0, 0, 0, 23, 0, 0, 84, - 86, 83, 44, 0, 0, 213, 0, 156, 0, 144, - 145, 0, 137, 0, 146, 146, 30, 2, 132, 131, - 24, 0, 230, 3, 238, 149, 25, 0, 433, 0, - 0, 0, 443, 446, 0, 0, 453, 457, 461, 465, - 455, 459, 463, 467, 469, 471, 473, 474, 0, 241, - 127, 224, 128, 126, 12, 194, 0, 0, 476, 477, - 0, 162, 192, 0, 0, 183, 188, 229, 0, 246, - 262, 269, 0, 213, 0, 153, 209, 0, 204, 202, - 0, 0, 0, 0, 0, 0, 37, 324, 0, 0, - 0, 69, 70, 72, 45, 33, 45, 320, 82, 83, - 0, 0, 42, 45, 0, 219, 154, 0, 136, 138, - 146, 141, 147, 140, 3, 318, 27, 237, 322, 0, - 436, 440, 442, 0, 0, 449, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 404, 478, 479, - 185, 191, 190, 424, 427, 429, 428, 430, 431, 426, - 420, 422, 421, 423, 415, 402, 412, 410, 432, 228, - 401, 0, 414, 409, 255, 270, 0, 0, 210, 0, - 201, 213, 0, 159, 580, 581, 579, 577, 578, 68, - 0, 75, 73, 74, 0, 46, 68, 46, 85, 278, - 276, 277, 102, 104, 105, 106, 97, 88, 87, 98, - 89, 91, 90, 80, 68, 46, 180, 222, 215, 214, - 216, 0, 0, 160, 142, 143, 225, 29, 0, 0, - 444, 0, 0, 452, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 405, 0, 213, 0, 0, 0, - 0, 417, 425, 256, 247, 258, 274, 196, 0, 213, - 206, 0, 0, 157, 0, 325, 71, 76, 77, 78, - 36, 0, 0, 0, 32, 0, 115, 116, 107, 108, - 109, 110, 111, 112, 113, 114, 100, 0, 0, 41, - 189, 217, 263, 158, 139, 148, 434, 437, 0, 447, - 450, 454, 458, 462, 466, 456, 460, 464, 468, 0, - 0, 475, 0, 0, 406, 413, 411, 0, 213, 275, - 0, 198, 0, 0, 205, 521, 203, 45, 0, 364, - 362, 363, 57, 0, 0, 365, 0, 171, 366, 360, - 361, 381, 382, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 0, 67, 0, 238, 47, 238, 52, - 51, 0, 0, 0, 0, 0, 166, 49, 0, 66, - 48, 45, 0, 0, 99, 45, 181, 219, 249, 250, - 248, 220, 263, 266, 264, 0, 523, 0, 0, 0, - 186, 416, 404, 0, 0, 271, 213, 211, 206, 0, - 46, 0, 0, 297, 0, 0, 0, 56, 55, 0, - 0, 0, 0, 172, 0, 167, 0, 173, 521, 163, - 0, 0, 238, 0, 0, 64, 61, 168, 58, 169, - 46, 103, 101, 46, 218, 225, 259, 0, 263, 242, - 438, 0, 451, 470, 472, 407, 0, 0, 253, 0, - 207, 208, 38, 165, 170, 123, 521, 523, 120, 0, - 0, 122, 0, 0, 0, 0, 117, 62, 59, 164, - 0, 0, 0, 0, 53, 50, 0, 63, 60, 34, - 43, 221, 243, 260, 445, 524, 0, 403, 418, 254, - 257, 199, 0, 0, 119, 118, 121, 150, 0, 54, - 255, 408, 0, 523, 125, 65, 244, 0, 0, 419, - 124 + 0, 0, 332, 331, 0, 228, 0, 328, 329, 330, + 45, 0, 41, 72, 32, 71, 0, 92, 360, 0, + 0, 198, 0, 211, 359, 0, 203, 205, 285, 286, + 555, 232, 359, 232, 165, 163, 327, 188, 183, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 492, 493, + 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 466, 465, 0, 463, 464, 0, + 474, 475, 469, 468, 470, 471, 472, 473, 476, 477, + 185, 467, 187, 196, 0, 222, 225, 221, 256, 0, + 0, 237, 266, 0, 166, 161, 199, 0, 0, 407, + 413, 351, 4, 0, 135, 0, 0, 0, 0, 115, + 0, 0, 232, 232, 0, 120, 378, 379, 380, 374, + 375, 376, 377, 602, 603, 530, 526, 527, 525, 528, + 529, 531, 506, 505, 507, 519, 509, 511, 510, 512, + 513, 515, 514, 516, 518, 508, 520, 504, 503, 517, + 478, 479, 523, 522, 521, 524, 586, 585, 597, 581, + 576, 26, 592, 588, 593, 601, 590, 591, 576, 589, + 596, 587, 594, 595, 577, 580, 582, 584, 583, 576, + 0, 0, 3, 131, 130, 129, 414, 0, 0, 0, + 424, 427, 0, 0, 434, 438, 442, 446, 436, 440, + 444, 448, 450, 452, 454, 455, 0, 34, 227, 231, + 46, 83, 84, 85, 81, 73, 74, 79, 76, 39, + 86, 0, 93, 94, 97, 198, 194, 0, 217, 0, + 0, 211, 0, 201, 0, 0, 33, 0, 353, 182, + 211, 0, 0, 459, 460, 192, 190, 0, 189, 211, + 224, 229, 0, 238, 257, 271, 268, 269, 263, 264, + 262, 261, 347, 411, 25, 136, 134, 0, 0, 0, + 368, 367, 0, 258, 232, 362, 366, 148, 149, 258, + 0, 110, 114, 117, 112, 0, 0, 109, 232, 211, + 0, 0, 0, 29, 4, 0, 417, 421, 423, 0, + 0, 430, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 457, 49, 50, 51, 37, 0, 0, + 0, 82, 0, 80, 0, 89, 95, 98, 578, 178, + 212, 213, 0, 288, 0, 206, 207, 0, 188, 570, + 572, 540, 574, 562, 538, 563, 568, 564, 292, 566, + 539, 544, 543, 537, 541, 542, 560, 561, 556, 559, + 534, 535, 536, 35, 87, 0, 461, 462, 0, 193, + 0, 232, 548, 549, 223, 547, 532, 245, 274, 270, + 348, 138, 369, 370, 371, 364, 241, 242, 240, 139, + 258, 265, 259, 361, 327, 142, 145, 111, 113, 116, + 0, 598, 599, 600, 28, 0, 0, 425, 0, 0, + 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 458, 0, 0, 0, 0, 64, 53, 58, 47, + 60, 54, 57, 55, 52, 0, 59, 0, 171, 172, + 56, 0, 0, 357, 0, 0, 61, 48, 77, 75, + 78, 96, 0, 0, 188, 214, 258, 204, 0, 209, + 202, 545, 545, 557, 545, 555, 545, 184, 191, 197, + 230, 533, 246, 239, 249, 0, 0, 137, 327, 150, + 254, 0, 258, 234, 363, 150, 258, 121, 415, 418, + 0, 428, 431, 435, 439, 443, 447, 437, 441, 445, + 449, 0, 0, 456, 69, 0, 67, 0, 0, 357, + 0, 0, 62, 65, 66, 0, 167, 63, 0, 173, + 0, 170, 199, 99, 100, 579, 179, 216, 217, 218, + 208, 0, 0, 0, 0, 0, 0, 211, 272, 275, + 365, 152, 140, 151, 235, 255, 143, 146, 250, 0, + 578, 0, 0, 0, 576, 578, 103, 359, 0, 68, + 0, 70, 0, 168, 0, 215, 220, 551, 552, 571, + 550, 546, 573, 554, 575, 553, 558, 569, 565, 567, + 0, 0, 245, 150, 122, 419, 0, 432, 451, 453, + 0, 0, 101, 0, 0, 104, 359, 169, 219, 247, + 153, 154, 236, 147, 252, 251, 0, 426, 578, 106, + 0, 102, 250, 155, 253, 0, 248, 105 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 3, 86, 87, 88, 303, 89, 278, 706, - 276, 699, 294, 724, 705, 781, 867, 513, 611, 612, - 782, 90, 291, 153, 518, 519, 716, 508, 718, 797, - 883, 785, 719, 796, 917, 918, 968, 91, 92, 93, - 94, 300, 531, 734, 532, 533, 534, 631, 736, 95, - 872, 96, 97, 256, 873, 874, 98, 99, 100, 525, - 800, 257, 412, 258, 580, 756, 259, 413, 585, 241, - 260, 593, 594, 906, 876, 598, 438, 691, 690, 834, - 770, 595, 596, 769, 624, 625, 729, 887, 730, 731, - 945, 355, 416, 417, 588, 101, 261, 224, 196, 544, - 225, 226, 350, 891, 1010, 262, 684, 892, 263, 1000, - 764, 828, 947, 419, 893, 264, 421, 422, 423, 591, - 766, 592, 830, 439, 137, 138, 912, 103, 104, 105, - 106, 107, 168, 108, 308, 289, 317, 510, 700, 511, - 678, 109, 150, 227, 228, 229, 111, 112, 113, 114, - 679, 758, 755, 902, 996, 680, 760, 759, 757, 827, - 1012, 681, 682, 683, 115, 639, 326, 739, 895, 327, - 328, 643, 808, 644, 331, 742, 897, 647, 651, 648, - 652, 649, 653, 650, 654, 655, 656, 407, 497, 274, - 951, 498, 499, 500, 501, 502 + -1, 1, 2, 4, 78, 232, 80, 81, 323, 82, + 83, 84, 234, 86, 226, 87, 365, 227, 247, 560, + 668, 669, 779, 780, 781, 362, 363, 565, 566, 674, + 670, 567, 89, 90, 367, 91, 571, 572, 573, 802, + 235, 856, 906, 92, 93, 458, 464, 459, 315, 316, + 639, 898, 317, 94, 193, 95, 236, 300, 453, 731, + 454, 455, 829, 456, 835, 457, 836, 933, 629, 892, + 893, 931, 950, 237, 98, 99, 100, 786, 787, 101, + 102, 373, 804, 103, 275, 387, 276, 590, 277, 104, + 279, 432, 598, 718, 242, 280, 599, 253, 789, 377, + 688, 255, 581, 583, 685, 686, 577, 578, 680, 878, + 681, 682, 916, 436, 437, 602, 105, 282, 354, 434, + 721, 355, 356, 739, 932, 283, 727, 740, 284, 823, + 887, 962, 934, 831, 439, 741, 742, 611, 441, 442, + 443, 606, 607, 728, 825, 826, 194, 107, 178, 149, + 375, 110, 111, 179, 380, 113, 114, 225, 357, 248, + 116, 117, 118, 119, 613, 239, 121, 296, 386, 122, + 153, 623, 624, 744, 828, 625, 123, 124, 125, 292, + 293, 294, 448, 295, 126, 645, 332, 756, 899, 333, + 334, 649, 840, 650, 337, 759, 901, 653, 657, 654, + 658, 655, 659, 656, 660, 661, 662, 772, 430, 703, + 704, 705, 724, 725, 881, 920, 921, 926, 584, 883, + 707, 708, 709, 815, 710, 816, 711, 814, 811, 812, + 712, 813, 321, 803, 524, 525, 526, 527, 528, 529 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -917 +#define YYPACT_NINF -872 static const yytype_int16 yypact[] = { - -917, 52, -917, 5135, 5259, 6825, 6259, 51, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -14, 98, - 6825, 5274, -917, -917, 5714, -917, -917, 5823, 6259, -63, - -917, -917, 81, 264, 170, 55, 5932, -917, -44, 181, - 108, 132, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, 38, 49, 53, 54, 64, 86, - 113, 122, 156, 158, 171, 172, 196, 198, 201, 209, - 215, 216, 219, 220, 224, -917, -917, -917, -917, 10, - 10, -917, 6041, -917, 5496, 134, 134, 134, 134, 134, - -917, -917, 6615, 6259, -917, 15, 6368, 151, 188, -917, - 147, -917, -917, -917, -917, -917, 191, 206, 272, 387, - 395, 412, 413, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, 36, -917, -917, -917, - 229, -917, 343, 343, -22, 343, 343, 0, 22, 289, - 282, -917, -917, 240, -917, -917, -917, 239, -917, 5823, - 332, 6150, 249, 6259, -917, 296, -917, 251, 408, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -22, 300, - 301, 408, 408, 0, 22, 303, 310, 188, 271, -917, - -917, -917, -917, -917, 4932, -917, 138, 5714, -917, -917, - 6850, -917, -917, -917, 6850, 6850, -917, 6850, 6850, 6850, - 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, - 6850, -917, -917, -917, 278, -917, 4819, -917, 19, -917, - 280, 281, 848, 848, 4819, 10, 134, 134, 6720, -917, - -917, -917, -917, -917, -917, -917, 325, 300, 301, 6900, - 326, -917, -917, 327, 303, 310, 6795, -917, -917, -917, - -917, -917, 279, 4456, 277, -58, 330, -917, -917, -917, - -917, 408, 4606, -917, 1000, 5605, 284, 5605, 284, -917, - -917, -917, -917, -917, -917, -917, -917, 408, 1154, 5605, - 6850, 295, 1308, 5605, 284, 6259, -917, -917, 4588, -917, - 6585, -917, 1462, 302, 304, 318, -917, 1616, 5605, 166, - -917, -917, -917, -917, 308, 6850, 1770, 5605, -917, -917, - -917, -917, -917, -917, -917, 311, 6850, 6850, 6850, 314, - 324, 6850, 335, 336, 338, 339, 340, 362, 368, 376, - 377, 378, 381, 391, 397, 393, -917, 396, -917, -917, - 4819, -917, -917, -917, -917, 405, -917, 6850, 407, 414, - 422, -917, -917, -58, 1924, 389, 404, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, 423, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, 283, -917, -917, -917, -917, - -917, 464, 40, 40, 184, -917, -917, -917, -917, 424, - 4819, -917, -917, -917, -917, -917, -917, -917, 28, -12, - 5, 139, 175, 123, 125, 6850, -917, -917, -917, 426, - -917, 469, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - 425, 427, 351, 429, 428, 433, -917, 431, 434, 432, - 430, 6850, -917, 439, 443, 445, 6850, -917, 488, -917, - -917, 444, 447, 533, 6850, 6850, -917, -917, -917, -917, - -917, 448, -917, 453, 15, -917, -917, 452, -917, 451, - 450, 459, -917, -917, 454, 6477, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, 6850, -917, - -917, -917, -917, -917, -917, -917, 449, 455, -917, -917, - 462, -917, -917, 585, 586, -917, -917, -917, 4768, -917, - -917, 458, 461, 445, 5605, -917, -917, 470, 463, -917, - 4663, 2078, 2232, 2386, 2540, 2694, -917, -917, 408, 408, - 408, -917, 465, -917, -917, -917, -917, -917, -917, 6850, - 4531, 468, -917, -917, 472, 41, -917, 4693, -917, -917, - 6850, -917, -917, -917, 474, -917, -917, -917, -917, 6259, - -917, -917, -917, 6477, 6477, -917, 482, 6477, 6477, 6477, - 6477, 6477, 6477, 6477, 6477, 6477, 6477, 477, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, 481, 611, -917, 144, -917, 486, 483, -917, 408, - -917, 445, 6850, -917, -917, -917, -917, -917, -917, 284, - 5605, -917, -917, -917, 351, 43, 284, 59, -917, -22, - 0, 22, -917, -917, -917, -917, 364, -917, -917, -917, - -917, 188, -917, -917, 284, 82, -917, -917, -917, -917, - 485, 6259, 6850, -917, 6585, -917, 279, -917, 489, 6259, - -917, 493, 6477, -917, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, -917, 504, 445, 4803, 4768, 446, - 446, -917, -917, -917, -917, -917, 4531, -917, 506, 445, - 505, 507, 510, -917, 487, -917, -917, -917, -917, -917, - -917, 3772, 508, 511, -917, 4531, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, 4531, 513, -917, - 40, -917, 5377, -917, -917, -917, -917, -917, 509, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, 627, - 628, -917, 516, 517, -917, -917, -917, 6259, 445, -917, - 512, -917, 518, 408, -917, -917, -917, -917, 4294, 28, - -12, 5, -917, 3904, 4424, 139, 520, 607, 175, 123, - 125, 523, 524, 525, 526, 528, 529, 530, 532, 534, - 535, 538, 539, 540, -917, 6850, 10, -917, 10, -917, - -917, 4034, 134, 134, 6850, 134, -917, -917, 6690, -917, - -917, -917, 542, 4531, -917, -917, -917, 41, -917, -917, - -917, -917, 390, 277, -917, 544, -917, 545, 546, 547, - -917, -917, 543, 536, 550, -917, 445, -917, 505, 2848, - 97, 6850, 6850, 289, 4987, 6825, 4987, -917, -917, 243, - 134, 134, 6720, -917, 6850, -917, 4164, -917, -917, -917, - 553, 555, 10, 134, 134, -917, -917, -917, -917, -917, - 102, -917, -917, 107, -917, 279, -917, 554, 5377, -917, - -917, 3310, -917, -917, -917, 557, 558, 556, 625, 562, - -917, -917, -917, -917, -917, -917, -917, -917, -917, 200, - 200, -917, 200, 5008, 6850, 5008, -917, -917, -917, -917, - 4294, 563, 6850, 3002, -917, -917, 559, -917, -917, -917, - -917, -917, -917, -917, -917, -917, 4768, -917, -917, -917, - -917, -917, 3156, 3464, -917, -917, -917, -917, 566, -917, - 144, -917, 4803, -917, -917, -917, -917, 565, 3618, -917, - -917 + -872, 77, 87, -872, 4255, 167, 191, 227, 280, 300, + 301, 304, -872, -872, -872, 4899, -872, -872, -872, -872, + -872, -872, -872, 98, -872, -8, -872, 5429, 383, 4624, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -38, 106, 121, 122, 133, 158, 171, 186, + 196, 203, 210, 228, 243, -3, 36, 43, 45, 90, + 114, 130, 138, 151, 179, 183, 187, 202, 215, 233, + 235, 249, 258, 267, 269, 271, -872, 438, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, 4899, -872, + -872, 21, -872, -872, -872, -872, 5144, -872, -71, -71, + -71, -71, -872, 281, 5524, -872, 54, -872, 284, 4742, + 350, 4899, -25, -872, 297, 5239, -872, -872, -872, -872, + 4672, 276, -872, -872, -872, -872, -872, -10, 9, 18, + 50, 52, 148, 166, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, 310, -872, 4921, + 350, 312, 321, 4899, -10, 9, 18, 50, 52, 148, + 166, 441, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, 4899, -872, -872, 350, + 5429, 4790, -872, -872, -872, -872, -872, -872, -872, -872, + 332, 4899, 4899, 337, -872, 4742, 4899, 4529, -872, -872, + -872, 4529, 4529, -872, 4529, 4529, 4529, 4529, 4529, 4529, + 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, -872, -872, + -872, -872, -872, -872, -872, 1286, 343, 348, 259, 1286, + -872, 4899, -872, -872, -872, -872, 5144, -872, 5334, 4947, + -872, -872, -872, -872, -872, -872, -872, 4899, 5524, -872, + -872, -872, -872, 360, -872, -872, -872, 350, -13, 362, + -872, -872, -872, -872, -872, -872, 4899, -872, -872, -872, + 4742, -872, -872, -872, -872, -872, -872, 363, 5071, -872, + -872, 370, -872, 377, 1478, 372, 4742, 350, 15, -872, + 435, -872, -872, -872, -872, 276, -872, 350, -872, -872, + 73, -872, -872, 5028, 177, 5028, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, 107, + 379, 1212, 409, 384, -872, 386, -872, -872, -872, 1383, + 4742, 387, 4529, 4529, 4529, 388, 389, 4529, 390, 391, + 392, 393, 397, 398, 399, 401, 402, 403, 405, 404, + 406, 407, -872, -872, 414, -872, 4790, -872, -872, -872, + -872, 1111, -872, -872, -872, 348, 415, 4529, -872, 5334, + 4742, -872, 1617, 424, -872, 471, -872, 412, -872, -872, + -872, 1286, 278, 1286, -872, -872, -872, -872, -872, 381, + 423, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, 428, -872, -872, 411, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, 41, -872, 212, -872, -872, -872, -872, 429, + 4790, -872, -872, 427, -872, -872, 350, 470, 440, -872, + -872, 4121, 436, 11, -872, 5560, 88, 524, 442, -872, + 4790, 443, 5028, 5028, 224, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + 444, 350, -872, -872, -872, -872, -872, 445, 434, 439, + -872, -872, 446, 5524, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, 4529, -872, 447, -872, + 48, -872, -872, -872, 485, 448, -872, 535, -872, -872, + -872, 452, 451, -872, 456, 457, -872, 454, -872, 350, + 297, 424, 4899, -872, 3577, 449, -872, 462, 4121, 41, + 424, 437, 453, -872, -872, -872, -872, 549, -872, 424, + -872, -872, 3857, -872, -872, -872, 427, -872, -872, -872, + -872, -872, -872, 440, -872, -872, -872, 4899, 4899, 4899, + -872, 350, 5524, 4694, 276, -872, -872, -872, -872, 4694, + 563, -872, 461, -872, -872, 467, 468, -872, 276, 424, + 1757, 1897, 2037, -872, 472, 5524, -872, -872, -872, 5524, + 5524, -872, 463, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 464, -872, -872, -872, -872, 4137, 469, + 4899, -872, 1111, -872, 4899, -872, 4529, -872, -872, -872, + 473, -872, 5524, -872, 474, 475, -872, 58, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, 477, -872, -872, 92, -872, + 478, 276, -872, -872, 3857, -872, -872, 160, 465, -872, + -872, 73, -872, -872, -872, -872, -872, -872, -872, -872, + 969, 372, -872, -872, -872, -872, -872, -872, -872, -872, + 479, -872, -872, -872, -872, 480, 5524, -872, 481, 5524, + -872, 482, 483, 484, 489, 490, 491, 492, 496, 487, + 499, -872, 498, 4373, 4851, 58, -872, -872, -872, -872, + -872, -872, -872, -872, -872, 4563, -872, -71, -872, -872, + -872, 506, 4742, 129, 4468, 4672, -872, -872, -872, -872, + -872, -872, 3857, 2317, -872, 526, 4694, -872, 4899, -872, + 41, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, 497, 3857, -872, -872, 504, + -872, 502, 4694, -872, 4121, 504, 4694, -872, -872, -872, + 508, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, 622, 623, -872, -872, 4720, -872, 518, -71, -13, + 4563, 4947, -872, -872, -872, 4563, -872, -872, 520, -872, + 4742, -872, -872, 3857, -872, -872, 41, -872, -872, -872, + -872, 3017, 3157, 2877, 3297, 3717, 3437, 424, -872, 3857, + 4121, -872, -872, -872, -872, -872, -872, -872, -872, 514, + -872, 515, 516, 519, -872, -872, -872, 328, 4720, -872, + 518, -872, 4720, -872, 527, -872, 377, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + 521, 3997, 160, 504, 93, -872, 2457, -872, -872, -872, + 2177, 2597, -872, 328, 4720, -872, 339, -872, -872, -872, + 3997, -872, -872, -872, -872, -872, 58, -872, -872, -872, + 339, -872, -872, -872, -872, 2737, 93, -872 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -917, -270, -917, -917, -917, -917, -917, -72, -917, -917, - -917, -917, -917, -917, -587, -917, -917, -273, -2, -917, - -917, -84, -917, -917, -476, -917, -917, -541, -660, -917, - -917, -917, -917, -917, -917, -227, -680, -78, -917, -77, - -505, -917, -29, -917, -917, -917, -917, -466, -917, -917, - -917, -27, -917, -917, -750, -917, -917, -70, 435, -917, - -917, -146, -917, -917, -917, -917, -250, -917, -399, -81, - -917, -917, -917, -917, -261, -917, -917, -917, -917, -202, - -125, -501, -917, -917, -532, -917, -175, -917, -917, -917, - -917, 480, -690, -917, -917, -71, -182, -83, 2, -917, - 173, -917, -917, -837, -917, -177, -917, -917, -917, -917, - -296, -917, -917, -917, -917, -761, -178, -661, -917, -917, - -917, -917, -917, -4, -917, -917, 1, -35, 90, -111, - 613, 612, -917, -33, -917, -917, -917, -246, -917, -917, - 131, -10, 31, -86, -917, 514, -180, -291, 8, -232, - -726, -917, -181, -917, -917, -727, -917, -917, -917, -917, - -917, -917, -917, -630, -59, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, -917, -917, - -917, -917, -917, -917, -917, -917, -917, -917, 519, -98, - -916, -917, -877, -917, -917, -917 + -872, -872, -260, -872, -872, 645, -872, -872, -872, -872, + -613, -94, 1, -26, -872, -872, -872, -872, 16, -872, + -872, -872, -872, -872, -872, 285, -872, -872, -20, -872, + -872, 89, -17, -21, -872, -872, -872, -872, -22, -872, + -872, -202, -473, -9, -102, -249, 199, 22, -872, -872, + -872, -872, 201, -6, -872, -872, -1, -872, -872, -872, + -66, -872, -872, -872, -872, -872, -872, -872, -872, -770, + -872, -872, -872, 668, -872, -872, -872, -111, -97, -576, + -80, -872, -872, -154, -241, -872, -872, -872, -155, 35, + -270, -364, -872, -872, -91, -872, -872, -105, -67, -872, + -872, -872, -872, -872, -872, -129, -542, -872, -872, -872, + -198, -872, -872, -230, -872, -872, 20, 333, -166, 338, + -872, -5, -95, -575, -872, -157, -872, -872, -872, -237, + -872, -872, -261, -872, -872, -872, -98, -872, -29, -696, + -872, -872, 112, -872, -872, -872, 13, -45, 3, 32, + -872, -63, 23, -4, -872, 754, -24, 8, -872, 10, + -81, -872, -872, -415, -872, 49, -872, -872, -872, -19, + -872, -872, -872, -872, -872, -872, -121, -391, 194, -272, + 425, 430, -872, -872, 51, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -204, + -302, 82, -751, -554, -456, -581, -153, -872, -89, -872, + -871, -872, -872, -872, -872, -872, 17, -872, -872, -872, + -872, -872, -183, -820, -872, -759, -872, -872, -660, -872 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -406 +#define YYTABLE_NINF -411 static const yytype_int16 yytable[] = { - 136, 140, 163, 286, 102, 515, 410, 230, 233, 535, - 187, 437, 139, 141, 586, 242, 243, 244, 245, 268, - 232, 524, 235, 765, 237, 626, 154, 157, 630, 707, - 823, 514, 824, 189, 110, 162, 725, 527, 155, 158, - 543, 894, 496, 517, 348, 621, 805, 523, 777, 778, - 779, 1003, 2, 288, 221, 946, 496, 359, 292, 221, - 496, 686, 541, 221, 777, 778, 779, 236, 165, 633, - 496, 547, -339, 177, 995, 496, 167, 424, 302, 717, - -343, 425, -343, 582, 496, 583, 418, 777, 778, 779, - 169, 197, 307, 920, -341, 238, 149, 1018, 265, -342, - 316, 727, 777, 778, 779, 192, 829, 777, 778, 779, - 409, 993, 777, 778, 779, 193, -340, 152, 170, 171, - -343, 933, -339, -280, 163, 882, 995, 164, 166, 825, - 826, 894, 496, 266, 728, 187, 195, 884, 172, 191, - -279, 995, 364, 708, -233, -339, 357, 357, 187, 187, - 139, 141, 360, 155, 158, 361, 362, 222, 189, 772, - 223, 199, 222, -278, 735, 223, 222, 152, 569, 351, - 314, 189, 189, 200, 188, 275, 981, 420, 173, 174, - 175, 780, 234, 584, 201, -339, 151, 894, 202, 203, - 152, 773, -342, 267, 33, 309, 325, 784, 315, 204, - 329, 330, -344, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, -344, 176, -345, - 799, 205, 349, 942, 822, 717, -345, 347, 356, 356, - 349, 803, -342, -341, 363, 962, 971, 832, 187, 187, - 989, 272, -344, 590, 717, 990, 973, 974, 206, 164, - 910, 195, 363, 297, 187, 991, 717, 207, -281, 349, - -282, 189, 189, 414, -341, 187, -345, 634, 239, -340, - 1011, 240, 312, 178, -276, -340, 871, 189, 191, 763, - 313, 273, 271, 975, 311, 1017, 520, 411, 189, 1004, - 1005, 208, 1006, 209, 940, 971, 904, -268, 943, 301, - 542, 179, 180, 441, -341, 190, 210, 211, 313, 191, - -277, 363, 304, 305, 199, -340, 198, 181, 587, 182, - 199, 183, 549, 550, 551, -278, 313, 554, -278, 528, - -278, 212, -278, 213, 965, 249, 214, 966, 919, 693, - -280, 967, 717, -280, 215, -280, 349, -280, 687, 765, - 216, 217, 279, 571, 218, 219, 608, 609, 610, 220, - 178, 184, 185, 186, 929, 509, 733, 509, 277, 496, - 496, 496, 496, 496, 959, 646, 287, 290, 293, 509, - 280, 281, 192, 509, 296, 311, 601, 602, 179, 180, - 298, 299, 603, 604, -343, -342, 605, -344, 509, 318, - 282, 886, 427, 440, -345, 306, -279, 509, 183, -279, - 963, -279, 346, -279, 353, 354, 349, 178, 440, -339, - -341, -340, 415, 979, 426, 512, 774, 319, 320, 440, - -268, 597, 521, 783, 221, 786, 787, 579, 538, 537, - 283, 284, 285, 535, 545, 179, 180, 321, 184, 185, - 186, 798, 539, 548, 775, 178, 552, 664, 665, 666, - 667, 668, 669, 740, 741, 183, 553, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 555, 556, 187, - 557, 558, 559, 179, 180, 888, 889, 322, 323, 324, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 189, 183, 560, 184, 185, 186, 788, 789, - 561, 790, 791, 792, 793, 794, 795, 520, 562, 563, - 564, -276, 597, 565, -276, 890, -276, 566, -276, -277, - 632, 632, -277, 567, -277, 568, -277, 222, 313, 570, - 223, 572, 576, 184, 185, 186, -281, -282, 573, -281, - -282, -281, -282, -281, -282, 187, 574, 577, 581, 578, - 589, 599, 810, 600, 657, 606, 614, 187, 615, 607, - 616, 617, 618, 620, 619, 187, 187, 187, 189, 622, - 623, -212, 627, 925, 628, 39, 641, 721, 635, 629, - 189, 636, 638, 640, 187, 642, 645, 660, 189, 189, - 189, 661, 662, 658, 689, 688, 723, 704, 726, 659, - 722, -273, 737, 937, 685, 520, 720, 189, 743, 754, - 761, 762, 767, 768, 837, 806, 632, 801, 939, 809, - 811, 812, 813, 814, 815, 816, 817, 818, 898, 899, - 821, 831, 835, 613, 819, 820, 836, 833, 881, 880, - 885, 896, 900, 901, 907, 926, 187, 927, -295, -296, - -285, -286, 964, -287, -288, -289, 905, -290, 999, -291, - -292, 187, 939, -293, -294, 928, 957, 496, 941, 189, - 950, 952, 953, 954, 509, 955, 958, 984, 597, 985, - 992, 998, 976, 1009, 189, -405, 997, 868, 1001, 1007, - 1015, 1019, 776, 869, 870, 804, 960, 436, 908, 866, - 877, 875, 944, 358, 1016, 949, 903, 637, 269, 496, - 270, 956, 879, 0, 187, 187, 187, 187, 597, 738, - 0, 440, 939, 721, 0, 0, 0, 909, 0, 701, - 702, 703, 352, 0, 0, 0, 0, 189, 189, 189, - 189, 496, 721, 0, 0, 0, 722, 0, 440, 0, - 0, 0, 720, 0, 721, 0, 0, 286, 408, 0, - 496, 496, 0, 921, 0, 722, 0, 0, 0, 0, - 0, 720, 878, 930, 0, 931, 496, 722, 0, 0, - 509, 935, 936, 720, 938, 0, 0, 0, 349, 932, - 187, 934, 0, 0, 0, 0, 948, 0, 0, 163, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 771, 802, 0, 189, 0, 0, 0, 0, 0, 807, - 983, 0, 0, 0, 0, 613, 0, 0, 0, 977, - 978, 0, 0, 0, 922, 0, 0, 0, 0, 986, - 721, 0, 987, 988, 0, 0, 0, 318, 0, 0, - 0, 597, 0, 0, 0, 0, 0, 0, 1002, 0, - 0, 0, 922, 722, 265, 0, 0, 0, 0, 720, - 0, 0, 0, 0, 0, 319, 320, 0, 349, 0, - 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 321, 0, 597, 363, 0, - 969, 970, 972, 0, 0, 0, 0, 0, 363, 0, - 597, 0, 139, 141, 158, 0, 0, 982, 913, 0, - 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 322, 323, 324, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 0, 187, 771, 0, 0, 0, 0, 969, - 970, 972, 0, 0, 0, 0, 0, 0, 363, 187, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 222, 0, 0, 223, 0, - 0, 0, 189, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 35, 36, 0, - 466, 0, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 0, 476, 477, 0, 478, 479, 480, 481, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 482, 483, 484, 485, 486, 487, 488, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 489, 490, 0, 491, 492, 392, - 393, 493, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 494, 0, 406, 495, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 35, 36, 0, 466, 0, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 0, 476, 477, 0, 478, - 479, 480, 481, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 482, 483, 484, - 485, 486, 487, 488, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 490, - 516, 491, 0, 392, 393, 493, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 494, 0, 406, - 495, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 35, 36, 0, 466, 0, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 0, - 476, 477, 0, 478, 479, 480, 481, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 482, 483, 484, 485, 486, 487, 488, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 112, 175, 233, 96, 190, 85, 177, 108, 243, 244, + 245, 150, 440, 268, 115, 281, 445, 106, 148, 522, + 88, 726, 285, 589, 318, 150, 291, 809, 147, 252, + 706, 824, 148, 612, 271, 269, 109, 180, 452, 684, + 328, 327, 254, 176, 875, 444, 257, 30, 715, 240, + 241, 873, 196, 120, 745, 777, 461, 720, 372, 30, + 951, 195, -320, 366, 256, 896, 261, 595, 473, 474, + 522, 664, 665, 666, 431, 889, 181, 3, 596, 963, + 936, -322, -308, 319, 150, 941, 257, -2, -308, 265, + -321, 148, 788, -141, 267, -279, 272, 750, 229, 271, + 445, 228, 689, 690, 256, 258, 238, 150, 627, -144, + 151, -141, 88, -199, 262, 862, 287, 521, -320, 954, + 152, 955, -325, 197, -326, 431, 628, 438, 109, 444, + 956, 266, 257, 260, 281, 263, 615, -322, 965, 447, + 616, -198, 230, 821, 358, 297, -321, 270, 358, 150, + 256, 261, 286, 249, 306, 278, 148, 271, 269, 307, + 854, 272, 198, 953, 597, 830, 301, 271, 521, 199, + 667, 200, 150, 263, 250, 535, 534, 875, -325, 148, + -326, 281, 875, 303, 515, 305, 285, 150, 150, 304, + 384, 297, 150, 701, 148, 148, 176, 788, 730, 262, + 520, 30, 263, 385, 324, 325, 875, 257, 460, 788, + 460, 701, 265, 635, 636, 585, 201, 587, 696, 272, + -324, 726, 358, 257, 358, 256, -307, 150, 330, 272, + 329, 879, -307, 465, 148, 287, 824, -267, -323, -320, + 202, -319, -309, 150, 368, 726, 369, -319, -309, -279, + 148, 520, 176, -310, 266, -199, 203, 895, 285, -310, + 374, 897, 150, -322, 204, 281, 258, 257, 109, 148, + 270, 370, 644, 381, 278, 383, -324, 205, -311, 382, + 378, 379, 446, 604, -311, 256, 822, -295, 271, 269, + -267, -312, 821, -295, -323, -320, 964, -312, -38, -321, + 358, -38, 358, 318, 451, 206, -313, 257, 821, 207, + 263, -293, -313, 208, 462, 463, -314, -293, 531, -322, + 379, 278, -314, -315, 810, 530, 297, 640, 209, -315, + -316, 706, 600, 701, 626, 641, -316, 601, 522, 522, + 522, 210, 285, 265, 637, 930, 642, -294, -317, 638, + 272, 580, -325, -294, -317, -321, 882, 150, 884, 211, + 886, 212, 319, -318, 148, 329, 446, 460, 460, -318, + 358, 579, -326, -324, 568, 213, -323, 706, 249, 364, + -38, 358, 358, -38, 214, 176, 182, 183, 184, 185, + 186, 187, 188, 215, 588, 216, 706, 217, 586, -38, + -298, 270, -38, 523, -277, 278, -298, 246, -325, 289, + 290, 701, 182, 183, 184, 185, 186, 187, 188, 359, + -299, -297, 30, 359, -296, 264, -299, -297, -326, -324, + -296, -90, -323, 298, 942, 701, 521, 521, 521, 945, + 876, 218, 219, 220, 221, 222, 223, 224, 364, 904, + 299, 621, 905, 302, 523, 322, 630, 326, 620, 586, + 904, -410, -410, 905, 360, 622, 16, 17, 832, 379, + 942, 945, 361, 961, 182, 183, 184, 185, 186, 187, + 188, 30, 701, 608, 609, 610, 376, 961, -198, 388, + 701, 701, 701, 701, 701, 701, 433, 359, 701, 359, + 435, 522, -267, 447, 189, 532, 533, 358, 561, 562, + 563, 591, 536, 540, 541, 543, 544, 545, 546, 520, + 520, 520, 547, 548, 549, 871, 550, 551, 552, 743, + 553, 554, 556, 555, 557, 570, 582, 12, 13, 14, + 701, 271, 594, 460, 16, 17, 18, 19, 20, 21, + 22, -210, 161, 592, 263, 593, 603, 605, 614, 701, + 25, 647, 631, 634, 643, 673, 648, 719, 716, 713, + 646, 651, 601, 672, 675, 359, 676, 359, 150, 677, + 678, 679, 714, 746, 717, 148, 638, 747, 748, 771, + 760, 871, 652, 797, 754, 687, -273, 877, 805, 521, + 808, 807, 683, 735, 817, 819, 837, 838, 841, 843, + 844, 845, 851, 150, 150, 150, 846, 847, 848, 849, + 148, 148, 148, 850, 852, 853, 867, 891, 888, 894, + 732, 733, 734, 900, 522, 902, 903, 868, 522, 522, + 913, 935, 937, 938, 263, 359, 939, 947, 949, 79, + 569, 782, 799, 671, 801, 909, 359, 359, 632, 783, + 749, 633, 784, 522, 793, 827, 150, 785, 150, 778, + 150, 108, 97, 148, 864, 148, 858, 148, 794, 880, + 915, 791, 520, 798, 88, 568, 948, 800, 790, 559, + 281, 233, 268, 558, 755, 952, 866, 285, 757, 758, + 792, 966, 761, 762, 763, 764, 765, 766, 767, 768, + 769, 770, 833, 271, 269, 914, 820, 795, 729, 796, + 449, 940, 523, 523, 523, 450, 885, 869, 0, 257, + 925, 806, 521, 0, 0, 818, 521, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, + 0, 0, 834, 358, 0, 0, 281, 0, 0, 0, + 0, 521, 0, 233, 0, 0, 0, 911, 265, 859, + 150, 580, 857, 267, 0, 272, 0, 148, 702, 271, + 269, 859, 359, 860, 271, 269, 863, 0, 297, 855, + 859, 872, 0, 869, 0, 865, 702, 196, 869, 0, + 0, 88, 0, 0, 150, 839, 195, 257, 842, 358, + 266, 148, 0, 0, 0, 520, 263, 792, 0, 520, + 520, 687, 861, 0, 0, 256, 870, 278, 0, 271, + 278, 0, 0, 0, 861, 0, 890, 580, 0, 265, + 0, 272, 0, 0, 520, 0, 272, 0, 0, 0, + 0, 150, 0, 0, 0, 0, 859, 872, 148, 0, + 0, 859, 0, 259, 0, 0, 297, 910, 907, 0, + 0, 0, 0, 908, 288, 0, 912, 0, 0, 0, + 0, 266, 263, 0, 0, 523, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 870, 0, 0, + 0, 0, 0, 0, 150, 278, 0, 0, 150, 0, + 0, 148, 0, 0, 0, 148, 0, 0, 702, 0, + 0, 943, 0, 0, 0, 946, 944, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, + 150, 0, 0, 0, 0, 0, 0, 148, 0, 0, + 0, 331, 0, 0, 0, 335, 336, 960, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 308, 309, 310, 311, 312, 313, 314, 736, + 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 371, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 489, 490, 0, 491, 522, 392, 393, 493, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 494, 0, 406, 495, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 35, - 36, 0, 466, 0, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 0, 476, 477, 0, 478, 479, 480, - 481, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 482, 483, 484, 485, 486, - 487, 488, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 489, 490, 0, 491, - 536, 392, 393, 493, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 494, 0, 406, 495, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 35, 36, 0, 466, 0, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 0, 476, 477, - 0, 478, 479, 480, 481, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 482, - 483, 484, 485, 486, 487, 488, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 489, 490, 540, 491, 0, 392, 393, 493, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 494, - 0, 406, 495, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 35, 36, 0, - 466, 0, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 0, 476, 477, 0, 478, 479, 480, 481, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 482, 483, 484, 485, 486, 487, 488, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 489, 490, 546, 491, 0, 392, - 393, 493, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 494, 0, 406, 495, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 35, 36, 0, 466, 0, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 0, 476, 477, 0, 478, - 479, 480, 481, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 482, 483, 484, - 485, 486, 487, 488, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 490, - 0, 491, 575, 392, 393, 493, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 494, 0, 406, - 495, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 35, 36, 0, 466, 0, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 0, - 476, 477, 0, 478, 479, 480, 481, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 482, 483, 484, 485, 486, 487, 488, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 489, 490, 694, 491, 0, 392, 393, 493, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 494, 0, 406, 495, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 35, - 36, 0, 466, 0, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 0, 476, 477, 0, 478, 479, 480, - 481, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 482, 483, 484, 485, 486, - 487, 488, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 489, 490, 695, 491, - 0, 392, 393, 493, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 494, 0, 406, 495, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 35, 36, 0, 466, 0, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 0, 476, 477, - 0, 478, 479, 480, 481, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 482, - 483, 484, 485, 486, 487, 488, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 489, 490, 696, 491, 0, 392, 393, 493, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 494, - 0, 406, 495, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 35, 36, 0, - 466, 0, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 0, 476, 477, 0, 478, 479, 480, 481, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 482, 483, 484, 485, 486, 487, 488, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 489, 490, 0, 491, 697, 392, - 393, 493, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 494, 0, 406, 495, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 35, 36, 0, 466, 0, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 0, 476, 477, 0, 478, - 479, 480, 481, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 482, 483, 484, - 485, 486, 487, 488, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 490, - 0, 491, 0, 392, 393, 493, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 494, 698, 406, - 495, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 35, 36, 0, 466, 0, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 0, - 476, 477, 0, 478, 479, 480, 481, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 482, 483, 484, 485, 486, 487, 488, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 489, 490, 961, 491, 0, 392, 393, 493, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 494, 0, 406, 495, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 35, - 36, 0, 466, 0, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 0, 476, 477, 0, 478, 479, 480, - 481, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 482, 483, 484, 485, 486, - 487, 488, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 489, 490, 1008, 491, - 0, 392, 393, 493, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 494, 0, 406, 495, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 35, 36, 0, 466, 0, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 0, 476, 477, - 0, 478, 479, 480, 481, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 482, - 483, 484, 485, 486, 487, 488, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, + 702, 0, 523, 523, 259, 0, 0, 0, 359, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 371, 0, 0, 0, 0, 0, 0, 523, 0, 0, + 0, 0, 0, 0, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 702, 0, 0, + 0, 0, 0, 0, 0, 702, 702, 702, 702, 702, + 702, 0, 0, 702, 359, 0, 537, 538, 539, 0, + 0, 542, 0, 0, 0, 738, 0, 0, 0, 0, + 0, 77, 289, 290, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 127, 128, 129, 130, 131, 132, + 133, 574, 0, 0, 575, 702, 0, 0, 0, 0, + 0, 0, 0, 0, 561, 562, 563, 0, 0, 0, + 0, 564, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 489, 490, 0, 491, 1013, 392, 393, 493, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 494, - 0, 406, 495, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 35, 36, 0, - 466, 0, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 0, 476, 477, 0, 478, 479, 480, 481, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 482, 483, 484, 485, 486, 487, 488, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 490, 994, 491, 0, 392, - 393, 493, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 494, 0, 406, 495, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 35, 36, 0, 466, 0, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 0, 476, 477, 0, 478, - 479, 480, 481, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 482, 483, 484, - 485, 486, 487, 488, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1014, 490, - 0, 491, 0, 392, 393, 493, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 494, 0, 406, - 495, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 35, 36, 0, 466, 0, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 0, - 476, 477, 0, 478, 479, 480, 481, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 482, 483, 484, 485, 486, 487, 488, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1020, 490, 0, 491, 0, 392, 393, 493, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 494, 0, 406, 495, 4, 5, 0, 0, 0, - 838, 839, 0, 0, 0, 0, 0, 0, 0, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 840, - 841, 30, 31, 842, 0, 33, 0, 0, 34, 35, - 36, 843, 844, 38, 39, 40, 41, 0, 43, 845, - 45, 161, 47, 846, 0, 0, 847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 320, 0, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 0, + 0, 0, 0, 0, 320, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 0, 490, 491, 77, 492, 0, 493, 494, 495, 496, + 497, 498, 499, 0, 500, 501, 502, 503, 504, 505, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 506, 507, 508, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 663, 0, 16, 17, 18, 19, 20, 21, 22, 352, + 161, 0, 0, 0, 0, 353, 0, 0, 0, 0, + 0, 0, 509, 510, 511, 512, 513, 514, 515, 0, + 516, 517, 518, 0, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 519, 0, 0, 0, 0, 0, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 320, 0, 0, 154, 155, 156, 157, + 158, 159, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 13, 14, 231, -226, 0, 0, 16, + 17, 18, 19, 20, 21, 22, 0, 161, 0, 289, + 290, 26, 259, 0, 0, 389, 390, 0, 0, 0, + 574, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 0, 30, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 308, 309, 310, 311, 312, 313, 314, 273, 274, + 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 414, 0, 415, 416, + 0, 417, 418, 419, 0, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 0, 0, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 371, + 0, 0, 0, 0, 0, 0, 0, 0, 371, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 848, - 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 863, 864, 914, 915, 0, - 0, 0, 838, 839, 0, 0, 0, 0, 865, 0, - 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 840, 841, 145, 916, 0, 0, 33, 0, 0, - 34, 35, 36, 0, 844, 38, 39, 40, 0, 0, - 0, 845, 160, 161, 0, 0, 0, 0, 847, 0, + 320, 0, 0, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 289, 290, 0, 371, 371, 0, 0, 0, 371, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 509, 510, 576, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 509, 510, 751, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, - 0, 0, 838, 839, 0, 0, 0, 0, 0, 0, - 865, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 840, 841, 145, 31, 0, 0, 33, 0, 0, - 34, 35, 36, 0, 844, 38, 0, 40, 0, 0, - 0, 845, 160, 161, 0, 0, 0, 0, 847, 0, + 0, 0, 0, 0, 0, 0, 0, 509, 510, 0, + 512, 513, 514, 515, 0, 516, 517, 518, 752, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 509, 510, 0, + 512, 513, 514, 515, 753, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 509, 510, 958, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 874, 510, 0, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, - 0, 0, 980, 839, 0, 0, 0, 0, 0, 0, - 865, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 840, 841, 145, 146, 0, 0, 33, 0, 0, - 0, 35, 36, 0, 844, 38, 0, 40, 0, 0, - 0, 845, 160, 161, 0, 0, 0, 0, 847, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 510, 0, + 512, 513, 514, 515, 957, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 959, 510, 0, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 506, 507, + 508, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 967, 510, 0, + 512, 513, 514, 515, 0, 516, 517, 518, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 519, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 923, 692, 924, + 917, 694, 918, 696, 0, 722, 723, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, - 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, - 865, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 145, 146, 0, 0, 33, 0, 0, - 0, 35, 36, 0, 159, 38, 0, 40, 0, 0, - 0, 147, 160, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 917, 694, 918, 696, 919, 722, 723, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 917, 694, 918, 696, 922, 722, 723, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 917, 694, 918, 696, 927, 722, 723, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 148, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 917, 694, 918, 696, 0, 722, 723, 699, 929, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, - 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, - 911, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 840, 841, 145, 146, 318, 0, 33, 0, 0, - 0, 35, 36, 0, 0, 0, 0, 40, 0, 0, - 0, 845, 160, 0, 0, 0, 0, 0, 923, 0, - 0, 0, 0, 319, 320, 0, 0, 0, 0, 0, - 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, - 0, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 0, 0, 0, 0, - 709, 0, 503, 504, 505, 0, 506, 507, 0, 0, - 0, 251, 252, 322, 323, 324, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 247, 248, - 924, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 710, 0, - 0, 0, 0, 0, 0, 0, 0, 428, 0, 0, - 0, 0, 0, 222, 0, 0, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 429, 430, 0, 711, 254, - 255, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 429, 430, 431, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 431, 0, 0, 712, 0, 0, 0, - 0, 0, 428, 0, 0, 713, 714, 715, 0, 0, - 0, 0, 0, 0, 0, 432, 433, 434, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 429, 430, 428, 432, 433, 434, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, - 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 429, 430, 0, 0, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 693, 694, 695, 696, 0, 697, 698, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 431, 0, 435, 0, 0, 0, 0, 0, 0, 0, - 432, 433, 434, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 0, 0, 178, 663, 664, - 665, 666, 667, 668, 669, 0, 0, 0, 0, 0, - 432, 433, 434, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 179, 180, 0, 0, 692, - 0, 0, 178, 663, 664, 665, 666, 667, 668, 669, - 0, 0, 0, 0, 0, 183, 0, 0, 318, 0, - 0, 0, 0, 670, 671, 672, 673, 0, 0, 732, - 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 319, 320, 0, 0, - 183, 0, 0, 0, 0, 184, 185, 186, 670, 671, - 672, 673, 0, 0, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 693, 694, 695, 696, 0, 697, 928, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 0, 694, 0, 696, 0, 722, 723, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 466, 467, 468, 469, 470, 471, 472, 689, 690, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 0, 490, 491, 0, 492, + 0, 493, 494, 495, 496, 497, 498, 499, 0, 500, + 501, 502, 503, 504, 505, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 0, 691, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 184, 185, 186, 674, 0, 675, 0, 0, 0, 0, - 0, 0, 676, 677, 251, 252, 322, 323, 324, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 0, 0, 0, 0, 142, 143, 0, 674, 0, - 0, 144, 0, 0, 0, 0, 0, 676, 677, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 145, 146, 0, 0, 33, 0, 0, 0, 35, - 36, 0, 0, 0, 0, 40, 0, 0, 0, 147, - 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, + 0, 694, 0, 696, 0, 697, 0, 699, 0, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 700, + 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, + 19, 20, 21, 22, 352, 161, 12, 13, 14, 15, + 353, 0, 0, 16, 17, 18, 19, 20, 21, 22, + 773, 161, 24, 25, 0, 26, 27, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, - 0, 0, 0, 0, 117, 118, 0, 0, 0, 148, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 0, 0, 0, 30, + 0, 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, 119, 319, 320, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 321, 0, 0, 0, 310, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, - 0, 0, 0, 0, 0, 322, 323, 324, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 965, 0, 0, 966, 0, 0, 0, 967, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, - 0, 0, 965, 6, 7, 966, 0, 0, 0, 967, - 0, 0, 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, 0, 33, 0, - 0, 34, 35, 36, 0, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 775, 776, 5, 6, + 7, 8, 9, 10, 11, 0, 0, 0, 0, 77, + 0, 0, 0, 0, 12, 13, 14, 15, 0, 0, + 0, 16, 17, 18, 19, 20, 21, 22, 0, 23, + 24, 25, 0, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 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, 0, 76, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 77, 0, 0, + 0, 0, 12, 13, 14, 231, 0, 0, 0, 16, + 17, 18, 19, 20, 21, 22, 0, 161, 24, 25, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, 116, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 117, 118, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 5, 6, 7, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, + 15, 0, 0, 0, 16, 17, 18, 19, 20, 21, + 22, 0, 161, 24, 0, 77, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 308, 309, 310, 311, 312, 313, 314, 0, + 30, 0, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 13, 14, 231, 0, 0, 0, 16, + 17, 18, 19, 20, 21, 22, 0, 161, 24, 0, + 77, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 127, 128, 129, + 130, 131, 132, 133, 0, 30, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 77, 191, 0, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, + 132, 133, 273, 274, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 30, 308, 309, 310, + 311, 312, 313, 314, 736, 737, 0, 24, 0, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 0, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 318, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, + 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, + 132, 133, 0, 0, 0, 0, 77, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 0, 0, 0, 0, 0, 0, 0, 24, 251, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 30, 308, 309, 310, 311, 312, 313, 314, + 273, 274, 0, 0, 77, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 0, 0, + 738, 0, 0, 0, 0, 0, 77, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 0, 904, 0, 0, 905, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 156, 0, 0, 319, 320, 0, 0, 0, 0, + 0, 0, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 77, 30, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 0, 0, 0, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 0, + 127, 128, 129, 130, 131, 132, 133, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 77, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 16, 17, 18, 19, 20, 21, + 22, 352, 161, 0, 0, 0, 0, 353, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 888, 889, 322, 323, 324, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 5, 0, 0, 0, 6, 144, 0, 0, 0, 0, - 0, 0, 890, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 145, 31, 0, 0, 33, - 0, 0, 34, 35, 36, 0, 159, 38, 0, 40, - 0, 0, 0, 147, 160, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 389, 390, 0, 0, 0, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 0, 0, 0, 0, 0, 154, 155, 156, + 157, 158, 159, 160, 0, 0, 0, 0, 0, 0, + 0, 289, 290, 12, 13, 14, 231, 0, 0, 0, + 16, 17, 18, 19, 20, 21, 22, 0, 161, 24, + 25, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 414, 0, 415, 416, 0, 417, + 418, 419, 0, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 0, 0, 0, 30, 0, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 154, 155, 156, 157, 158, 159, 160, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, + 14, 15, 0, 0, 0, 16, 17, 18, 19, 20, + 21, 22, 0, 161, 24, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 148, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 142, 143, - 0, 0, 0, 0, 144, 0, 503, 504, 505, 0, - 506, 507, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 145, 146, 0, 0, 33, 0, - 0, 0, 35, 36, 0, 0, 0, 0, 40, 0, - 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 154, 155, 156, + 157, 158, 159, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 13, 14, 231, 0, 0, 0, + 16, 17, 18, 19, 20, 21, 22, 0, 161, 24, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 142, 143, 0, - 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, - 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 145, 146, 0, 0, 33, 0, 0, - 0, 35, 36, 0, 159, 38, 0, 40, 0, 0, - 0, 147, 160, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 154, 155, 156, 157, 158, 159, 160, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, + 14, 15, 0, 0, 0, 16, 17, 18, 19, 20, + 21, 22, 0, 161, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 148, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 142, 143, 0, 0, - 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 154, 155, 156, + 157, 158, 159, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 13, 14, 231, 0, 0, 0, + 16, 17, 18, 19, 20, 21, 22, 0, 161, 0, + 0, 0, 26, 154, 155, 156, 157, 158, 159, 160, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 617, + 0, 618, 619, 0, 0, 0, 16, 17, 18, 19, + 20, 21, 22, 0, 161, 0, 30, 0, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174 +}; + +static const yytype_int16 yycheck[] = +{ + 4, 27, 96, 4, 28, 4, 27, 4, 99, 100, + 101, 15, 284, 115, 4, 120, 286, 4, 15, 321, + 4, 602, 120, 387, 181, 29, 121, 687, 15, 109, + 584, 727, 29, 448, 115, 115, 4, 27, 298, 581, + 195, 195, 109, 27, 803, 286, 109, 72, 590, 120, + 121, 802, 29, 4, 629, 668, 305, 599, 241, 72, + 931, 29, 72, 229, 109, 835, 111, 26, 10, 11, + 372, 23, 24, 25, 278, 826, 27, 0, 37, 950, + 900, 72, 120, 181, 88, 905, 149, 0, 126, 115, + 72, 88, 668, 20, 115, 120, 115, 639, 90, 180, + 370, 88, 10, 11, 149, 109, 96, 111, 20, 36, + 12, 38, 96, 126, 111, 775, 120, 321, 128, 26, + 128, 28, 72, 126, 72, 329, 38, 284, 96, 370, + 37, 115, 195, 110, 239, 112, 125, 128, 958, 124, + 129, 126, 121, 724, 225, 149, 128, 115, 229, 153, + 195, 196, 120, 104, 180, 120, 153, 238, 238, 180, + 773, 180, 126, 933, 123, 740, 153, 248, 372, 126, + 122, 126, 176, 150, 120, 330, 330, 936, 128, 176, + 128, 286, 941, 175, 126, 177, 284, 191, 192, 176, + 270, 195, 196, 584, 191, 192, 180, 773, 613, 196, + 321, 72, 179, 270, 191, 192, 965, 270, 303, 785, + 305, 602, 238, 462, 463, 381, 126, 383, 126, 238, + 72, 802, 303, 286, 305, 270, 120, 231, 196, 248, + 195, 806, 126, 126, 231, 239, 932, 130, 72, 72, + 126, 120, 120, 247, 231, 826, 236, 126, 126, 120, + 247, 372, 236, 120, 238, 126, 126, 832, 356, 126, + 247, 836, 266, 72, 126, 370, 270, 330, 236, 266, + 238, 239, 532, 265, 239, 267, 128, 126, 120, 266, + 257, 258, 286, 440, 126, 330, 126, 120, 369, 369, + 130, 120, 873, 126, 128, 128, 956, 126, 121, 72, + 381, 124, 383, 460, 296, 126, 120, 370, 889, 126, + 287, 120, 126, 126, 306, 307, 120, 126, 322, 128, + 297, 286, 126, 120, 688, 322, 330, 510, 126, 126, + 120, 885, 120, 724, 455, 518, 126, 125, 640, 641, + 642, 126, 440, 369, 120, 887, 529, 120, 120, 125, + 369, 375, 72, 126, 126, 128, 812, 361, 814, 126, + 816, 126, 460, 120, 361, 330, 370, 462, 463, 126, + 451, 375, 72, 72, 361, 126, 72, 931, 329, 120, + 121, 462, 463, 124, 126, 369, 3, 4, 5, 6, + 7, 8, 9, 126, 386, 126, 950, 126, 120, 121, + 120, 369, 124, 321, 120, 370, 126, 126, 128, 133, + 134, 802, 3, 4, 5, 6, 7, 8, 9, 225, + 120, 120, 72, 229, 120, 128, 126, 126, 128, 128, + 126, 121, 128, 121, 907, 826, 640, 641, 642, 912, + 804, 3, 4, 5, 6, 7, 8, 9, 120, 121, + 129, 455, 124, 12, 372, 123, 457, 120, 455, 120, + 121, 26, 27, 124, 121, 455, 26, 27, 740, 446, + 943, 944, 124, 946, 3, 4, 5, 6, 7, 8, + 9, 72, 873, 13, 14, 15, 126, 960, 126, 126, + 881, 882, 883, 884, 885, 886, 126, 303, 889, 305, + 123, 803, 130, 124, 121, 121, 120, 588, 23, 24, + 25, 130, 125, 125, 125, 125, 125, 125, 125, 640, + 641, 642, 125, 125, 125, 795, 125, 125, 125, 624, + 125, 127, 125, 127, 120, 120, 124, 19, 20, 21, + 931, 622, 131, 638, 26, 27, 28, 29, 30, 31, + 32, 127, 34, 130, 531, 127, 127, 130, 122, 950, + 36, 127, 120, 120, 120, 30, 127, 18, 131, 120, + 125, 125, 125, 125, 122, 381, 125, 383, 582, 123, + 123, 127, 120, 20, 131, 582, 125, 120, 120, 125, + 127, 861, 543, 124, 122, 582, 131, 71, 125, 803, + 125, 127, 579, 622, 127, 127, 127, 127, 127, 127, + 127, 127, 125, 617, 618, 619, 127, 127, 127, 127, + 617, 618, 619, 127, 125, 127, 120, 123, 131, 127, + 617, 618, 619, 125, 936, 13, 13, 792, 940, 941, + 120, 127, 127, 127, 621, 451, 127, 120, 127, 4, + 365, 668, 672, 564, 676, 857, 462, 463, 459, 668, + 638, 460, 668, 965, 668, 731, 670, 668, 672, 668, + 674, 668, 4, 670, 785, 672, 773, 674, 668, 808, + 878, 668, 803, 670, 668, 672, 916, 674, 668, 356, + 795, 785, 794, 355, 645, 932, 787, 795, 649, 650, + 668, 962, 653, 654, 655, 656, 657, 658, 659, 660, + 661, 662, 741, 794, 794, 870, 721, 668, 606, 668, + 295, 904, 640, 641, 642, 295, 815, 794, -1, 792, + 883, 682, 936, -1, -1, 718, 940, 941, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 792, -1, -1, + -1, -1, 744, 834, -1, -1, 861, -1, -1, -1, + -1, 965, -1, 857, -1, -1, -1, 858, 794, 773, + 774, 795, 773, 794, -1, 794, -1, 774, 584, 860, + 860, 785, 588, 773, 865, 865, 785, -1, 792, 773, + 794, 795, -1, 860, -1, 785, 602, 774, 865, -1, + -1, 785, -1, -1, 808, 756, 774, 870, 759, 890, + 794, 808, -1, -1, -1, 936, 793, 785, -1, 940, + 941, 808, 773, -1, -1, 870, 794, 792, -1, 910, + 795, -1, -1, -1, 785, -1, 828, 861, -1, 865, + -1, 860, -1, -1, 965, -1, 865, -1, -1, -1, + -1, 855, -1, -1, -1, -1, 860, 861, 855, -1, + -1, 865, -1, 109, -1, -1, 870, 857, 855, -1, + -1, -1, -1, 857, 120, -1, 860, -1, -1, -1, + -1, 865, 859, -1, -1, 803, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 861, 865, -1, -1, + -1, -1, -1, -1, 908, 870, -1, -1, 912, -1, + -1, 908, -1, -1, -1, 912, -1, -1, 724, -1, + -1, 908, -1, -1, -1, 912, 910, -1, -1, -1, + -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, + 944, -1, -1, -1, -1, -1, -1, 944, -1, -1, + -1, 197, -1, -1, -1, 201, 202, 944, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 239, -1, -1, 802, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 936, -1, + 826, -1, 940, 941, 270, -1, -1, -1, 834, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 284, -1, + 286, -1, -1, -1, -1, -1, -1, 965, -1, -1, + -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 873, -1, -1, + -1, -1, -1, -1, -1, 881, 882, 883, 884, 885, + 886, -1, -1, 889, 890, -1, 332, 333, 334, -1, + -1, 337, -1, -1, -1, 126, -1, -1, -1, -1, + -1, 132, 133, 134, -1, -1, -1, -1, -1, -1, + 356, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 367, -1, -1, 370, 931, -1, -1, -1, -1, + -1, -1, -1, -1, 23, 24, 25, -1, -1, -1, + -1, 30, -1, -1, 950, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 440, -1, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, -1, + -1, -1, -1, -1, 460, 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, 145, 146, 0, 0, 33, 0, 0, 0, - 35, 36, 0, 0, 0, 0, 40, 0, 0, 0, - 147, 160, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 148, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 142, 143, 0, 0, 0, - 0, 144, 194, 0, 0, 0, 0, 0, 0, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 145, 146, 0, 0, 33, 0, 0, 0, 35, - 36, 0, 0, 0, 0, 40, 0, 0, 0, 147, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 4, 5, 0, 0, 0, 0, - 144, 0, 0, 0, 0, 0, 0, 0, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 0, 0, 33, 0, 0, 0, 35, 36, - 0, 0, 0, 0, 40, 0, 0, 0, 147, 0, - 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 148, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 142, 143, 0, 0, 0, 0, 144, - 295, 0, 0, 0, 0, 0, 0, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 145, - 146, 0, 0, 33, 0, 0, 0, 35, 36, 0, - 0, 0, 0, 40, 0, 0, 0, 147, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 142, 143, 0, 0, 0, 0, 144, 0, - 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 145, 146, - 0, 0, 33, 0, 0, 0, 35, 36, 0, 0, - 0, 0, 40, 0, 0, 0, 147, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 148, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 142, 143, 0, 0, 0, 0, 144, 0, 0, - 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 145, 146, 0, - 0, 0, 0, 0, 0, 35, 36, 0, 0, 0, - 0, 40, 0, 0, 0, 147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 148, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 142, 143, 0, 0, 0, 0, 279, 0, 0, 0, - 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 280, 281, 145, 146, 0, 0, - 0, 0, 0, 0, 35, 36, 0, 0, 0, 0, - 0, 0, 0, 0, 282, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 283, 284, 285, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 529, - 0, 0, 0, 0, 279, 0, 0, 0, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 280, 281, 246, 0, 0, 0, 0, 0, - 0, 0, 35, 36, 0, 0, 0, 0, 530, 0, - 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 247, 248, 0, 0, 0, 0, 0, 0, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 283, 284, 285, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 0, 0, 318, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 251, 252, 253, 254, 255, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 319, 320, 318, - 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 319, 320, 0, - 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 0, 0, 251, 252, 322, 323, 324, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 0, 0, 246, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 247, 248, 116, 0, 0, 0, 0, 0, - 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 250, 0, 0, 0, 0, 0, 0, 318, - 0, 0, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 0, 0, 0, 0, 319, 320, 0, - 0, 0, 253, 254, 255, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 321, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 365, 366, 0, 0, 0, 0, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 391, 0, 0, 0, 392, - 393, 0, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 0, 406 -}; - -static const yytype_int16 yycheck[] = -{ - 4, 5, 37, 149, 3, 278, 256, 90, 92, 300, - 43, 272, 4, 5, 413, 96, 97, 98, 99, 105, - 92, 294, 94, 684, 94, 526, 30, 31, 533, 616, - 757, 277, 758, 43, 3, 34, 623, 298, 30, 31, - 310, 802, 274, 289, 226, 521, 736, 293, 5, 6, - 7, 967, 0, 151, 44, 892, 288, 234, 156, 44, - 292, 593, 308, 44, 5, 6, 7, 94, 37, 535, - 302, 317, 94, 42, 951, 307, 139, 135, 176, 620, - 94, 139, 94, 43, 316, 45, 263, 5, 6, 7, - 9, 135, 190, 843, 94, 94, 6, 1013, 102, 94, - 198, 60, 5, 6, 7, 50, 766, 5, 6, 7, - 256, 948, 5, 6, 7, 60, 94, 139, 37, 38, - 134, 871, 94, 135, 159, 785, 1003, 37, 38, 759, - 760, 892, 364, 102, 93, 168, 46, 797, 57, 139, - 135, 1018, 240, 619, 134, 94, 232, 233, 181, 182, - 142, 143, 235, 145, 146, 236, 237, 147, 168, 691, - 150, 139, 147, 135, 630, 150, 147, 139, 350, 150, - 197, 181, 182, 135, 43, 139, 926, 263, 97, 98, - 99, 138, 92, 143, 135, 134, 135, 948, 135, 135, - 139, 692, 94, 103, 43, 193, 200, 138, 197, 135, - 204, 205, 94, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 94, 137, 94, - 138, 135, 226, 883, 756, 766, 94, 225, 232, 233, - 234, 732, 134, 94, 238, 138, 916, 769, 271, 272, - 138, 94, 134, 420, 785, 138, 3, 4, 135, 159, - 837, 161, 256, 163, 287, 945, 797, 135, 135, 263, - 135, 271, 272, 261, 94, 298, 134, 537, 134, 94, - 996, 137, 134, 9, 135, 94, 781, 287, 139, 135, - 142, 134, 94, 40, 194, 1012, 290, 256, 298, 969, - 970, 135, 972, 135, 881, 975, 828, 153, 885, 168, - 134, 37, 38, 272, 134, 135, 135, 135, 142, 139, - 135, 315, 181, 182, 139, 134, 135, 53, 134, 55, - 139, 57, 326, 327, 328, 134, 142, 331, 137, 298, - 139, 135, 141, 135, 134, 46, 135, 137, 843, 600, - 134, 141, 883, 137, 135, 139, 350, 141, 594, 1010, - 135, 135, 9, 357, 135, 135, 5, 6, 7, 135, - 9, 97, 98, 99, 865, 275, 627, 277, 139, 601, - 602, 603, 604, 605, 906, 555, 94, 137, 139, 289, - 37, 38, 50, 293, 135, 295, 484, 485, 37, 38, - 94, 140, 490, 491, 94, 94, 494, 94, 308, 9, - 57, 800, 271, 272, 94, 134, 134, 317, 57, 137, - 911, 139, 134, 141, 134, 134, 420, 9, 287, 94, - 94, 94, 143, 924, 94, 141, 699, 37, 38, 298, - 153, 435, 137, 706, 44, 71, 72, 154, 134, 137, - 97, 98, 99, 734, 136, 37, 38, 57, 97, 98, - 99, 724, 134, 142, 700, 9, 142, 11, 12, 13, - 14, 15, 16, 643, 644, 57, 142, 647, 648, 649, - 650, 651, 652, 653, 654, 655, 656, 142, 142, 512, - 142, 142, 142, 37, 38, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 512, 57, 142, 97, 98, 99, 144, 145, - 142, 147, 148, 149, 150, 151, 152, 521, 142, 142, - 142, 134, 526, 142, 137, 135, 139, 136, 141, 134, - 534, 535, 137, 136, 139, 142, 141, 147, 142, 134, - 150, 134, 153, 97, 98, 99, 134, 134, 134, 137, - 137, 139, 139, 141, 141, 588, 134, 153, 94, 136, - 136, 135, 742, 94, 568, 140, 137, 600, 140, 142, - 137, 140, 138, 143, 142, 608, 609, 610, 588, 140, - 137, 136, 94, 844, 140, 52, 136, 620, 140, 142, - 600, 138, 140, 142, 627, 136, 142, 135, 608, 609, - 610, 16, 16, 154, 141, 135, 138, 142, 136, 154, - 620, 153, 138, 874, 153, 619, 620, 627, 136, 142, - 139, 10, 136, 140, 137, 136, 630, 142, 878, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 11, 11, - 136, 135, 135, 512, 142, 142, 136, 142, 137, 141, - 137, 142, 136, 136, 136, 135, 689, 50, 135, 135, - 135, 135, 912, 135, 135, 135, 154, 135, 43, 135, - 135, 704, 922, 135, 135, 135, 140, 909, 136, 689, - 136, 136, 136, 136, 594, 142, 136, 134, 692, 134, - 136, 135, 919, 134, 704, 138, 138, 781, 136, 136, - 134, 136, 704, 781, 781, 734, 908, 272, 833, 781, - 781, 781, 887, 233, 1010, 893, 827, 544, 106, 951, - 107, 902, 781, -1, 757, 758, 759, 760, 732, 639, - -1, 600, 982, 766, -1, -1, -1, 835, -1, 608, - 609, 610, 228, -1, -1, -1, -1, 757, 758, 759, - 760, 983, 785, -1, -1, -1, 766, -1, 627, -1, - -1, -1, 766, -1, 797, -1, -1, 913, 249, -1, - 1002, 1003, -1, 843, -1, 785, -1, -1, -1, -1, - -1, 785, 781, 866, -1, 868, 1018, 797, -1, -1, - 700, 872, 873, 797, 875, -1, -1, -1, 802, 871, - 833, 871, -1, -1, -1, -1, 892, -1, -1, 844, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 689, 731, -1, 833, -1, -1, -1, -1, -1, 739, - 928, -1, -1, -1, -1, 704, -1, -1, -1, 920, - 921, -1, -1, -1, 843, -1, -1, -1, -1, 932, - 883, -1, 933, 934, -1, -1, -1, 9, -1, -1, - -1, 865, -1, -1, -1, -1, -1, -1, 966, -1, - -1, -1, 871, 883, 878, -1, -1, -1, -1, 883, - -1, -1, -1, -1, -1, 37, 38, -1, 892, -1, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 57, -1, 911, 912, -1, - 914, 915, 916, -1, -1, -1, -1, -1, 922, -1, - 924, -1, 914, 915, 916, -1, -1, 926, 838, -1, - -1, -1, -1, -1, 844, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 948, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - -1, -1, -1, 996, 833, -1, -1, -1, -1, 973, - 974, 975, -1, -1, -1, -1, -1, -1, 982, 1012, - -1, -1, -1, -1, -1, -1, 996, -1, -1, -1, - -1, -1, -1, -1, -1, 147, -1, -1, 150, -1, - -1, -1, 1012, 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, -1, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, -1, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, -1, 155, - 156, 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, -1, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - 62, 63, -1, 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, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 134, 135, -1, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 134, 135, -1, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, 62, 63, - -1, 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, 111, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - -1, 155, 156, 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, -1, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, 136, 137, -1, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 134, 135, - -1, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, -1, 155, - 156, 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, -1, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - 62, 63, -1, 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, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, - -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, 62, 63, - -1, 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, 111, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - -1, 155, 156, 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, -1, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 134, 135, -1, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 134, 135, - -1, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 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, -1, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - 62, 63, -1, 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, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 134, 135, 136, 137, -1, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, 62, 63, -1, 65, 66, 67, + 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, + -1, 29, 30, 132, 32, -1, 34, 35, 36, 37, + 38, 39, 40, -1, 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, 111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, - -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, 62, 63, - -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 556, -1, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, + -1, -1, 120, 121, 122, 123, 124, 125, 126, -1, + 128, 129, 130, -1, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, -1, -1, -1, -1, -1, 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, 111, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, -1, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - -1, 155, 156, 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, -1, - 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 135, 136, 137, -1, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -1, 155, 156, 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, -1, 50, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, 62, 63, -1, 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, 111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 134, 135, - -1, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, -1, 155, - 156, 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, -1, 50, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - 62, 63, -1, 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, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 134, 135, -1, 137, -1, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, -1, 155, 156, 3, 4, -1, -1, -1, - 8, 9, -1, -1, -1, -1, -1, -1, -1, 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, -1, 43, -1, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, - 58, 59, 60, 61, -1, -1, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 3, 4, -1, - -1, -1, 8, 9, -1, -1, -1, -1, 146, -1, - -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, 43, -1, -1, - 46, 47, 48, -1, 50, 51, 52, 53, -1, -1, - -1, 57, 58, 59, -1, -1, -1, -1, 64, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 84, -1, -1, -1, -1, -1, -1, 623, -1, -1, + -1, -1, -1, 629, -1, -1, 3, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 19, 20, 21, 22, 120, -1, -1, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, 133, + 134, 38, 668, -1, -1, 42, 43, -1, -1, -1, + 676, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, -1, -1, 740, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 123, -1, 125, 126, + -1, 128, 129, 130, -1, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, -1, -1, 773, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 785, + -1, -1, -1, -1, -1, -1, -1, -1, 794, 795, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, -1, -1, -1, -1, + 806, -1, -1, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 832, -1, -1, -1, + 836, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, - -1, -1, 8, 9, -1, -1, -1, -1, -1, -1, - 146, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, 43, -1, -1, - 46, 47, 48, -1, 50, 51, -1, 53, -1, -1, - -1, 57, 58, 59, -1, -1, -1, -1, 64, -1, + 132, 133, 134, -1, 860, 861, -1, -1, -1, 865, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, 122, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, 122, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, - -1, -1, 8, 9, -1, -1, -1, -1, -1, -1, - 146, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, 43, -1, -1, - -1, 47, 48, -1, 50, 51, -1, 53, -1, -1, - -1, 57, 58, 59, -1, -1, -1, -1, 64, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, 122, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, - -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, - 146, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, 43, -1, -1, - -1, 47, 48, -1, 50, 51, -1, 53, -1, -1, - -1, 57, 58, 59, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, 122, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, - -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, - 146, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 9, -1, 43, -1, -1, - -1, 47, 48, -1, -1, -1, -1, 53, -1, -1, - -1, 57, 58, -1, -1, -1, -1, -1, 64, -1, - -1, -1, -1, 37, 38, -1, -1, -1, -1, -1, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, -1, -1, -1, -1, - 9, -1, 11, 12, 13, -1, 15, 16, -1, -1, - -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 37, 38, - 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, - -1, -1, -1, 147, -1, -1, 150, -1, -1, -1, - -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 37, 38, 57, -1, -1, -1, -1, - -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 57, -1, -1, 135, -1, -1, -1, - -1, -1, 9, -1, -1, 144, 145, 146, -1, -1, - -1, -1, -1, -1, -1, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 37, 38, 9, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, -1, -1, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, -1, 146, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, 146, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, -1, -1, 9, 10, 11, - 12, 13, 14, 15, 16, -1, -1, -1, -1, -1, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 37, 38, -1, -1, 146, - -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, - -1, -1, -1, -1, -1, 57, -1, -1, 9, -1, - -1, -1, -1, 65, 66, 67, 68, -1, -1, 146, - 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, - 57, -1, -1, -1, -1, 97, 98, 99, 65, 66, - 67, 68, -1, -1, -1, -1, 57, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, 135, -1, 137, -1, -1, -1, -1, - -1, -1, 144, 145, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, -1, -1, -1, -1, 3, 4, -1, 135, -1, - -1, 9, -1, -1, -1, -1, -1, 144, 145, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, 43, -1, -1, -1, 47, - 48, -1, -1, -1, -1, 53, -1, -1, -1, 57, - -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, -1, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 57, 37, 38, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + 123, 124, 125, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 57, -1, -1, -1, 137, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + -1, 124, -1, 126, -1, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, 30, -1, 32, + -1, 34, 35, 36, 37, 38, 39, 40, -1, 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, -1, 72, + -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, - -1, -1, -1, -1, -1, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - -1, 134, -1, -1, 137, -1, -1, -1, 141, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - -1, -1, 134, 8, 9, 137, -1, -1, -1, 141, - -1, -1, 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, -1, 43, -1, - -1, 46, 47, 48, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, + -1, 124, -1, 126, -1, 128, -1, 130, -1, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 19, 20, 21, 22, + 39, -1, -1, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, -1, -1, -1, 72, + -1, 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, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 3, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, 132, + -1, -1, -1, -1, 19, 20, 21, 22, -1, -1, + -1, 26, 27, 28, 29, 30, 31, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 97, 98, 99, 100, 101, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, 72, -1, 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, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 9, 134, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, -1, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 9, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 137, -1, -1, 37, 38, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - 4, -1, -1, -1, 8, 9, -1, -1, -1, -1, - -1, -1, 135, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, -1, -1, 43, - -1, -1, 46, 47, 48, -1, 50, 51, -1, 53, - -1, -1, -1, 57, 58, 59, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 3, 4, - -1, -1, -1, -1, 9, -1, 11, 12, 13, -1, - 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, -1, -1, 43, -1, - -1, -1, 47, 48, -1, -1, -1, -1, 53, -1, - -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 115, 116, 117, 118, -1, 120, 3, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, 132, -1, -1, + -1, -1, 19, 20, 21, 22, -1, -1, -1, 26, + 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, + -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 3, 4, -1, - -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, - -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, -1, -1, 43, -1, -1, - -1, 47, 48, -1, 50, 51, -1, 53, -1, -1, - -1, 57, 58, 59, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 3, 4, 5, 6, 7, 8, 9, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, -1, 34, 35, -1, 132, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, + 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 3, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 19, 20, 21, 22, -1, -1, -1, 26, + 27, 28, 29, 30, 31, 32, -1, 34, 35, -1, + 132, 38, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 3, 4, 5, + 6, 7, 8, 9, -1, 72, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 132, 38, -1, 40, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, 72, 3, 4, 5, + 6, 7, 8, 9, 10, 11, -1, 35, -1, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 3, 4, -1, -1, - -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, -1, -1, 43, -1, -1, -1, - 47, 48, -1, -1, -1, -1, 53, -1, -1, -1, - 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 3, 4, -1, -1, -1, - -1, 9, 10, -1, -1, -1, -1, -1, -1, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, 43, -1, -1, -1, 47, - 48, -1, -1, -1, -1, 53, -1, -1, -1, 57, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 3, 4, -1, -1, -1, -1, - 9, -1, -1, -1, -1, -1, -1, -1, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, -1, -1, 43, -1, -1, -1, 47, 48, - -1, -1, -1, -1, 53, -1, -1, -1, 57, -1, - -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 3, 4, -1, -1, -1, -1, 9, - 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, 43, -1, -1, -1, 47, 48, -1, - -1, -1, -1, 53, -1, -1, -1, 57, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, 132, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + -1, -1, -1, -1, -1, -1, -1, 35, 36, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 72, 3, 4, 5, 6, 7, 8, 9, + 10, 11, -1, -1, 132, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, -1, -1, + 126, -1, -1, -1, -1, -1, 132, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + -1, 121, -1, -1, 124, -1, -1, -1, -1, -1, + -1, -1, 132, -1, 3, 4, 5, 6, 7, 8, + 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 132, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 3, 4, -1, -1, -1, -1, 9, -1, - -1, -1, -1, -1, -1, -1, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - -1, -1, 43, -1, -1, -1, 47, 48, -1, -1, - -1, -1, 53, -1, -1, -1, 57, -1, -1, -1, + -1, -1, 132, 72, 3, 4, 5, 6, 7, 8, + 9, -1, -1, -1, -1, -1, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, -1, + 3, 4, 5, 6, 7, 8, 9, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 35, 132, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 132, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, + -1, -1, -1, 132, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 3, 4, -1, -1, -1, -1, 9, -1, -1, - -1, -1, -1, -1, -1, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, - -1, -1, -1, -1, -1, 47, 48, -1, -1, -1, - -1, 53, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 42, 43, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 133, 134, 19, 20, 21, 22, -1, -1, -1, + 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, + 36, -1, 38, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, 125, 126, -1, 128, + 129, 130, -1, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, -1, -1, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 3, 4, 5, 6, 7, 8, 9, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, + 21, 22, -1, -1, -1, 26, 27, 28, 29, 30, + 31, 32, -1, 34, 35, -1, -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 3, 4, -1, -1, -1, -1, 9, -1, -1, -1, - -1, -1, -1, -1, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, - -1, -1, -1, -1, 47, 48, -1, -1, -1, -1, - -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 3, 4, 5, + 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, -1, -1, -1, + 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, + -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 4, - -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, - -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 9, -1, -1, -1, -1, -1, - -1, -1, 47, 48, -1, -1, -1, -1, 53, -1, - -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, -1, -1, -1, -1, - -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, -1, -1, 9, + -1, -1, -1, -1, -1, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 3, 4, 5, 6, 7, 8, 9, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, + 21, 22, -1, -1, -1, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 37, 38, 9, - -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, - -1, -1, -1, -1, -1, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, -1, -1, 9, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 37, 38, 9, -1, -1, -1, -1, -1, - -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 57, -1, -1, -1, -1, -1, -1, 9, - -1, -1, 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 57, -1, -1, -1, -1, 37, 38, -1, - -1, -1, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 62, 63, -1, -1, -1, -1, -1, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 3, 4, 5, + 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, -1, -1, -1, + 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, + -1, -1, 38, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, + -1, 21, 22, -1, -1, -1, 26, 27, 28, 29, + 30, 31, 32, -1, 34, -1, 72, -1, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 135, -1, -1, -1, 139, - 140, -1, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -1, 155 + 90, 91, 92, 93, 94, 95, 96, 97 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 158, 0, 159, 3, 4, 8, 9, 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, 43, 46, 47, 48, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 134, 160, 161, 162, 164, - 178, 194, 195, 196, 197, 206, 208, 209, 213, 214, - 215, 252, 283, 284, 285, 286, 287, 288, 290, 298, - 299, 303, 304, 305, 306, 321, 9, 37, 38, 57, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 137, 280, 281, 282, 305, - 280, 305, 3, 4, 9, 39, 40, 57, 97, 285, - 299, 135, 139, 180, 280, 305, 137, 280, 305, 50, - 58, 59, 283, 284, 285, 299, 285, 139, 289, 9, - 37, 38, 57, 97, 98, 99, 137, 299, 9, 37, - 38, 53, 55, 57, 97, 98, 99, 290, 297, 298, - 135, 139, 50, 60, 10, 285, 255, 135, 135, 139, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 44, 147, 150, 254, 257, 258, 300, 301, 302, - 254, 60, 164, 178, 285, 164, 208, 214, 283, 134, - 137, 226, 226, 226, 226, 226, 9, 37, 38, 46, - 57, 95, 96, 97, 98, 99, 210, 218, 220, 223, - 227, 253, 262, 265, 272, 280, 299, 285, 300, 288, - 287, 94, 94, 134, 346, 139, 167, 139, 165, 9, - 37, 38, 57, 97, 98, 99, 218, 94, 346, 292, - 137, 179, 346, 139, 169, 10, 135, 285, 94, 140, - 198, 297, 346, 163, 297, 297, 134, 346, 291, 255, - 137, 285, 134, 142, 208, 283, 346, 293, 9, 37, - 38, 57, 97, 98, 99, 280, 323, 326, 327, 280, - 280, 331, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 134, 255, 253, 280, - 259, 150, 302, 134, 134, 248, 280, 300, 248, 262, - 254, 226, 226, 280, 346, 62, 63, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 135, 139, 140, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 155, 344, 345, 218, - 223, 299, 219, 224, 255, 143, 249, 250, 262, 270, - 300, 273, 274, 275, 135, 139, 94, 297, 9, 37, - 38, 57, 97, 98, 99, 146, 215, 231, 233, 280, - 297, 299, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 50, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 62, 63, 65, 66, - 67, 68, 93, 94, 95, 96, 97, 98, 99, 134, - 135, 137, 138, 141, 153, 156, 306, 345, 348, 349, - 350, 351, 352, 11, 12, 13, 15, 16, 184, 285, - 294, 296, 141, 174, 294, 174, 136, 294, 181, 182, - 280, 137, 138, 294, 174, 216, 146, 231, 299, 4, - 53, 199, 201, 202, 203, 304, 138, 137, 134, 134, - 136, 294, 134, 158, 256, 136, 136, 294, 142, 280, - 280, 280, 142, 142, 280, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 136, 136, 142, 253, - 134, 280, 134, 134, 134, 138, 153, 153, 136, 154, - 221, 94, 43, 45, 143, 225, 225, 134, 251, 136, - 262, 276, 278, 228, 229, 238, 239, 280, 232, 135, - 94, 346, 346, 346, 346, 346, 140, 142, 5, 6, - 7, 175, 176, 297, 137, 140, 137, 140, 138, 142, - 143, 181, 140, 137, 241, 242, 238, 94, 140, 142, - 197, 204, 280, 204, 158, 140, 138, 257, 140, 322, - 142, 136, 136, 328, 330, 142, 303, 334, 336, 338, - 340, 335, 337, 339, 341, 342, 343, 280, 154, 154, - 135, 16, 16, 10, 11, 12, 13, 14, 15, 16, - 65, 66, 67, 68, 135, 137, 144, 145, 297, 307, - 312, 318, 319, 320, 263, 153, 241, 294, 135, 141, - 235, 234, 146, 231, 136, 136, 136, 138, 154, 168, - 295, 297, 297, 297, 142, 171, 166, 171, 181, 9, - 57, 97, 135, 144, 145, 146, 183, 184, 185, 189, - 280, 290, 298, 138, 170, 171, 136, 60, 93, 243, - 245, 246, 146, 231, 200, 204, 205, 138, 285, 324, - 303, 303, 332, 136, 303, 303, 303, 303, 303, 303, - 303, 303, 303, 303, 142, 309, 222, 315, 308, 314, - 313, 139, 10, 135, 267, 274, 277, 136, 140, 240, - 237, 297, 241, 238, 174, 294, 175, 5, 6, 7, - 138, 172, 177, 174, 138, 188, 71, 72, 144, 145, - 147, 148, 149, 150, 151, 152, 190, 186, 174, 138, - 217, 142, 285, 238, 199, 249, 136, 285, 329, 136, - 303, 136, 136, 136, 136, 136, 136, 136, 136, 142, - 142, 136, 241, 312, 307, 320, 320, 316, 268, 185, - 279, 135, 241, 142, 236, 135, 136, 137, 8, 9, - 37, 38, 41, 49, 50, 57, 61, 64, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 133, 134, 146, 164, 173, 178, 194, - 196, 197, 207, 211, 212, 214, 231, 252, 283, 321, - 141, 137, 185, 187, 185, 137, 225, 244, 95, 96, - 135, 260, 264, 271, 272, 325, 142, 333, 11, 11, - 136, 136, 310, 286, 241, 154, 230, 136, 237, 346, - 171, 146, 283, 285, 3, 4, 40, 191, 192, 197, - 211, 214, 283, 64, 146, 231, 135, 50, 135, 238, - 254, 254, 164, 211, 214, 226, 226, 231, 226, 223, - 171, 136, 185, 171, 243, 247, 260, 269, 300, 273, - 136, 347, 136, 136, 136, 142, 309, 140, 136, 241, - 236, 136, 138, 238, 223, 134, 137, 141, 193, 280, - 280, 193, 280, 3, 4, 40, 192, 226, 226, 238, - 8, 211, 283, 346, 134, 134, 254, 226, 226, 138, - 138, 249, 136, 260, 136, 349, 311, 138, 135, 43, - 266, 136, 346, 347, 193, 193, 193, 136, 136, 134, - 261, 307, 317, 138, 134, 134, 267, 312, 347, 136, - 134 + 0, 144, 145, 0, 146, 3, 4, 5, 6, 7, + 8, 9, 19, 20, 21, 22, 26, 27, 28, 29, + 30, 31, 32, 34, 35, 36, 38, 39, 40, 41, + 72, 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, 111, 112, + 113, 114, 115, 116, 117, 118, 120, 132, 147, 148, + 149, 150, 152, 153, 154, 155, 156, 158, 161, 175, + 176, 178, 186, 187, 196, 198, 199, 216, 217, 218, + 219, 222, 223, 226, 232, 259, 289, 290, 291, 292, + 294, 295, 296, 298, 299, 302, 303, 304, 305, 306, + 308, 309, 312, 319, 320, 321, 327, 3, 4, 5, + 6, 7, 8, 9, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 289, 291, 292, + 296, 12, 128, 313, 3, 4, 5, 6, 7, 8, + 9, 34, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 156, 161, 176, 291, 296, + 302, 308, 3, 4, 5, 6, 7, 8, 9, 121, + 299, 38, 40, 197, 289, 292, 295, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 3, 4, + 5, 6, 7, 8, 9, 300, 157, 160, 289, 300, + 121, 22, 148, 154, 155, 183, 199, 216, 302, 308, + 120, 121, 237, 237, 237, 237, 126, 161, 302, 308, + 120, 36, 223, 240, 241, 244, 290, 294, 296, 298, + 295, 290, 291, 295, 128, 156, 161, 176, 187, 223, + 292, 303, 312, 10, 11, 227, 229, 231, 232, 233, + 238, 240, 260, 268, 271, 279, 292, 296, 298, 133, + 134, 265, 322, 323, 324, 326, 310, 296, 121, 129, + 200, 289, 12, 300, 289, 300, 156, 176, 3, 4, + 5, 6, 7, 8, 9, 191, 192, 195, 268, 279, + 298, 375, 123, 151, 289, 289, 120, 226, 231, 232, + 292, 298, 329, 332, 333, 298, 298, 337, 298, 298, + 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, + 298, 298, 33, 39, 261, 264, 265, 301, 303, 321, + 121, 124, 168, 169, 120, 159, 261, 177, 289, 302, + 292, 298, 375, 224, 289, 293, 126, 242, 295, 295, + 297, 300, 289, 300, 223, 241, 311, 228, 126, 42, + 43, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 123, 125, 126, 128, 129, 130, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 351, 352, 234, 126, 262, 123, 256, 257, 268, 277, + 322, 281, 282, 283, 227, 233, 296, 124, 325, 323, + 324, 300, 145, 201, 203, 204, 206, 208, 188, 190, + 265, 188, 300, 300, 189, 126, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, + 42, 43, 44, 45, 46, 47, 71, 72, 73, 120, + 121, 122, 123, 124, 125, 126, 128, 129, 130, 142, + 319, 352, 353, 354, 377, 378, 379, 380, 381, 382, + 291, 296, 121, 120, 226, 231, 125, 298, 298, 298, + 125, 125, 298, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 127, 127, 125, 120, 262, 260, + 162, 23, 24, 25, 30, 170, 171, 174, 289, 168, + 120, 179, 180, 181, 298, 298, 122, 249, 250, 296, + 299, 245, 124, 246, 361, 261, 120, 261, 300, 234, + 230, 130, 130, 127, 131, 26, 37, 123, 235, 239, + 120, 125, 258, 127, 268, 130, 284, 285, 13, 14, + 15, 280, 306, 307, 122, 125, 129, 19, 21, 22, + 291, 296, 302, 314, 315, 318, 319, 20, 38, 211, + 199, 120, 189, 195, 120, 188, 188, 120, 125, 193, + 375, 375, 375, 120, 145, 328, 125, 127, 127, 334, + 336, 125, 308, 340, 342, 344, 346, 341, 343, 345, + 347, 348, 349, 298, 23, 24, 25, 122, 163, 164, + 173, 174, 125, 30, 172, 122, 125, 123, 123, 127, + 251, 253, 254, 295, 249, 247, 248, 289, 243, 10, + 11, 72, 121, 123, 124, 125, 126, 128, 129, 130, + 142, 320, 321, 352, 353, 354, 356, 363, 364, 365, + 367, 369, 373, 120, 120, 249, 131, 131, 236, 18, + 249, 263, 128, 129, 355, 356, 358, 269, 286, 285, + 306, 202, 289, 289, 289, 312, 10, 11, 126, 266, + 270, 278, 279, 265, 316, 266, 20, 120, 120, 190, + 249, 122, 131, 127, 122, 308, 330, 308, 308, 338, + 127, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 125, 350, 33, 41, 119, 120, 153, 155, 165, + 166, 167, 175, 186, 196, 199, 220, 221, 222, 241, + 259, 289, 292, 296, 302, 308, 327, 124, 289, 171, + 289, 181, 182, 376, 225, 125, 308, 127, 125, 381, + 234, 371, 372, 374, 370, 366, 368, 127, 369, 127, + 264, 358, 126, 272, 282, 287, 288, 203, 317, 205, + 266, 276, 322, 281, 300, 207, 209, 127, 127, 308, + 335, 127, 308, 127, 127, 127, 127, 127, 127, 127, + 127, 125, 125, 127, 153, 161, 184, 199, 221, 296, + 302, 308, 381, 155, 220, 302, 237, 120, 231, 241, + 292, 233, 296, 355, 120, 378, 234, 71, 252, 266, + 248, 357, 357, 362, 357, 361, 357, 273, 131, 355, + 300, 123, 212, 213, 127, 266, 212, 266, 194, 331, + 125, 339, 13, 13, 121, 124, 185, 289, 161, 184, + 302, 237, 161, 120, 231, 253, 255, 123, 125, 127, + 358, 359, 127, 120, 122, 359, 360, 127, 129, 131, + 249, 214, 267, 210, 275, 127, 376, 127, 127, 127, + 375, 376, 185, 289, 161, 185, 289, 120, 256, 127, + 215, 363, 272, 212, 26, 28, 37, 127, 122, 120, + 289, 185, 274, 363, 381, 376, 275, 120 }; #define yyerrok (yyerrstatus = 0) @@ -4835,3243 +4677,3149 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 3: + case 4: /* Line 1455 of yacc.c */ -#line 1333 "vtkParse.y" - { startSig(); clearTypeId(); clearTemplate(); closeComment(); } +#line 1464 "vtkParse.y" + { + startSig(); + clearType(); + clearTypeId(); + clearTemplate(); + closeComment(); + } break; - case 14: + case 27: /* Line 1455 of yacc.c */ -#line 1346 "vtkParse.y" - { output_function(); } +#line 1509 "vtkParse.y" + { pushNamespace((yyvsp[(2) - (2)].str)); } break; - case 15: + case 28: /* Line 1455 of yacc.c */ -#line 1347 "vtkParse.y" - { output_function(); } +#line 1510 "vtkParse.y" + { popNamespace(); } break; - case 16: + case 36: /* Line 1455 of yacc.c */ -#line 1348 "vtkParse.y" - { reject_function(); } +#line 1532 "vtkParse.y" + { pushType(); } break; - case 17: + case 37: /* Line 1455 of yacc.c */ -#line 1349 "vtkParse.y" - { output_function(); } +#line 1533 "vtkParse.y" + { + const char *name = (currentClass ? currentClass->Name : NULL); + popType(); + clearTypeId(); + if (name) + { + setTypeId(name); + setTypeBase(guess_id_type(name)); + } + end_class(); + } break; - case 18: + case 38: /* Line 1455 of yacc.c */ -#line 1350 "vtkParse.y" - { reject_function(); } +#line 1546 "vtkParse.y" + { start_class((yyvsp[(2) - (2)].str), (yyvsp[(1) - (2)].integer)); } break; - case 19: + case 40: /* Line 1455 of yacc.c */ -#line 1351 "vtkParse.y" - { output_function(); } +#line 1548 "vtkParse.y" + { start_class(NULL, (yyvsp[(1) - (1)].integer)); } break; - case 20: + case 42: /* Line 1455 of yacc.c */ -#line 1352 "vtkParse.y" - { legacySig(); output_function(); } +#line 1552 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 28: + case 43: /* Line 1455 of yacc.c */ -#line 1370 "vtkParse.y" - { pushNamespace((yyvsp[(2) - (2)].str)); } +#line 1553 "vtkParse.y" + { (yyval.integer) = 1; } break; - case 29: + case 44: /* Line 1455 of yacc.c */ -#line 1371 "vtkParse.y" - { popNamespace(); } +#line 1554 "vtkParse.y" + { (yyval.integer) = 2; } break; - case 31: + case 46: /* Line 1455 of yacc.c */ -#line 1378 "vtkParse.y" - { start_class((yyvsp[(2) - (2)].str), 0); } +#line 1558 "vtkParse.y" + { + startSig(); + clearType(); + clearTypeId(); + clearTemplate(); + closeComment(); + } break; - case 32: + case 49: /* Line 1455 of yacc.c */ -#line 1379 "vtkParse.y" - { end_class(); } +#line 1570 "vtkParse.y" + { access_level = VTK_ACCESS_PUBLIC; } break; - case 33: + case 50: /* Line 1455 of yacc.c */ -#line 1380 "vtkParse.y" - { reject_class((yyvsp[(2) - (5)].str), 0); } +#line 1571 "vtkParse.y" + { access_level = VTK_ACCESS_PRIVATE; } break; - case 34: + case 51: /* Line 1455 of yacc.c */ -#line 1381 "vtkParse.y" - { end_class(); } +#line 1572 "vtkParse.y" + { access_level = VTK_ACCESS_PROTECTED; } break; - case 35: + case 70: /* Line 1455 of yacc.c */ -#line 1382 "vtkParse.y" - { start_class((yyvsp[(2) - (2)].str), 1); } +#line 1597 "vtkParse.y" + { output_friend_function(); } break; - case 36: + case 76: /* Line 1455 of yacc.c */ -#line 1383 "vtkParse.y" - { end_class(); } +#line 1611 "vtkParse.y" + { add_base_class(currentClass, (yyvsp[(1) - (1)].str), access_level, 0); } break; - case 37: + case 77: /* Line 1455 of yacc.c */ -#line 1384 "vtkParse.y" - { reject_class((yyvsp[(2) - (5)].str), 1); } +#line 1613 "vtkParse.y" + { add_base_class(currentClass, (yyvsp[(3) - (3)].str), (yyvsp[(2) - (3)].integer), 1); } break; - case 38: + case 78: /* Line 1455 of yacc.c */ -#line 1385 "vtkParse.y" - { end_class(); } +#line 1615 "vtkParse.y" + { add_base_class(currentClass, (yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].integer)); } break; - case 40: + case 79: /* Line 1455 of yacc.c */ -#line 1387 "vtkParse.y" - { start_class((yyvsp[(2) - (2)].str), 2); } +#line 1618 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 41: + case 80: /* Line 1455 of yacc.c */ -#line 1388 "vtkParse.y" - { end_class(); } +#line 1619 "vtkParse.y" + { (yyval.integer) = 1; } break; - case 42: + case 81: /* Line 1455 of yacc.c */ -#line 1389 "vtkParse.y" - { reject_class((yyvsp[(2) - (5)].str), 2); } +#line 1622 "vtkParse.y" + { (yyval.integer) = access_level; } break; - case 43: + case 83: /* Line 1455 of yacc.c */ -#line 1390 "vtkParse.y" - { end_class(); } +#line 1626 "vtkParse.y" + { (yyval.integer) = VTK_ACCESS_PUBLIC; } break; - case 46: + case 84: /* Line 1455 of yacc.c */ -#line 1395 "vtkParse.y" - { startSig(); clearTypeId(); clearTemplate(); closeComment(); } +#line 1627 "vtkParse.y" + { (yyval.integer) = VTK_ACCESS_PRIVATE; } break; - case 58: + case 85: /* Line 1455 of yacc.c */ -#line 1409 "vtkParse.y" - { output_function(); } +#line 1628 "vtkParse.y" + { (yyval.integer) = VTK_ACCESS_PROTECTED; } break; - case 59: + case 88: /* Line 1455 of yacc.c */ -#line 1410 "vtkParse.y" - { ClassInfo *tmpc = currentClass; - currentClass = NULL; output_function(); currentClass = tmpc; } +#line 1644 "vtkParse.y" + { pushType(); start_enum((yyvsp[(1) - (2)].str)); } break; - case 60: + case 89: /* Line 1455 of yacc.c */ -#line 1412 "vtkParse.y" - { output_function(); } +#line 1645 "vtkParse.y" + { + popType(); + clearTypeId(); + if ((yyvsp[(1) - (5)].str) != NULL) + { + setTypeId((yyvsp[(1) - (5)].str)); + setTypeBase(guess_id_type((yyvsp[(1) - (5)].str))); + } + end_enum(); + } break; - case 61: + case 90: /* Line 1455 of yacc.c */ -#line 1413 "vtkParse.y" - { output_function(); } +#line 1657 "vtkParse.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 62: + case 91: /* Line 1455 of yacc.c */ -#line 1414 "vtkParse.y" - { ClassInfo *tmpc = currentClass; - currentClass = NULL; output_function(); currentClass = tmpc; } +#line 1658 "vtkParse.y" + { (yyval.str) = NULL; } break; - case 63: + case 97: /* Line 1455 of yacc.c */ -#line 1416 "vtkParse.y" - { output_function(); } +#line 1669 "vtkParse.y" + { add_enum((yyvsp[(1) - (1)].str), NULL); } break; - case 64: + case 98: /* Line 1455 of yacc.c */ -#line 1417 "vtkParse.y" - { legacySig(); output_function(); } +#line 1670 "vtkParse.y" + { postSig("="); markSig(); } break; - case 75: + case 99: /* Line 1455 of yacc.c */ -#line 1430 "vtkParse.y" - { - vtkParse_AddStringToArray(¤tClass->SuperClasses, - ¤tClass->NumberOfSuperClasses, - vtkstrdup((yyvsp[(2) - (2)].str))); - } +#line 1671 "vtkParse.y" + { chopSig(); add_enum((yyvsp[(1) - (4)].str), copySig()); } break; - case 76: + case 120: /* Line 1455 of yacc.c */ -#line 1436 "vtkParse.y" - {access_level = VTK_ACCESS_PUBLIC;} +#line 1724 "vtkParse.y" + { pushFunction(); postSig("("); } break; - case 77: + case 121: /* Line 1455 of yacc.c */ -#line 1437 "vtkParse.y" - {access_level = VTK_ACCESS_PRIVATE;} +#line 1725 "vtkParse.y" + { postSig(")"); } break; - case 78: + case 122: /* Line 1455 of yacc.c */ -#line 1438 "vtkParse.y" - {access_level = VTK_ACCESS_PROTECTED;} +#line 1726 "vtkParse.y" + { (yyval.integer) = VTK_PARSE_FUNCTION; popFunction(); } break; - case 79: + case 123: /* Line 1455 of yacc.c */ -#line 1448 "vtkParse.y" - {start_enum((yyvsp[(2) - (2)].str));} - break; +#line 1730 "vtkParse.y" + { + ValueInfo *item = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(item); + item->ItemType = VTK_TYPEDEF_INFO; + item->Access = access_level; - case 80: + handle_complex_type(item, getType(), (yyvsp[(1) - (1)].integer), getSig()); -/* Line 1455 of yacc.c */ -#line 1449 "vtkParse.y" - {end_enum();} - break; - - case 81: + if (getVarName()) + { + item->Name = getVarName(); + } -/* Line 1455 of yacc.c */ -#line 1450 "vtkParse.y" - {start_enum(NULL);} + if (item->Class == NULL) + { + vtkParse_FreeValue(item); + } + else if (currentClass) + { + vtkParse_AddTypedefToClass(currentClass, item); + } + else + { + vtkParse_AddTypedefToNamespace(currentNamespace, item); + } + } break; - case 82: + case 124: /* Line 1455 of yacc.c */ -#line 1451 "vtkParse.y" - {end_enum();} +#line 1763 "vtkParse.y" + { add_using((yyvsp[(2) - (3)].str), 0); } break; - case 86: + case 126: /* Line 1455 of yacc.c */ -#line 1455 "vtkParse.y" - {add_enum((yyvsp[(1) - (1)].str), NULL);} +#line 1767 "vtkParse.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); } break; - case 87: + case 127: /* Line 1455 of yacc.c */ -#line 1456 "vtkParse.y" - {add_enum((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));} +#line 1769 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 88: + case 128: /* Line 1455 of yacc.c */ -#line 1458 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 1771 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 89: + case 129: /* Line 1455 of yacc.c */ -#line 1459 "vtkParse.y" - {(yyval.str) = vtkstrdup(add_const_scope((yyvsp[(1) - (1)].str)));} +#line 1773 "vtkParse.y" + { (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)); } break; - case 97: + case 130: /* Line 1455 of yacc.c */ -#line 1464 "vtkParse.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); } +#line 1775 "vtkParse.y" + { (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)); } break; - case 98: + case 131: /* Line 1455 of yacc.c */ -#line 1465 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 1778 "vtkParse.y" + { add_using((yyvsp[(3) - (4)].str), 1); } break; - case 99: + case 132: /* Line 1455 of yacc.c */ -#line 1466 "vtkParse.y" - { - (yyval.str) = vtkstrcat((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); - } +#line 1786 "vtkParse.y" + { postSig("template<> "); clearTypeId(); } break; - case 100: + case 133: /* Line 1455 of yacc.c */ -#line 1469 "vtkParse.y" - {postSig((yyvsp[(2) - (2)].str));} +#line 1788 "vtkParse.y" + { + postSig("template<"); + pushType(); + clearType(); + clearTypeId(); + startTemplate(); + } break; - case 101: + case 134: /* Line 1455 of yacc.c */ -#line 1470 "vtkParse.y" +#line 1796 "vtkParse.y" { - (yyval.str) = vtkstrcat5((yyvsp[(1) - (4)].str), " ", (yyvsp[(2) - (4)].str), " ", (yyvsp[(4) - (4)].str)); - } + chopSig(); + if (getSig()[getSigLength()-1] == '>') { postSig(" "); } + postSig("> "); + clearTypeId(); + popType(); + } break; - case 102: + case 136: /* Line 1455 of yacc.c */ -#line 1473 "vtkParse.y" - {postSig("(");} +#line 1807 "vtkParse.y" + { chopSig(); postSig(", "); clearType(); clearTypeId(); } break; - case 103: + case 138: /* Line 1455 of yacc.c */ -#line 1474 "vtkParse.y" - { - (yyval.str) = vtkstrcat3("(", (yyvsp[(3) - (4)].str), ")"); - } +#line 1811 "vtkParse.y" + { markSig(); } break; - case 104: + case 139: /* Line 1455 of yacc.c */ -#line 1478 "vtkParse.y" - { (yyval.str) = "-"; } +#line 1813 "vtkParse.y" + { add_template_parameter(getType(), (yyvsp[(3) - (3)].integer), copySig()); } break; - case 105: + case 141: /* Line 1455 of yacc.c */ -#line 1478 "vtkParse.y" - { (yyval.str) = "+"; } +#line 1815 "vtkParse.y" + { markSig(); } break; - case 106: + case 142: /* Line 1455 of yacc.c */ -#line 1479 "vtkParse.y" - { (yyval.str) = "~"; } +#line 1817 "vtkParse.y" + { add_template_parameter(0, (yyvsp[(3) - (3)].integer), copySig()); } break; - case 107: + case 144: /* Line 1455 of yacc.c */ -#line 1481 "vtkParse.y" - { (yyval.str) = "-"; } +#line 1819 "vtkParse.y" + { pushTemplate(); markSig(); } break; - case 108: + case 145: /* Line 1455 of yacc.c */ -#line 1481 "vtkParse.y" - { (yyval.str) = "+"; } +#line 1820 "vtkParse.y" + { postSig("class "); } break; - case 109: + case 146: /* Line 1455 of yacc.c */ -#line 1482 "vtkParse.y" - { (yyval.str) = "*"; } +#line 1822 "vtkParse.y" + { + int i; + TemplateInfo *newTemplate = currentTemplate; + popTemplate(); + add_template_parameter(0, (yyvsp[(5) - (5)].integer), copySig()); + i = currentTemplate->NumberOfParameters-1; + currentTemplate->Parameters[i]->Template = newTemplate; + } break; - case 110: + case 148: /* Line 1455 of yacc.c */ -#line 1482 "vtkParse.y" - { (yyval.str) = "/"; } +#line 1833 "vtkParse.y" + { postSig("class "); } break; - case 111: + case 149: /* Line 1455 of yacc.c */ -#line 1483 "vtkParse.y" - { (yyval.str) = "%"; } +#line 1834 "vtkParse.y" + { postSig("typename "); } break; - case 112: + case 152: /* Line 1455 of yacc.c */ -#line 1483 "vtkParse.y" - { (yyval.str) = "&"; } +#line 1840 "vtkParse.y" + { postSig("="); markSig(); } break; - case 113: + case 153: /* Line 1455 of yacc.c */ -#line 1484 "vtkParse.y" - { (yyval.str) = "|"; } +#line 1842 "vtkParse.y" + { + int i = currentTemplate->NumberOfParameters-1; + ValueInfo *param = currentTemplate->Parameters[i]; + chopSig(); + param->Value = copySig(); + } break; - case 114: + case 156: /* Line 1455 of yacc.c */ -#line 1484 "vtkParse.y" - { (yyval.str) = "^"; } +#line 1859 "vtkParse.y" + { output_function(); } break; - case 115: + case 157: /* Line 1455 of yacc.c */ -#line 1485 "vtkParse.y" - { (yyval.str) = ">>"; } +#line 1860 "vtkParse.y" + { output_function(); } break; - case 116: + case 158: /* Line 1455 of yacc.c */ -#line 1486 "vtkParse.y" - { (yyval.str) = "<<"; } +#line 1861 "vtkParse.y" + { reject_function(); } break; - case 126: + case 159: /* Line 1455 of yacc.c */ -#line 1509 "vtkParse.y" - { - ValueInfo *item = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_InitValue(item); - item->ItemType = VTK_TYPEDEF_INFO; - item->Access = access_level; - - handle_complex_type(item, (yyvsp[(2) - (4)].integer), (yyvsp[(3) - (4)].integer), getSig()); +#line 1862 "vtkParse.y" + { reject_function(); } + break; - if (getVarName()) - { - item->Name = vtkstrdup(getVarName()); - } + case 167: - if (currentClass) - { - vtkParse_AddTypedefToClass(currentClass, item); - } - else - { - vtkParse_AddTypedefToNamespace(currentNamespace, item); - } - } +/* Line 1455 of yacc.c */ +#line 1878 "vtkParse.y" + { output_function(); } break; - case 127: + case 177: /* Line 1455 of yacc.c */ -#line 1531 "vtkParse.y" - { } +#line 1895 "vtkParse.y" + { + postSig("("); + set_return(currentFunction, getType(), getTypeId(), 0); + } break; - case 128: + case 178: /* Line 1455 of yacc.c */ -#line 1532 "vtkParse.y" - { } +#line 1899 "vtkParse.y" + { postSig(")"); } break; - case 129: + case 179: /* Line 1455 of yacc.c */ -#line 1533 "vtkParse.y" - { } +#line 1901 "vtkParse.y" + { + postSig(";"); + closeSig(); + currentFunction->IsOperator = 1; + currentFunction->Name = "operator typecast"; + currentFunction->Comment = vtkstrdup(getComment()); + vtkParseDebug("Parsed operator", "operator typecast"); + } break; - case 130: + case 180: /* Line 1455 of yacc.c */ -#line 1535 "vtkParse.y" - { } +#line 1912 "vtkParse.y" + { (yyval.str) = copySig(); } break; - case 131: + case 181: /* Line 1455 of yacc.c */ -#line 1542 "vtkParse.y" - { add_using((yyvsp[(3) - (4)].str), 1); } +#line 1915 "vtkParse.y" + { postSig(")"); } break; - case 132: + case 182: /* Line 1455 of yacc.c */ -#line 1543 "vtkParse.y" - { add_using((yyvsp[(3) - (4)].str), 0); } +#line 1916 "vtkParse.y" + { + postSig(";"); + closeSig(); + currentFunction->Name = (yyvsp[(1) - (3)].str); + currentFunction->Comment = vtkstrdup(getComment()); + vtkParseDebug("Parsed operator", currentFunction->Name); + } break; - case 133: + case 183: /* Line 1455 of yacc.c */ -#line 1544 "vtkParse.y" - { add_using((yyvsp[(2) - (3)].str), 0); } +#line 1926 "vtkParse.y" + { + postSig("("); + currentFunction->IsOperator = 1; + set_return(currentFunction, getType(), getTypeId(), 0); + } break; - case 134: + case 185: /* Line 1455 of yacc.c */ -#line 1551 "vtkParse.y" - { postSig("template<> "); clearTypeId(); } +#line 1935 "vtkParse.y" + { chopSig(); (yyval.str) = vtkstrcat(copySig(), (yyvsp[(2) - (2)].str)); postSig((yyvsp[(2) - (2)].str)); } break; - case 135: + case 186: /* Line 1455 of yacc.c */ -#line 1552 "vtkParse.y" - { postSig("template<"); - clearTypeId(); startTemplate(); } +#line 1938 "vtkParse.y" + { markSig(); postSig("operator "); } break; - case 136: + case 187: /* Line 1455 of yacc.c */ -#line 1554 "vtkParse.y" - { chopSig(); - if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig("> "); clearTypeId(); } +#line 1942 "vtkParse.y" + { + postSig(";"); + closeSig(); + currentFunction->Name = (yyvsp[(1) - (2)].str); + currentFunction->Comment = vtkstrdup(getComment()); + vtkParseDebug("Parsed func", currentFunction->Name); + } break; - case 138: + case 190: /* Line 1455 of yacc.c */ -#line 1559 "vtkParse.y" - { chopSig(); postSig(", "); clearTypeId(); } +#line 1954 "vtkParse.y" + { postSig(" throw "); } break; - case 140: + case 191: /* Line 1455 of yacc.c */ -#line 1563 "vtkParse.y" - { - TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg)); - vtkParse_InitTemplateArg(arg); - arg->Type = (yyvsp[(1) - (2)].integer); - arg->Class = vtkstrdup(getTypeId()); - arg->Name = vtkstrdup(getVarName()); - arg->Value = vtkstrdup(getVarValue()); - vtkParse_AddArgumentToTemplate(currentTemplate, arg); - } +#line 1954 "vtkParse.y" + { chopSig(); } break; - case 141: + case 192: /* Line 1455 of yacc.c */ -#line 1573 "vtkParse.y" - { - TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg)); - vtkParse_InitTemplateArg(arg); - arg->Name = vtkstrdup(getVarName()); - arg->Value = vtkstrdup(getVarValue()); - vtkParse_AddArgumentToTemplate(currentTemplate, arg); - } +#line 1955 "vtkParse.y" + { postSig(" const"); currentFunction->IsConst = 1; } break; - case 142: + case 193: /* Line 1455 of yacc.c */ -#line 1580 "vtkParse.y" - { pushTemplate(); } +#line 1957 "vtkParse.y" + { + postSig(" = 0"); + currentFunction->IsPureVirtual = 1; + if (currentClass) { currentClass->IsAbstract = 1; } + } break; - case 143: + case 196: /* Line 1455 of yacc.c */ -#line 1581 "vtkParse.y" +#line 1969 "vtkParse.y" { - TemplateArgs *newTemplate = currentTemplate; - TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg)); - vtkParse_InitTemplateArg(arg); - popTemplate(); - arg->Template = newTemplate; - arg->Name = vtkstrdup(getVarName()); - arg->Value = vtkstrdup(getVarValue()); - vtkParse_AddArgumentToTemplate(currentTemplate, arg); - } + postSig("("); + set_return(currentFunction, getType(), getTypeId(), 0); + } break; - case 144: + case 197: /* Line 1455 of yacc.c */ -#line 1592 "vtkParse.y" - {postSig("class ");} +#line 1973 "vtkParse.y" + { postSig(")"); } break; - case 145: + case 200: /* Line 1455 of yacc.c */ -#line 1593 "vtkParse.y" - {postSig("typename ");} +#line 1985 "vtkParse.y" + { closeSig(); } break; - case 147: + case 201: /* Line 1455 of yacc.c */ -#line 1595 "vtkParse.y" - { setVarName((yyvsp[(1) - (1)].str)); } +#line 1986 "vtkParse.y" + { openSig(); } break; - case 163: + case 202: /* Line 1455 of yacc.c */ -#line 1625 "vtkParse.y" - {openSig(); preSig("~"); closeSig();} +#line 1987 "vtkParse.y" + { + postSig(";"); + closeSig(); + if (getType() & VTK_PARSE_VIRTUAL) + { + currentFunction->IsVirtual = 1; + } + if (getType() & VTK_PARSE_EXPLICIT) + { + currentFunction->IsExplicit = 1; + } + currentFunction->Name = (yyvsp[(1) - (5)].str); + currentFunction->Comment = vtkstrdup(getComment()); + vtkParseDebug("Parsed func", currentFunction->Name); + } break; - case 164: + case 203: /* Line 1455 of yacc.c */ -#line 1626 "vtkParse.y" - {openSig(); preSig("~"); closeSig();} +#line 2004 "vtkParse.y" + { pushType(); postSig("("); } break; - case 165: + case 204: /* Line 1455 of yacc.c */ -#line 1628 "vtkParse.y" - { - openSig(); preSig("virtual ~"); closeSig(); - currentFunction->IsVirtual = 1; - } +#line 2005 "vtkParse.y" + { popType(); postSig(")"); } break; - case 168: + case 211: /* Line 1455 of yacc.c */ -#line 1635 "vtkParse.y" - { - openSig(); - preSig("explicit "); - closeSig(); - currentFunction->IsExplicit = 1; - } +#line 2022 "vtkParse.y" + { clearType(); clearTypeId(); } break; - case 170: + case 213: /* Line 1455 of yacc.c */ -#line 1643 "vtkParse.y" - { - openSig(); - preSig("virtual "); - closeSig(); - currentFunction->IsVirtual = 1; - } +#line 2025 "vtkParse.y" + { clearType(); clearTypeId(); } break; - case 178: + case 214: /* Line 1455 of yacc.c */ -#line 1659 "vtkParse.y" - { - openSig(); - preSig("virtual "); - closeSig(); - currentFunction->IsVirtual = 1; - } +#line 2026 "vtkParse.y" + { clearType(); clearTypeId(); postSig(", "); } break; - case 179: + case 216: /* Line 1455 of yacc.c */ -#line 1668 "vtkParse.y" - { - postSig("("); - set_return(currentFunction, getStorageType(), getTypeId(), 0); - } +#line 2029 "vtkParse.y" + { currentFunction->IsVariadic = 1; postSig(", ..."); } break; - case 180: + case 217: /* Line 1455 of yacc.c */ -#line 1672 "vtkParse.y" - { postSig(")"); } +#line 2032 "vtkParse.y" + { markSig(); } break; - case 181: + case 218: /* Line 1455 of yacc.c */ -#line 1673 "vtkParse.y" +#line 2034 "vtkParse.y" { - (yyval.integer) = (yyvsp[(2) - (8)].integer); - postSig(";"); - preSig("operator "); - closeSig(); - currentFunction->IsOperator = 1; - currentFunction->Name = "operator typecast"; - currentFunction->Comment = vtkstrdup(getComment()); - vtkParseDebug("Parsed operator", "operator typecast"); - } - break; + ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(param); - case 182: + handle_complex_type(param, getType(), (yyvsp[(3) - (3)].integer), copySig()); + add_legacy_parameter(currentFunction, param); -/* Line 1455 of yacc.c */ -#line 1684 "vtkParse.y" - { postSig(")"); } + if (getVarName()) + { + param->Name = getVarName(); + } + + vtkParse_AddParameterToFunction(currentFunction, param); + } break; - case 183: + case 219: /* Line 1455 of yacc.c */ -#line 1685 "vtkParse.y" +#line 2049 "vtkParse.y" { - postSig(";"); - closeSig(); - currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - vtkParseDebug("Parsed operator", currentFunction->Name); + int i = currentFunction->NumberOfParameters-1; + if (getVarValue()) + { + currentFunction->Parameters[i]->Value = getVarValue(); + } } break; - case 184: + case 220: /* Line 1455 of yacc.c */ -#line 1693 "vtkParse.y" - {postSig((yyvsp[(2) - (2)].str));} +#line 2058 "vtkParse.y" + { clearVarValue(); } break; - case 185: + case 222: /* Line 1455 of yacc.c */ -#line 1694 "vtkParse.y" - { - postSig("("); - currentFunction->IsOperator = 1; - set_return(currentFunction, getStorageType(), getTypeId(), 0); - } +#line 2062 "vtkParse.y" + { postSig("="); clearVarValue(); markSig(); } break; - case 186: + case 223: /* Line 1455 of yacc.c */ -#line 1699 "vtkParse.y" - { (yyval.str) = (yyvsp[(2) - (7)].str); } +#line 2063 "vtkParse.y" + { chopSig(); setVarValue(copySig()); } break; - case 187: + case 225: /* Line 1455 of yacc.c */ -#line 1701 "vtkParse.y" - { postSig(")"); } - break; +#line 2074 "vtkParse.y" + { + unsigned int type = getType(); + ValueInfo *var = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(var); + var->ItemType = VTK_VARIABLE_INFO; + var->Access = access_level; - case 188: + handle_complex_type(var, type, (yyvsp[(1) - (2)].integer), getSig()); -/* Line 1455 of yacc.c */ -#line 1702 "vtkParse.y" - { - postSig(";"); - closeSig(); - currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - vtkParseDebug("Parsed func", currentFunction->Name); - } - break; + var->Name = getVarName(); - case 190: + if (getVarValue()) + { + var->Value = getVarValue(); + } -/* Line 1455 of yacc.c */ -#line 1712 "vtkParse.y" - { - postSig(" = 0"); - if (currentClass) + /* Is this a typedef? */ + if ((type & VTK_PARSE_TYPEDEF) != 0) + { + var->ItemType = VTK_TYPEDEF_INFO; + if (currentClass) + { + vtkParse_AddVariableToClass(currentClass, var); + } + else + { + vtkParse_AddVariableToNamespace(currentNamespace, var); + } + } + /* Is this a constant? */ + else if (((type & VTK_PARSE_CONST) != 0) && var->Value != NULL && + (((type & VTK_PARSE_INDIRECT) == 0) || + ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_ARRAY))) + { + var->ItemType = VTK_CONSTANT_INFO; + if (currentClass) + { + vtkParse_AddConstantToClass(currentClass, var); + } + else + { + vtkParse_AddConstantToNamespace(currentNamespace, var); + } + } + /* This is a true variable i.e. not constant */ + else { - currentFunction->IsPureVirtual = 1; - currentClass->IsAbstract = 1; + if (currentClass) + { + vtkParse_AddVariableToClass(currentClass, var); + } + else + { + vtkParse_AddVariableToNamespace(currentNamespace, var); + } } } break; - case 191: + case 229: /* Line 1455 of yacc.c */ -#line 1721 "vtkParse.y" - { - postSig(" const = 0"); - currentFunction->IsConst = 1; - if (currentClass) - { - currentFunction->IsPureVirtual = 1; - currentClass->IsAbstract = 1; - } - } +#line 2136 "vtkParse.y" + { postSig(", "); } break; - case 192: + case 232: /* Line 1455 of yacc.c */ -#line 1731 "vtkParse.y" - { - postSig(" const"); - currentFunction->IsConst = 1; - } +#line 2142 "vtkParse.y" + { setTypePtr(0); } break; - case 195: + case 233: /* Line 1455 of yacc.c */ -#line 1739 "vtkParse.y" - { - postSig("("); - set_return(currentFunction, getStorageType(), getTypeId(), 0); - } +#line 2143 "vtkParse.y" + { setTypePtr((yyvsp[(1) - (1)].integer)); } break; - case 196: + case 234: /* Line 1455 of yacc.c */ -#line 1742 "vtkParse.y" - { (yyval.str) = (yyvsp[(1) - (5)].str); } +#line 2147 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 197: + case 235: /* Line 1455 of yacc.c */ -#line 1743 "vtkParse.y" - {markSig(); postSig("<");} +#line 2148 "vtkParse.y" + { postSig(")"); } break; - case 198: + case 236: /* Line 1455 of yacc.c */ -#line 1744 "vtkParse.y" +#line 2150 "vtkParse.y" { - if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig(">("); - set_return(currentFunction, getStorageType(), getTypeId(), 0); - (yyval.str) = vtkstrcat((yyvsp[(1) - (6)].str), copySig()); + const char *scope = getScope(); + unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer)); + if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) + { + if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); } + getFunction()->Class = scope; + (yyval.integer) = (parens | VTK_PARSE_FUNCTION); + } + else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) + { + (yyval.integer) = add_indirection_to_array(parens); + } } break; - case 199: + case 237: /* Line 1455 of yacc.c */ -#line 1749 "vtkParse.y" - { (yyval.str) = (yyvsp[(7) - (9)].str); } +#line 2167 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 200: + case 238: /* Line 1455 of yacc.c */ -#line 1751 "vtkParse.y" - { postSig(");"); closeSig(); } +#line 2168 "vtkParse.y" + { postSig(")"); } break; - case 201: + case 239: /* Line 1455 of yacc.c */ -#line 1752 "vtkParse.y" +#line 2170 "vtkParse.y" { - currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - vtkParseDebug("Parsed func", currentFunction->Name); + const char *scope = getScope(); + unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer)); + if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) + { + if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); } + getFunction()->Class = scope; + (yyval.integer) = (parens | VTK_PARSE_FUNCTION); + } + else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) + { + (yyval.integer) = add_indirection_to_array(parens); + } } break; - case 202: + case 240: /* Line 1455 of yacc.c */ -#line 1758 "vtkParse.y" - { postSig("("); } +#line 2186 "vtkParse.y" + { postSig("("); scopeSig(""); (yyval.integer) = 0; } break; - case 209: + case 241: /* Line 1455 of yacc.c */ -#line 1767 "vtkParse.y" - { - postSig(");"); - closeSig(); - currentFunction->Name = vtkstrcat("~", (yyvsp[(1) - (1)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - vtkParseDebug("Parsed func", currentFunction->Name); - } +#line 2187 "vtkParse.y" + { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*"); + (yyval.integer) = VTK_PARSE_POINTER; } break; - case 210: + case 242: /* Line 1455 of yacc.c */ -#line 1775 "vtkParse.y" - { postSig("(");} +#line 2189 "vtkParse.y" + { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&"); + (yyval.integer) = VTK_PARSE_REF; } break; - case 213: + case 243: /* Line 1455 of yacc.c */ -#line 1781 "vtkParse.y" - {clearTypeId();} +#line 2193 "vtkParse.y" + { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*"); + (yyval.integer) = VTK_PARSE_POINTER; } break; - case 215: + case 244: /* Line 1455 of yacc.c */ -#line 1784 "vtkParse.y" - { currentFunction->IsVariadic = 1; postSig("..."); } +#line 2195 "vtkParse.y" + { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&"); + (yyval.integer) = VTK_PARSE_REF; } break; - case 216: + case 245: /* Line 1455 of yacc.c */ -#line 1785 "vtkParse.y" - { clearTypeId(); } +#line 2198 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 217: + case 246: /* Line 1455 of yacc.c */ -#line 1786 "vtkParse.y" - { clearTypeId(); postSig(", "); } +#line 2199 "vtkParse.y" + { pushFunction(); postSig("("); } break; - case 219: + case 247: /* Line 1455 of yacc.c */ -#line 1789 "vtkParse.y" - { markSig(); } +#line 2200 "vtkParse.y" + { postSig(")"); } break; - case 220: + case 248: /* Line 1455 of yacc.c */ -#line 1791 "vtkParse.y" +#line 2201 "vtkParse.y" { - int i = currentFunction->NumberOfArguments; - ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_InitValue(arg); - - handle_complex_type(arg, (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer), copySig()); - - if (i < MAX_ARGS) - { - currentFunction->ArgTypes[i] = arg->Type; - currentFunction->ArgClasses[i] = arg->Class; - currentFunction->ArgCounts[i] = arg->Count; - } - - if (getVarName()) - { - arg->Name = vtkstrdup(getVarName()); - } - - vtkParse_AddArgumentToFunction(currentFunction, arg); + (yyval.integer) = VTK_PARSE_FUNCTION; + popFunction(); } break; - case 221: + case 249: /* Line 1455 of yacc.c */ -#line 1813 "vtkParse.y" - { - int i = currentFunction->NumberOfArguments-1; - if (getVarValue()) - { - currentFunction->Arguments[i]->Value = vtkstrdup(getVarValue()); - } - } +#line 2205 "vtkParse.y" + { (yyval.integer) = VTK_PARSE_ARRAY; } break; - case 222: + case 252: /* Line 1455 of yacc.c */ -#line 1821 "vtkParse.y" - { - int i = currentFunction->NumberOfArguments; - ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo)); - - vtkParse_InitValue(arg); +#line 2209 "vtkParse.y" + { currentFunction->IsConst = 1; } + break; - markSig(); - postSig("void (*"); - postSig((yyvsp[(1) - (1)].str)); - postSig(")(void *) "); + case 255: - handle_function_type(arg, (yyvsp[(1) - (1)].str), copySig()); +/* Line 1455 of yacc.c */ +#line 2215 "vtkParse.y" + { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer)); } + break; - if (i < MAX_ARGS) - { - currentFunction->ArgTypes[i] = arg->Type; - currentFunction->ArgClasses[i] = arg->Class; - currentFunction->ArgCounts[i] = arg->Count; - } + case 257: - vtkParse_AddArgumentToFunction(currentFunction, arg); - } +/* Line 1455 of yacc.c */ +#line 2220 "vtkParse.y" + { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer)); } break; - case 225: + case 258: /* Line 1455 of yacc.c */ -#line 1846 "vtkParse.y" - {clearVarValue();} +#line 2223 "vtkParse.y" + { clearVarName(); chopSig(); } break; - case 227: + case 260: /* Line 1455 of yacc.c */ -#line 1848 "vtkParse.y" - { postSig("="); clearVarValue();} +#line 2227 "vtkParse.y" + { setVarName((yyvsp[(1) - (1)].str)); } break; - case 228: + case 261: /* Line 1455 of yacc.c */ -#line 1849 "vtkParse.y" - { setVarValue((yyvsp[(3) - (3)].str)); } +#line 2228 "vtkParse.y" + { setVarName((yyvsp[(1) - (3)].str)); } break; - case 232: + case 265: /* Line 1455 of yacc.c */ -#line 1860 "vtkParse.y" - { - unsigned int type = getStorageType(); - ValueInfo *var = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_InitValue(var); - var->ItemType = VTK_VARIABLE_INFO; - var->Access = access_level; - - handle_complex_type(var, type, (yyvsp[(1) - (2)].integer), getSig()); - - var->Name = vtkstrdup(getVarName()); - - if (getVarValue()) - { - var->Value = vtkstrdup(getVarValue()); - } - - if ((var->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) - { - var->Type = var->Type; - } - - /* Is this a constant? */ - if (((type & VTK_PARSE_CONST) != 0) && var->Value != NULL && - (((type & VTK_PARSE_INDIRECT) == 0) || - ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_ARRAY))) - { - var->ItemType = VTK_CONSTANT_INFO; - if (currentClass) - { - vtkParse_AddConstantToClass(currentClass, var); - } - else - { - vtkParse_AddConstantToNamespace(currentNamespace, var); - } - } - /* This is a true variable i.e. not constant */ - else - { - if (currentClass) - { - vtkParse_AddVariableToClass(currentClass, var); - } - else - { - vtkParse_AddVariableToNamespace(currentNamespace, var); - } - } - } +#line 2236 "vtkParse.y" + { clearArray(); } break; - case 236: + case 267: /* Line 1455 of yacc.c */ -#line 1914 "vtkParse.y" - {postSig(", ");} +#line 2240 "vtkParse.y" + { clearArray(); } break; - case 238: + case 271: /* Line 1455 of yacc.c */ -#line 1917 "vtkParse.y" - { setStorageTypeIndirection(0); } +#line 2247 "vtkParse.y" + { postSig("["); } break; - case 240: + case 272: /* Line 1455 of yacc.c */ -#line 1918 "vtkParse.y" - { setStorageTypeIndirection((yyvsp[(1) - (1)].integer)); } +#line 2247 "vtkParse.y" + { postSig("]"); } break; - case 242: + case 273: /* Line 1455 of yacc.c */ -#line 1922 "vtkParse.y" - { (yyval.integer) = 0; } +#line 2250 "vtkParse.y" + { pushArraySize(""); } break; - case 243: + case 274: /* Line 1455 of yacc.c */ -#line 1923 "vtkParse.y" - { postSig(")"); } +#line 2251 "vtkParse.y" + { markSig(); } break; - case 244: + case 275: /* Line 1455 of yacc.c */ -#line 1925 "vtkParse.y" - { - const char *scope = getScope(); - unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer)); - if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) { - if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); } - getFunction()->Class = scope; - (yyval.integer) = (parens | VTK_PARSE_FUNCTION); } - else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) { - (yyval.integer) = add_indirection_to_array(parens); } - } +#line 2251 "vtkParse.y" + { chopSig(); pushArraySize(copySig()); } break; - case 245: + case 280: /* Line 1455 of yacc.c */ -#line 1937 "vtkParse.y" - { (yyval.integer) = 0; } +#line 2267 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 246: + case 281: /* Line 1455 of yacc.c */ -#line 1938 "vtkParse.y" - { postSig(")"); } +#line 2269 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 247: + case 282: /* Line 1455 of yacc.c */ -#line 1940 "vtkParse.y" - { - const char *scope = getScope(); - unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer)); - if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) { - if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); } - getFunction()->Class = scope; - (yyval.integer) = (parens | VTK_PARSE_FUNCTION); } - else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) { - (yyval.integer) = add_indirection_to_array(parens); } - } +#line 2271 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 248: + case 283: /* Line 1455 of yacc.c */ -#line 1951 "vtkParse.y" - { postSig("("); scopeSig(""); (yyval.integer) = 0; } +#line 2275 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 249: + case 284: /* Line 1455 of yacc.c */ -#line 1952 "vtkParse.y" - { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*"); - (yyval.integer) = VTK_PARSE_POINTER; } +#line 2277 "vtkParse.y" + { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } break; - case 250: + case 285: /* Line 1455 of yacc.c */ -#line 1954 "vtkParse.y" - { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&"); - (yyval.integer) = VTK_PARSE_REF; } +#line 2279 "vtkParse.y" + { (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)); } break; - case 251: + case 286: /* Line 1455 of yacc.c */ -#line 1957 "vtkParse.y" - { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*"); - (yyval.integer) = VTK_PARSE_POINTER; } +#line 2281 "vtkParse.y" + { (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)); } break; - case 252: + case 287: /* Line 1455 of yacc.c */ -#line 1959 "vtkParse.y" - { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&"); - (yyval.integer) = VTK_PARSE_REF; } +#line 2282 "vtkParse.y" + { postSig("template "); } break; - case 254: + case 288: /* Line 1455 of yacc.c */ -#line 1962 "vtkParse.y" - { currentFunction->IsConst = 1; } +#line 2284 "vtkParse.y" + { (yyval.str) = vtkstrcat4((yyvsp[(1) - (5)].str), "template ", (yyvsp[(4) - (5)].str), (yyvsp[(5) - (5)].str)); } break; - case 255: + case 289: /* Line 1455 of yacc.c */ -#line 1964 "vtkParse.y" - { (yyval.integer) = 0; } +#line 2287 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 256: + case 290: /* Line 1455 of yacc.c */ -#line 1965 "vtkParse.y" - { pushFunction(); postSig("("); } +#line 2290 "vtkParse.y" + { (yyval.str) = "::"; postSig((yyval.str)); } break; - case 257: + case 291: /* Line 1455 of yacc.c */ -#line 1966 "vtkParse.y" - { (yyval.integer) = VTK_PARSE_FUNCTION; postSig(")"); popFunction(); } +#line 2293 "vtkParse.y" + { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<"); } break; - case 258: + case 292: /* Line 1455 of yacc.c */ -#line 1967 "vtkParse.y" - { (yyval.integer) = VTK_PARSE_ARRAY; } +#line 2295 "vtkParse.y" + { + chopSig(); if (getSig()[getSigLength()-1] == '>') { postSig(" "); } + postSig(">"); (yyval.str) = copySig(); clearTypeId(); + } break; - case 259: + case 293: /* Line 1455 of yacc.c */ -#line 1970 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); } +#line 2308 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 260: + case 294: /* Line 1455 of yacc.c */ -#line 1972 "vtkParse.y" - { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer));} +#line 2309 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 261: + case 295: /* Line 1455 of yacc.c */ -#line 1975 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); } +#line 2310 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 262: + case 296: /* Line 1455 of yacc.c */ -#line 1977 "vtkParse.y" - { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer));} +#line 2311 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 263: + case 297: /* Line 1455 of yacc.c */ -#line 1979 "vtkParse.y" - {clearVarName(); chopSig();} +#line 2312 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 265: + case 298: /* Line 1455 of yacc.c */ -#line 1981 "vtkParse.y" - {setVarName((yyvsp[(1) - (1)].str));} +#line 2313 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 266: + case 299: /* Line 1455 of yacc.c */ -#line 1983 "vtkParse.y" - {clearArray();} +#line 2314 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); } break; - case 268: + case 300: /* Line 1455 of yacc.c */ -#line 1985 "vtkParse.y" - {clearArray();} +#line 2315 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 270: + case 301: /* Line 1455 of yacc.c */ -#line 1987 "vtkParse.y" - {postSig("[");} +#line 2316 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 271: + case 302: /* Line 1455 of yacc.c */ -#line 1987 "vtkParse.y" - {postSig("]");} +#line 2317 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 274: + case 303: /* Line 1455 of yacc.c */ -#line 1991 "vtkParse.y" - {pushArraySize("");} +#line 2318 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 275: + case 304: /* Line 1455 of yacc.c */ -#line 1992 "vtkParse.y" - {pushArraySize((yyvsp[(1) - (1)].str));} +#line 2319 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 276: + case 305: /* Line 1455 of yacc.c */ -#line 1998 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2320 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 277: + case 306: /* Line 1455 of yacc.c */ -#line 1999 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2321 "vtkParse.y" + { (yyval.str) = vtkstrcat("~",(yyvsp[(2) - (2)].str)); postSig((yyval.str)); } break; - case 278: + case 307: /* Line 1455 of yacc.c */ -#line 2000 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2322 "vtkParse.y" + { (yyval.str) = "size_t"; postSig((yyval.str)); } break; - case 279: + case 308: /* Line 1455 of yacc.c */ -#line 2001 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2323 "vtkParse.y" + { (yyval.str) = "ssize_t"; postSig((yyval.str)); } break; - case 280: + case 309: /* Line 1455 of yacc.c */ -#line 2002 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2324 "vtkParse.y" + { (yyval.str) = "vtkTypeInt8"; postSig((yyval.str)); } break; - case 281: + case 310: /* Line 1455 of yacc.c */ -#line 2003 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2325 "vtkParse.y" + { (yyval.str) = "vtkTypeUInt8"; postSig((yyval.str)); } break; - case 282: + case 311: /* Line 1455 of yacc.c */ -#line 2004 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2326 "vtkParse.y" + { (yyval.str) = "vtkTypeInt16"; postSig((yyval.str)); } break; - case 283: + case 312: /* Line 1455 of yacc.c */ -#line 2005 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2327 "vtkParse.y" + { (yyval.str) = "vtkTypeUInt16"; postSig((yyval.str)); } break; - case 284: + case 313: /* Line 1455 of yacc.c */ -#line 2006 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2328 "vtkParse.y" + { (yyval.str) = "vtkTypeInt32"; postSig((yyval.str)); } break; - case 285: + case 314: /* Line 1455 of yacc.c */ -#line 2009 "vtkParse.y" - {(yyval.str) = "vtkTypeInt8";} +#line 2329 "vtkParse.y" + { (yyval.str) = "vtkTypeUInt32"; postSig((yyval.str)); } break; - case 286: + case 315: /* Line 1455 of yacc.c */ -#line 2010 "vtkParse.y" - {(yyval.str) = "vtkTypeUInt8";} +#line 2330 "vtkParse.y" + { (yyval.str) = "vtkTypeInt64"; postSig((yyval.str)); } break; - case 287: + case 316: /* Line 1455 of yacc.c */ -#line 2011 "vtkParse.y" - {(yyval.str) = "vtkTypeInt16";} +#line 2331 "vtkParse.y" + { (yyval.str) = "vtkTypeUInt64"; postSig((yyval.str)); } break; - case 288: + case 317: /* Line 1455 of yacc.c */ -#line 2012 "vtkParse.y" - {(yyval.str) = "vtkTypeUInt16";} +#line 2332 "vtkParse.y" + { (yyval.str) = "vtkTypeFloat32"; postSig((yyval.str)); } break; - case 289: + case 318: /* Line 1455 of yacc.c */ -#line 2013 "vtkParse.y" - {(yyval.str) = "vtkTypeInt32";} +#line 2333 "vtkParse.y" + { (yyval.str) = "vtkTypeFloat64"; postSig((yyval.str)); } break; - case 290: + case 319: /* Line 1455 of yacc.c */ -#line 2014 "vtkParse.y" - {(yyval.str) = "vtkTypeUInt32";} +#line 2334 "vtkParse.y" + { (yyval.str) = "vtkIdType"; postSig((yyval.str)); } break; - case 291: + case 330: /* Line 1455 of yacc.c */ -#line 2015 "vtkParse.y" - {(yyval.str) = "vtkTypeInt64";} +#line 2360 "vtkParse.y" + { setTypeBase(buildTypeBase(getType(), (yyvsp[(1) - (1)].integer))); } break; - case 292: + case 331: /* Line 1455 of yacc.c */ -#line 2016 "vtkParse.y" - {(yyval.str) = "vtkTypeUInt64";} +#line 2361 "vtkParse.y" + { setTypeMod(VTK_PARSE_TYPEDEF); } break; - case 293: + case 332: /* Line 1455 of yacc.c */ -#line 2017 "vtkParse.y" - {(yyval.str) = "vtkTypeFloat32";} +#line 2362 "vtkParse.y" + { setTypeMod(VTK_PARSE_FRIEND); } break; - case 294: + case 335: /* Line 1455 of yacc.c */ -#line 2018 "vtkParse.y" - {(yyval.str) = "vtkTypeFloat64";} +#line 2369 "vtkParse.y" + { setTypeMod((yyvsp[(1) - (1)].integer)); } break; - case 295: + case 336: /* Line 1455 of yacc.c */ -#line 2021 "vtkParse.y" - {(yyval.str) = "vtkIdType";} +#line 2370 "vtkParse.y" + { setTypeMod((yyvsp[(1) - (1)].integer)); } break; - case 296: + case 337: /* Line 1455 of yacc.c */ -#line 2022 "vtkParse.y" - {(yyval.str) = "vtkFloatingPointType";} +#line 2371 "vtkParse.y" + { setTypeMod((yyvsp[(1) - (1)].integer)); } break; - case 297: + case 338: /* Line 1455 of yacc.c */ -#line 2029 "vtkParse.y" - {(yyval.integer) = (yyvsp[(1) - (1)].integer); setStorageType((yyval.integer));} +#line 2374 "vtkParse.y" + { postSig("mutable "); (yyval.integer) = VTK_PARSE_MUTABLE; } break; - case 298: + case 339: /* Line 1455 of yacc.c */ -#line 2030 "vtkParse.y" - {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));} +#line 2375 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 299: + case 340: /* Line 1455 of yacc.c */ -#line 2031 "vtkParse.y" - {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));} +#line 2376 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 300: + case 341: /* Line 1455 of yacc.c */ -#line 2033 "vtkParse.y" - {(yyval.integer) = (yyvsp[(3) - (3)].integer); setStorageType((yyval.integer));} +#line 2377 "vtkParse.y" + { postSig("static "); (yyval.integer) = VTK_PARSE_STATIC; } break; - case 301: + case 342: /* Line 1455 of yacc.c */ -#line 2034 "vtkParse.y" - {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));} +#line 2380 "vtkParse.y" + { (yyval.integer) = 0; } break; - case 302: + case 343: /* Line 1455 of yacc.c */ -#line 2035 "vtkParse.y" - {(yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer)); - setStorageType((yyval.integer));} +#line 2381 "vtkParse.y" + { postSig("virtual "); (yyval.integer) = VTK_PARSE_VIRTUAL; } break; - case 303: + case 344: /* Line 1455 of yacc.c */ -#line 2037 "vtkParse.y" - {(yyval.integer) = ((yyvsp[(2) - (3)].integer) | (yyvsp[(3) - (3)].integer)); - setStorageType((yyval.integer));} +#line 2382 "vtkParse.y" + { postSig("explicit "); (yyval.integer) = VTK_PARSE_EXPLICIT; } break; - case 304: + case 345: /* Line 1455 of yacc.c */ -#line 2041 "vtkParse.y" - {postSig("static "); (yyval.integer) = VTK_PARSE_STATIC; } +#line 2385 "vtkParse.y" + { postSig("const "); (yyval.integer) = VTK_PARSE_CONST; } break; - case 305: + case 346: /* Line 1455 of yacc.c */ -#line 2042 "vtkParse.y" - {postSig("static "); (yyval.integer) = VTK_PARSE_STATIC; } +#line 2386 "vtkParse.y" + { postSig("volatile "); (yyval.integer) = VTK_PARSE_VOLATILE; } break; - case 306: + case 348: /* Line 1455 of yacc.c */ -#line 2044 "vtkParse.y" - {(yyval.integer) = (yyvsp[(1) - (1)].integer);} +#line 2391 "vtkParse.y" + { (yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer)); } break; - case 307: + case 350: /* Line 1455 of yacc.c */ -#line 2045 "vtkParse.y" - {(yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer));} +#line 2402 "vtkParse.y" + { setTypeBase((yyvsp[(1) - (1)].integer)); } break; - case 308: + case 352: /* Line 1455 of yacc.c */ -#line 2047 "vtkParse.y" - {(yyval.integer) = (yyvsp[(1) - (1)].integer);} +#line 2404 "vtkParse.y" + { setTypeBase((yyvsp[(2) - (2)].integer)); } break; - case 309: + case 355: /* Line 1455 of yacc.c */ -#line 2048 "vtkParse.y" - {(yyval.integer) = (VTK_PARSE_CONST | (yyvsp[(2) - (2)].integer));} +#line 2409 "vtkParse.y" + { postSig("typename "); } break; - case 310: + case 356: /* Line 1455 of yacc.c */ -#line 2049 "vtkParse.y" - {(yyval.integer) = (VTK_PARSE_CONST | (yyvsp[(1) - (2)].integer));} +#line 2410 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(3) - (3)].str)); (yyval.integer) = guess_id_type((yyvsp[(3) - (3)].str)); } break; - case 311: + case 357: /* Line 1455 of yacc.c */ -#line 2051 "vtkParse.y" - {postSig("const ");} +#line 2412 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = guess_id_type((yyvsp[(1) - (1)].str)); } break; - case 313: + case 358: /* Line 1455 of yacc.c */ -#line 2055 "vtkParse.y" - {postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;} +#line 2414 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = guess_id_type((yyvsp[(1) - (1)].str)); } break; - case 314: + case 359: /* Line 1455 of yacc.c */ -#line 2057 "vtkParse.y" - {postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;} +#line 2416 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(2) - (2)].str)); (yyval.integer) = guess_id_type((yyvsp[(2) - (2)].str)); } break; - case 315: + case 360: /* Line 1455 of yacc.c */ -#line 2058 "vtkParse.y" - {postSig("typename ");} +#line 2418 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(2) - (2)].str)); (yyval.integer) = guess_id_type((yyvsp[(2) - (2)].str)); } break; - case 316: + case 362: /* Line 1455 of yacc.c */ -#line 2059 "vtkParse.y" - {postSig(" "); setTypeId((yyvsp[(3) - (3)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;} +#line 2424 "vtkParse.y" + { setTypeBase((yyvsp[(1) - (1)].integer)); } break; - case 317: + case 364: /* Line 1455 of yacc.c */ -#line 2062 "vtkParse.y" - { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");} +#line 2426 "vtkParse.y" + { setTypeBase((yyvsp[(2) - (2)].integer)); } break; - case 318: + case 367: /* Line 1455 of yacc.c */ -#line 2063 "vtkParse.y" - {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();} +#line 2432 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = guess_id_type((yyvsp[(1) - (1)].str)); } break; - case 319: + case 368: /* Line 1455 of yacc.c */ -#line 2065 "vtkParse.y" - { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");} +#line 2434 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = guess_id_type((yyvsp[(1) - (1)].str)); } break; - case 320: + case 369: /* Line 1455 of yacc.c */ -#line 2066 "vtkParse.y" - {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();} +#line 2436 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(2) - (2)].str)); (yyval.integer) = guess_id_type((yyvsp[(2) - (2)].str)); } break; - case 321: + case 370: /* Line 1455 of yacc.c */ -#line 2068 "vtkParse.y" - { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");} +#line 2438 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(2) - (2)].str)); (yyval.integer) = guess_id_type((yyvsp[(2) - (2)].str)); } break; - case 322: + case 371: /* Line 1455 of yacc.c */ -#line 2069 "vtkParse.y" - {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();} +#line 2440 "vtkParse.y" + { postSig(" "); setTypeId((yyvsp[(2) - (2)].str)); (yyval.integer) = guess_id_type((yyvsp[(2) - (2)].str)); } break; - case 324: + case 372: /* Line 1455 of yacc.c */ -#line 2073 "vtkParse.y" - {chopSig(); postSig(", ");} +#line 2443 "vtkParse.y" + { setTypeId(""); } break; - case 327: + case 374: /* Line 1455 of yacc.c */ -#line 2076 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2447 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_STRING; } break; - case 328: + case 375: /* Line 1455 of yacc.c */ -#line 2078 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2448 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNICODE_STRING;} break; - case 329: + case 376: /* Line 1455 of yacc.c */ -#line 2079 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2449 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OSTREAM; } break; - case 330: + case 377: /* Line 1455 of yacc.c */ -#line 2080 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2450 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_ISTREAM; } break; - case 331: + case 378: /* Line 1455 of yacc.c */ -#line 2081 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2451 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; } break; - case 332: + case 379: /* Line 1455 of yacc.c */ -#line 2082 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2452 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OBJECT; } break; - case 333: + case 380: /* Line 1455 of yacc.c */ -#line 2083 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2453 "vtkParse.y" + { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_QOBJECT; } break; - case 334: + case 381: /* Line 1455 of yacc.c */ -#line 2084 "vtkParse.y" - {postSig((yyvsp[(1) - (1)].str));} +#line 2454 "vtkParse.y" + { typeSig("ssize_t"); (yyval.integer) = VTK_PARSE_SSIZE_T; } break; - case 337: + case 382: /* Line 1455 of yacc.c */ -#line 2089 "vtkParse.y" - { - (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), "::", (yyvsp[(3) - (3)].str)); - preScopeSig((yyvsp[(1) - (3)].str)); - } +#line 2455 "vtkParse.y" + { typeSig("size_t"); (yyval.integer) = VTK_PARSE_SIZE_T; } break; - case 338: + case 383: /* Line 1455 of yacc.c */ -#line 2094 "vtkParse.y" - { - (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), "::", (yyvsp[(3) - (3)].str)); - preScopeSig(""); - } +#line 2456 "vtkParse.y" + { typeSig("vtkTypeInt8"); (yyval.integer) = VTK_PARSE_INT8; } break; - case 346: + case 384: /* Line 1455 of yacc.c */ -#line 2116 "vtkParse.y" - { postSig("&"); (yyval.integer) = VTK_PARSE_REF;} +#line 2457 "vtkParse.y" + { typeSig("vtkTypeUInt8"); (yyval.integer) = VTK_PARSE_UINT8; } break; - case 347: + case 385: /* Line 1455 of yacc.c */ -#line 2117 "vtkParse.y" - { postSig("&"); (yyval.integer) = ((yyvsp[(1) - (2)].integer) | VTK_PARSE_REF);} +#line 2458 "vtkParse.y" + { typeSig("vtkTypeInt16"); (yyval.integer) = VTK_PARSE_INT16; } break; - case 348: + case 386: /* Line 1455 of yacc.c */ -#line 2118 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); } +#line 2459 "vtkParse.y" + { typeSig("vtkTypeUInt16"); (yyval.integer) = VTK_PARSE_UINT16; } break; - case 349: + case 387: /* Line 1455 of yacc.c */ -#line 2123 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); } +#line 2460 "vtkParse.y" + { typeSig("vtkTypeInt32"); (yyval.integer) = VTK_PARSE_INT32; } break; - case 350: + case 388: /* Line 1455 of yacc.c */ -#line 2125 "vtkParse.y" - { - unsigned int n; - n = (((yyvsp[(1) - (2)].integer) << 2) | (yyvsp[(2) - (2)].integer)); - if ((n & VTK_PARSE_INDIRECT) != n) - { - n = VTK_PARSE_BAD_INDIRECT; - } - (yyval.integer) = n; - } +#line 2461 "vtkParse.y" + { typeSig("vtkTypeUInt32"); (yyval.integer) = VTK_PARSE_UINT32; } break; - case 351: + case 389: /* Line 1455 of yacc.c */ -#line 2136 "vtkParse.y" - { postSig("*"); (yyval.integer) = VTK_PARSE_POINTER; } +#line 2462 "vtkParse.y" + { typeSig("vtkTypeInt64"); (yyval.integer) = VTK_PARSE_INT64; } break; - case 352: + case 390: /* Line 1455 of yacc.c */ -#line 2137 "vtkParse.y" - { postSig("*const "); (yyval.integer) = VTK_PARSE_CONST_POINTER; } +#line 2463 "vtkParse.y" + { typeSig("vtkTypeUInt64"); (yyval.integer) = VTK_PARSE_UINT64; } break; - case 353: + case 391: /* Line 1455 of yacc.c */ -#line 2140 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer);} +#line 2464 "vtkParse.y" + { typeSig("vtkTypeFloat32"); (yyval.integer) = VTK_PARSE_FLOAT32; } break; - case 354: + case 392: /* Line 1455 of yacc.c */ -#line 2141 "vtkParse.y" - { (yyval.integer) = (yyvsp[(2) - (2)].integer); } +#line 2465 "vtkParse.y" + { typeSig("vtkTypeFloat64"); (yyval.integer) = VTK_PARSE_FLOAT64; } break; - case 355: + case 393: /* Line 1455 of yacc.c */ -#line 2142 "vtkParse.y" - { (yyval.integer) = (yyvsp[(2) - (2)].integer); } +#line 2466 "vtkParse.y" + { typeSig("vtkIdType"); (yyval.integer) = VTK_PARSE_ID_TYPE; } break; - case 356: + case 394: /* Line 1455 of yacc.c */ -#line 2143 "vtkParse.y" - { typeSig((yyvsp[(2) - (2)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; } +#line 2469 "vtkParse.y" + { postSig("void "); (yyval.integer) = VTK_PARSE_VOID; } break; - case 357: + case 395: /* Line 1455 of yacc.c */ -#line 2144 "vtkParse.y" - { typeSig((yyvsp[(2) - (2)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; } +#line 2470 "vtkParse.y" + { postSig("bool "); (yyval.integer) = VTK_PARSE_BOOL; } break; - case 358: + case 396: /* Line 1455 of yacc.c */ -#line 2147 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer);} +#line 2471 "vtkParse.y" + { postSig("float "); (yyval.integer) = VTK_PARSE_FLOAT; } break; - case 359: + case 397: /* Line 1455 of yacc.c */ -#line 2148 "vtkParse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer);} +#line 2472 "vtkParse.y" + { postSig("double "); (yyval.integer) = VTK_PARSE_DOUBLE; } break; - case 360: + case 398: /* Line 1455 of yacc.c */ -#line 2151 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_STRING;} +#line 2473 "vtkParse.y" + { postSig("char "); (yyval.integer) = VTK_PARSE_CHAR; } break; - case 361: + case 399: /* Line 1455 of yacc.c */ -#line 2152 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNICODE_STRING;} +#line 2474 "vtkParse.y" + { postSig("int "); (yyval.integer) = VTK_PARSE_INT; } break; - case 362: + case 400: /* Line 1455 of yacc.c */ -#line 2153 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OSTREAM; } +#line 2475 "vtkParse.y" + { postSig("short "); (yyval.integer) = VTK_PARSE_SHORT; } break; - case 363: + case 401: /* Line 1455 of yacc.c */ -#line 2154 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_ISTREAM; } +#line 2476 "vtkParse.y" + { postSig("long "); (yyval.integer) = VTK_PARSE_LONG; } break; - case 364: + case 402: /* Line 1455 of yacc.c */ -#line 2155 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; } +#line 2477 "vtkParse.y" + { postSig("__int64 "); (yyval.integer) = VTK_PARSE___INT64; } break; - case 365: + case 403: /* Line 1455 of yacc.c */ -#line 2156 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OBJECT; } +#line 2478 "vtkParse.y" + { postSig("signed "); (yyval.integer) = VTK_PARSE_INT; } break; - case 366: + case 404: /* Line 1455 of yacc.c */ -#line 2157 "vtkParse.y" - { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_QOBJECT; } +#line 2479 "vtkParse.y" + { postSig("unsigned "); (yyval.integer) = VTK_PARSE_UNSIGNED_INT; } break; - case 367: + case 407: /* Line 1455 of yacc.c */ -#line 2160 "vtkParse.y" - { typeSig("void"); (yyval.integer) = VTK_PARSE_VOID;} +#line 2501 "vtkParse.y" + { (yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer)); } break; - case 368: + case 408: /* Line 1455 of yacc.c */ -#line 2161 "vtkParse.y" - { typeSig("bool"); (yyval.integer) = VTK_PARSE_BOOL;} +#line 2504 "vtkParse.y" + { postSig("&"); (yyval.integer) = VTK_PARSE_REF; } break; - case 369: + case 409: /* Line 1455 of yacc.c */ -#line 2162 "vtkParse.y" - { typeSig("ssize_t"); (yyval.integer) = VTK_PARSE_SSIZE_T;} +#line 2507 "vtkParse.y" + { postSig("*"); (yyval.integer) = VTK_PARSE_POINTER; } break; - case 370: + case 410: /* Line 1455 of yacc.c */ -#line 2163 "vtkParse.y" - { typeSig("size_t"); (yyval.integer) = VTK_PARSE_SIZE_T;} +#line 2508 "vtkParse.y" + { postSig("*"); } break; - case 371: + case 411: /* Line 1455 of yacc.c */ -#line 2164 "vtkParse.y" - { typeSig("vtkTypeInt8"); (yyval.integer) = VTK_PARSE_INT8; } +#line 2509 "vtkParse.y" + { + if (((yyvsp[(3) - (3)].integer) & VTK_PARSE_CONST) != 0) + { + (yyval.integer) = VTK_PARSE_CONST_POINTER; + } + if (((yyvsp[(3) - (3)].integer) & VTK_PARSE_VOLATILE) != 0) + { + (yyval.integer) = VTK_PARSE_BAD_INDIRECT; + } + } break; - case 372: + case 413: /* Line 1455 of yacc.c */ -#line 2165 "vtkParse.y" - { typeSig("vtkTypeUInt8"); (yyval.integer) = VTK_PARSE_UINT8; } +#line 2525 "vtkParse.y" + { + unsigned int n; + n = (((yyvsp[(1) - (2)].integer) << 2) | (yyvsp[(2) - (2)].integer)); + if ((n & VTK_PARSE_INDIRECT) != n) + { + n = VTK_PARSE_BAD_INDIRECT; + } + (yyval.integer) = n; + } break; - case 373: + case 414: /* Line 1455 of yacc.c */ -#line 2166 "vtkParse.y" - { typeSig("vtkTypeInt16"); (yyval.integer) = VTK_PARSE_INT16; } +#line 2541 "vtkParse.y" + {preSig("void Set"); postSig("(");} break; - case 374: + case 415: /* Line 1455 of yacc.c */ -#line 2167 "vtkParse.y" - { typeSig("vtkTypeUInt16"); (yyval.integer) = VTK_PARSE_UINT16; } +#line 2542 "vtkParse.y" + { + postSig("a);"); + currentFunction->Macro = "vtkSetMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, getType(), getTypeId(), 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + } break; - case 375: + case 416: /* Line 1455 of yacc.c */ -#line 2168 "vtkParse.y" - { typeSig("vtkTypeInt32"); (yyval.integer) = VTK_PARSE_INT32; } +#line 2551 "vtkParse.y" + {postSig("Get");} break; - case 376: + case 417: /* Line 1455 of yacc.c */ -#line 2169 "vtkParse.y" - { typeSig("vtkTypeUInt32"); (yyval.integer) = VTK_PARSE_UINT32; } +#line 2552 "vtkParse.y" + {markSig();} break; - case 377: + case 418: /* Line 1455 of yacc.c */ -#line 2170 "vtkParse.y" - { typeSig("vtkTypeInt64"); (yyval.integer) = VTK_PARSE_INT64; } +#line 2552 "vtkParse.y" + {swapSig();} break; - case 378: + case 419: /* Line 1455 of yacc.c */ -#line 2171 "vtkParse.y" - { typeSig("vtkTypeUInt64"); (yyval.integer) = VTK_PARSE_UINT64; } +#line 2553 "vtkParse.y" + { + postSig("();"); + currentFunction->Macro = "vtkGetMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, getType(), getTypeId(), 0); + output_function(); + } break; - case 379: + case 420: /* Line 1455 of yacc.c */ -#line 2172 "vtkParse.y" - { typeSig("vtkTypeFloat32"); (yyval.integer) = VTK_PARSE_FLOAT32; } +#line 2561 "vtkParse.y" + {preSig("void Set");} break; - case 380: + case 421: /* Line 1455 of yacc.c */ -#line 2173 "vtkParse.y" - { typeSig("vtkTypeFloat64"); (yyval.integer) = VTK_PARSE_FLOAT64; } +#line 2562 "vtkParse.y" + { + postSig("(char *);"); + currentFunction->Macro = "vtkSetStringMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(4) - (5)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + } break; - case 381: + case 422: /* Line 1455 of yacc.c */ -#line 2174 "vtkParse.y" - { typeSig("vtkIdType"); (yyval.integer) = VTK_PARSE_ID_TYPE;} +#line 2571 "vtkParse.y" + {preSig("char *Get");} break; - case 382: + case 423: /* Line 1455 of yacc.c */ -#line 2175 "vtkParse.y" - { typeSig("double"); (yyval.integer) = VTK_PARSE_DOUBLE;} +#line 2572 "vtkParse.y" + { + postSig("();"); + currentFunction->Macro = "vtkGetStringMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (5)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0); + output_function(); + } break; - case 383: + case 424: /* Line 1455 of yacc.c */ -#line 2176 "vtkParse.y" - { typeSig("float"); (yyval.integer) = VTK_PARSE_FLOAT;} +#line 2580 "vtkParse.y" + {startSig(); markSig();} break; - case 384: + case 425: /* Line 1455 of yacc.c */ -#line 2177 "vtkParse.y" - { typeSig("double"); (yyval.integer) = VTK_PARSE_DOUBLE;} +#line 2580 "vtkParse.y" + {closeSig();} break; - case 385: + case 426: /* Line 1455 of yacc.c */ -#line 2178 "vtkParse.y" - { typeSig("long double"); (yyval.integer) = VTK_PARSE_UNKNOWN;} - break; - - case 386: +#line 2582 "vtkParse.y" + { + const char *typeText; + chopSig(); + typeText = copySig(); -/* Line 1455 of yacc.c */ -#line 2179 "vtkParse.y" - { typeSig("char"); (yyval.integer) = VTK_PARSE_CHAR;} - break; + currentFunction->Macro = "vtkSetClampMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (10)].str)); + currentFunction->Signature = + vtkstrcat5("void ", currentFunction->Name, "(", typeText, ");"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, getType(), getTypeId(), 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); - case 387: + currentFunction->Macro = "vtkSetClampMacro"; + currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MinValue"); + currentFunction->Signature = + vtkstrcat4(typeText, " ", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, getType(), getTypeId(), 0); + output_function(); -/* Line 1455 of yacc.c */ -#line 2180 "vtkParse.y" - { typeSig("signed char"); (yyval.integer) = VTK_PARSE_SIGNED_CHAR;} + currentFunction->Macro = "vtkSetClampMacro"; + currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MaxValue"); + currentFunction->Signature = + vtkstrcat4(typeText, " ", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, getType(), getTypeId(), 0); + output_function(); + } break; - case 388: + case 427: /* Line 1455 of yacc.c */ -#line 2182 "vtkParse.y" - { typeSig("unsigned char"); (yyval.integer) = VTK_PARSE_UNSIGNED_CHAR;} +#line 2613 "vtkParse.y" + {preSig("void Set"); postSig("("); } break; - case 389: + case 428: /* Line 1455 of yacc.c */ -#line 2183 "vtkParse.y" - { typeSig("int"); (yyval.integer) = VTK_PARSE_INT;} +#line 2614 "vtkParse.y" + { + postSig("*);"); + currentFunction->Macro = "vtkSetObjectMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + } break; - case 390: + case 429: /* Line 1455 of yacc.c */ -#line 2185 "vtkParse.y" - { typeSig("unsigned int"); (yyval.integer) = VTK_PARSE_UNSIGNED_INT;} +#line 2623 "vtkParse.y" + {postSig("*Get");} break; - case 391: + case 430: /* Line 1455 of yacc.c */ -#line 2186 "vtkParse.y" - { typeSig("short"); (yyval.integer) = VTK_PARSE_SHORT;} +#line 2624 "vtkParse.y" + {markSig();} break; - case 392: + case 431: /* Line 1455 of yacc.c */ -#line 2188 "vtkParse.y" - { typeSig("unsigned short"); (yyval.integer) = VTK_PARSE_UNSIGNED_SHORT;} +#line 2624 "vtkParse.y" + {swapSig();} break; - case 393: + case 432: /* Line 1455 of yacc.c */ -#line 2189 "vtkParse.y" - { typeSig("long"); (yyval.integer) = VTK_PARSE_LONG;} +#line 2625 "vtkParse.y" + { + postSig("();"); + currentFunction->Macro = "vtkGetObjectMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str)); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0); + output_function(); + } break; - case 394: + case 433: /* Line 1455 of yacc.c */ -#line 2191 "vtkParse.y" - { typeSig("unsigned long"); (yyval.integer) = VTK_PARSE_UNSIGNED_LONG;} - break; - - case 395: +#line 2634 "vtkParse.y" + { + currentFunction->Macro = "vtkBooleanMacro"; + currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "On"); + currentFunction->Comment = vtkstrdup(getComment()); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "();"); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); -/* Line 1455 of yacc.c */ -#line 2192 "vtkParse.y" - { typeSig("long long"); (yyval.integer) = VTK_PARSE_LONG_LONG;} + currentFunction->Macro = "vtkBooleanMacro"; + currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "Off"); + currentFunction->Comment = vtkstrdup(getComment()); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "();"); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + } break; - case 396: + case 434: /* Line 1455 of yacc.c */ -#line 2194 "vtkParse.y" - {typeSig("unsigned long long");(yyval.integer)=VTK_PARSE_UNSIGNED_LONG_LONG;} +#line 2651 "vtkParse.y" + {startSig(); markSig();} break; - case 397: + case 435: /* Line 1455 of yacc.c */ -#line 2195 "vtkParse.y" - { typeSig("__int64"); (yyval.integer) = VTK_PARSE___INT64;} +#line 2652 "vtkParse.y" + { + chopSig(); + outputSetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 2); + } break; - case 398: + case 436: /* Line 1455 of yacc.c */ -#line 2197 "vtkParse.y" - { typeSig("unsigned __int64"); (yyval.integer) = VTK_PARSE_UNSIGNED___INT64;} +#line 2656 "vtkParse.y" + {startSig(); markSig();} break; - case 399: + case 437: /* Line 1455 of yacc.c */ -#line 2198 "vtkParse.y" - { typeSig("int"); (yyval.integer) = VTK_PARSE_INT; } +#line 2657 "vtkParse.y" + { + chopSig(); + outputGetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 2); + } break; - case 400: + case 438: /* Line 1455 of yacc.c */ -#line 2199 "vtkParse.y" - { typeSig("unsigned int"); (yyval.integer) = VTK_PARSE_UNSIGNED_INT; } +#line 2661 "vtkParse.y" + {startSig(); markSig();} break; - case 401: + case 439: /* Line 1455 of yacc.c */ -#line 2205 "vtkParse.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); } +#line 2662 "vtkParse.y" + { + chopSig(); + outputSetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 3); + } break; - case 402: + case 440: /* Line 1455 of yacc.c */ -#line 2206 "vtkParse.y" - { postSig("{ "); } +#line 2666 "vtkParse.y" + {startSig(); markSig();} break; - case 403: + case 441: /* Line 1455 of yacc.c */ -#line 2207 "vtkParse.y" +#line 2667 "vtkParse.y" { - postSig("}"); - (yyval.str) = vtkstrcat4("{ ", (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].str), " }"); - } - break; - - case 406: - -/* Line 1455 of yacc.c */ -#line 2214 "vtkParse.y" - {(yyval.str) = "";} + chopSig(); + outputGetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 3); + } break; - case 407: + case 442: /* Line 1455 of yacc.c */ -#line 2215 "vtkParse.y" - { postSig(", "); } +#line 2671 "vtkParse.y" + {startSig(); markSig();} break; - case 408: + case 443: /* Line 1455 of yacc.c */ -#line 2216 "vtkParse.y" +#line 2672 "vtkParse.y" { - (yyval.str) = vtkstrcat3((yyvsp[(1) - (4)].str), ", ", (yyvsp[(4) - (4)].str)); - } + chopSig(); + outputSetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 4); + } break; - case 409: + case 444: /* Line 1455 of yacc.c */ -#line 2220 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str);} +#line 2676 "vtkParse.y" + {startSig(); markSig();} break; - case 410: + case 445: /* Line 1455 of yacc.c */ -#line 2221 "vtkParse.y" - {postSig("+");} +#line 2677 "vtkParse.y" + { + chopSig(); + outputGetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 4); + } break; - case 411: + case 446: /* Line 1455 of yacc.c */ -#line 2221 "vtkParse.y" - {(yyval.str) = (yyvsp[(3) - (3)].str);} +#line 2681 "vtkParse.y" + {startSig(); markSig();} break; - case 412: + case 447: /* Line 1455 of yacc.c */ -#line 2222 "vtkParse.y" - {postSig("-");} +#line 2682 "vtkParse.y" + { + chopSig(); + outputSetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 6); + } break; - case 413: + case 448: /* Line 1455 of yacc.c */ -#line 2223 "vtkParse.y" - { - (yyval.str) = vtkstrcat("-", (yyvsp[(3) - (3)].str)); - } +#line 2686 "vtkParse.y" + {startSig(); markSig();} break; - case 414: + case 449: /* Line 1455 of yacc.c */ -#line 2226 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2687 "vtkParse.y" + { + chopSig(); + outputGetVectorMacro((yyvsp[(3) - (7)].str), getType(), copySig(), 6); + } break; - case 415: + case 450: /* Line 1455 of yacc.c */ -#line 2227 "vtkParse.y" - {postSig("(");} +#line 2691 "vtkParse.y" + {startSig(); markSig();} break; - case 416: + case 451: /* Line 1455 of yacc.c */ -#line 2227 "vtkParse.y" - {postSig(")"); (yyval.str) = (yyvsp[(3) - (4)].str);} +#line 2693 "vtkParse.y" + { + const char *typeText; + chopSig(); + typeText = copySig(); + currentFunction->Macro = "vtkSetVectorMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (9)].str)); + currentFunction->Signature = + vtkstrcat7("void ", currentFunction->Name, "(", typeText, + " a[", (yyvsp[(8) - (9)].str), "]);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, (VTK_PARSE_POINTER | getType()), + getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0)); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + } break; - case 417: + case 452: /* Line 1455 of yacc.c */ -#line 2228 "vtkParse.y" - {postSig((yyvsp[(1) - (2)].str)); postSig("<");} +#line 2708 "vtkParse.y" + {startSig();} break; - case 418: + case 453: /* Line 1455 of yacc.c */ -#line 2230 "vtkParse.y" +#line 2710 "vtkParse.y" { - chopSig(); - if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); } - postSig(">("); - } + chopSig(); + currentFunction->Macro = "vtkGetVectorMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (9)].str)); + postSig(" *"); + postSig(currentFunction->Name); + postSig("();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, (VTK_PARSE_POINTER | getType()), + getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0)); + output_function(); + } break; - case 419: + case 454: /* Line 1455 of yacc.c */ -#line 2236 "vtkParse.y" +#line 2723 "vtkParse.y" { - postSig(")"); - if (getTypeId()[strlen(getTypeId())-1] == '>') - { - (yyval.str) = vtkstrcat6( - (yyvsp[(1) - (9)].str), "<", getTypeId(), " >(", (yyvsp[(8) - (9)].str), ")"); - } - else - { - (yyval.str) = vtkstrcat6( - (yyvsp[(1) - (9)].str), "<", getTypeId(), ">(", (yyvsp[(8) - (9)].str), ")"); - } - } - break; + currentFunction->Macro = "vtkViewportCoordinateMacro"; + currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate"); + currentFunction->Signature = + vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0); + output_function(); - case 420: + currentFunction->Macro = "vtkViewportCoordinateMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "(double, double);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0); + add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); -/* Line 1455 of yacc.c */ -#line 2250 "vtkParse.y" - { (yyval.str) = "static_cast"; } + currentFunction->Macro = "vtkViewportCoordinateMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "(double a[2]);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + + currentFunction->Macro = "vtkViewportCoordinateMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("double *", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2); + output_function(); + } break; - case 421: + case 455: /* Line 1455 of yacc.c */ -#line 2251 "vtkParse.y" - { (yyval.str) = "const_cast"; } +#line 2760 "vtkParse.y" + { + currentFunction->Macro = "vtkWorldCoordinateMacro"; + currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate"); + currentFunction->Signature = + vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0); + output_function(); + + currentFunction->Macro = "vtkWorldCoordinateMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "(double, double, double);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0); + add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0); + add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + + currentFunction->Macro = "vtkWorldCoordinateMacro"; + currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("void ", currentFunction->Name, "(double a[3]);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3); + set_return(currentFunction, VTK_PARSE_VOID, "void", 0); + output_function(); + + currentFunction->Macro = "vtkWorldCoordinateMacro"; + currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str)); + currentFunction->Signature = + vtkstrcat3("double *", currentFunction->Name, "();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3); + output_function(); + } break; - case 422: + case 456: /* Line 1455 of yacc.c */ -#line 2252 "vtkParse.y" - { (yyval.str) = "dynamic_cast"; } +#line 2798 "vtkParse.y" + { + currentFunction->Macro = "vtkTypeMacro"; + currentFunction->Name = "GetClassName"; + currentFunction->Signature = "const char *GetClassName();"; + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR), + "char", 0); + output_function(); + + currentFunction->Macro = "vtkTypeMacro"; + currentFunction->Name = "IsA"; + currentFunction->Signature = "int IsA(const char *name);"; + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR), + "char", 0); + set_return(currentFunction, VTK_PARSE_INT, "int", 0); + output_function(); + + currentFunction->Macro = "vtkTypeMacro"; + currentFunction->Name = "NewInstance"; + currentFunction->Signature = vtkstrcat((yyvsp[(3) - (7)].str), " *NewInstance();"); + currentFunction->Comment = vtkstrdup(getComment()); + set_return(currentFunction, VTK_PARSE_OBJECT_PTR, (yyvsp[(3) - (7)].str), 0); + output_function(); + + currentFunction->Macro = "vtkTypeMacro"; + currentFunction->Name = "SafeDownCast"; + currentFunction->Signature = + vtkstrcat((yyvsp[(3) - (7)].str), " *SafeDownCast(vtkObject* o);"); + currentFunction->Comment = vtkstrdup(getComment()); + add_parameter(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkObject", 0); + set_return(currentFunction, (VTK_PARSE_STATIC | VTK_PARSE_OBJECT_PTR), + (yyvsp[(3) - (7)].str), 0); + output_function(); + } break; - case 423: + case 459: /* Line 1455 of yacc.c */ -#line 2253 "vtkParse.y" - { (yyval.str) = "reinterpret_cast"; } +#line 2842 "vtkParse.y" + { (yyval.str) = "()"; } break; - case 424: + case 460: /* Line 1455 of yacc.c */ -#line 2255 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str);} +#line 2843 "vtkParse.y" + { (yyval.str) = "[]"; } break; - case 425: + case 461: /* Line 1455 of yacc.c */ -#line 2257 "vtkParse.y" - { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); } +#line 2844 "vtkParse.y" + { (yyval.str) = " new[]"; } break; - case 426: + case 462: /* Line 1455 of yacc.c */ -#line 2259 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2845 "vtkParse.y" + { (yyval.str) = " delete[]"; } break; - case 427: + case 463: /* Line 1455 of yacc.c */ -#line 2260 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2846 "vtkParse.y" + { (yyval.str) = "<"; } break; - case 428: + case 464: /* Line 1455 of yacc.c */ -#line 2261 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2847 "vtkParse.y" + { (yyval.str) = ">"; } break; - case 429: + case 465: /* Line 1455 of yacc.c */ -#line 2262 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2848 "vtkParse.y" + { (yyval.str) = ","; } break; - case 430: + case 466: /* Line 1455 of yacc.c */ -#line 2263 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2849 "vtkParse.y" + { (yyval.str) = "="; } break; - case 431: + case 468: /* Line 1455 of yacc.c */ -#line 2264 "vtkParse.y" - {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));} +#line 2853 "vtkParse.y" + { (yyval.str) = "%"; } break; - case 432: + case 469: /* Line 1455 of yacc.c */ -#line 2266 "vtkParse.y" - { (yyval.str) = vtkstrdup(add_const_scope((yyvsp[(1) - (1)].str))); } +#line 2854 "vtkParse.y" + { (yyval.str) = "*"; } break; - case 433: + case 470: /* Line 1455 of yacc.c */ -#line 2275 "vtkParse.y" - {preSig("void Set"); postSig("(");} +#line 2855 "vtkParse.y" + { (yyval.str) = "/"; } break; - case 434: + case 471: /* Line 1455 of yacc.c */ -#line 2276 "vtkParse.y" - { - postSig("a);"); - currentFunction->Macro = "vtkSetMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, (yyvsp[(6) - (7)].integer), getTypeId(), 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - } +#line 2856 "vtkParse.y" + { (yyval.str) = "-"; } break; - case 435: + case 472: /* Line 1455 of yacc.c */ -#line 2285 "vtkParse.y" - {postSig("Get");} +#line 2857 "vtkParse.y" + { (yyval.str) = "+"; } break; - case 436: + case 473: /* Line 1455 of yacc.c */ -#line 2286 "vtkParse.y" - {markSig();} +#line 2858 "vtkParse.y" + { (yyval.str) = "!"; } break; - case 437: + case 474: /* Line 1455 of yacc.c */ -#line 2286 "vtkParse.y" - {swapSig();} +#line 2859 "vtkParse.y" + { (yyval.str) = "~"; } break; - case 438: + case 475: /* Line 1455 of yacc.c */ -#line 2287 "vtkParse.y" - { - postSig("();"); - currentFunction->Macro = "vtkGetMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, (yyvsp[(7) - (9)].integer), getTypeId(), 0); - output_function(); - } +#line 2860 "vtkParse.y" + { (yyval.str) = "&"; } break; - case 439: + case 476: /* Line 1455 of yacc.c */ -#line 2295 "vtkParse.y" - {preSig("void Set");} +#line 2861 "vtkParse.y" + { (yyval.str) = "|"; } break; - case 440: + case 477: /* Line 1455 of yacc.c */ -#line 2296 "vtkParse.y" - { - postSig("(char *);"); - currentFunction->Macro = "vtkSetStringMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(4) - (5)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - } +#line 2862 "vtkParse.y" + { (yyval.str) = "^"; } break; - case 441: + case 478: /* Line 1455 of yacc.c */ -#line 2305 "vtkParse.y" - {preSig("char *Get");} +#line 2863 "vtkParse.y" + { (yyval.str) = " new"; } break; - case 442: + case 479: /* Line 1455 of yacc.c */ -#line 2306 "vtkParse.y" - { - postSig("();"); - currentFunction->Macro = "vtkGetStringMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (5)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0); - output_function(); - } +#line 2864 "vtkParse.y" + { (yyval.str) = " delete"; } break; - case 443: + case 480: /* Line 1455 of yacc.c */ -#line 2314 "vtkParse.y" - {startSig(); markSig();} +#line 2865 "vtkParse.y" + { (yyval.str) = "<<="; } break; - case 444: + case 481: /* Line 1455 of yacc.c */ -#line 2314 "vtkParse.y" - {closeSig();} +#line 2866 "vtkParse.y" + { (yyval.str) = ">>="; } break; - case 445: + case 482: /* Line 1455 of yacc.c */ -#line 2316 "vtkParse.y" - { - const char *typeText; - chopSig(); - typeText = copySig(); - - currentFunction->Macro = "vtkSetClampMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (10)].str)); - currentFunction->Signature = - vtkstrcat5("void ", currentFunction->Name, "(", typeText, ");"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); +#line 2867 "vtkParse.y" + { (yyval.str) = "<<"; } + break; - currentFunction->Macro = "vtkSetClampMacro"; - currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MinValue"); - currentFunction->Signature = - vtkstrcat4(typeText, " ", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0); - output_function(); + case 483: - currentFunction->Macro = "vtkSetClampMacro"; - currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MaxValue"); - currentFunction->Signature = - vtkstrcat4(typeText, " ", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0); - output_function(); - } +/* Line 1455 of yacc.c */ +#line 2868 "vtkParse.y" + { (yyval.str) = ">>"; } break; - case 446: + case 484: /* Line 1455 of yacc.c */ -#line 2347 "vtkParse.y" - {preSig("void Set"); postSig("("); } +#line 2869 "vtkParse.y" + { (yyval.str) = ".*"; } break; - case 447: + case 485: /* Line 1455 of yacc.c */ -#line 2348 "vtkParse.y" - { - postSig("*);"); - currentFunction->Macro = "vtkSetObjectMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - } +#line 2870 "vtkParse.y" + { (yyval.str) = "->*"; } break; - case 448: + case 486: /* Line 1455 of yacc.c */ -#line 2357 "vtkParse.y" - {postSig("*Get");} +#line 2871 "vtkParse.y" + { (yyval.str) = "->"; } break; - case 449: + case 487: /* Line 1455 of yacc.c */ -#line 2358 "vtkParse.y" - {markSig();} +#line 2872 "vtkParse.y" + { (yyval.str) = "+="; } break; - case 450: + case 488: /* Line 1455 of yacc.c */ -#line 2358 "vtkParse.y" - {swapSig();} +#line 2873 "vtkParse.y" + { (yyval.str) = "-="; } break; - case 451: + case 489: /* Line 1455 of yacc.c */ -#line 2359 "vtkParse.y" - { - postSig("();"); - currentFunction->Macro = "vtkGetObjectMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str)); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0); - output_function(); - } +#line 2874 "vtkParse.y" + { (yyval.str) = "*="; } break; - case 452: + case 490: /* Line 1455 of yacc.c */ -#line 2368 "vtkParse.y" - { - currentFunction->Macro = "vtkBooleanMacro"; - currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "On"); - currentFunction->Comment = vtkstrdup(getComment()); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "();"); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - - currentFunction->Macro = "vtkBooleanMacro"; - currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "Off"); - currentFunction->Comment = vtkstrdup(getComment()); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "();"); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - } +#line 2875 "vtkParse.y" + { (yyval.str) = "/="; } break; - case 453: + case 491: /* Line 1455 of yacc.c */ -#line 2385 "vtkParse.y" - {startSig(); markSig();} +#line 2876 "vtkParse.y" + { (yyval.str) = "%="; } break; - case 454: + case 492: /* Line 1455 of yacc.c */ -#line 2386 "vtkParse.y" - { - chopSig(); - outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 2); - } +#line 2877 "vtkParse.y" + { (yyval.str) = "++"; } break; - case 455: + case 493: /* Line 1455 of yacc.c */ -#line 2390 "vtkParse.y" - {startSig(); markSig();} +#line 2878 "vtkParse.y" + { (yyval.str) = "--"; } break; - case 456: + case 494: /* Line 1455 of yacc.c */ -#line 2391 "vtkParse.y" - { - chopSig(); - outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 2); - } +#line 2879 "vtkParse.y" + { (yyval.str) = "&="; } break; - case 457: + case 495: /* Line 1455 of yacc.c */ -#line 2395 "vtkParse.y" - {startSig(); markSig();} +#line 2880 "vtkParse.y" + { (yyval.str) = "|="; } break; - case 458: + case 496: /* Line 1455 of yacc.c */ -#line 2396 "vtkParse.y" - { - chopSig(); - outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 3); - } +#line 2881 "vtkParse.y" + { (yyval.str) = "^="; } break; - case 459: + case 497: /* Line 1455 of yacc.c */ -#line 2400 "vtkParse.y" - {startSig(); markSig();} +#line 2882 "vtkParse.y" + { (yyval.str) = "&&"; } break; - case 460: + case 498: /* Line 1455 of yacc.c */ -#line 2401 "vtkParse.y" - { - chopSig(); - outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 3); - } +#line 2883 "vtkParse.y" + { (yyval.str) = "||"; } break; - case 461: + case 499: /* Line 1455 of yacc.c */ -#line 2405 "vtkParse.y" - {startSig(); markSig();} +#line 2884 "vtkParse.y" + { (yyval.str) = "=="; } break; - case 462: + case 500: /* Line 1455 of yacc.c */ -#line 2406 "vtkParse.y" - { - chopSig(); - outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 4); - } +#line 2885 "vtkParse.y" + { (yyval.str) = "!="; } break; - case 463: + case 501: /* Line 1455 of yacc.c */ -#line 2410 "vtkParse.y" - {startSig(); markSig();} +#line 2886 "vtkParse.y" + { (yyval.str) = "<="; } break; - case 464: + case 502: /* Line 1455 of yacc.c */ -#line 2411 "vtkParse.y" - { - chopSig(); - outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 4); - } +#line 2887 "vtkParse.y" + { (yyval.str) = ">="; } break; - case 465: + case 503: /* Line 1455 of yacc.c */ -#line 2415 "vtkParse.y" - {startSig(); markSig();} +#line 2890 "vtkParse.y" + { (yyval.str) = "typedef"; } break; - case 466: + case 504: /* Line 1455 of yacc.c */ -#line 2416 "vtkParse.y" - { - chopSig(); - outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 6); - } +#line 2891 "vtkParse.y" + { (yyval.str) = "typename"; } break; - case 467: + case 505: /* Line 1455 of yacc.c */ -#line 2420 "vtkParse.y" - {startSig(); markSig();} +#line 2892 "vtkParse.y" + { (yyval.str) = "class"; } break; - case 468: + case 506: /* Line 1455 of yacc.c */ -#line 2421 "vtkParse.y" - { - chopSig(); - outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 6); - } +#line 2893 "vtkParse.y" + { (yyval.str) = "struct"; } break; - case 469: + case 507: /* Line 1455 of yacc.c */ -#line 2425 "vtkParse.y" - {startSig(); markSig();} +#line 2894 "vtkParse.y" + { (yyval.str) = "union"; } break; - case 470: + case 508: /* Line 1455 of yacc.c */ -#line 2427 "vtkParse.y" - { - const char *typeText; - chopSig(); - typeText = copySig(); - currentFunction->Macro = "vtkSetVectorMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (9)].str)); - currentFunction->Signature = - vtkstrcat7("void ", currentFunction->Name, "(", typeText, - " a[", (yyvsp[(8) - (9)].str), "]);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, (VTK_PARSE_POINTER | (yyvsp[(6) - (9)].integer)), - getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0)); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - } +#line 2895 "vtkParse.y" + { (yyval.str) = "template"; } break; - case 471: + case 509: /* Line 1455 of yacc.c */ -#line 2442 "vtkParse.y" - {startSig();} +#line 2896 "vtkParse.y" + { (yyval.str) = "public"; } break; - case 472: + case 510: /* Line 1455 of yacc.c */ -#line 2444 "vtkParse.y" - { - chopSig(); - currentFunction->Macro = "vtkGetVectorMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (9)].str)); - postSig(" *"); - postSig(currentFunction->Name); - postSig("();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, (VTK_PARSE_POINTER | (yyvsp[(6) - (9)].integer)), - getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0)); - output_function(); - } +#line 2897 "vtkParse.y" + { (yyval.str) = "protected"; } break; - case 473: + case 511: /* Line 1455 of yacc.c */ -#line 2457 "vtkParse.y" - { - currentFunction->Macro = "vtkViewportCoordinateMacro"; - currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate"); - currentFunction->Signature = - vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0); - output_function(); - - currentFunction->Macro = "vtkViewportCoordinateMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "(double, double);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0); - add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - - currentFunction->Macro = "vtkViewportCoordinateMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "(double a[2]);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - - currentFunction->Macro = "vtkViewportCoordinateMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("double *", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2); - output_function(); - } +#line 2898 "vtkParse.y" + { (yyval.str) = "private"; } break; - case 474: + case 512: /* Line 1455 of yacc.c */ -#line 2494 "vtkParse.y" - { - currentFunction->Macro = "vtkWorldCoordinateMacro"; - currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate"); - currentFunction->Signature = - vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0); - output_function(); - - currentFunction->Macro = "vtkWorldCoordinateMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "(double, double, double);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0); - add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0); - add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - - currentFunction->Macro = "vtkWorldCoordinateMacro"; - currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("void ", currentFunction->Name, "(double a[3]);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3); - set_return(currentFunction, VTK_PARSE_VOID, "void", 0); - output_function(); - - currentFunction->Macro = "vtkWorldCoordinateMacro"; - currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str)); - currentFunction->Signature = - vtkstrcat3("double *", currentFunction->Name, "();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3); - output_function(); - } +#line 2899 "vtkParse.y" + { (yyval.str) = "const"; } break; - case 475: + case 513: /* Line 1455 of yacc.c */ -#line 2532 "vtkParse.y" - { - int is_concrete = 0; - int i; - - currentFunction->Macro = "vtkTypeMacro"; - currentFunction->Name = vtkstrdup("GetClassName"); - currentFunction->Signature = vtkstrdup("const char *GetClassName();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR), - "char", 0); - output_function(); - - currentFunction->Macro = "vtkTypeMacro"; - currentFunction->Name = vtkstrdup("IsA"); - currentFunction->Signature = vtkstrdup("int IsA(const char *name);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR), - "char", 0); - set_return(currentFunction, VTK_PARSE_INT, "int", 0); - output_function(); +#line 2900 "vtkParse.y" + { (yyval.str) = "static"; } + break; - currentFunction->Macro = "vtkTypeMacro"; - currentFunction->Name = vtkstrdup("NewInstance"); - currentFunction->Signature = vtkstrcat((yyvsp[(3) - (7)].str), " *NewInstance();"); - currentFunction->Comment = vtkstrdup(getComment()); - set_return(currentFunction, VTK_PARSE_OBJECT_PTR, (yyvsp[(3) - (7)].str), 0); - output_function(); + case 514: - for (i = 0; i < NumberOfConcreteClasses; i++) - { - if (strcmp(currentClass->Name, ConcreteClasses[i]) == 0) - { - is_concrete = 1; - break; - } - } - - if ( is_concrete ) - { - currentFunction->Macro = "vtkTypeMacro"; - currentFunction->Name = vtkstrdup("SafeDownCast"); - currentFunction->Signature = - vtkstrcat((yyvsp[(3) - (7)].str), " *SafeDownCast(vtkObject* o);"); - currentFunction->Comment = vtkstrdup(getComment()); - add_argument(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkObject", 0); - set_return(currentFunction, (VTK_PARSE_STATIC | VTK_PARSE_OBJECT_PTR), - (yyvsp[(3) - (7)].str), 0); - output_function(); - } - } +/* Line 1455 of yacc.c */ +#line 2901 "vtkParse.y" + { (yyval.str) = "inline"; } break; - case 476: + case 515: /* Line 1455 of yacc.c */ -#line 2588 "vtkParse.y" - { (yyval.str) = "operator()"; } +#line 2902 "vtkParse.y" + { (yyval.str) = "virtual"; } break; - case 477: + case 516: /* Line 1455 of yacc.c */ -#line 2589 "vtkParse.y" - { (yyval.str) = "operator[]"; } +#line 2903 "vtkParse.y" + { (yyval.str) = "extern"; } break; - case 478: + case 517: /* Line 1455 of yacc.c */ -#line 2590 "vtkParse.y" - { (yyval.str) = "operator new[]"; } +#line 2904 "vtkParse.y" + { (yyval.str) = "namespace"; } break; - case 479: + case 518: /* Line 1455 of yacc.c */ -#line 2591 "vtkParse.y" - { (yyval.str) = "operator delete[]"; } +#line 2905 "vtkParse.y" + { (yyval.str) = "operator"; } break; - case 481: + case 519: /* Line 1455 of yacc.c */ -#line 2594 "vtkParse.y" - { (yyval.str) = "operator="; } +#line 2906 "vtkParse.y" + { (yyval.str) = "enum"; } break; - case 482: + case 520: /* Line 1455 of yacc.c */ -#line 2595 "vtkParse.y" - { (yyval.str) = "operator*"; } +#line 2907 "vtkParse.y" + { (yyval.str) = "throw"; } break; - case 483: + case 521: /* Line 1455 of yacc.c */ -#line 2595 "vtkParse.y" - { (yyval.str) = "operator/"; } +#line 2908 "vtkParse.y" + { (yyval.str) = "const_cast"; } break; - case 484: + case 522: /* Line 1455 of yacc.c */ -#line 2596 "vtkParse.y" - { (yyval.str) = "operator-"; } +#line 2909 "vtkParse.y" + { (yyval.str) = "dynamic_cast"; } break; - case 485: + case 523: /* Line 1455 of yacc.c */ -#line 2596 "vtkParse.y" - { (yyval.str) = "operator+"; } +#line 2910 "vtkParse.y" + { (yyval.str) = "static_cast"; } break; - case 486: + case 524: /* Line 1455 of yacc.c */ -#line 2597 "vtkParse.y" - { (yyval.str) = "operator!"; } +#line 2911 "vtkParse.y" + { (yyval.str) = "reinterpret_cast"; } break; - case 487: + case 537: /* Line 1455 of yacc.c */ -#line 2597 "vtkParse.y" - { (yyval.str) = "operator~"; } +#line 2935 "vtkParse.y" + { + if ((((yyvsp[(1) - (1)].str))[0] == '+' || ((yyvsp[(1) - (1)].str))[0] == '-' || + ((yyvsp[(1) - (1)].str))[0] == '*' || ((yyvsp[(1) - (1)].str))[0] == '&') && + ((yyvsp[(1) - (1)].str))[1] == '\0') + { + int c1 = 0; + size_t l; + const char *cp; + chopSig(); + cp = getSig(); + l = getSigLength(); + if (l != 0) { c1 = cp[l-1]; } + if (c1 != 0 && c1 != '(' && c1 != '[' && c1 != '=') + { + postSig(" "); + } + postSig((yyvsp[(1) - (1)].str)); + if ((c1 >= 'A' && c1 <= 'Z') || (c1 >= 'a' && c1 <= 'z') || + (c1 >= '0' && c1 <= '9') || c1 == '_' || c1 == '\'' || + c1 == '\"' || c1 == ')' || c1 == ']') + { + postSig(" "); + } + } + else + { + postSig((yyvsp[(1) - (1)].str)); + postSig(" "); + } + } break; - case 488: + case 538: /* Line 1455 of yacc.c */ -#line 2598 "vtkParse.y" - { (yyval.str) = "operator,"; } +#line 2965 "vtkParse.y" + { postSig(":"); postSig(" "); } break; - case 489: + case 539: /* Line 1455 of yacc.c */ -#line 2598 "vtkParse.y" - { (yyval.str) = "operator<"; } +#line 2965 "vtkParse.y" + { postSig("."); } break; - case 490: + case 540: /* Line 1455 of yacc.c */ -#line 2599 "vtkParse.y" - { (yyval.str) = "operator>"; } +#line 2966 "vtkParse.y" + { chopSig(); postSig("::"); } break; - case 491: + case 541: /* Line 1455 of yacc.c */ -#line 2599 "vtkParse.y" - { (yyval.str) = "operator&"; } +#line 2967 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); postSig(" "); } break; - case 492: + case 542: /* Line 1455 of yacc.c */ -#line 2600 "vtkParse.y" - { (yyval.str) = "operator|"; } +#line 2968 "vtkParse.y" + { postSig((yyvsp[(1) - (1)].str)); postSig(" "); } break; - case 493: + case 544: /* Line 1455 of yacc.c */ -#line 2600 "vtkParse.y" - { (yyval.str) = "operator^"; } +#line 2971 "vtkParse.y" + { + int c1 = 0; + size_t l; + const char *cp; + chopSig(); + cp = getSig(); + l = getSigLength(); + if (l != 0) { c1 = cp[l-1]; } + while (((c1 >= 'A' && c1 <= 'Z') || (c1 >= 'a' && c1 <= 'z') || + (c1 >= '0' && c1 <= '9') || c1 == '_') && l != 0) + { + --l; + c1 = cp[l-1]; + } + if (l < 2 || cp[l-1] != ':' || cp[l-2] != ':') + { + cp = add_const_scope(&cp[l]); + resetSig(l); + postSig(cp); + } + } break; - case 494: + case 548: /* Line 1455 of yacc.c */ -#line 2601 "vtkParse.y" - { (yyval.str) = "operator%"; } +#line 2997 "vtkParse.y" + { postSig("< "); } break; - case 495: + case 549: /* Line 1455 of yacc.c */ -#line 2602 "vtkParse.y" - { (yyval.str) = "operator new"; } +#line 2998 "vtkParse.y" + { postSig("> "); } break; - case 496: + case 551: /* Line 1455 of yacc.c */ -#line 2603 "vtkParse.y" - { (yyval.str) = "operator delete"; } +#line 3001 "vtkParse.y" + { postSig("= "); } break; - case 497: + case 552: /* Line 1455 of yacc.c */ -#line 2604 "vtkParse.y" - { (yyval.str) = "operator<<="; } +#line 3002 "vtkParse.y" + { chopSig(); postSig(", "); } break; - case 498: + case 554: /* Line 1455 of yacc.c */ -#line 2605 "vtkParse.y" - { (yyval.str) = "operator>>="; } +#line 3005 "vtkParse.y" + { chopSig(); postSig(";"); } break; - case 499: + case 562: /* Line 1455 of yacc.c */ -#line 2606 "vtkParse.y" - { (yyval.str) = "operator<<"; } +#line 3019 "vtkParse.y" + { postSig("= "); } break; - case 500: + case 563: /* Line 1455 of yacc.c */ -#line 2607 "vtkParse.y" - { (yyval.str) = "operator>>"; } +#line 3020 "vtkParse.y" + { chopSig(); postSig(", "); } break; - case 501: + case 564: /* Line 1455 of yacc.c */ -#line 2608 "vtkParse.y" - { (yyval.str) = "operator->*"; } +#line 3024 "vtkParse.y" + { + chopSig(); + if (getSig()[getSigLength()-1] == '<') { postSig(" "); } + postSig("<"); + } break; - case 502: + case 565: /* Line 1455 of yacc.c */ -#line 2609 "vtkParse.y" - { (yyval.str) = "operator->"; } +#line 3030 "vtkParse.y" + { + chopSig(); + if (getSig()[getSigLength()-1] == '>') { postSig(" "); } + postSig("> "); + } break; - case 503: + case 566: /* Line 1455 of yacc.c */ -#line 2610 "vtkParse.y" - { (yyval.str) = "operator+="; } +#line 3037 "vtkParse.y" + { postSig("["); } break; - case 504: + case 567: /* Line 1455 of yacc.c */ -#line 2611 "vtkParse.y" - { (yyval.str) = "operator-="; } +#line 3038 "vtkParse.y" + { chopSig(); postSig("] "); } break; - case 505: + case 568: /* Line 1455 of yacc.c */ -#line 2612 "vtkParse.y" - { (yyval.str) = "operator*="; } +#line 3041 "vtkParse.y" + { postSig("("); } break; - case 506: + case 569: /* Line 1455 of yacc.c */ -#line 2613 "vtkParse.y" - { (yyval.str) = "operator/="; } +#line 3042 "vtkParse.y" + { chopSig(); postSig(") "); } break; - case 507: + case 570: /* Line 1455 of yacc.c */ -#line 2614 "vtkParse.y" - { (yyval.str) = "operator%="; } +#line 3043 "vtkParse.y" + { postSig("("); postSig((yyvsp[(1) - (1)].str)); postSig("*"); } break; - case 508: + case 571: /* Line 1455 of yacc.c */ -#line 2615 "vtkParse.y" - { (yyval.str) = "operator++"; } +#line 3044 "vtkParse.y" + { chopSig(); postSig(") "); } break; - case 509: + case 572: /* Line 1455 of yacc.c */ -#line 2616 "vtkParse.y" - { (yyval.str) = "operator--"; } +#line 3045 "vtkParse.y" + { postSig("("); postSig((yyvsp[(1) - (1)].str)); postSig("&"); } break; - case 510: + case 573: /* Line 1455 of yacc.c */ -#line 2617 "vtkParse.y" - { (yyval.str) = "operator&="; } +#line 3046 "vtkParse.y" + { chopSig(); postSig(") "); } break; - case 511: + case 574: /* Line 1455 of yacc.c */ -#line 2618 "vtkParse.y" - { (yyval.str) = "operator|="; } +#line 3049 "vtkParse.y" + { postSig("{ "); } break; - case 512: + case 575: /* Line 1455 of yacc.c */ -#line 2619 "vtkParse.y" - { (yyval.str) = "operator^="; } +#line 3049 "vtkParse.y" + { postSig("} "); } break; - case 513: -/* Line 1455 of yacc.c */ -#line 2620 "vtkParse.y" - {(yyval.str) = "operator&&=";} - break; - - case 514: /* Line 1455 of yacc.c */ -#line 2621 "vtkParse.y" - {(yyval.str) = "operator||=";} - break; - - case 515: - -/* Line 1455 of yacc.c */ -#line 2622 "vtkParse.y" - { (yyval.str) = "operator&&"; } - break; - - case 516: - -/* Line 1455 of yacc.c */ -#line 2623 "vtkParse.y" - { (yyval.str) = "operator||"; } - break; - - case 517: - -/* Line 1455 of yacc.c */ -#line 2624 "vtkParse.y" - { (yyval.str) = "operator=="; } - break; - - case 518: - -/* Line 1455 of yacc.c */ -#line 2625 "vtkParse.y" - { (yyval.str) = "operator!="; } - break; - - case 519: - -/* Line 1455 of yacc.c */ -#line 2626 "vtkParse.y" - { (yyval.str) = "operator<="; } - break; - - case 520: - -/* Line 1455 of yacc.c */ -#line 2627 "vtkParse.y" - { (yyval.str) = "operator>="; } - break; - - - -/* Line 1455 of yacc.c */ -#line 8207 "vtkParse.tab.c" +#line 7941 "vtkParse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -8121,850 +7869,240 @@ yyerrlab: if (yymsg) yymsg_alloc = yyalloc; else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } - } -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - *++yyvsp = yylval; - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if !defined(yyoverflow) || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} - - - -/* Line 1675 of yacc.c */ -#line 2652 "vtkParse.y" - -#include -#include "lex.yy.c" - -/* initialize the structure */ -void vtkParse_InitTemplateArgs(TemplateArgs *args) -{ - args->NumberOfArguments = 0; -} - -void vtkParse_CopyTemplateArgs(TemplateArgs *args, const TemplateArgs *orig) -{ - unsigned long i, n; - - n = orig->NumberOfArguments; - args->NumberOfArguments = n; - args->Arguments = (TemplateArg **)malloc(n*sizeof(TemplateArg *)); - - for (i = 0; i < n; i++) - { - args->Arguments[i] = (TemplateArg *)malloc(sizeof(TemplateArg)); - vtkParse_CopyTemplateArg(args->Arguments[i], orig->Arguments[i]); - } -} - -void vtkParse_InitTemplateArg(TemplateArg *arg) -{ - arg->Template = NULL; - arg->Type = 0; - arg->Class = NULL; - arg->Name = NULL; - arg->Value = NULL; -} - -void vtkParse_CopyTemplateArg(TemplateArg *arg, const TemplateArg *orig) -{ - arg->Template = NULL; - - if (orig->Template) - { - arg->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs)); - vtkParse_CopyTemplateArgs(arg->Template, orig->Template); - } - - arg->Type = orig->Type; - arg->Class = orig->Class; - arg->Name = orig->Name; - arg->Value = orig->Value; -} - -/* initialize the structure */ -void vtkParse_InitFunction(FunctionInfo *func) -{ - unsigned long i; - - func->ItemType = VTK_FUNCTION_INFO; - func->Access = VTK_ACCESS_PUBLIC; - func->Name = NULL; - func->Comment = NULL; - func->Class = NULL; - func->Signature = NULL; - func->Template = NULL; - func->NumberOfArguments = 0; - func->ReturnValue = NULL; - func->Macro = NULL; - func->SizeHint = NULL; - func->IsStatic = 0; - func->IsVirtual = 0; - func->IsPureVirtual = 0; - func->IsOperator = 0; - func->IsVariadic = 0; - func->IsConst = 0; - func->IsExplicit = 0; - - /* everything below here is legacy information, * - * maintained only for backwards compatibility */ - func->ReturnType = VTK_PARSE_VOID; - func->ReturnClass = NULL; - func->HaveHint = 0; - func->HintSize = 0; - func->IsLegacy = 0; - func->ArrayFailure = 0; - func->IsPublic = 0; - func->IsProtected = 0; - - for (i = 0; i < MAX_ARGS; i++) - { - func->ArgTypes[i] = 0; - func->ArgClasses[i] = 0; - func->ArgCounts[i] = 0; - } -} - -void vtkParse_CopyFunction(FunctionInfo *func, const FunctionInfo *orig) -{ - unsigned long i, n; - - func->ItemType = orig->ItemType; - func->Access = orig->Access; - func->Name = orig->Name; - func->Comment = orig->Comment; - func->Class = orig->Class; - func->Signature = orig->Signature; - func->Template = NULL; - - if (orig->Template) - { - func->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs)); - vtkParse_CopyTemplateArgs(func->Template, orig->Template); - } - - n = orig->NumberOfArguments; - func->NumberOfArguments = n; - if (n) - { - func->Arguments = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - func->Arguments[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(func->Arguments[i], orig->Arguments[i]); - } - } - - func->ReturnValue = NULL; - if (orig->ReturnValue) - { - func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(func->ReturnValue, orig->ReturnValue); - } - - func->Macro = orig->Macro; - func->SizeHint = orig->SizeHint; - func->IsStatic = orig->IsStatic; - func->IsVirtual = orig->IsVirtual; - func->IsPureVirtual = orig->IsPureVirtual; - func->IsOperator = orig->IsOperator; - func->IsVariadic = orig->IsVariadic; - func->IsConst = orig->IsConst; - func->IsExplicit = orig->IsExplicit; - - /* everything below here is legacy information, * - * maintained only for backwards compatibility */ - func->ReturnType = orig->ReturnType; - func->ReturnClass = orig->ReturnClass; - func->HaveHint = orig->HaveHint; - func->HintSize = orig->HintSize; - func->IsLegacy = orig->IsLegacy; - func->ArrayFailure = orig->ArrayFailure; - func->IsPublic = orig->IsPublic; - func->IsProtected = orig->IsProtected; - - for (i = 0; i < MAX_ARGS; i++) - { - func->ArgTypes[i] = orig->ArgTypes[i]; - func->ArgClasses[i] = orig->ArgClasses[i]; - func->ArgCounts[i] = orig->ArgCounts[i]; - } -} - -/* initialize the structure */ -void vtkParse_InitValue(ValueInfo *val) -{ - val->ItemType = VTK_VARIABLE_INFO; - val->Access = VTK_ACCESS_PUBLIC; - val->Name = NULL; - val->Comment = NULL; - val->Value = NULL; - val->Type = 0; - val->Class = NULL; - val->Count = 0; - val->CountHint = NULL; - val->NumberOfDimensions = 0; - val->Function = NULL; - val->IsStatic = 0; - val->IsEnum = 0; -} - -void vtkParse_CopyValue(ValueInfo *val, const ValueInfo *orig) -{ - unsigned long i, n; - - val->ItemType = orig->ItemType; - val->Access = orig->Access; - val->Name = orig->Name; - val->Comment = orig->Comment; - val->Value = orig->Value; - val->Type = orig->Type; - val->Class = orig->Class; - val->Count = orig->Count; - val->CountHint = orig->CountHint; - - n = orig->NumberOfDimensions; - val->NumberOfDimensions = n; - if (n) - { - val->Dimensions = (const char **)malloc(n*sizeof(char *)); - for (i = 0; i < n; i++) - { - val->Dimensions[i] = orig->Dimensions[i]; - } - } - - val->Function = NULL; - if (orig->Function) - { - val->Function = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_CopyFunction(val->Function, orig->Function); - } - - val->IsStatic = orig->IsStatic; - val->IsEnum = orig->IsEnum; -} - -/* initialize the structure */ -void vtkParse_InitEnum(EnumInfo *item) -{ - item->ItemType = VTK_ENUM_INFO; - item->Access = VTK_ACCESS_PUBLIC; - item->Name = NULL; - item->Comment = NULL; -} - -void vtkParse_CopyEnum(EnumInfo *item, const EnumInfo *orig) -{ - item->ItemType = orig->ItemType; - item->Access = orig->Access; - item->Name = orig->Name; - item->Comment = orig->Comment; -} - -/* initialize the structure */ -void vtkParse_InitUsing(UsingInfo *item) -{ - item->ItemType = VTK_USING_INFO; - item->Access = VTK_ACCESS_PUBLIC; - item->Name = NULL; - item->Comment = NULL; - item->Scope = NULL; -} - -void vtkParse_CopyUsing(UsingInfo *item, const UsingInfo *orig) -{ - item->ItemType = orig->ItemType; - item->Access = orig->Access; - item->Name = orig->Name; - item->Comment = orig->Comment; - item->Scope = orig->Scope; -} - -/* initialize the structure */ -void vtkParse_InitClass(ClassInfo *cls) -{ - cls->ItemType = VTK_CLASS_INFO; - cls->Access = VTK_ACCESS_PUBLIC; - cls->Name = NULL; - cls->Comment = NULL; - cls->Template = NULL; - cls->NumberOfSuperClasses = 0; - cls->NumberOfItems = 0; - cls->NumberOfClasses = 0; - cls->NumberOfFunctions = 0; - cls->NumberOfConstants = 0; - cls->NumberOfVariables = 0; - cls->NumberOfEnums = 0; - cls->NumberOfTypedefs = 0; - cls->NumberOfUsings = 0; - cls->IsAbstract = 0; - cls->HasDelete = 0; -} - -void vtkParse_CopyClass(ClassInfo *cls, const ClassInfo *orig) -{ - unsigned long i, n; - - cls->ItemType = orig->ItemType; - cls->Access = orig->Access; - cls->Name = orig->Name; - cls->Comment = orig->Comment; - cls->Template = NULL; - - if (orig->Template) - { - cls->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs)); - vtkParse_CopyTemplateArgs(cls->Template, orig->Template); - } - - n = orig->NumberOfSuperClasses; - cls->NumberOfSuperClasses = n; - if (n) - { - cls->SuperClasses = (const char **)malloc(n*sizeof(char *)); - for (i = 0; i < n; i++) - { - cls->SuperClasses[i] = orig->SuperClasses[i]; - } - } - - n = orig->NumberOfItems; - cls->NumberOfItems = n; - if (n) - { - cls->Items = (ItemInfo *)malloc(n*sizeof(ItemInfo)); - for (i = 0; i < n; i++) - { - cls->Items[i].Type = orig->Items[i].Type; - cls->Items[i].Index = orig->Items[i].Index; - } - } - - n = orig->NumberOfClasses; - cls->NumberOfClasses = n; - if (n) - { - cls->Classes = (ClassInfo **)malloc(n*sizeof(ClassInfo *)); - for (i = 0; i < n; i++) - { - cls->Classes[i] = (ClassInfo *)malloc(sizeof(ClassInfo)); - vtkParse_CopyClass(cls->Classes[i], orig->Classes[i]); - } - } - - n = orig->NumberOfFunctions; - cls->NumberOfFunctions = n; - if (n) - { - cls->Functions = (FunctionInfo **)malloc(n*sizeof(FunctionInfo *)); - for (i = 0; i < n; i++) - { - cls->Functions[i] = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_CopyFunction(cls->Functions[i], orig->Functions[i]); - } - } - - n = orig->NumberOfConstants; - cls->NumberOfConstants = n; - if (n) - { - cls->Constants = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - cls->Constants[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(cls->Constants[i], orig->Constants[i]); - } - } - - n = orig->NumberOfVariables; - cls->NumberOfVariables = n; - if (n) - { - cls->Variables = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - cls->Variables[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(cls->Variables[i], orig->Variables[i]); - } - } - - n = orig->NumberOfEnums; - cls->NumberOfEnums = n; - if (n) - { - cls->Enums = (EnumInfo **)malloc(n*sizeof(EnumInfo *)); - for (i = 0; i < n; i++) - { - cls->Enums[i] = (EnumInfo *)malloc(sizeof(EnumInfo)); - vtkParse_CopyEnum(cls->Enums[i], orig->Enums[i]); - } - } - - n = orig->NumberOfTypedefs; - cls->NumberOfTypedefs = n; - if (n) - { - cls->Typedefs = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - cls->Typedefs[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(cls->Typedefs[i], orig->Typedefs[i]); - } - } - - n = orig->NumberOfUsings; - cls->NumberOfUsings = n; - if (n) - { - cls->Usings = (UsingInfo **)malloc(n*sizeof(UsingInfo *)); - for (i = 0; i < n; i++) - { - cls->Usings[i] = (UsingInfo *)malloc(sizeof(UsingInfo)); - vtkParse_CopyUsing(cls->Usings[i], orig->Usings[i]); - } - } - - cls->IsAbstract = orig->IsAbstract; - cls->HasDelete = orig->HasDelete; -} - - -/* initialize the structure */ -void vtkParse_InitNamespace(NamespaceInfo *name_info) -{ - /* namespace info */ - name_info->ItemType = VTK_NAMESPACE_INFO; - name_info->Access = VTK_ACCESS_PUBLIC; - name_info->Name = NULL; - name_info->Comment = NULL; - name_info->NumberOfItems = 0; - name_info->NumberOfClasses = 0; - name_info->NumberOfFunctions = 0; - name_info->NumberOfConstants = 0; - name_info->NumberOfVariables = 0; - name_info->NumberOfEnums = 0; - name_info->NumberOfTypedefs = 0; - name_info->NumberOfUsings = 0; - name_info->NumberOfNamespaces = 0; -} - -void vtkParse_CopyNamespace(NamespaceInfo *ninfo, const NamespaceInfo *orig) -{ - unsigned long i, n; - - /* namespace info */ - ninfo->ItemType = orig->ItemType; - ninfo->Access = orig->Access; - ninfo->Name = orig->Name; - ninfo->Comment = orig->Comment; - - n = orig->NumberOfItems; - ninfo->NumberOfItems = n; - if (n) - { - ninfo->Items = (ItemInfo *)malloc(n*sizeof(ItemInfo)); - for (i = 0; i < n; i++) - { - ninfo->Items[i].Type = orig->Items[i].Type; - ninfo->Items[i].Index = orig->Items[i].Index; - } - } - - n = orig->NumberOfClasses; - ninfo->NumberOfClasses = n; - if (n) - { - ninfo->Classes = (ClassInfo **)malloc(n*sizeof(ClassInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Classes[i] = (ClassInfo *)malloc(sizeof(ClassInfo)); - vtkParse_CopyClass(ninfo->Classes[i], orig->Classes[i]); - } - } - - n = orig->NumberOfFunctions; - ninfo->NumberOfFunctions = n; - if (n) - { - ninfo->Functions = (FunctionInfo **)malloc(n*sizeof(FunctionInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Functions[i] = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_CopyFunction(ninfo->Functions[i], orig->Functions[i]); - } - } - - n = orig->NumberOfConstants; - ninfo->NumberOfConstants = n; - if (n) - { - ninfo->Constants = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Constants[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(ninfo->Constants[i], orig->Constants[i]); - } - } - - n = orig->NumberOfVariables; - ninfo->NumberOfVariables = n; - if (n) - { - ninfo->Variables = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Variables[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(ninfo->Variables[i], orig->Variables[i]); - } - } - - n = orig->NumberOfEnums; - ninfo->NumberOfEnums = n; - if (n) - { - ninfo->Enums = (EnumInfo **)malloc(n*sizeof(EnumInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Enums[i] = (EnumInfo *)malloc(sizeof(EnumInfo)); - vtkParse_CopyEnum(ninfo->Enums[i], orig->Enums[i]); - } - } - - n = orig->NumberOfTypedefs; - ninfo->NumberOfTypedefs = n; - if (n) - { - ninfo->Typedefs = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Typedefs[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_CopyValue(ninfo->Typedefs[i], orig->Typedefs[i]); - } - } + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } - n = orig->NumberOfUsings; - ninfo->NumberOfUsings = n; - if (n) - { - ninfo->Usings = (UsingInfo **)malloc(n*sizeof(UsingInfo *)); - for (i = 0; i < n; i++) - { - ninfo->Usings[i] = (UsingInfo *)malloc(sizeof(UsingInfo)); - vtkParse_CopyUsing(ninfo->Usings[i], orig->Usings[i]); + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } } +#endif } -} - - - -void vtkParse_InitFile(FileInfo *file_info) -{ - /* file info */ - file_info->FileName = NULL; - file_info->NameComment = NULL; - file_info->Description = NULL; - file_info->Caveats = NULL; - file_info->SeeAlso = NULL; - file_info->MainClass = NULL; - file_info->Contents = NULL; -} -void vtkParse_FreeTemplateArgs(TemplateArgs *template_info) -{ - int j, m; - m = template_info->NumberOfArguments; - for (j = 0; j < m; j++) + if (yyerrstatus == 3) { - if (template_info->Arguments[j]->Template) - { - vtkParse_FreeTemplateArgs(template_info->Arguments[j]->Template); - } - free(template_info->Arguments[j]); - } - - free(template_info); -} - -void vtkParse_FreeFunction(FunctionInfo *function_info); + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ -void vtkParse_FreeValue(ValueInfo *value_info) -{ - if (value_info->NumberOfDimensions) - { - free((char **)value_info->Dimensions); - } - if (value_info->Function) - { - vtkParse_FreeFunction(value_info->Function); + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - free(value_info); -} + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; -void vtkParse_FreeEnum(EnumInfo *enum_info) -{ - free(enum_info); -} -void vtkParse_FreeUsing(UsingInfo *using_info) -{ - free(using_info); -} +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: -void vtkParse_FreeFunction(FunctionInfo *function_info) -{ - int j, m; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; - if (function_info->Template) - { - vtkParse_FreeTemplateArgs(function_info->Template); - } + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; - m = function_info->NumberOfArguments; - for (j = 0; j < m; j++) { vtkParse_FreeValue(function_info->Arguments[j]); } - if (m > 0) { free(function_info->Arguments); } - if (function_info->ReturnValue) - { - vtkParse_FreeValue(function_info->ReturnValue); - } +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ - free(function_info); -} + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } -void vtkParse_FreeClass(ClassInfo *class_info) -{ - int j, m; + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; - if (class_info->Template) { vtkParse_FreeTemplateArgs(class_info->Template); } - m = class_info->NumberOfSuperClasses; - if (m > 0) { free((char **)class_info->SuperClasses); } + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } - m = class_info->NumberOfClasses; - for (j = 0; j < m; j++) { vtkParse_FreeClass(class_info->Classes[j]); } - if (m > 0) { free(class_info->Classes); } + *++yyvsp = yylval; - m = class_info->NumberOfFunctions; - for (j = 0; j < m; j++) { vtkParse_FreeFunction(class_info->Functions[j]); } - if (m > 0) { free(class_info->Functions); } - m = class_info->NumberOfConstants; - for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Constants[j]); } - if (m > 0) { free(class_info->Constants); } + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - m = class_info->NumberOfVariables; - for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Variables[j]); } - if (m > 0) { free(class_info->Variables); } + yystate = yyn; + goto yynewstate; - m = class_info->NumberOfEnums; - for (j = 0; j < m; j++) { vtkParse_FreeEnum(class_info->Enums[j]); } - if (m > 0) { free(class_info->Enums); } - m = class_info->NumberOfTypedefs; - for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Typedefs[j]); } - if (m > 0) { free(class_info->Typedefs); } +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; - m = class_info->NumberOfUsings; - for (j = 0; j < m; j++) { vtkParse_FreeUsing(class_info->Usings[j]); } - if (m > 0) { free(class_info->Usings); } +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; - if (class_info->NumberOfItems > 0) { free(class_info->Items); } +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif - free(class_info); +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); } -void vtkParse_FreeNamespace(NamespaceInfo *namespace_info) -{ - int j, m; - - m = namespace_info->NumberOfClasses; - for (j = 0; j < m; j++) { vtkParse_FreeClass(namespace_info->Classes[j]); } - if (m > 0) { free(namespace_info->Classes); } - - m = namespace_info->NumberOfFunctions; - for (j=0; jFunctions[j]); } - if (m > 0) { free(namespace_info->Functions); } - - m = namespace_info->NumberOfConstants; - for (j=0; jConstants[j]); } - if (m > 0) { free(namespace_info->Constants); } - - m = namespace_info->NumberOfVariables; - for (j=0; jVariables[j]); } - if (m > 0) { free(namespace_info->Variables); } - m = namespace_info->NumberOfEnums; - for (j = 0; j < m; j++) { vtkParse_FreeEnum(namespace_info->Enums[j]); } - if (m > 0) { free(namespace_info->Enums); } - m = namespace_info->NumberOfTypedefs; - for (j = 0; j < m; j++) { vtkParse_FreeValue(namespace_info->Typedefs[j]); } - if (m > 0) { free(namespace_info->Typedefs); } +/* Line 1675 of yacc.c */ +#line 3088 "vtkParse.y" - m = namespace_info->NumberOfUsings; - for (j = 0; j < m; j++) { vtkParse_FreeUsing(namespace_info->Usings[j]); } - if (m > 0) { free(namespace_info->Usings); } +#include +#include "lex.yy.c" - m = namespace_info->NumberOfNamespaces; - for (j=0; jNamespaces[j]);} - if (m > 0) { free(namespace_info->Namespaces); } +/* fill in the type name if none given */ +const char *type_class(unsigned int type, const char *classname) +{ + if (classname) + { + if (classname[0] == '\0') + { + switch ((type & VTK_PARSE_BASE_TYPE)) + { + case VTK_PARSE_VOID: + classname = "void"; + break; + case VTK_PARSE_BOOL: + classname = "bool"; + break; + case VTK_PARSE_FLOAT: + classname = "float"; + break; + case VTK_PARSE_DOUBLE: + classname = "double"; + break; + case VTK_PARSE_LONG_DOUBLE: + classname = "long double"; + break; + case VTK_PARSE_CHAR: + classname = "char"; + break; + case VTK_PARSE_UNSIGNED_CHAR: + classname = "unsigned char"; + break; + case VTK_PARSE_SIGNED_CHAR: + classname = "signed char"; + break; + case VTK_PARSE_SHORT: + classname = "short"; + break; + case VTK_PARSE_UNSIGNED_SHORT: + classname = "unsigned short"; + break; + case VTK_PARSE_INT: + classname = "int"; + break; + case VTK_PARSE_UNSIGNED_INT: + classname = "unsigned int"; + break; + case VTK_PARSE_LONG: + classname = "long"; + break; + case VTK_PARSE_UNSIGNED_LONG: + classname = "unsigned long"; + break; + case VTK_PARSE_LONG_LONG: + classname = "long long"; + break; + case VTK_PARSE_UNSIGNED_LONG_LONG: + classname = "unsigned long long"; + break; + case VTK_PARSE___INT64: + classname = "__int64"; + break; + case VTK_PARSE_UNSIGNED___INT64: + classname = "unsigned __int64"; + break; + } + } + } - free(namespace_info); + return classname; } /* check whether this is the class we are looking for */ @@ -8974,7 +8112,7 @@ void start_class(const char *classname, int is_struct_or_union) pushClass(); currentClass = (ClassInfo *)malloc(sizeof(ClassInfo)); vtkParse_InitClass(currentClass); - currentClass->Name = vtkstrdup(classname); + currentClass->Name = classname; if (is_struct_or_union == 1) { currentClass->ItemType = VTK_STRUCT_INFO; @@ -8984,13 +8122,16 @@ void start_class(const char *classname, int is_struct_or_union) currentClass->ItemType = VTK_UNION_INFO; } - if (outerClass) - { - vtkParse_AddClassToClass(outerClass, currentClass); - } - else + if (classname && classname[strlen(classname)-1] != '>') { - vtkParse_AddClassToNamespace(currentNamespace, currentClass); + if (outerClass) + { + vtkParse_AddClassToClass(outerClass, currentClass); + } + else + { + vtkParse_AddClassToNamespace(currentNamespace, currentClass); + } } /* template information */ @@ -9021,7 +8162,7 @@ void reject_class(const char *classname, int is_struct_or_union) pushClass(); currentClass = &static_class; - currentClass->Name = vtkstrdup(classname); + currentClass->Name = classname; vtkParse_InitClass(currentClass); access_level = VTK_ACCESS_PRIVATE; @@ -9039,11 +8180,22 @@ void reject_class(const char *classname, int is_struct_or_union) void end_class() { /* add default constructors */ - vtkParse_AddDefaultConstructors(currentClass); + vtkParse_AddDefaultConstructors(currentClass, data->Strings); popClass(); } +/* add a base class to the specified class */ +void add_base_class(ClassInfo *cls, const char *name, int al, int virt) +{ + if (cls && al == VTK_ACCESS_PUBLIC && virt == 0) + { + vtkParse_AddStringToArray(&cls->SuperClasses, + &cls->NumberOfSuperClasses, + name); + } +} + /* add a using declaration or directive */ void add_using(const char *name, int is_namespace) { @@ -9055,7 +8207,7 @@ void add_using(const char *name, int is_namespace) if (is_namespace) { item->Name = NULL; - item->Scope = vtkstrdup(name); + item->Scope = name; } else { @@ -9079,18 +8231,16 @@ void add_using(const char *name, int is_namespace) /* start a new enum */ void start_enum(const char *name) { - static char text[256]; EnumInfo *item; currentEnumName = "int"; currentEnumValue = NULL; if (name) { - strcpy(text, name); - currentEnumName = text; + currentEnumName = name; item = (EnumInfo *)malloc(sizeof(EnumInfo)); vtkParse_InitEnum(item); - item->Name = vtkstrdup(name); + item->Name = name; item->Access = access_level; if (currentClass) { @@ -9120,7 +8270,7 @@ void add_enum(const char *name, const char *value) if (value) { strcpy(text, value); - currentEnumValue = text; + currentEnumValue = value; } else if (currentEnumValue) { @@ -9144,17 +8294,18 @@ void add_enum(const char *name, const char *value) i = strlen(text); strcpy(&text[i], " + 1"); } + currentEnumValue = vtkstrdup(text); } else { strcpy(text, "0"); - currentEnumValue = text; + currentEnumValue = "0"; } add_constant(name, currentEnumValue, VTK_PARSE_INT, currentEnumName, 2); } -/* for a macro constant, guess the constant type */ +/* for a macro constant, guess the constant type, doesn't do any math */ unsigned int guess_constant_type(const char *valstring) { unsigned int valtype = 0; @@ -9280,7 +8431,7 @@ unsigned int guess_constant_type(const char *valstring) if (is_name) { MacroInfo *macro = vtkParsePreprocess_GetMacro( - &preprocessor, valstring); + preprocessor, valstring); if (macro && !macro->IsFunction) { @@ -9293,7 +8444,7 @@ unsigned int guess_constant_type(const char *valstring) preproc_int_t val; int is_unsigned; int result = vtkParsePreprocess_EvaluateExpression( - &preprocessor, valstring, &val, &is_unsigned); + preprocessor, valstring, &val, &is_unsigned); if (result == VTK_PARSE_PREPROC_DOUBLE) { @@ -9356,13 +8507,10 @@ void add_constant(const char *name, const char *value, ValueInfo *con = (ValueInfo *)malloc(sizeof(ValueInfo)); vtkParse_InitValue(con); con->ItemType = VTK_CONSTANT_INFO; - con->Name = vtkstrdup(name); - con->Value = vtkstrdup(value); + con->Name = name; + con->Value = value; con->Type = type; - if (typeclass) - { - con->Class = vtkstrdup(typeclass); - } + con->Class = type_class(type, typeclass); if (flag == 2) { @@ -9371,12 +8519,33 @@ void add_constant(const char *name, const char *value, if (flag == 1) { + /* actually a macro, need to guess the type */ + ValueInfo **cptr = data->Contents->Constants; + int n = data->Contents->NumberOfConstants; + int i; + con->Access = VTK_ACCESS_PUBLIC; if (con->Type == 0) { con->Type = guess_constant_type(con->Value); } - vtkParse_AddConstantToNamespace(data.Contents, con); + + for (i = 0; i < n; i++) + { + if (strcmp(cptr[i]->Name, con->Name) == 0) + { + break; + } + } + + if (i == n) + { + vtkParse_AddConstantToNamespace(data->Contents, con); + } + else + { + vtkParse_FreeValue(con); + } } else if (currentClass) { @@ -9440,34 +8609,80 @@ const char *add_const_scope(const char *name) return text; } -/* add an arg to a function */ -void add_argument(FunctionInfo *func, unsigned int type, - const char *typeclass, int count) +/* guess the type from the ID */ +unsigned int guess_id_type(const char *cp) { - int i = func->NumberOfArguments; - char text[64]; - ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_InitValue(arg); + unsigned int t = 0; - arg->Type = type; - if (typeclass) + if (cp) { - arg->Class = vtkstrdup(typeclass); + size_t i; + const char *dp; + + i = strlen(cp); + while (i > 0 && cp[i-1] != ':') { i--; } + dp = &cp[i]; + + if (strcmp(dp, "vtkStdString") == 0 || + strcmp(cp, "std::string") == 0) + { + t = VTK_PARSE_STRING; + } + else if (strcmp(dp, "vtkUnicodeString") == 0) + { + t = VTK_PARSE_UNICODE_STRING; + } + else if (strncmp(dp, "vtk", 3) == 0) + { + t = VTK_PARSE_OBJECT; + } + else if (strncmp(dp, "Q", 1) == 0 || + strncmp(cp, "Qt::", 4) == 0) + { + t = VTK_PARSE_QOBJECT; + } + else + { + t = VTK_PARSE_UNKNOWN; + } } + return t; +} + +/* add a template parameter to the current template */ +void add_template_parameter( + unsigned int datatype, unsigned int extra, const char *funcSig) +{ + ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(param); + handle_complex_type(param, datatype, extra, funcSig); + param->Name = getVarName(); + vtkParse_AddParameterToTemplate(currentTemplate, param); +} + +/* add a parameter to a function */ +void add_parameter(FunctionInfo *func, unsigned int type, + const char *typeclass, int count) +{ + char text[64]; + ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(param); + + param->Type = type; + param->Class = type_class(type, typeclass); + if (count) { - arg->Count = count; + param->Count = count; sprintf(text, "%i", count); - vtkParse_AddStringToArray(&arg->Dimensions, &arg->NumberOfDimensions, + vtkParse_AddStringToArray(¶m->Dimensions, ¶m->NumberOfDimensions, vtkstrdup(text)); } - func->ArgTypes[i] = arg->Type; - func->ArgClasses[i] = arg->Class; - func->ArgCounts[i] = count; + add_legacy_parameter(func, param); - vtkParse_AddArgumentToFunction(func, arg); + vtkParse_AddParameterToFunction(func, param); } /* set the return type for the current function */ @@ -9479,10 +8694,7 @@ void set_return(FunctionInfo *func, unsigned int type, vtkParse_InitValue(val); val->Type = type; - if (typeclass) - { - val->Class = vtkstrdup(typeclass); - } + val->Class = type_class(type, typeclass); if (count) { @@ -9490,13 +8702,47 @@ void set_return(FunctionInfo *func, unsigned int type, sprintf(text, "%i", count); vtkParse_AddStringToArray(&val->Dimensions, &val->NumberOfDimensions, vtkstrdup(text)); - func->HaveHint = 1; } func->ReturnValue = val; + +#ifndef VTK_PARSE_LEGACY_REMOVE func->ReturnType = val->Type; func->ReturnClass = val->Class; + func->HaveHint = (count > 0); func->HintSize = count; +#endif +} + +int count_from_dimensions(ValueInfo *val) +{ + int count, i, n; + const char *cp; + + /* count is the product of the dimensions */ + count = 0; + if (val->NumberOfDimensions) + { + count = 1; + for (i = 0; i < val->NumberOfDimensions; i++) + { + n = 0; + cp = val->Dimensions[i]; + if (cp[0] != '\0') + { + while (*cp != '\0' && *cp >= '0' && *cp <= '9') { cp++; } + while (*cp != '\0' && (*cp == 'u' || *cp == 'l' || + *cp == 'U' || *cp == 'L')) { cp++; } + if (*cp == '\0') + { + n = (int)strtol(val->Dimensions[i], NULL, 0); + } + } + count *= n; + } + } + + return count; } /* deal with types that include function pointers or arrays */ @@ -9505,8 +8751,9 @@ void handle_complex_type( const char *funcSig) { FunctionInfo *func = 0; - int i, n; - const char *cp; + + /* remove specifiers like "friend" and "typedef" */ + datatype &= VTK_PARSE_QUALIFIED_TYPE; /* if "extra" was set, parentheses were involved */ if ((extra & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) @@ -9516,12 +8763,15 @@ void handle_complex_type( func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo)); vtkParse_InitValue(func->ReturnValue); func->ReturnValue->Type = datatype; - func->ReturnValue->Class = vtkstrdup(getTypeId()); - func->ReturnType = func->ReturnValue->Type; - func->ReturnClass = func->ReturnValue->Class; + func->ReturnValue->Class = type_class(datatype, getTypeId()); if (funcSig) { func->Signature = vtkstrdup(funcSig); } val->Function = func; +#ifndef VTK_PARSE_LEGACY_REMOVE + func->ReturnType = func->ReturnValue->Type; + func->ReturnClass = func->ReturnValue->Class; +#endif + /* the val type is whatever was inside the parentheses */ clearTypeId(); setTypeId(func->Class ? "method" : "function"); @@ -9578,7 +8828,7 @@ void handle_complex_type( /* get the data type */ val->Type = datatype; - val->Class = vtkstrdup(getTypeId()); + val->Class = type_class(datatype, getTypeId()); /* copy contents of all brackets to the ArgDimensions */ val->NumberOfDimensions = getArrayNDims(); @@ -9586,54 +8836,40 @@ void handle_complex_type( clearArray(); /* count is the product of the dimensions */ - val->Count = 0; - if (val->NumberOfDimensions) - { - val->Count = 1; - for (i = 0; i < val->NumberOfDimensions; i++) - { - n = 0; - cp = val->Dimensions[i]; - if (cp[0] != '\0') - { - while (*cp != '\0' && *cp >= '0' && *cp <= '9') { cp++; } - if (*cp == '\0') - { - n = (int)strtol(val->Dimensions[i], NULL, 0); - } - } - val->Count *= n; - } - } + val->Count = count_from_dimensions(val); } -/* specifically handle a VAR_FUNCTION argument */ -void handle_function_type( - ValueInfo *arg, const char *name, const char *funcSig) +/* add a parameter to the legacy part of the FunctionInfo struct */ +void add_legacy_parameter(FunctionInfo *func, ValueInfo *param) { - FunctionInfo *func; - size_t j; - - arg->Type = VTK_PARSE_FUNCTION; - arg->Class = vtkstrdup("function"); +#ifndef VTK_PARSE_LEGACY_REMOVE + int i = func->NumberOfArguments; - if (name && name[0] != '\0') + if (i < MAX_ARGS) { - arg->Name = vtkstrdup(name); - } + func->NumberOfArguments = i + 1; + func->ArgTypes[i] = param->Type; + func->ArgClasses[i] = param->Class; + func->ArgCounts[i] = param->Count; - func = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_InitFunction(func); - add_argument(func, VTK_PARSE_VOID_PTR, "void", 0); - set_return(func, VTK_PARSE_VOID, "void", 0); - j = strlen(funcSig); - while (j > 0 && funcSig[j-1] == ' ') + /* legacy wrappers need VTK_PARSE_FUNCTION without POINTER */ + if (param->Type == VTK_PARSE_FUNCTION_PTR) + { + /* check for signature "void (*func)(void *)" */ + if (param->Function->NumberOfParameters == 1 && + param->Function->Parameters[0]->Type == VTK_PARSE_VOID_PTR && + param->Function->Parameters[0]->NumberOfDimensions == 0 && + param->Function->ReturnValue->Type == VTK_PARSE_VOID) + { + func->ArgTypes[i] = VTK_PARSE_FUNCTION; + } + } + } + else { - j--; + func->ArrayFailure = 1; } - - func->Signature = vtkstrndup(funcSig, j); - arg->Function = func; +#endif } @@ -9642,11 +8878,13 @@ void reject_function() { vtkParse_InitFunction(currentFunction); startSig(); + getMacro(); } /* a simple routine that updates a few variables */ void output_function() { + const char *macro = getMacro(); size_t n; int i, j; int match; @@ -9665,11 +8903,19 @@ void output_function() } /* static */ - if (currentFunction->ReturnType & VTK_PARSE_STATIC) + if (currentFunction->ReturnValue && + currentFunction->ReturnValue->Type & VTK_PARSE_STATIC) { currentFunction->IsStatic = 1; } + /* virtual */ + if (currentFunction->ReturnValue && + currentFunction->ReturnValue->Type & VTK_PARSE_VIRTUAL) + { + currentFunction->IsVirtual = 1; + } + /* the signature */ if (!currentFunction->Signature) { @@ -9683,9 +8929,34 @@ void output_function() currentTemplate = NULL; } - /* a void argument is the same as no arguments */ + /* a void argument is the same as no parameters */ + if (currentFunction->NumberOfParameters == 1 && + (currentFunction->Parameters[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) == + VTK_PARSE_VOID) + { + currentFunction->NumberOfParameters = 0; + } + + /* is it defined in a legacy macro? */ + if (macro && strcmp(macro, "VTK_LEGACY") == 0) + { + currentFunction->IsLegacy = 1; + } + + /* set public, protected */ + if (currentClass) + { + currentFunction->Access = access_level; + } + else + { + currentFunction->Access = VTK_ACCESS_PUBLIC; + } + +#ifndef VTK_PARSE_LEGACY_REMOVE + /* a void argument is the same as no parameters */ if (currentFunction->NumberOfArguments == 1 && - (currentFunction->Arguments[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) == + (currentFunction->ArgTypes[0] & VTK_PARSE_UNQUALIFIED_TYPE) == VTK_PARSE_VOID) { currentFunction->NumberOfArguments = 0; @@ -9696,56 +8967,56 @@ void output_function() (currentFunction->ReturnType & VTK_PARSE_UNQUALIFIED_TYPE) == VTK_PARSE_VOID) { - currentFunction->ReturnClass = vtkstrdup("void"); + currentFunction->ReturnClass = "void"; } - /* set public, protected */ + /* set legacy flags */ if (currentClass) { - currentFunction->Access = access_level; - /* set legacy flags */ currentFunction->IsPublic = (access_level == VTK_ACCESS_PUBLIC); currentFunction->IsProtected = (access_level == VTK_ACCESS_PROTECTED); } else { - currentFunction->Access = VTK_ACCESS_PUBLIC; - /* set legacy flags */ currentFunction->IsPublic = 1; currentFunction->IsProtected = 0; } - /* look for legacy VAR FUNCTIONS */ - if (currentFunction->NumberOfArguments - && (currentFunction->Arguments[0]->Type == VTK_PARSE_FUNCTION)) - { - if (currentFunction->NumberOfArguments != 2 || - currentFunction->Arguments[1]->Type != VTK_PARSE_VOID_PTR) - { - currentFunction->ArrayFailure = 1; - } - } - - /* check for too many arguments */ - if (currentFunction->NumberOfArguments > MAX_ARGS) + /* check for too many parameters */ + if (currentFunction->NumberOfParameters > MAX_ARGS) { currentFunction->ArrayFailure = 1; } - /* also legacy: tell old wrappers that multi-dimensional arrays are bad */ - for (i = 0; i < currentFunction->NumberOfArguments; i++) + for (i = 0; i < currentFunction->NumberOfParameters; i++) { - ValueInfo *arg = currentFunction->Arguments[i]; - if ((arg->Type & VTK_PARSE_POINTER_MASK) != 0) + ValueInfo *param = currentFunction->Parameters[i]; + /* tell old wrappers that multi-dimensional arrays are bad */ + if ((param->Type & VTK_PARSE_POINTER_MASK) != 0) + { + if (((param->Type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT) || + ((param->Type & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_POINTER)) + { + currentFunction->ArrayFailure = 1; + } + } + + /* allow only "void (*func)(void *)" as a valid function pointer */ + if ((param->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) { - if (((arg->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) || - ((arg->Type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT) || - ((arg->Type & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_POINTER)) - { - currentFunction->ArrayFailure = 1; - } + if (i != 0 || param->Type != VTK_PARSE_FUNCTION_PTR || + currentFunction->NumberOfParameters != 2 || + currentFunction->Parameters[1]->Type != VTK_PARSE_VOID_PTR || + param->Function->NumberOfParameters != 1 || + param->Function->Parameters[0]->Type != VTK_PARSE_VOID_PTR || + param->Function->Parameters[0]->NumberOfDimensions != 0 || + param->Function->ReturnValue->Type != VTK_PARSE_VOID) + { + currentFunction->ArrayFailure = 1; + } } } +#endif /* VTK_PARSE_LEGACY_REMOVE */ if (currentClass) { @@ -9755,7 +9026,7 @@ void output_function() currentClass->HasDelete = 1; } - currentFunction->Class = vtkstrdup(currentClass->Name); + currentFunction->Class = currentClass->Name; vtkParse_AddFunctionToClass(currentClass, currentFunction); currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo)); @@ -9770,23 +9041,23 @@ void output_function() strcmp(currentNamespace->Functions[i]->Name, currentFunction->Name) == 0) { - if (currentNamespace->Functions[i]->NumberOfArguments == - currentFunction->NumberOfArguments) + if (currentNamespace->Functions[i]->NumberOfParameters == + currentFunction->NumberOfParameters) { - for (j = 0; j < currentFunction->NumberOfArguments; j++) + for (j = 0; j < currentFunction->NumberOfParameters; j++) { - if (currentNamespace->Functions[i]->Arguments[j]->Type == - currentFunction->Arguments[j]->Type) + if (currentNamespace->Functions[i]->Parameters[j]->Type == + currentFunction->Parameters[j]->Type) { - if (currentFunction->Arguments[j]->Type == VTK_PARSE_OBJECT && - strcmp(currentNamespace->Functions[i]->Arguments[j]->Class, - currentFunction->Arguments[j]->Class) == 0) + if (currentFunction->Parameters[j]->Type == VTK_PARSE_OBJECT && + strcmp(currentNamespace->Functions[i]->Parameters[j]->Class, + currentFunction->Parameters[j]->Class) == 0) { break; } } } - if (j == currentFunction->NumberOfArguments) + if (j == currentFunction->NumberOfParameters) { match = 1; break; @@ -9807,7 +9078,16 @@ void output_function() startSig(); } -void outputSetVectorMacro(const char *var, unsigned int argType, +/* output a function that is not a method of the current class */ +void output_friend_function() +{ + ClassInfo *tmpc = currentClass; + currentClass = NULL; + output_function(); + currentClass = tmpc; +} + +void outputSetVectorMacro(const char *var, unsigned int paramType, const char *typeText, int n) { static const char *mnames[] = { @@ -9837,7 +9117,7 @@ void outputSetVectorMacro(const char *var, unsigned int argType, postSig(");"); for (i = 0; i < n; i++) { - add_argument(currentFunction, argType, getTypeId(), 0); + add_parameter(currentFunction, paramType, getTypeId(), 0); } set_return(currentFunction, VTK_PARSE_VOID, "void", 0); output_function(); @@ -9845,15 +9125,15 @@ void outputSetVectorMacro(const char *var, unsigned int argType, currentFunction->Macro = mnames[m]; currentFunction->Name = vtkstrcat("Set", var); currentFunction->Signature = - vtkstrcat7("void ", currentFunction->Name, "(", getTypeId(), + vtkstrcat7("void ", currentFunction->Name, "(", typeText, " a[", ntext, "]);"); - add_argument(currentFunction, (VTK_PARSE_POINTER | argType), - getTypeId(), n); + add_parameter(currentFunction, (VTK_PARSE_POINTER | paramType), + getTypeId(), n); set_return(currentFunction, VTK_PARSE_VOID, "void", 0); output_function(); } -void outputGetVectorMacro(const char *var, unsigned int argType, +void outputGetVectorMacro(const char *var, unsigned int paramType, const char *typeText, int n) { static const char *mnames[] = { @@ -9869,406 +9149,103 @@ void outputGetVectorMacro(const char *var, unsigned int argType, currentFunction->Name = vtkstrcat("Get", var); currentFunction->Signature = vtkstrcat4(typeText, " *", currentFunction->Name, "();"); - set_return(currentFunction, (VTK_PARSE_POINTER | argType), getTypeId(), n); + set_return(currentFunction, (VTK_PARSE_POINTER | paramType), getTypeId(), n); output_function(); } -/* This method is used for extending dynamic arrays in a progression of - * powers of two. If "n" reaches a power of two, then the array size is - * doubled so that "n" can be safely incremented. */ -static void *array_size_check( - void *arraymem, size_t size, int n) +/* Set a flag to ignore BTX/ETX markers in the files */ +void vtkParse_SetIgnoreBTX(int option) { - /* if empty, alloc for the first time */ - if (n == 0) + if (option) { - return malloc(size); + IgnoreBTX = 1; } - /* if count is power of two, reallocate with double size */ - else if ((n & (n-1)) == 0) + else { - return realloc(arraymem, (n << 1)*size); + IgnoreBTX = 0; } - - /* no reallocation, just return the original array */ - return arraymem; -} - -/* Utility method to add a pointer to an array */ -void vtkParse_AddPointerToArray( - void *valueArray, int *count, const void *value) -{ - void **values = *(void ***)valueArray; - int n = *count; - - values = (void **)array_size_check(values, sizeof(void *), n); - - values[n++] = (void *)value; - *count = n; - *(void ***)valueArray = values; -} - -/* - * There is a lot of repetition here, but all the code is written - * out explicitly to avoid the use of macros or typecasts. The - * use of macros for generic programming makes code harder to debug, - * and the use of C typecasts for anything but void* and char* breaks - * the C99 standard. - */ - -/* Utility method to add an item to an array */ -void vtkParse_AddItemToArray( - ItemInfo **valueArray, int *count, - parse_item_t type, int idx) -{ - size_t n = *count; - ItemInfo *values = *valueArray; - - values = (ItemInfo *)array_size_check(values, sizeof(ItemInfo), n); - - values[n].Type = type; - values[n].Index = idx; - *count = n+1; - *valueArray = values; -} - -/* Add a ClassInfo to a ClassInfo */ -void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfClasses); - info->Classes = (ClassInfo **)array_size_check( - info->Classes, sizeof(ClassInfo *), info->NumberOfClasses); - info->Classes[info->NumberOfClasses++] = item; -} - -/* Add a FunctionInfo to a ClassInfo */ -void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfFunctions); - info->Functions = (FunctionInfo **)array_size_check( - info->Functions, sizeof(FunctionInfo *), info->NumberOfFunctions); - info->Functions[info->NumberOfFunctions++] = item; -} - -/* Add a EnumInfo to a ClassInfo */ -void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfEnums); - info->Enums = (EnumInfo **)array_size_check( - info->Enums, sizeof(EnumInfo *), info->NumberOfEnums); - info->Enums[info->NumberOfEnums++] = item; -} - -/* Add a Constant ValueInfo to a ClassInfo */ -void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfConstants); - info->Constants = (ValueInfo **)array_size_check( - info->Constants, sizeof(ValueInfo *), info->NumberOfConstants); - info->Constants[info->NumberOfConstants++] = item; -} - -/* Add a Variable ValueInfo to a ClassInfo */ -void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfVariables); - info->Variables = (ValueInfo **)array_size_check( - info->Variables, sizeof(ValueInfo *), info->NumberOfVariables); - info->Variables[info->NumberOfVariables++] = item; -} - -/* Add a Typedef ValueInfo to a ClassInfo */ -void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfTypedefs); - info->Typedefs = (ValueInfo **)array_size_check( - info->Typedefs, sizeof(ValueInfo *), info->NumberOfTypedefs); - info->Typedefs[info->NumberOfTypedefs++] = item; -} - -/* Add a UsingInfo to a ClassInfo */ -void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfUsings); - info->Usings = (UsingInfo **)array_size_check( - info->Usings, sizeof(UsingInfo *), info->NumberOfUsings); - info->Usings[info->NumberOfUsings++] = item; -} - - -/* Add a NamespaceInfo to a NamespaceInfo */ -void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info, NamespaceInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfNamespaces); - info->Namespaces = (NamespaceInfo **)array_size_check( - info->Namespaces, sizeof(NamespaceInfo *), info->NumberOfNamespaces); - info->Namespaces[info->NumberOfNamespaces++] = item; -} - -/* Add a ClassInfo to a NamespaceInfo */ -void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfClasses); - info->Classes = (ClassInfo **)array_size_check( - info->Classes, sizeof(ClassInfo *), info->NumberOfClasses); - info->Classes[info->NumberOfClasses++] = item; -} - -/* Add a FunctionInfo to a NamespaceInfo */ -void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfFunctions); - info->Functions = (FunctionInfo **)array_size_check( - info->Functions, sizeof(FunctionInfo *), info->NumberOfFunctions); - info->Functions[info->NumberOfFunctions++] = item; -} - -/* Add a EnumInfo to a NamespaceInfo */ -void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfEnums); - info->Enums = (EnumInfo **)array_size_check( - info->Enums, sizeof(EnumInfo *), info->NumberOfEnums); - info->Enums[info->NumberOfEnums++] = item; -} - -/* Add a Constant ValueInfo to a NamespaceInfo */ -void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfConstants); - info->Constants = (ValueInfo **)array_size_check( - info->Constants, sizeof(ValueInfo *), info->NumberOfConstants); - info->Constants[info->NumberOfConstants++] = item; -} - -/* Add a Variable ValueInfo to a NamespaceInfo */ -void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfVariables); - info->Variables = (ValueInfo **)array_size_check( - info->Variables, sizeof(ValueInfo *), info->NumberOfVariables); - info->Variables[info->NumberOfVariables++] = item; -} - -/* Add a Typedef ValueInfo to a NamespaceInfo */ -void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfTypedefs); - info->Typedefs = (ValueInfo **)array_size_check( - info->Typedefs, sizeof(ValueInfo *), info->NumberOfTypedefs); - info->Typedefs[info->NumberOfTypedefs++] = item; -} - -/* Add a UsingInfo to a NamespaceInfo */ -void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item) -{ - vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, - item->ItemType, info->NumberOfUsings); - info->Usings = (UsingInfo **)array_size_check( - info->Usings, sizeof(UsingInfo *), info->NumberOfUsings); - info->Usings[info->NumberOfUsings++] = item; -} - - -/* Add a Argument ValueInfo to a FunctionInfo */ -void vtkParse_AddArgumentToFunction(FunctionInfo *info, ValueInfo *item) -{ - info->Arguments = (ValueInfo **)array_size_check( - info->Arguments, sizeof(ValueInfo *), info->NumberOfArguments); - info->Arguments[info->NumberOfArguments++] = item; -} - - -/* Add a TemplateArg to a TemplateArgs */ -void vtkParse_AddArgumentToTemplate(TemplateArgs *info, TemplateArg *item) -{ - info->Arguments = (TemplateArg **)array_size_check( - info->Arguments, sizeof(TemplateArg *), info->NumberOfArguments); - info->Arguments[info->NumberOfArguments++] = item; } - -/* Utility method to add a const char pointer to an array */ -void vtkParse_AddStringToArray( - const char ***valueArray, int *count, const char *value) +/* Set a flag to recurse into included files */ +void vtkParse_SetRecursive(int option) { - *valueArray = (const char **)array_size_check( - (char **)*valueArray, sizeof(const char *), *count); - - (*valueArray)[(*count)++] = value; + if (option) + { + Recursive = 1; + } + else + { + Recursive = 0; + } } -/* duplicate the first n bytes of a string and terminate */ -const char *vtkParse_DuplicateString(const char *cp, size_t n) +/* Parse a header file and return a FileInfo struct */ +FileInfo *vtkParse_ParseFile( + const char *filename, FILE *ifile, FILE *errfile) { - char *res = NULL; - - res = vtkstralloc(n); - strncpy(res, cp, n); - res[n] = '\0'; + int i, j; + int ret; + FileInfo *file_info; + char *main_class; - return res; -} + /* "data" is a global variable used by the parser */ + data = (FileInfo *)malloc(sizeof(FileInfo)); + vtkParse_InitFile(data); + data->Strings = (StringCache *)malloc(sizeof(StringCache)); + vtkParse_InitStringCache(data->Strings); -/* Add default constructors if they do not already exist */ -void vtkParse_AddDefaultConstructors(ClassInfo *cls) -{ - FunctionInfo *func; - ValueInfo *arg; - size_t k; - int i, n; - int default_constructor = 1; - int copy_constructor = 1; - char *tname; - const char *ccname; + /* "preprocessor" is a global struct used by the parser */ + preprocessor = (PreprocessInfo *)malloc(sizeof(PreprocessInfo)); + vtkParsePreprocess_Init(preprocessor, filename); + vtkParsePreprocess_AddStandardMacros(preprocessor, VTK_PARSE_NATIVE); - if (cls == NULL || cls->Name == NULL) + /* add include files specified on the command line */ + for (i = 0; i < NumberOfIncludeDirectories; i++) { - return; + vtkParsePreprocess_IncludeDirectory(preprocessor, IncludeDirectories[i]); } - n = cls->NumberOfFunctions; - for (i = 0; i < n; i++) + /* add macros specified on the command line */ + for (i = 0; i < NumberOfDefinitions; i++) { - func = cls->Functions[i]; - if (func->Name && strcmp(func->Name, cls->Name) == 0) - { - default_constructor = 0; + const char *cp = Definitions[i]; - if (func->NumberOfArguments == 1) - { - arg = func->Arguments[0]; - if (arg->Class && - strcmp(arg->Class, cls->Name) == 0 && - (arg->Type & VTK_PARSE_POINTER_MASK) == 0) - { - copy_constructor = 0; - } - } + if (*cp == 'U') + { + vtkParsePreprocess_RemoveMacro(preprocessor, &cp[1]); } - } - - if (default_constructor) - { - func = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_InitFunction(func); - func->Class = vtkstrdup(cls->Name); - func->Name = vtkstrdup(cls->Name); - func->Signature = vtkstrcat(cls->Name, "()"); - vtkParse_AddFunctionToClass(cls, func); - } - - if (copy_constructor) - { - if (cls->Template) + else if (*cp == 'D') { - /* specialize the name */ - n = cls->Template->NumberOfArguments; - - k = strlen(cls->Name) + 2; - for (i = 0; i < n; i++) + const char *definition = &cp[1]; + while (*definition != '=' && *definition != '\0') { - k += strlen(cls->Template->Arguments[i]->Name) + 2; + definition++; } - tname = vtkstralloc(k); - strcpy(tname, cls->Name); - k = strlen(tname); - tname[k++] = '<'; - for (i = 0; i < n; i++) + if (*definition == '=') { - strcpy(&tname[k], cls->Template->Arguments[i]->Name); - k += strlen(cls->Template->Arguments[i]->Name); - if (i+1 < n) - { - tname[k++] = ','; - tname[k++] = ' '; - } + definition++; } - tname[k++] = '>'; - tname[k] = '\0'; - ccname = tname; - } - else - { - ccname = vtkstrdup(cls->Name); + else + { + definition = NULL; + } + vtkParsePreprocess_AddMacro(preprocessor, &cp[1], definition); } - - func = (FunctionInfo *)malloc(sizeof(FunctionInfo)); - vtkParse_InitFunction(func); - func->Class = vtkstrdup(cls->Name); - func->Name = vtkstrdup(cls->Name); - func->Signature = vtkstrcat4(cls->Name, "(const &", ccname, ")"); - arg = (ValueInfo *)malloc(sizeof(ValueInfo)); - vtkParse_InitValue(arg); - arg->Type = (VTK_PARSE_OBJECT_REF | VTK_PARSE_CONST); - arg->Class = ccname; - vtkParse_AddArgumentToFunction(func, arg); - vtkParse_AddFunctionToClass(cls, func); - } -} - -/* Set a flag to ignore BTX/ETX markers in the files */ -void vtkParse_SetIgnoreBTX(int option) -{ - if (option) - { - IgnoreBTX = 1; } - else - { - IgnoreBTX = 0; - } -} -/* Parse a header file and return a FileInfo struct */ -FileInfo *vtkParse_ParseFile( - const char *filename, FILE *ifile, FILE *errfile) -{ - int i, j; - int lineno; - int ret; - FileInfo *file_info; - char *main_class; - const char **include_dirs; - - vtkParse_InitFile(&data); - - i = preprocessor.NumberOfIncludeDirectories; - include_dirs = preprocessor.IncludeDirectories; - preprocessor.NumberOfIncludeDirectories = 0; - preprocessor.IncludeDirectories = NULL; - vtkParsePreprocess_InitPreprocess(&preprocessor); - vtkParsePreprocess_AddStandardMacros(&preprocessor, VTK_PARSE_NATIVE); - preprocessor.FileName = vtkstrdup(filename); - preprocessor.NumberOfIncludeDirectories = i; - preprocessor.IncludeDirectories = include_dirs; /* should explicitly check for vtkConfigure.h, or even explicitly load it */ #ifdef VTK_USE_64BIT_IDS - vtkParsePreprocess_AddMacro(&preprocessor, "VTK_USE_64BIT_IDS", "1"); + vtkParsePreprocess_AddMacro(preprocessor, "VTK_USE_64BIT_IDS", NULL); #endif - data.FileName = vtkstrdup(filename); + data->FileName = vtkstrdup(filename); clearComment(); namespaceDepth = 0; currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo)); vtkParse_InitNamespace(currentNamespace); - data.Contents = currentNamespace; + data->Contents = currentNamespace; templateDepth = 0; currentTemplate = NULL; @@ -10286,20 +9263,16 @@ FileInfo *vtkParse_ParseFile( yyset_in(ifile); yyset_out(errfile); ret = yyparse(); - lineno = yyget_lineno(); - yylex_destroy(); - - free(currentFunction); if (ret) { - fprintf(errfile, - "*** SYNTAX ERROR found in parsing the header file %s " - "before line %d ***\n", - filename, lineno); + print_parser_error("syntax error", NULL, 0); return NULL; } + free(currentFunction); + yylex_destroy(); + /* The main class name should match the file name */ i = strlen(filename); j = i; @@ -10325,15 +9298,18 @@ FileInfo *vtkParse_ParseFile( { if (strcmp(currentNamespace->Classes[i]->Name, main_class) == 0) { - data.MainClass = currentNamespace->Classes[i]; + data->MainClass = currentNamespace->Classes[i]; break; } } - free(main_class); - file_info = (FileInfo *)malloc(sizeof(FileInfo)); - memcpy(file_info, &data, sizeof(FileInfo)); + vtkParsePreprocess_Free(preprocessor); + preprocessor = NULL; + macroName = NULL; + + file_info = data; + data = NULL; return file_info; } @@ -10381,13 +9357,13 @@ int vtkParse_ReadHints(FileInfo *file_info, FILE *hfile, FILE *errfile) { func_info = class_info->Functions[j]; - if (func_info->HaveHint == 0 && func_info->Name && - (strcmp(h_func, func_info->Name) == 0) && - (type == ((func_info->ReturnType & ~VTK_PARSE_REF) & + if ((strcmp(h_func, func_info->Name) == 0) && + func_info->ReturnValue && + (type == ((func_info->ReturnValue->Type & ~VTK_PARSE_REF) & VTK_PARSE_UNQUALIFIED_TYPE))) { /* types that hints are accepted for */ - switch (func_info->ReturnType & VTK_PARSE_UNQUALIFIED_TYPE) + switch (func_info->ReturnValue->Type & VTK_PARSE_UNQUALIFIED_TYPE) { case VTK_PARSE_FLOAT_PTR: case VTK_PARSE_VOID_PTR: @@ -10407,18 +9383,20 @@ int vtkParse_ReadHints(FileInfo *file_info, FILE *hfile, FILE *errfile) case VTK_PARSE_UNSIGNED_CHAR_PTR: case VTK_PARSE_CHAR_PTR: { - if (func_info->ReturnValue && - func_info->ReturnValue->NumberOfDimensions == 0) + if (func_info->ReturnValue->NumberOfDimensions == 0) { char text[64]; - func_info->HaveHint = 1; - func_info->HintSize = h_value; - func_info->ReturnValue->Count = h_value; sprintf(text, "%i", h_value); + func_info->ReturnValue->Count = h_value; vtkParse_AddStringToArray( &func_info->ReturnValue->Dimensions, &func_info->ReturnValue->NumberOfDimensions, - vtkstrdup(text)); + vtkParse_CacheString( + file_info->Strings, text, strlen(text))); +#ifndef VTK_PARSE_LEGACY_REMOVE + func_info->HaveHint = 1; + func_info->HintSize = h_value; +#endif } break; } @@ -10440,56 +9418,88 @@ int vtkParse_ReadHints(FileInfo *file_info, FILE *hfile, FILE *errfile) /* Free the FileInfo struct returned by vtkParse_ParseFile() */ void vtkParse_Free(FileInfo *file_info) { - vtkParse_FreeNamespace(file_info->Contents); - file_info->Contents = NULL; -} - -/* Set a property before parsing */ -void vtkParse_SetClassProperty( - const char *classname, const char *property) -{ - /* the only property recognized */ - if (strcmp(property, "concrete") == 0 || - strcmp(property, "CONCRETE") == 0 || - strcmp(property, "Concrete") == 0) - { - vtkParse_AddStringToArray(&ConcreteClasses, - &NumberOfConcreteClasses, - vtkstrdup(classname)); - } + vtkParse_FreeFile(file_info); + vtkParse_FreeStringCache(file_info->Strings); + free(file_info->Strings); + free(file_info); } /** Define a preprocessor macro. Function macros are not supported. */ void vtkParse_DefineMacro(const char *name, const char *definition) { - vtkParsePreprocess_AddMacro(&preprocessor, name, definition); + size_t n = vtkidlen(name); + size_t l; + char *cp; + + if (definition == NULL) + { + definition = ""; + } + + l = n + strlen(definition) + 3; + cp = (char *)malloc(l); + cp[0] = 'D'; + strncpy(&cp[1], name, n); + cp[n+1] = '\0'; + if (definition[0] != '\0') + { + cp[n+1] = '='; + strcpy(&cp[n+2], definition); + } + cp[l] = '\0'; + + vtkParse_AddStringToArray(&Definitions, &NumberOfDefinitions, cp); } /** Undefine a preprocessor macro. */ void vtkParse_UndefineMacro(const char *name) { - vtkParsePreprocess_RemoveMacro(&preprocessor, name); + size_t n = vtkidlen(name); + char *cp; + + cp = (char *)malloc(n+2); + cp[0] = 'U'; + strncpy(&cp[1], name, n); + cp[n+1] = '\0'; + + vtkParse_AddStringToArray(&Definitions, &NumberOfDefinitions, cp); } /** Add an include directory, for use with the "-I" option. */ void vtkParse_IncludeDirectory(const char *dirname) { - vtkParsePreprocess_IncludeDirectory(&preprocessor, dirname); + size_t n = strlen(dirname); + char *cp; + int i; + + for (i = 0; i < NumberOfIncludeDirectories; i++) + { + if (strncmp(IncludeDirectories[i], dirname, n) == 0 && + IncludeDirectories[i][n] == '\0') + { + return; + } + } + + cp = (char *)malloc(n+1); + strcpy(cp, dirname); + + vtkParse_AddStringToArray( + &IncludeDirectories, &NumberOfIncludeDirectories, cp); } /** Return the full path to a header file. */ const char *vtkParse_FindIncludeFile(const char *filename) { + static PreprocessInfo info = {0, 0, 0, 0, 0, 0, 0, 0, 0}; int val; - return vtkParsePreprocess_FindIncludeFile(&preprocessor, filename, 0, &val); -} + int i; -/** Simple utility for mapping VTK types to VTK_PARSE types */ -unsigned int vtkParse_MapType(int vtktype) -{ - if (vtktype > 0 && vtktype <= VTK_UNICODE_STRING) + /* add include files specified on the command line */ + for (i = 0; i < NumberOfIncludeDirectories; i++) { - return vtkParseTypeMap[vtktype]; + vtkParsePreprocess_IncludeDirectory(&info, IncludeDirectories[i]); } - return 0; + + return vtkParsePreprocess_FindIncludeFile(&info, filename, 0, &val); } diff --git a/src/ParaView/vtkParseData.c b/src/ParaView/vtkParseData.c new file mode 100644 index 00000000..6b27e862 --- /dev/null +++ b/src/ParaView/vtkParseData.c @@ -0,0 +1,935 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkParseData.c + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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. + +=========================================================================*/ +/*------------------------------------------------------------------------- + Copyright (c) 2010 David Gobbi. + + Contributed to the VisualizationToolkit by the author in May 2010 + under the terms of the Visualization Toolkit 2008 copyright. +-------------------------------------------------------------------------*/ + +#include "vtkParseData.h" +#include +#include + +/* Initialize the FileInfo struct */ +void vtkParse_InitFile(FileInfo *file_info) +{ + /* file info */ + file_info->FileName = NULL; + file_info->NameComment = NULL; + file_info->Description = NULL; + file_info->Caveats = NULL; + file_info->SeeAlso = NULL; + + file_info->NumberOfIncludes = 0; + file_info->Includes = NULL; + file_info->MainClass = NULL; + file_info->Contents = NULL; + + file_info->Strings = NULL; +} + +/* Free the FileInfo struct */ +void vtkParse_FreeFile(FileInfo *file_info) +{ + int i, n; + + n = file_info->NumberOfIncludes; + for (i = 0; i < n; i++) + { + vtkParse_FreeFile(file_info->Includes[i]); + free(file_info->Includes[i]); + } + if (file_info->Includes) + { + free(file_info->Includes); + } + + vtkParse_FreeNamespace(file_info->Contents); + file_info->Contents = NULL; +} + +/* Initialize a TemplateInfo struct */ +void vtkParse_InitTemplate(TemplateInfo *info) +{ + info->NumberOfParameters = 0; + info->Parameters = NULL; +} + +/* Copy a TemplateInfo struct */ +void vtkParse_CopyTemplate(TemplateInfo *info, const TemplateInfo *orig) +{ + int i, n; + + n = orig->NumberOfParameters; + info->NumberOfParameters = n; + info->Parameters = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); + + for (i = 0; i < n; i++) + { + info->Parameters[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(info->Parameters[i], orig->Parameters[i]); + } +} + +/* Free a TemplateInfo struct */ +void vtkParse_FreeTemplate(TemplateInfo *template_info) +{ + int j, m; + + m = template_info->NumberOfParameters; + for (j = 0; j < m; j++) + { + vtkParse_FreeValue(template_info->Parameters[j]); + } + + free(template_info); +} + + +/* Initialize a Function struct */ +void vtkParse_InitFunction(FunctionInfo *func) +{ +#ifndef VTK_PARSE_LEGACY_REMOVE + int i; +#endif + + func->ItemType = VTK_FUNCTION_INFO; + func->Access = VTK_ACCESS_PUBLIC; + func->Name = NULL; + func->Comment = NULL; + func->Class = NULL; + func->Signature = NULL; + func->Template = NULL; + func->NumberOfParameters = 0; + func->Parameters = NULL; + func->ReturnValue = NULL; + func->Macro = NULL; + func->SizeHint = NULL; + func->IsStatic = 0; + func->IsVirtual = 0; + func->IsPureVirtual = 0; + func->IsOperator = 0; + func->IsVariadic = 0; + func->IsConst = 0; + func->IsExplicit = 0; + func->IsLegacy = 0; + +#ifndef VTK_PARSE_LEGACY_REMOVE + /* everything below here is legacy information, * + * maintained only for backwards compatibility */ + func->NumberOfArguments = 0; + func->ReturnType = VTK_PARSE_VOID; + func->ReturnClass = NULL; + func->HaveHint = 0; + func->HintSize = 0; + func->ArrayFailure = 0; + func->IsPublic = 0; + func->IsProtected = 0; + + for (i = 0; i < MAX_ARGS; i++) + { + func->ArgTypes[i] = 0; + func->ArgClasses[i] = 0; + func->ArgCounts[i] = 0; + } +#endif +} + +/* Copy a Function struct */ +void vtkParse_CopyFunction(FunctionInfo *func, const FunctionInfo *orig) +{ + int i, n; + + func->ItemType = orig->ItemType; + func->Access = orig->Access; + func->Name = orig->Name; + func->Comment = orig->Comment; + func->Class = orig->Class; + func->Signature = orig->Signature; + func->Template = NULL; + + if (orig->Template) + { + func->Template = (TemplateInfo *)malloc(sizeof(TemplateInfo)); + vtkParse_CopyTemplate(func->Template, orig->Template); + } + + n = orig->NumberOfParameters; + func->NumberOfParameters = n; + if (n) + { + func->Parameters = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); + for (i = 0; i < n; i++) + { + func->Parameters[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(func->Parameters[i], orig->Parameters[i]); + } + } + + func->ReturnValue = NULL; + if (orig->ReturnValue) + { + func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(func->ReturnValue, orig->ReturnValue); + } + + func->Macro = orig->Macro; + func->SizeHint = orig->SizeHint; + func->IsStatic = orig->IsStatic; + func->IsVirtual = orig->IsVirtual; + func->IsPureVirtual = orig->IsPureVirtual; + func->IsOperator = orig->IsOperator; + func->IsVariadic = orig->IsVariadic; + func->IsConst = orig->IsConst; + func->IsExplicit = orig->IsExplicit; + func->IsLegacy = orig->IsLegacy; + +#ifndef VTK_PARSE_LEGACY_REMOVE + /* everything below here is legacy information, * + * maintained only for backwards compatibility */ + func->NumberOfArguments = orig->NumberOfArguments; + func->ReturnType = orig->ReturnType; + func->ReturnClass = orig->ReturnClass; + func->HaveHint = orig->HaveHint; + func->HintSize = orig->HintSize; + func->ArrayFailure = orig->ArrayFailure; + func->IsPublic = orig->IsPublic; + func->IsProtected = orig->IsProtected; + + for (i = 0; i < MAX_ARGS; i++) + { + func->ArgTypes[i] = orig->ArgTypes[i]; + func->ArgClasses[i] = orig->ArgClasses[i]; + func->ArgCounts[i] = orig->ArgCounts[i]; + } +#endif +} + +/* Free a Function struct */ +void vtkParse_FreeFunction(FunctionInfo *function_info) +{ + int j, m; + + if (function_info->Template) + { + vtkParse_FreeTemplate(function_info->Template); + } + + m = function_info->NumberOfParameters; + for (j = 0; j < m; j++) { vtkParse_FreeValue(function_info->Parameters[j]); } + if (m > 0) { free(function_info->Parameters); } + + if (function_info->ReturnValue) + { + vtkParse_FreeValue(function_info->ReturnValue); + } + + free(function_info); +} + + +/* Initialize a Value struct */ +void vtkParse_InitValue(ValueInfo *val) +{ + val->ItemType = VTK_VARIABLE_INFO; + val->Access = VTK_ACCESS_PUBLIC; + val->Name = NULL; + val->Comment = NULL; + val->Value = NULL; + val->Type = 0; + val->Class = NULL; + val->Count = 0; + val->CountHint = NULL; + val->NumberOfDimensions = 0; + val->Dimensions = NULL; + val->Function = NULL; + val->Template = NULL; + val->IsStatic = 0; + val->IsEnum = 0; +} + +/* Copy a Value struct */ +void vtkParse_CopyValue(ValueInfo *val, const ValueInfo *orig) +{ + int i, n; + + val->ItemType = orig->ItemType; + val->Access = orig->Access; + val->Name = orig->Name; + val->Comment = orig->Comment; + val->Value = orig->Value; + val->Type = orig->Type; + val->Class = orig->Class; + val->Count = orig->Count; + val->CountHint = orig->CountHint; + + n = orig->NumberOfDimensions; + val->NumberOfDimensions = n; + if (n) + { + val->Dimensions = (const char **)malloc(n*sizeof(char *)); + for (i = 0; i < n; i++) + { + val->Dimensions[i] = orig->Dimensions[i]; + } + } + + val->Function = NULL; + if (orig->Function) + { + val->Function = (FunctionInfo *)malloc(sizeof(FunctionInfo)); + vtkParse_CopyFunction(val->Function, orig->Function); + } + + val->Template = NULL; + if (orig->Template) + { + val->Template = (TemplateInfo *)malloc(sizeof(TemplateInfo)); + vtkParse_CopyTemplate(val->Template, orig->Template); + } + + val->IsStatic = orig->IsStatic; + val->IsEnum = orig->IsEnum; +} + +/* Free a Value struct */ +void vtkParse_FreeValue(ValueInfo *value_info) +{ + if (value_info->NumberOfDimensions) + { + free((char **)value_info->Dimensions); + } + if (value_info->Function) + { + vtkParse_FreeFunction(value_info->Function); + } + if (value_info->Template) + { + vtkParse_FreeTemplate(value_info->Template); + } + + free(value_info); +} + + +/* Initialize an Enum struct */ +void vtkParse_InitEnum(EnumInfo *item) +{ + item->ItemType = VTK_ENUM_INFO; + item->Access = VTK_ACCESS_PUBLIC; + item->Name = NULL; + item->Comment = NULL; +} + +/* Copy an Enum struct */ +void vtkParse_CopyEnum(EnumInfo *item, const EnumInfo *orig) +{ + item->ItemType = orig->ItemType; + item->Access = orig->Access; + item->Name = orig->Name; + item->Comment = orig->Comment; +} + +/* Free an Enum struct */ +void vtkParse_FreeEnum(EnumInfo *enum_info) +{ + free(enum_info); +} + + +/* Initialize a Using struct */ +void vtkParse_InitUsing(UsingInfo *item) +{ + item->ItemType = VTK_USING_INFO; + item->Access = VTK_ACCESS_PUBLIC; + item->Name = NULL; + item->Comment = NULL; + item->Scope = NULL; +} + +/* Copy a Using struct */ +void vtkParse_CopyUsing(UsingInfo *item, const UsingInfo *orig) +{ + item->ItemType = orig->ItemType; + item->Access = orig->Access; + item->Name = orig->Name; + item->Comment = orig->Comment; + item->Scope = orig->Scope; +} + +/* Free a Using struct */ +void vtkParse_FreeUsing(UsingInfo *using_info) +{ + free(using_info); +} + + +/* Initialize a Class struct */ +void vtkParse_InitClass(ClassInfo *cls) +{ + cls->ItemType = VTK_CLASS_INFO; + cls->Access = VTK_ACCESS_PUBLIC; + cls->Name = NULL; + cls->Comment = NULL; + cls->Template = NULL; + cls->NumberOfSuperClasses = 0; + cls->SuperClasses = NULL; + cls->NumberOfItems = 0; + cls->Items = NULL; + cls->NumberOfClasses = 0; + cls->Classes = NULL; + cls->NumberOfFunctions = 0; + cls->Functions = NULL; + cls->NumberOfConstants = 0; + cls->Constants = NULL; + cls->NumberOfVariables = 0; + cls->Variables = NULL; + cls->NumberOfEnums = 0; + cls->Enums = NULL; + cls->NumberOfTypedefs = 0; + cls->Typedefs = NULL; + cls->NumberOfUsings = 0; + cls->Usings = NULL; + cls->NumberOfNamespaces = 0; + cls->Namespaces = NULL; + cls->IsAbstract = 0; + cls->HasDelete = 0; +} + +/* Copy a Class struct */ +void vtkParse_CopyClass(ClassInfo *cls, const ClassInfo *orig) +{ + int i, n; + + cls->ItemType = orig->ItemType; + cls->Access = orig->Access; + cls->Name = orig->Name; + cls->Comment = orig->Comment; + cls->Template = NULL; + + if (orig->Template) + { + cls->Template = (TemplateInfo *)malloc(sizeof(TemplateInfo)); + vtkParse_CopyTemplate(cls->Template, orig->Template); + } + + n = orig->NumberOfSuperClasses; + cls->NumberOfSuperClasses = n; + if (n) + { + cls->SuperClasses = (const char **)malloc(n*sizeof(char *)); + for (i = 0; i < n; i++) + { + cls->SuperClasses[i] = orig->SuperClasses[i]; + } + } + + n = orig->NumberOfItems; + cls->NumberOfItems = n; + if (n) + { + cls->Items = (ItemInfo *)malloc(n*sizeof(ItemInfo)); + for (i = 0; i < n; i++) + { + cls->Items[i].Type = orig->Items[i].Type; + cls->Items[i].Index = orig->Items[i].Index; + } + } + + n = orig->NumberOfClasses; + cls->NumberOfClasses = n; + if (n) + { + cls->Classes = (ClassInfo **)malloc(n*sizeof(ClassInfo *)); + for (i = 0; i < n; i++) + { + cls->Classes[i] = (ClassInfo *)malloc(sizeof(ClassInfo)); + vtkParse_CopyClass(cls->Classes[i], orig->Classes[i]); + } + } + + n = orig->NumberOfFunctions; + cls->NumberOfFunctions = n; + if (n) + { + cls->Functions = (FunctionInfo **)malloc(n*sizeof(FunctionInfo *)); + for (i = 0; i < n; i++) + { + cls->Functions[i] = (FunctionInfo *)malloc(sizeof(FunctionInfo)); + vtkParse_CopyFunction(cls->Functions[i], orig->Functions[i]); + } + } + + n = orig->NumberOfConstants; + cls->NumberOfConstants = n; + if (n) + { + cls->Constants = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); + for (i = 0; i < n; i++) + { + cls->Constants[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(cls->Constants[i], orig->Constants[i]); + } + } + + n = orig->NumberOfVariables; + cls->NumberOfVariables = n; + if (n) + { + cls->Variables = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); + for (i = 0; i < n; i++) + { + cls->Variables[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(cls->Variables[i], orig->Variables[i]); + } + } + + n = orig->NumberOfEnums; + cls->NumberOfEnums = n; + if (n) + { + cls->Enums = (EnumInfo **)malloc(n*sizeof(EnumInfo *)); + for (i = 0; i < n; i++) + { + cls->Enums[i] = (EnumInfo *)malloc(sizeof(EnumInfo)); + vtkParse_CopyEnum(cls->Enums[i], orig->Enums[i]); + } + } + + n = orig->NumberOfTypedefs; + cls->NumberOfTypedefs = n; + if (n) + { + cls->Typedefs = (ValueInfo **)malloc(n*sizeof(ValueInfo *)); + for (i = 0; i < n; i++) + { + cls->Typedefs[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_CopyValue(cls->Typedefs[i], orig->Typedefs[i]); + } + } + + n = orig->NumberOfUsings; + cls->NumberOfUsings = n; + if (n) + { + cls->Usings = (UsingInfo **)malloc(n*sizeof(UsingInfo *)); + for (i = 0; i < n; i++) + { + cls->Usings[i] = (UsingInfo *)malloc(sizeof(UsingInfo)); + vtkParse_CopyUsing(cls->Usings[i], orig->Usings[i]); + } + } + + n = orig->NumberOfNamespaces; + cls->NumberOfNamespaces = n; + if (n) + { + cls->Namespaces = (NamespaceInfo **)malloc(n*sizeof(NamespaceInfo *)); + for (i = 0; i < n; i++) + { + cls->Namespaces[i] = (NamespaceInfo *)malloc(sizeof(NamespaceInfo)); + vtkParse_CopyNamespace(cls->Namespaces[i], orig->Namespaces[i]); + } + } + + cls->IsAbstract = orig->IsAbstract; + cls->HasDelete = orig->HasDelete; +} + +/* Free a Class struct */ +void vtkParse_FreeClass(ClassInfo *class_info) +{ + int j, m; + + if (class_info->Template) { vtkParse_FreeTemplate(class_info->Template); } + + m = class_info->NumberOfSuperClasses; + if (m > 0) { free((char **)class_info->SuperClasses); } + + m = class_info->NumberOfClasses; + for (j = 0; j < m; j++) { vtkParse_FreeClass(class_info->Classes[j]); } + if (m > 0) { free(class_info->Classes); } + + m = class_info->NumberOfFunctions; + for (j = 0; j < m; j++) { vtkParse_FreeFunction(class_info->Functions[j]); } + if (m > 0) { free(class_info->Functions); } + + m = class_info->NumberOfConstants; + for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Constants[j]); } + if (m > 0) { free(class_info->Constants); } + + m = class_info->NumberOfVariables; + for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Variables[j]); } + if (m > 0) { free(class_info->Variables); } + + m = class_info->NumberOfEnums; + for (j = 0; j < m; j++) { vtkParse_FreeEnum(class_info->Enums[j]); } + if (m > 0) { free(class_info->Enums); } + + m = class_info->NumberOfTypedefs; + for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Typedefs[j]); } + if (m > 0) { free(class_info->Typedefs); } + + m = class_info->NumberOfUsings; + for (j = 0; j < m; j++) { vtkParse_FreeUsing(class_info->Usings[j]); } + if (m > 0) { free(class_info->Usings); } + + m = class_info->NumberOfNamespaces; + for (j = 0; j < m; j++) { vtkParse_FreeNamespace(class_info->Namespaces[j]); } + if (m > 0) { free(class_info->Namespaces); } + + if (class_info->NumberOfItems > 0) { free(class_info->Items); } + + free(class_info); +} + + +/* Initialize a Namespace struct */ +void vtkParse_InitNamespace(NamespaceInfo *name_info) +{ + vtkParse_InitClass(name_info); + name_info->ItemType = VTK_NAMESPACE_INFO; +} + +/* Copy a Namespace struct */ +void vtkParse_CopyNamespace(NamespaceInfo *ninfo, const NamespaceInfo *orig) +{ + vtkParse_CopyClass(ninfo, orig); +} + +/* Free a Namespace struct */ +void vtkParse_FreeNamespace(NamespaceInfo *namespace_info) +{ + vtkParse_FreeClass(namespace_info); +} + + +/* This method is used for extending dynamic arrays in a progression of + * powers of two. If "n" reaches a power of two, then the array size is + * doubled so that "n" can be safely incremented. */ +static void *array_size_check( + void *arraymem, size_t size, int n) +{ + /* if empty, alloc for the first time */ + if (n == 0) + { + return malloc(size); + } + /* if count is power of two, reallocate with double size */ + else if ((n & (n-1)) == 0) + { + return realloc(arraymem, (n << 1)*size); + } + + /* no reallocation, just return the original array */ + return arraymem; +} + + +/* Utility method to add an included file to a FileInfo */ +void vtkParse_AddIncludeToFile( + FileInfo *file_info, FileInfo *include_file) +{ + file_info->Includes = (FileInfo **)array_size_check( + (FileInfo **)file_info->Includes, sizeof(FileInfo *), + file_info->NumberOfIncludes); + + file_info->Includes[file_info->NumberOfIncludes++] = include_file; + + if (!include_file->Strings) + { + include_file->Strings = file_info->Strings; + } +} + +/* Utility method to add a const char pointer to an array */ +void vtkParse_AddStringToArray( + const char ***valueArray, int *count, const char *value) +{ + *valueArray = (const char **)array_size_check( + (char **)*valueArray, sizeof(const char *), *count); + + (*valueArray)[(*count)++] = value; +} + +/* Utility method to add an item to an array */ +void vtkParse_AddItemToArray( + ItemInfo **valueArray, int *count, parse_item_t type, int idx) +{ + int n = *count; + ItemInfo *values = *valueArray; + + values = (ItemInfo *)array_size_check(values, sizeof(ItemInfo), n); + + values[n].Type = type; + values[n].Index = idx; + *count = n+1; + *valueArray = values; +} + +/* Add a ClassInfo to a ClassInfo */ +void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfClasses); + info->Classes = (ClassInfo **)array_size_check( + info->Classes, sizeof(ClassInfo *), info->NumberOfClasses); + info->Classes[info->NumberOfClasses++] = item; +} + +/* Add a FunctionInfo to a ClassInfo */ +void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfFunctions); + info->Functions = (FunctionInfo **)array_size_check( + info->Functions, sizeof(FunctionInfo *), info->NumberOfFunctions); + info->Functions[info->NumberOfFunctions++] = item; +} + +/* Add a EnumInfo to a ClassInfo */ +void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfEnums); + info->Enums = (EnumInfo **)array_size_check( + info->Enums, sizeof(EnumInfo *), info->NumberOfEnums); + info->Enums[info->NumberOfEnums++] = item; +} + +/* Add a Constant ValueInfo to a ClassInfo */ +void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfConstants); + info->Constants = (ValueInfo **)array_size_check( + info->Constants, sizeof(ValueInfo *), info->NumberOfConstants); + info->Constants[info->NumberOfConstants++] = item; +} + +/* Add a Variable ValueInfo to a ClassInfo */ +void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfVariables); + info->Variables = (ValueInfo **)array_size_check( + info->Variables, sizeof(ValueInfo *), info->NumberOfVariables); + info->Variables[info->NumberOfVariables++] = item; +} + +/* Add a Typedef ValueInfo to a ClassInfo */ +void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfTypedefs); + info->Typedefs = (ValueInfo **)array_size_check( + info->Typedefs, sizeof(ValueInfo *), info->NumberOfTypedefs); + info->Typedefs[info->NumberOfTypedefs++] = item; +} + +/* Add a UsingInfo to a ClassInfo */ +void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfUsings); + info->Usings = (UsingInfo **)array_size_check( + info->Usings, sizeof(UsingInfo *), info->NumberOfUsings); + info->Usings[info->NumberOfUsings++] = item; +} + + +/* Add a NamespaceInfo to a NamespaceInfo */ +void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info, NamespaceInfo *item) +{ + vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems, + item->ItemType, info->NumberOfNamespaces); + info->Namespaces = (NamespaceInfo **)array_size_check( + info->Namespaces, sizeof(NamespaceInfo *), info->NumberOfNamespaces); + info->Namespaces[info->NumberOfNamespaces++] = item; +} + +/* Add a ClassInfo to a NamespaceInfo */ +void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item) +{ + vtkParse_AddClassToClass(info, item); +} + +/* Add a FunctionInfo to a NamespaceInfo */ +void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item) +{ + vtkParse_AddFunctionToClass(info, item); +} + +/* Add a EnumInfo to a NamespaceInfo */ +void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item) +{ + vtkParse_AddEnumToClass(info, item); +} + +/* Add a Constant ValueInfo to a NamespaceInfo */ +void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item) +{ + vtkParse_AddConstantToClass(info, item); +} + +/* Add a Variable ValueInfo to a NamespaceInfo */ +void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item) +{ + vtkParse_AddVariableToClass(info, item); +} + +/* Add a Typedef ValueInfo to a NamespaceInfo */ +void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item) +{ + vtkParse_AddTypedefToClass(info, item); +} + +/* Add a UsingInfo to a NamespaceInfo */ +void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item) +{ + vtkParse_AddUsingToClass(info, item); +} + + +/* Add a ValueInfo parameter to a FunctionInfo */ +void vtkParse_AddParameterToFunction(FunctionInfo *info, ValueInfo *item) +{ + info->Parameters = (ValueInfo **)array_size_check( + info->Parameters, sizeof(ValueInfo *), info->NumberOfParameters); + info->Parameters[info->NumberOfParameters++] = item; +} + + +/* Add a ValueInfo to a TemplateInfo */ +void vtkParse_AddParameterToTemplate(TemplateInfo *info, ValueInfo *item) +{ + info->Parameters = (ValueInfo **)array_size_check( + info->Parameters, sizeof(ValueInfo *), info->NumberOfParameters); + info->Parameters[info->NumberOfParameters++] = item; +} + + +/* Add default constructors if they do not already exist */ +void vtkParse_AddDefaultConstructors(ClassInfo *cls, StringCache *cache) +{ + FunctionInfo *func; + ValueInfo *param; + size_t k, l; + int i, n; + int default_constructor = 1; + int copy_constructor = 1; + char *tname; + const char *ccname; + + if (cls == NULL || cls->Name == NULL) + { + return; + } + + n = cls->NumberOfFunctions; + for (i = 0; i < n; i++) + { + func = cls->Functions[i]; + if (func->Name && strcmp(func->Name, cls->Name) == 0) + { + default_constructor = 0; + + if (func->NumberOfParameters == 1) + { + param = func->Parameters[0]; + if (param->Class && + strcmp(param->Class, cls->Name) == 0 && + (param->Type & VTK_PARSE_POINTER_MASK) == 0) + { + copy_constructor = 0; + } + } + } + } + + if (default_constructor) + { + func = (FunctionInfo *)malloc(sizeof(FunctionInfo)); + vtkParse_InitFunction(func); + func->Class = cls->Name; + func->Name = cls->Name; + k = strlen(cls->Name); + tname = vtkParse_NewString(cache, k + 2); + strcpy(tname, cls->Name); + strcpy(&tname[k], "()"); + func->Signature = tname; + vtkParse_AddFunctionToClass(cls, func); + } + + if (copy_constructor) + { + ccname = cls->Name; + + if (cls->Template) + { + /* specialize the name */ + n = cls->Template->NumberOfParameters; + + k = strlen(cls->Name) + 2; + for (i = 0; i < n; i++) + { + if (cls->Template->Parameters[i]->Name) + { + k += strlen(cls->Template->Parameters[i]->Name) + 2; + } + } + tname = vtkParse_NewString(cache, k); + strcpy(tname, cls->Name); + k = strlen(tname); + tname[k++] = '<'; + for (i = 0; i < n; i++) + { + if (cls->Template->Parameters[i]->Name) + { + strcpy(&tname[k], cls->Template->Parameters[i]->Name); + k += strlen(cls->Template->Parameters[i]->Name); + } + if (i+1 < n) + { + tname[k++] = ','; + tname[k++] = ' '; + } + } + tname[k++] = '>'; + tname[k] = '\0'; + ccname = tname; + } + + func = (FunctionInfo *)malloc(sizeof(FunctionInfo)); + vtkParse_InitFunction(func); + func->Class = cls->Name; + func->Name = cls->Name; + k = strlen(cls->Name); + l = strlen(ccname); + tname = vtkParse_NewString(cache, k + l + 9); + strcpy(tname, cls->Name); + strcpy(&tname[k], "(const &"); + strcpy(&tname[k+8], ccname); + strcpy(&tname[k+8+l], ")"); + func->Signature = tname; + param = (ValueInfo *)malloc(sizeof(ValueInfo)); + vtkParse_InitValue(param); + param->Type = (VTK_PARSE_OBJECT_REF | VTK_PARSE_CONST); + param->Class = ccname; + vtkParse_AddParameterToFunction(func, param); + vtkParse_AddFunctionToClass(cls, func); + } +} diff --git a/src/ParaView/vtkParseData.h b/src/ParaView/vtkParseData.h new file mode 100644 index 00000000..cd03e67c --- /dev/null +++ b/src/ParaView/vtkParseData.h @@ -0,0 +1,335 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkParseData.h + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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. + +=========================================================================*/ +/*------------------------------------------------------------------------- + Copyright (c) 2010 David Gobbi. + + Contributed to the VisualizationToolkit by the author in May 2010 + under the terms of the Visualization Toolkit 2008 copyright. +-------------------------------------------------------------------------*/ + +/* + Data structures used by vtkParse. +*/ + +#ifndef VTK_PARSE_DATA_H +#define VTK_PARSE_DATA_H + +#include "vtkParseType.h" +#include "vtkParseString.h" + +/* legacy */ +#ifndef VTK_PARSE_LEGACY_REMOVE +#define MAX_ARGS 20 +#endif + +/** + * Access flags + */ +typedef enum _parse_access_t +{ + VTK_ACCESS_PUBLIC = 0, + VTK_ACCESS_PROTECTED = 1, + VTK_ACCESS_PRIVATE = 2 +} parse_access_t; + +/** + * ItemType constants + */ +typedef enum _parse_item_t +{ + VTK_NAMESPACE_INFO = 1, + VTK_CLASS_INFO = 2, + VTK_STRUCT_INFO = 3, + VTK_UNION_INFO = 4, + VTK_ENUM_INFO = 5, + VTK_FUNCTION_INFO = 6, + VTK_VARIABLE_INFO = 7, + VTK_CONSTANT_INFO = 8, + VTK_TYPEDEF_INFO = 9, + VTK_USING_INFO = 10 +} parse_item_t; + +/** + * ItemInfo just contains an index + */ +typedef struct _ItemInfo +{ + parse_item_t Type; + int Index; +} ItemInfo; + +/* forward declarations */ +struct _ValueInfo; +struct _FunctionInfo; +struct _FileInfo; +typedef struct _ValueInfo ValueInfo; +typedef struct _FunctionInfo FunctionInfo; +typedef struct _FileInfo FileInfo; + +/** + * TemplateInfo holds template definitions + */ +typedef struct _TemplateInfo +{ + int NumberOfParameters; + ValueInfo **Parameters; +} TemplateInfo; + +/** + * ValueInfo is for typedefs, constants, variables, + * function parameters, and return values + * + * Note that Dimensions is an array of char pointers, in + * order to support dimensions that are sized according to + * template parameter values or according to named constants. + */ +struct _ValueInfo +{ + parse_item_t ItemType; + parse_access_t Access; + const char *Name; + const char *Comment; + const char *Value; /* for vars or default paramter values */ + unsigned int Type; /* as defined in vtkParseType.h */ + const char *Class; /* classname for type */ + int Count; /* total number of values, if known */ + const char *CountHint; /* hint about how to get the count */ + int NumberOfDimensions; /* dimensionality for arrays */ + const char **Dimensions; /* dimensions for arrays */ + FunctionInfo *Function; /* for function pointer values */ + TemplateInfo *Template; /* template parameters, or NULL */ + int IsStatic; /* for class variables only */ + int IsEnum; /* for constants only */ +}; + +/** + * FunctionInfo is for functions and methods + */ +struct _FunctionInfo +{ + parse_item_t ItemType; + parse_access_t Access; + const char *Name; + const char *Comment; + const char *Class; /* class name for methods */ + const char *Signature; /* function signature as text */ + TemplateInfo *Template; /* template parameters, or NULL */ + int NumberOfParameters; + ValueInfo **Parameters; + ValueInfo *ReturnValue; /* NULL for constructors and destructors */ + const char *Macro; /* the macro that defined this function */ + const char *SizeHint; /* hint the size e.g. for operator[] */ + int IsOperator; + int IsVariadic; + int IsLegacy; /* marked as a legacy method or function */ + int IsStatic; /* methods only */ + int IsVirtual; /* methods only */ + int IsPureVirtual; /* methods only */ + int IsConst; /* methods only */ + int IsExplicit; /* constructors only */ +#ifndef VTK_PARSE_LEGACY_REMOVE + int NumberOfArguments; /* legacy */ + unsigned int ArgTypes[MAX_ARGS]; /* legacy */ + const char *ArgClasses[MAX_ARGS];/* legacy */ + int ArgCounts[MAX_ARGS]; /* legacy */ + unsigned int ReturnType; /* legacy */ + const char *ReturnClass; /* legacy */ + int HaveHint; /* legacy */ + int HintSize; /* legacy */ + int ArrayFailure;/* legacy */ + int IsPublic; /* legacy */ + int IsProtected; /* legacy */ +#endif +}; + +/** + * EnumInfo is for enums + * Constants are at the same level as the Enum, not inside it. + */ +typedef struct _EnumInfo +{ + parse_item_t ItemType; + parse_access_t Access; + const char *Name; + const char *Comment; +} EnumInfo; + +/** + * UsingInfo is for using directives + */ +typedef struct _UsingInfo +{ + parse_item_t ItemType; + parse_access_t Access; + const char *Name; /* null for using whole namespace */ + const char *Comment; + const char *Scope; /* the namespace or class */ +} UsingInfo; + +/** + * ClassInfo is for classes, structs, unions, and namespaces + */ +typedef struct _ClassInfo +{ + parse_item_t ItemType; + parse_access_t Access; + const char *Name; + const char *Comment; + TemplateInfo *Template; + int NumberOfSuperClasses; + const char **SuperClasses; + int NumberOfItems; + ItemInfo *Items; + int NumberOfClasses; + struct _ClassInfo **Classes; + int NumberOfFunctions; + FunctionInfo **Functions; + int NumberOfConstants; + ValueInfo **Constants; + int NumberOfVariables; + ValueInfo **Variables; + int NumberOfEnums; + EnumInfo **Enums; + int NumberOfTypedefs; + ValueInfo **Typedefs; + int NumberOfUsings; + UsingInfo **Usings; + int NumberOfNamespaces; + struct _ClassInfo **Namespaces; + int IsAbstract; + int HasDelete; +} ClassInfo; + +/** + * Namespace is for namespaces + */ +typedef struct _ClassInfo NamespaceInfo; + +/** + * FileInfo is for header files + */ +struct _FileInfo +{ + const char *FileName; + const char *NameComment; + const char *Description; + const char *Caveats; + const char *SeeAlso; + + int NumberOfIncludes; + struct _FileInfo **Includes; + ClassInfo *MainClass; + NamespaceInfo *Contents; + StringCache *Strings; +}; + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Initializer methods + */ +/*@{*/ +void vtkParse_InitFile(FileInfo *file_info); +void vtkParse_InitNamespace(NamespaceInfo *namespace_info); +void vtkParse_InitClass(ClassInfo *cls); +void vtkParse_InitFunction(FunctionInfo *func); +void vtkParse_InitValue(ValueInfo *val); +void vtkParse_InitEnum(EnumInfo *item); +void vtkParse_InitUsing(UsingInfo *item); +void vtkParse_InitTemplate(TemplateInfo *arg); +/*@}*/ + +/** + * Copy methods + * + * Strings are not deep-copied, they are assumed to be persistent. + */ +/*@{*/ +void vtkParse_CopyNamespace(NamespaceInfo *data, const NamespaceInfo *orig); +void vtkParse_CopyClass(ClassInfo *data, const ClassInfo *orig); +void vtkParse_CopyFunction(FunctionInfo *data, const FunctionInfo *orig); +void vtkParse_CopyValue(ValueInfo *data, const ValueInfo *orig); +void vtkParse_CopyEnum(EnumInfo *data, const EnumInfo *orig); +void vtkParse_CopyUsing(UsingInfo *data, const UsingInfo *orig); +void vtkParse_CopyTemplate(TemplateInfo *data, const TemplateInfo *orig); +/*@}*/ + +/** + * Free methods + * + * Strings are not freed, they are assumed to be persistent. + */ +/*@{*/ +void vtkParse_FreeFile(FileInfo *file_info); +void vtkParse_FreeNamespace(NamespaceInfo *namespace_info); +void vtkParse_FreeClass(ClassInfo *cls); +void vtkParse_FreeFunction(FunctionInfo *func); +void vtkParse_FreeValue(ValueInfo *val); +void vtkParse_FreeEnum(EnumInfo *item); +void vtkParse_FreeUsing(UsingInfo *item); +void vtkParse_FreeTemplate(TemplateInfo *arg); +/*@}*/ + + +/** + * Add a string to an array of strings, grow array as necessary. + */ +void vtkParse_AddStringToArray( + const char ***valueArray, int *count, const char *value); + +/** + * Expand the Item array for classes and namespaces. + */ +void vtkParse_AddItemToArray( + ItemInfo **valueArray, int *count, parse_item_t type, int idx); + + +/** + * Add various items to the structs. + */ +/*@{*/ +void vtkParse_AddIncludeToFile(FileInfo *info, FileInfo *item); +void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item); +void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item); +void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item); +void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item); +void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item); +void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item); +void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item); +void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info,NamespaceInfo *item); +void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item); +void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item); +void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item); +void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item); +void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item); +void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item); +void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item); +void vtkParse_AddParameterToFunction(FunctionInfo *info, ValueInfo *item); +void vtkParse_AddParameterToTemplate(TemplateInfo *info, ValueInfo *item); +/*@}*/ + +/** + * Add default constructors to a class if they do not already exist + */ +void vtkParse_AddDefaultConstructors(ClassInfo *data, StringCache *cache); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/ParaView/vtkParseExtras.c b/src/ParaView/vtkParseExtras.c index 996b670f..6504d3b8 100644 --- a/src/ParaView/vtkParseExtras.c +++ b/src/ParaView/vtkParseExtras.c @@ -19,15 +19,14 @@ under the terms of the Visualization Toolkit 2008 copyright. -------------------------------------------------------------------------*/ +#include "vtkParseExtras.h" +#include "vtkParseString.h" +#include "vtkType.h" #include #include #include #include #include -#include "vtkParse.h" -#include "vtkParseInternal.h" -#include "vtkParseExtras.h" -#include "vtkType.h" /* skip over an identifier */ static size_t vtkparse_id_len(const char *text) @@ -112,7 +111,7 @@ static size_t vtkparse_quote_len(const char *text) } /* skip over an expression in brackets */ -size_t vtkparse_bracket_len(const char *text) +static size_t vtkparse_bracket_len(const char *text) { size_t i = 0; size_t j = 1; @@ -172,6 +171,7 @@ size_t vtkParse_UnscopedNameLength(const char *text) if (text[i-1] != '>') { fprintf(stderr, "Bad template args %*.*s\n", (int)i, (int)i, text); + assert(text[i-1] == '>'); return 0; } } @@ -196,8 +196,8 @@ size_t vtkParse_NameLength(const char *text) /* Search and replace, return the initial string if no replacements * occurred, otherwise return a new string. */ static const char *vtkparse_string_replace( - const char *str1, int n, const char *name[], const char *val[], - int useDuplicateString) + StringCache *cache, const char *str1, + int n, const char *name[], const char *val[]) { const char *cp = str1; char result_store[1024]; @@ -303,12 +303,12 @@ static const char *vtkparse_string_replace( result[j] = '\0'; } - if (useDuplicateString) + if (cache) { if (any_replaced) { - /* use the efficient but leaky DuplicateString method */ - cp = vtkParse_DuplicateString(result, j); + /* use the efficient CacheString method */ + cp = vtkParse_CacheString(cache, result, j); if (result != result_store) { free(result); @@ -336,14 +336,16 @@ static const char *vtkparse_string_replace( /* Wherever one of the specified names exists inside a Value or inside * a Dimension size, replace it with the corresponding val string. */ void vtkParse_ExpandValues( - ValueInfo *valinfo, int n, const char *name[], const char *val[]) + ValueInfo *valinfo, StringCache *cache, + int n, const char *name[], const char *val[]) { int j, m, dim, count; const char *cp; if (valinfo->Value) { - valinfo->Value = vtkparse_string_replace(valinfo->Value, n, name, val, 1); + valinfo->Value = vtkparse_string_replace( + cache, valinfo->Value, n, name, val); } m = valinfo->NumberOfDimensions; @@ -355,7 +357,7 @@ void vtkParse_ExpandValues( cp = valinfo->Dimensions[j]; if (cp) { - cp = vtkparse_string_replace(cp, n, name, val, 1); + cp = vtkparse_string_replace(cache, cp, n, name, val); valinfo->Dimensions[j] = cp; /* check whether dimension has become an integer literal */ @@ -380,7 +382,8 @@ void vtkParse_ExpandValues( } /* Expand a typedef within a type declaration. */ -void vtkParse_ExpandTypedef(ValueInfo *valinfo, ValueInfo *typedefinfo) +void vtkParse_ExpandTypedef( + ValueInfo *valinfo, ValueInfo *typedefinfo) { const char *classname; unsigned int baseType; @@ -467,7 +470,8 @@ void vtkParse_ExpandTypedef(ValueInfo *valinfo, ValueInfo *typedefinfo) /* Expand any unrecognized types within a variable, parameter, or typedef * that match any of the supplied typedefs. The expansion is done in-place. */ void vtkParse_ExpandTypedefs( - ValueInfo *val, int n, const char *names[], const char *values[], + ValueInfo *val, StringCache *cache, + int n, const char *names[], const char *values[], ValueInfo *typedefinfo[]) { int i; @@ -487,7 +491,8 @@ void vtkParse_ExpandTypedefs( if (i == n) { /* in case type appears as a template arg of another type */ - val->Class = vtkparse_string_replace(val->Class, n, names, values, 1); + val->Class = vtkparse_string_replace( + cache, val->Class, n, names, values); } } } @@ -497,9 +502,46 @@ struct vtk_type_struct { size_t len; const char *name; - int type; + unsigned int type; }; +/* Simple utility for mapping VTK types to VTK_PARSE types */ +unsigned int vtkParse_MapType(int vtktype) +{ + static unsigned int typemap[] = + { + VTK_PARSE_VOID, /* VTK_VOID 0 */ + 0, /* VTK_BIT 1 */ + VTK_PARSE_CHAR, /* VTK_CHAR 2 */ + VTK_PARSE_UNSIGNED_CHAR, /* VTK_UNSIGNED_CHAR 3 */ + VTK_PARSE_SHORT, /* VTK_SHORT 4 */ + VTK_PARSE_UNSIGNED_SHORT, /* VTK_UNSIGNED_SHORT 5 */ + VTK_PARSE_INT, /* VTK_INT 6 */ + VTK_PARSE_UNSIGNED_INT, /* VTK_UNSIGNED_INT 7 */ + VTK_PARSE_LONG, /* VTK_LONG 8 */ + VTK_PARSE_UNSIGNED_LONG, /* VTK_UNSIGNED_LONG 9 */ + VTK_PARSE_FLOAT, /* VTK_FLOAT 10 */ + VTK_PARSE_DOUBLE, /* VTK_DOUBLE 11 */ + VTK_PARSE_ID_TYPE, /* VTK_ID_TYPE 12 */ + VTK_PARSE_STRING, /* VTK_STRING 13 */ + 0, /* VTK_OPAQUE 14 */ + VTK_PARSE_SIGNED_CHAR, /* VTK_SIGNED_CHAR 15 */ + VTK_PARSE_LONG_LONG, /* VTK_LONG_LONG 16 */ + VTK_PARSE_UNSIGNED_LONG_LONG, /* VTK_UNSIGNED_LONG_LONG 17 */ + VTK_PARSE___INT64, /* VTK___INT64 18 */ + VTK_PARSE_UNSIGNED___INT64, /* VTK_UNSIGNED___INT64 19 */ + 0, /* VTK_VARIANT 20 */ + 0, /* VTK_OBJECT 21 */ + VTK_PARSE_UNICODE_STRING /* VTK_UNICODE_STRING 22 */ + }; + + if (vtktype > 0 && vtktype <= VTK_UNICODE_STRING) + { + return typemap[vtktype]; + } + return 0; +} + /* Get a type from a type name, and return the number of characters used. * If the "classname" argument is not NULL, then it is used to return * the short name for the type, e.g. "long int" becomes "long", while @@ -602,7 +644,12 @@ size_t vtkParse_BasicTypeFromString( } else if (n == 4 && strncmp(cp, "long", n) == 0) { - if (base_bits == VTK_PARSE_LONG) + if (base_bits == VTK_PARSE_DOUBLE) + { + classname = "long double"; + base_bits = VTK_PARSE_LONG_DOUBLE; + } + else if (base_bits == VTK_PARSE_LONG) { classname = "long long"; base_bits = VTK_PARSE_LONG_LONG; @@ -638,8 +685,16 @@ size_t vtkParse_BasicTypeFromString( } else if (n == 6 && strncmp(cp, "double", n) == 0) { - classname = "double"; - base_bits = VTK_PARSE_DOUBLE; + if (base_bits == VTK_PARSE_LONG) + { + classname = "long double"; + base_bits = VTK_PARSE_LONG_DOUBLE; + } + else + { + classname = "double"; + base_bits = VTK_PARSE_DOUBLE; + } } else if (n == 4 && strncmp(cp, "bool", n) == 0) { @@ -683,9 +738,7 @@ size_t vtkParse_BasicTypeFromString( m = 0; if (strncmp(cp, "::", 2) == 0) { m = 2; } else if (strncmp(cp, "std::", 5) == 0) { m = 5; } -#ifndef VTK_LEGACY_REMOVE else if (strncmp(cp, "vtkstd::", 8) == 0) { m = 8; } -#endif /* advance past the namespace */ tmpcp = cp + m; @@ -783,7 +836,8 @@ size_t vtkParse_BasicTypeFromString( } /* Parse a type description in "text" and generate a typedef named "name" */ -void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) +size_t vtkParse_ValueInfoFromString( + ValueInfo *data, StringCache *cache, const char *text) { const char *cp = text; size_t n; @@ -796,7 +850,7 @@ void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) /* get the basic type with qualifiers */ cp += vtkParse_BasicTypeFromString(cp, &base_bits, &classname, &n); - data->Class = vtkParse_DuplicateString(classname, n); + data->Class = vtkParse_CacheString(cache, classname, n); if ((base_bits & VTK_PARSE_STATIC) != 0) { @@ -841,7 +895,7 @@ void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) { /* skip all chars that are part of a name */ n = vtkparse_id_len(cp); - data->Name = vtkParse_DuplicateString(cp, n); + data->Name = vtkParse_CacheString(cache, cp, n); cp += n; while (*cp == ' ' || *cp == '\t') { cp++; } } @@ -855,16 +909,17 @@ void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) while (*cp == '[') { n = vtkparse_bracket_len(cp); - if (n > 0) + if (n > 1) { cp++; - n--; + n -= 2; } while (*cp == ' ' || *cp == '\t') { cp++; n--; } while (n > 0 && (cp[n-1] == ' ' || cp[n-1] == '\t')) { n--; } - vtkParse_AddStringToArray(&data->Dimensions, - &data->NumberOfDimensions, - vtkParse_DuplicateString(cp, n)); + vtkParse_AddStringToArray( + &data->Dimensions, + &data->NumberOfDimensions, + vtkParse_CacheString(cache, cp, n)); m = 0; if (*cp >= '0' && *cp <= '9' && vtkparse_number_len(cp) == n) { @@ -874,7 +929,7 @@ void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) cp += n; while (*cp == ' ' || *cp == '\t') { cp++; } - if (cp[n] == ']') { cp++; } + if (*cp == ']') { cp++; } while (*cp == ' ' || *cp == '\t') { cp++; } } @@ -892,52 +947,196 @@ void vtkParse_ValueInfoFromString(ValueInfo *data, const char *text) /* (Add code here to look for "=" followed by a value ) */ data->Type = (pointer_bits | ref_bits | base_bits); + + return (cp - text); } +/* Generate a C++ declaration string from a ValueInfo struct */ +const char *vtkParse_ValueInfoToString( + ValueInfo *data, int *needs_free) +{ + unsigned int pointer_bits = (data->Type & VTK_PARSE_POINTER_MASK); + unsigned int ref_bits = (data->Type & VTK_PARSE_REF); + unsigned int qualifier_bits = (data->Type & VTK_PARSE_CONST); + unsigned int reverse_bits = 0; + unsigned int pointer_type = 0; + const char *classname = data->Class; + const char *name = data->Name; + char *text = NULL; + size_t i = 0; + size_t l; + int j = 0; + + if (pointer_bits == 0 && ref_bits == 0 && qualifier_bits == 0 && + name == NULL) + { + if (needs_free) + { + *needs_free = 0; + } + return classname; + } + + /* compute the length of string to allocate */ + l = 6; /* for const */ + l += 4*7; /* for pointers */ + l += 1; /* for ref */ + l += strlen(classname) + 1; /* for type */ + for (j = 0; j < data->NumberOfDimensions; j++) + { + l += 2 + strlen(data->Dimensions[j]); + } + l++; /* for NULL */ + l += 4; /* for safety */ + + text = (char *)malloc(l); + + if ((qualifier_bits & VTK_PARSE_CONST) != 0) + { + strcpy(&text[i], "const "); + i += 6; + } + + strcpy(&text[i], classname); + i += strlen(classname); + text[i++] = ' '; + + while (pointer_bits != 0) + { + reverse_bits <<= 2; + reverse_bits |= (pointer_bits & VTK_PARSE_POINTER_LOWMASK); + pointer_bits = ((pointer_bits >> 2) & VTK_PARSE_POINTER_MASK); + } + + while (reverse_bits != 0) + { + pointer_type = (reverse_bits & VTK_PARSE_POINTER_LOWMASK); + if (pointer_type == VTK_PARSE_ARRAY || + (reverse_bits == VTK_PARSE_POINTER && + data->NumberOfDimensions > 0)) + { + break; + } + else if (pointer_type == VTK_PARSE_POINTER) + { + text[i++] = '*'; + } + else if (pointer_type == VTK_PARSE_CONST_POINTER) + { + strcpy(&text[i], "*const "); + i += 7; + } + reverse_bits = ((reverse_bits >> 2) & VTK_PARSE_POINTER_MASK); + } + + if (ref_bits) + { + text[i++] = '&'; + } + + if (name) + { + strcpy(&text[i], name); + i += strlen(name); + } + + for (j = 0; j < data->NumberOfDimensions; j++) + { + text[i++] = '['; + if (data->Dimensions[j]) + { + strcpy(&text[i], data->Dimensions[j]); + i += strlen(data->Dimensions[j]); + } + text[i++] = ']'; + } + + text[i] = '\0'; + + /* make sure enough space was allocated */ + assert(i < l); + + if (needs_free) + { + *needs_free = 1; + } + + return text; +} + +/* Search and replace, return the initial string if no replacements + * occurred, otherwise return a new string allocated with malloc. */ +const char *vtkParse_StringReplace( + const char *str1, int n, const char *name[], const char *val[]) +{ + return vtkparse_string_replace(NULL, str1, n, name, val); +} /* substitute generic types and values with actual types and values */ static void func_substitution( - FunctionInfo *data, int m, const char *arg_names[], + FunctionInfo *data, StringCache *cache, + int m, const char *arg_names[], const char *arg_values[], ValueInfo *arg_types[]); static void value_substitution( - ValueInfo *data, int m, const char *arg_names[], + ValueInfo *data, StringCache *cache, + int m, const char *arg_names[], const char *arg_values[], ValueInfo *arg_types[]) { - vtkParse_ExpandTypedefs(data, m, arg_names, arg_values, arg_types); - vtkParse_ExpandValues(data, m, arg_names, arg_values); + vtkParse_ExpandTypedefs(data, cache, m, arg_names, arg_values, arg_types); + vtkParse_ExpandValues(data, cache, m, arg_names, arg_values); if (data->Function) { - func_substitution(data->Function, m, arg_names, arg_values, arg_types); + func_substitution( + data->Function, cache, m, arg_names, arg_values, arg_types); } } static void func_substitution( - FunctionInfo *data, int m, const char *arg_names[], + FunctionInfo *data, StringCache *cache, + int m, const char *arg_names[], const char *arg_values[], ValueInfo *arg_types[]) { int i, n; + n = data->NumberOfParameters; + for (i = 0; i < n; i++) + { + value_substitution( + data->Parameters[i], cache, m, arg_names, arg_values, arg_types); + } + + if (data->ReturnValue) + { + value_substitution( + data->ReturnValue, cache, m, arg_names, arg_values, arg_types); + } + + if (data->Signature) + { + data->Signature = + vtkparse_string_replace( + cache, data->Signature, m, arg_names, arg_values); + } + + /* legacy information for old wrappers */ +#ifndef VTK_PARSE_LEGACY_REMOVE n = data->NumberOfArguments; for (i = 0; i < n; i++) { - value_substitution(data->Arguments[i], m, arg_names, arg_values, arg_types); - if (i < MAX_ARGS) + data->ArgTypes[i] = data->Parameters[i]->Type; + data->ArgClasses[i] = data->Parameters[i]->Class; + if (data->Parameters[i]->NumberOfDimensions == 1 && + data->Parameters[i]->Count > 0) { - data->ArgTypes[i] = data->Arguments[i]->Type; - data->ArgClasses[i] = data->Arguments[i]->Class; - if (data->Arguments[i]->NumberOfDimensions == 1 && - data->Arguments[i]->Count > 0) - { - data->ArgCounts[i] = data->Arguments[i]->Count; - } + data->ArgCounts[i] = data->Parameters[i]->Count; } } + if (data->ReturnValue) { - value_substitution(data->ReturnValue, m, arg_names, arg_values, arg_types); data->ReturnType = data->ReturnValue->Type; data->ReturnClass = data->ReturnValue->Class; if (data->ReturnValue->NumberOfDimensions == 1 && @@ -947,15 +1146,12 @@ static void func_substitution( data->HaveHint = 1; } } - if (data->Signature) - { - data->Signature = - vtkparse_string_replace(data->Signature, m, arg_names, arg_values, 1); - } +#endif /* VTK_PARSE_LEGACY_REMOVE */ } static void class_substitution( - ClassInfo *data, int m, const char *arg_names[], + ClassInfo *data, StringCache *cache, + int m, const char *arg_names[], const char *arg_values[], ValueInfo *arg_types[]) { int i, n; @@ -965,49 +1161,45 @@ static void class_substitution( for (i = 0; i < n; i++) { data->SuperClasses[i] = vtkparse_string_replace( - data->SuperClasses[i], m, arg_names, arg_values, 1); + cache, data->SuperClasses[i], m, arg_names, arg_values); } n = data->NumberOfClasses; for (i = 0; i < n; i++) { - class_substitution(data->Classes[i], m, arg_names, arg_values, arg_types); + class_substitution( + data->Classes[i], cache, m, arg_names, arg_values, arg_types); } n = data->NumberOfFunctions; for (i = 0; i < n; i++) { - func_substitution(data->Functions[i], m, arg_names, arg_values, arg_types); + func_substitution( + data->Functions[i], cache, m, arg_names, arg_values, arg_types); } n = data->NumberOfConstants; for (i = 0; i < n; i++) { - value_substitution(data->Constants[i], m, arg_names, arg_values, arg_types); + value_substitution( + data->Constants[i], cache, m, arg_names, arg_values, arg_types); } n = data->NumberOfVariables; for (i = 0; i < n; i++) { - value_substitution(data->Variables[i], m, arg_names, arg_values, arg_types); + value_substitution( + data->Variables[i], cache, m, arg_names, arg_values, arg_types); } n = data->NumberOfTypedefs; for (i = 0; i < n; i++) { - value_substitution(data->Typedefs[i], m, arg_names, arg_values, arg_types); + value_substitution( + data->Typedefs[i], cache, m, arg_names, arg_values, arg_types); } } - -/* Search and replace, return the initial string if no replacements - * occurred, otherwise return a new string allocated with malloc. */ -const char *vtkParse_StringReplace( - const char *str1, int n, const char *name[], const char *val[]) -{ - return vtkparse_string_replace(str1, n, name, val, 0); -} - /* Extract template args from a comma-separated list enclosed * in angle brackets. Returns zero if no angle brackets found. */ size_t vtkParse_DecomposeTemplatedType( @@ -1031,10 +1223,13 @@ size_t vtkParse_DecomposeTemplatedType( } } - new_text = (char *)malloc(i + 1); - strncpy(new_text, text, i); - new_text[i] = '\0'; - *classname = new_text; + if (classname) + { + new_text = (char *)malloc(i + 1); + strncpy(new_text, text, i); + new_text[i] = '\0'; + *classname = new_text; + } if (text[i] == '<') { @@ -1119,12 +1314,11 @@ void vtkParse_FreeTemplateDecomposition( } } - /* Instantiate a class template by substituting the provided arguments. */ void vtkParse_InstantiateClassTemplate( - ClassInfo *data, int n, const char *args[]) + ClassInfo *data, StringCache *cache, int n, const char *args[]) { - TemplateArgs *t = data->Template; + TemplateInfo *t = data->Template; const char **new_args = NULL; const char **arg_names = NULL; ValueInfo **arg_types = NULL; @@ -1139,7 +1333,7 @@ void vtkParse_InstantiateClassTemplate( return; } - m = t->NumberOfArguments; + m = t->NumberOfParameters; if (n > m) { fprintf(stderr, "vtkParse_InstantiateClassTemplate: " @@ -1149,8 +1343,8 @@ void vtkParse_InstantiateClassTemplate( for (i = n; i < m; i++) { - if (t->Arguments[i]->Value == NULL || - t->Arguments[i]->Value[0] == '\0') + if (t->Parameters[i]->Value == NULL || + t->Parameters[i]->Value[0] == '\0') { fprintf(stderr, "vtkParse_InstantiateClassTemplate: " "too few template args.\n"); @@ -1158,31 +1352,28 @@ void vtkParse_InstantiateClassTemplate( } } - if (n < m) + new_args = (const char **)malloc(m*sizeof(char **)); + for (i = 0; i < n; i++) { - new_args = (const char **)malloc(m*sizeof(char **)); - for (i = 0; i < n; i++) - { - new_args[i] = args[i]; - } - for (i = n; i < m; i++) - { - new_args[i] = t->Arguments[i]->Value; - } - args = new_args; + new_args[i] = args[i]; + } + for (i = n; i < m; i++) + { + new_args[i] = t->Parameters[i]->Value; } + args = new_args; arg_names = (const char **)malloc(m*sizeof(char **)); arg_types = (ValueInfo **)malloc(m*sizeof(ValueInfo *)); for (i = 0; i < m; i++) { - arg_names[i] = t->Arguments[i]->Name; + arg_names[i] = t->Parameters[i]->Name; arg_types[i] = NULL; - if (t->Arguments[i]->Type == 0) + if (t->Parameters[i]->Type == 0) { arg_types[i] = (ValueInfo *)malloc(sizeof(ValueInfo)); vtkParse_InitValue(arg_types[i]); - vtkParse_ValueInfoFromString(arg_types[i], args[i]); + vtkParse_ValueInfoFromString(arg_types[i], cache, args[i]); arg_types[i]->ItemType = VTK_TYPEDEF_INFO; arg_types[i]->Name = arg_names[i]; } @@ -1191,7 +1382,7 @@ void vtkParse_InstantiateClassTemplate( /* no longer a template (has been instantiated) */ if (data->Template) { - vtkParse_FreeTemplateArgs(data->Template); + vtkParse_FreeTemplate(data->Template); } data->Template = NULL; @@ -1221,18 +1412,15 @@ void vtkParse_InstantiateClassTemplate( } new_name[k++] = '>'; new_name[k] = '\0'; - data->Name = vtkParse_DuplicateString(new_name, k); - free((char *)new_name); + + data->Name = vtkParse_CacheString(cache, new_name, k); + free(new_name); /* do the template arg substitution */ - class_substitution(data, m, arg_names, args, arg_types); + class_substitution(data, cache, m, arg_names, args, arg_types); /* free all allocated arrays */ - if (new_args) - { - free((char **)new_args); - } - + free((char **)new_args); free((char **)arg_names); for (i = 0; i < m; i++) @@ -1245,295 +1433,6 @@ void vtkParse_InstantiateClassTemplate( free(arg_types); } -/* Generate a mangled name for a type, use gcc ia64 ABI. - * The result is placed in new_name, which must be large enough - * to accept the result. This function is incomplete, it cannot - * handle function types, or any literals except for integer literals. */ -size_t vtkParse_MangledTypeName(const char *name, char *new_name) -{ - int scoped = 0; - unsigned int ptype = 0; - size_t j, k, m; - size_t i = 0; - const char *cp; - char basictype; - - m = vtkParse_BasicTypeFromString(name, &ptype, NULL, NULL); - - /* look for pointers */ - cp = &name[m]; - while (*cp == ' ' || *cp == '\t') { cp++; } - while (*cp == '*') - { - do { cp++; } while (*cp == ' ' || *cp == '\t'); - if (*cp == 'c' && strncmp(cp, "const", 5) == 0 && - ((cp[5] < 'A' || cp[5] > 'Z') && - (cp[5] < 'a' || cp[5] > 'z') && - (cp[5] < '0' || cp[5] > '9') && - cp[5] != '_')) - { - cp += 4; - do { cp++; } while (*cp == ' ' || *cp == '\t'); - new_name[i++] = 'K'; - } - new_name[i++] = 'P'; - } - - /* prepend reference if present */ - if (*cp == '&') - { - do { cp++; } while (*cp == ' ' || *cp == '\t'); - for (k = i; k > 0; --k) - { - new_name[k] = new_name[k-1]; - } - new_name[0] = 'R'; - i++; - } - - /* array brackets are not handled */ - - /* qualifiers */ - if (ptype & VTK_PARSE_CONST) - { - new_name[i++] = 'K'; - } - - /* types: the following are unused - * 'w' -> wchar_t - * 'n' -> __int128 - * 'o' -> unsigned __int128 - * 'e' -> __float80 - * 'g' -> __float128 - * 'z' -> ... (varargs) - */ - - basictype = '\0'; - switch (ptype & VTK_PARSE_BASE_TYPE) - { - case VTK_PARSE_VOID: - basictype = 'v'; - break; - case VTK_PARSE_BOOL: - basictype = 'b'; - break; - case VTK_PARSE_CHAR: - basictype = 'c'; - break; - case VTK_PARSE_SIGNED_CHAR: - basictype = 'a'; - break; - case VTK_PARSE_UNSIGNED_CHAR: - basictype = 'h'; - break; - case VTK_PARSE_SHORT: - basictype = 's'; - break; - case VTK_PARSE_UNSIGNED_SHORT: - basictype = 't'; - break; - case VTK_PARSE_INT: - basictype = 'i'; - break; - case VTK_PARSE_UNSIGNED_INT: - basictype = 'j'; - break; - case VTK_PARSE_LONG: - basictype = 'l'; - break; - case VTK_PARSE_UNSIGNED_LONG: - basictype = 'm'; - break; - case VTK_PARSE_LONG_LONG: - case VTK_PARSE___INT64: - basictype = 'x'; - break; - case VTK_PARSE_UNSIGNED_LONG_LONG: - case VTK_PARSE_UNSIGNED___INT64: - basictype = 'y'; - break; - case VTK_PARSE_FLOAT: - basictype = 'f'; - break; - case VTK_PARSE_DOUBLE: - basictype = 'd'; - break; - } - - if (basictype) - { - new_name[i++] = basictype; - new_name[i] = '\0'; - return (size_t)(cp - name); - } - - m = 0; - cp = name; - do - { - cp += m; - while (*cp == ' ' || *cp == '\t') { cp++; } - m = vtkParse_UnscopedNameLength(cp); - } - while ((m == 5 && strncmp("const", cp, 5) == 0) || - (m == 8 && strncmp("volatile", cp, 8) == 0)); - - if (cp[m] == ':' && cp[m+1] == ':') - { - if (m == 3 && strncmp(cp, "std::", 5) == 0) - { - cp += 5; - m = vtkParse_UnscopedNameLength(cp); - if (cp[m] == ':' && cp[m+1] == ':') - { - new_name[i++] = 'N'; - scoped = 1; - } - /* short form for "std::" */ - new_name[i++] = 'S'; - new_name[i++] = 't'; - } - else - { - new_name[i++] = 'N'; - scoped = 1; - } - } - - do - { - if (cp[0] == ':' && cp[1] == ':') - { - cp += 2; - m = vtkParse_UnscopedNameLength(cp); - } - - for (j = 0; j < m; j++) - { - if (cp[j] == '<') - { - break; - } - } - - /* write out identifier length */ - if (j >= 100) { new_name[i++] = '0' + (char)(j/100); } - if (j >= 10) { new_name[i++] = '0' + (char)((j%100)/10); } - new_name[i++] = '0' + (char)(j%10); - - /* write out the identifier */ - strncpy(&new_name[i], cp, j); - i += j; - cp += j; - - /* handle template args */ - if (*cp == '<') - { - new_name[i++] = 'I'; - do - { - do { cp++; } while (*cp == ' ' || *cp == '\t'); - m = 0; - if ((*cp >= '0' && *cp <= '9') || - (*cp == '.' && cp[1] >= '0' && cp[1] <= '9') || - *cp == '\'' || *cp == '\"') - { - m = vtkParse_MangledLiteral(cp, &new_name[i]); - } - else - { - m = vtkParse_MangledTypeName(cp, &new_name[i]); - } - if (m == 0) - { - return 0; - } - cp += m; - i = strlen(new_name); - while (*cp == ' ' || *cp == '\t') { cp++; } - } - while (*cp == ','); - new_name[i++] = 'E'; - if (*cp != '>') - { - new_name[i] = '\0'; - return 0; - } - cp++; - } - } - while (cp[0] == ':' && cp[1] == ':'); - - if (scoped) - { - new_name[i++] = 'E'; - } - - new_name[i] = '\0'; - - return (size_t)(cp - name); -} - -/* Generate a mangled name for a literal, use gcc ia64 ABI. */ -size_t vtkParse_MangledLiteral(const char *name, char *new_name) -{ - const char *cp = name; - size_t i = 0; - char *tmp; - - /* only decimal integers are supported for now */ - if (*cp >= '0' && *cp <= '9') - { - /* reject octal and hexadecimal */ - if (cp[0] == '0' && (cp[1] == 'x' || cp[1] == 'X' || - (cp[1] >= '0' && cp[1] <= '9'))) - { - new_name[0] = '\0'; - return 0; - } - - new_name[i++] = 'L'; - tmp = &new_name[i]; - new_name[i++] = 'i'; - do { new_name[i++] = *cp++; } - while (*cp >= '0' && *cp <= '9'); - - /* reject floats */ - if (*cp == '.' || *cp == 'f' || *cp == 'e' || *cp == 'E') - { - new_name[0] = '\0'; - return 0; - } - - for (;;) - { - if (*cp == 'u' || *cp == 'U') - { - if (*tmp == 'i') { *tmp = 'j'; } - else if (*tmp == 'l') { *tmp = 'm'; } - else if (*tmp == 'x') { *tmp = 'y'; } - cp++; - } - else if (*cp == 'l' || *cp == 'L') - { - if (*tmp == 'i') { *tmp = 'l'; } - else if (*tmp == 'j') { *tmp = 'm'; } - else if (*tmp == 'l') { *tmp = 'x'; } - else if (*tmp == 'm') { *tmp = 'y'; } - cp++; - } - else - { - break; - } - } - new_name[i++] = 'E'; - } - new_name[i] = '\0'; - - return (size_t)(cp - name); -} - /* Get a zero-terminated array of the types in vtkTemplateMacro. */ const char **vtkParse_GetTemplateMacroTypes() { diff --git a/src/ParaView/vtkParseExtras.h b/src/ParaView/vtkParseExtras.h index 5a552a6e..3f3dceca 100644 --- a/src/ParaView/vtkParseExtras.h +++ b/src/ParaView/vtkParseExtras.h @@ -26,7 +26,8 @@ #ifndef VTK_PARSE_EXTRAS_H #define VTK_PARSE_EXTRAS_H -#include "vtkParse.h" +#include "vtkParseData.h" +#include #ifdef __cplusplus extern "C" { @@ -42,12 +43,15 @@ size_t vtkParse_IdentifierLength(const char *text); /** * Skip over a name, including any namespace prefixes and * any template arguments. Return the number of characters. + * Examples are "name", "::name", "name", "name::name2", + * "::name::name2". */ size_t vtkParse_NameLength(const char *text); /** - * Skip over a name, including any template parameters, but stopping + * Skip over a name, including any template arguments, but stopping * if a '::' is encoutered. Return the number of characters. + * Examples are "name" and "name" */ size_t vtkParse_UnscopedNameLength(const char *text); @@ -73,8 +77,18 @@ size_t vtkParse_BasicTypeFromString( /** * Generate a ValueInfo by parsing the type from the provided text. * Only simple text strings are supported, e.g. "const T **". + * Returns the number of characters consumed. */ -void vtkParse_ValueInfoFromString(ValueInfo *val, const char *text); +size_t vtkParse_ValueInfoFromString( + ValueInfo *val, StringCache *cache, const char *text); + +/** + * Generate a declaration string from a ValueInfo struct. If the + * "nf" arg is set, the returned string must be freed. + * Only simple text strings are supported, e.g. "const T **". + * The variable or typedef name, if present, is ignored. + */ +const char *vtkParse_ValueInfoToString(ValueInfo *val, int *nf); /** * Expand a typedef within a variable, parameter, or typedef declaration. @@ -87,7 +101,8 @@ void vtkParse_ExpandTypedef(ValueInfo *valinfo, ValueInfo *typedefinfo); * that match any of the supplied typedefs. The expansion is done in-place. */ void vtkParse_ExpandTypedefs( - ValueInfo *valinfo, int n, const char *name[], const char *val[], + ValueInfo *valinfo, StringCache *cache, + int n, const char *name[], const char *val[], ValueInfo *typedefinfo[]); /** @@ -96,13 +111,12 @@ void vtkParse_ExpandTypedefs( * This is used to replace constants with their values. */ void vtkParse_ExpandValues( - ValueInfo *valinfo, int n, const char *name[], const char *val[]); + ValueInfo *valinfo, StringCache *cache, + int n, const char *name[], const char *val[]); /** - * Search for all occurences of "name" and replace with the corresponding - * "val", return the initial string if no replacements occurred, otherwise - * return a new string allocated with malloc. - */ + * Search and replace, return the initial string if no replacements + * occurred, else return a new string allocated with malloc. */ const char *vtkParse_StringReplace( const char *str1, int n, const char *name[], const char *val[]); @@ -129,7 +143,7 @@ void vtkParse_FreeTemplateDecomposition( * be returned. */ void vtkParse_InstantiateClassTemplate( - ClassInfo *data, int n, const char *args[]); + ClassInfo *data, StringCache *cache, int n, const char *args[]); /** * Instantiate a function or class method template by substituting the @@ -139,21 +153,7 @@ void vtkParse_InstantiateClassTemplate( * printed to stderr and NULL will be returned. */ void vtkParse_IntantiateFunctionTemplate( - FunctionInfo *data, int n, const char *args); - -/** - * Generate a mangled name for a type, use gcc ia64 ABI. - * The result is placed in new_name, which must be large enough - * to accept the result. - */ -size_t vtkParse_MangledTypeName(const char *name, char *new_name); - -/** - * Generate a mangled name for a literal. Only handles decimal - * integer literals. It guesses type from suffix "u", "ul", - * "ull", "l", "ll" so only certain types are supported. - */ -size_t vtkParse_MangledLiteral(const char *name, char *new_name); + FunctionInfo *data, int n, const char *args[]); /** * Get a zero-terminated array of the types in vtkTemplateMacro. diff --git a/src/ParaView/vtkParseHierarchy.c b/src/ParaView/vtkParseHierarchy.c index c7fafcfe..aa9d1b63 100644 --- a/src/ParaView/vtkParseHierarchy.c +++ b/src/ParaView/vtkParseHierarchy.c @@ -20,9 +20,7 @@ -------------------------------------------------------------------------*/ #include "vtkParseHierarchy.h" -#include "vtkParseInternal.h" #include "vtkParseExtras.h" -#include "vtkType.h" #include #include #include @@ -36,6 +34,58 @@ static size_t skip_space(const char *text) return i; } +static size_t skip_expression(const char *text, const char *delims) +{ + char newdelims[2]; + size_t i = 0; + size_t j; + int use_angle = 0; + char c; + + for (j = 0; delims[j] != '\0'; j++) + { + if (delims[j] == '>') + { + use_angle = 1; + } + } + + while (text[i] != '\0') + { + c = text[i]; + j = 0; + while (c != delims[j] && delims[j] != '\0') { j++; } + if (delims[j] != '\0' || c == '\0') { break; } + if (c == '\"' || c == '\'') + { + char d = c; + i++; + while (text[i] != d && text[i] != '\0') + { + if (text[i] == '\\' && text[i+1] != '\0') { i++; } + i++; + } + c = text[i]; + if (c == '\0') { break; } + } + i++; + if (c == '(' || c == '[' || c == '{' || (use_angle && c == '<')) + { + if (c == '(') { newdelims[0] = ')'; } + if (c == '[') { newdelims[0] = ']'; } + if (c == '{') { newdelims[0] = '}'; } + if (c == '<') { newdelims[0] = '>'; } + newdelims[1] = '\0'; + + i += skip_expression(&text[i], newdelims); + + if (text[i] == newdelims[0]) { i++; } else { break; } + } + } + + return i; +} + /* helper: comparison of entries */ static int compare_hierarchy_entries(const void *vp1, const void *vp2) { @@ -74,7 +124,7 @@ HierarchyEntry *vtkParseHierarchy_FindEntry( n = vtkParse_UnscopedNameLength(&classname[i]); } i += vtkParse_IdentifierLength(&classname[i]); - + /* create a new (shorter) search string if necessary */ if (classname[i] != '\0') { @@ -117,6 +167,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) size_t maxlen = 15; size_t i, j, n, m; unsigned int bits, pointers; + static const char *delims = ">,="; line = (char *)malloc(maxlen); @@ -130,6 +181,8 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) info = (HierarchyInfo *)malloc(sizeof(HierarchyInfo)); info->NumberOfEntries = 0; info->Entries = (HierarchyEntry *)malloc(maxClasses*sizeof(HierarchyEntry)); + info->Strings = (StringCache *)malloc(sizeof(StringCache)); + vtkParse_InitStringCache(info->Strings); while (fgets(line, (int)maxlen, fp)) { @@ -166,9 +219,9 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) entry->Name = NULL; entry->HeaderFile = NULL; entry->Module = NULL; - entry->NumberOfTemplateArgs = 0; - entry->TemplateArgs = NULL; - entry->TemplateArgDefaults = NULL; + entry->NumberOfTemplateParameters = 0; + entry->TemplateParameters = NULL; + entry->TemplateDefaults = NULL; entry->NumberOfProperties = 0; entry->Properties = NULL; entry->NumberOfSuperClasses = 0; @@ -185,10 +238,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) if (line[i+m] == '<') { break; } } - cp = (char *)malloc(m+1); - strncpy(cp, &line[i], m); - cp[m] = '\0'; - entry->Name = cp; + entry->Name = vtkParse_CacheString(info->Strings, &line[i], m); i += m; if (line[i] == '<') @@ -200,25 +250,27 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) { if (j == 0) { - entry->TemplateArgs = (const char **)malloc(sizeof(char *)); - entry->TemplateArgDefaults = (const char **)malloc(sizeof(char *)); + entry->TemplateParameters = (const char **)malloc(sizeof(char *)); + entry->TemplateDefaults = (const char **)malloc(sizeof(char *)); } else { - entry->TemplateArgs = (const char **)realloc( - (char **)entry->TemplateArgs, (j+1)*sizeof(char *)); - entry->TemplateArgDefaults = (const char **)realloc( - (char **)entry->TemplateArgDefaults, (j+1)*sizeof(char *)); + entry->TemplateParameters = (const char **)realloc( + (char **)entry->TemplateParameters, (j+1)*sizeof(char *)); + entry->TemplateDefaults = (const char **)realloc( + (char **)entry->TemplateDefaults, (j+1)*sizeof(char *)); } - entry->NumberOfTemplateArgs++; - entry->TemplateArgDefaults[j] = NULL; + entry->NumberOfTemplateParameters++; + entry->TemplateDefaults[j] = NULL; - m = vtkParse_NameLength(&line[i]); + m = skip_expression(&line[i], delims); + while (m > 0 && (line[i+m-1] == ' ' || line[i+m-1] == '\t')) + { + --m; + } - cp = (char *)malloc(m+1); - strncpy(cp, &line[i], m); - cp[m] = '\0'; - entry->TemplateArgs[j] = cp; + entry->TemplateParameters[j] = + vtkParse_CacheString(info->Strings, &line[i], m); i += m; i += skip_space(&line[i]); @@ -226,12 +278,13 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) { i++; i += skip_space(&line[i]); - m = vtkParse_NameLength(&line[i]); - - cp = (char *)malloc(m+1); - strncpy(cp, &line[i], m); - cp[m] = '\0'; - entry->TemplateArgDefaults[j] = cp; + m = skip_expression(&line[i], delims); + while (m > 0 && (line[i+m-1] == ' ' || line[i+m-1] == '\t')) + { + --m; + } + entry->TemplateDefaults[j] = + vtkParse_CacheString(info->Strings, &line[i], m); i += m; i += skip_space(&line[i]); } @@ -254,13 +307,12 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) i += 2; m = vtkParse_NameLength(&line[i]); n = strlen(entry->Name); - cp = (char *)malloc(n+m+3); + cp = vtkParse_NewString(info->Strings, n+m+2); strcpy(cp, entry->Name); strcpy(&cp[n], "::"); strncpy(&cp[n+2], &line[i], m); i += m; cp[n+m+2] = '\0'; - free((char *)entry->Name); entry->Name = cp; } } @@ -300,10 +352,8 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) i += skip_space(&line[i]); n = vtkParse_NameLength(&line[i]); - cp = (char *)malloc(n+1); - strncpy(cp, &line[i], n); - cp[n] = '\0'; - entry->SuperClasses[j] = cp; + entry->SuperClasses[j] = + vtkParse_CacheString(info->Strings, &line[i], n); entry->SuperClassIndex[j] = -1; i += n; @@ -347,7 +397,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) { n++; } - ccp = vtkParse_DuplicateString(&line[i], n); + ccp = vtkParse_CacheString(info->Strings, &line[i], n); vtkParse_AddStringToArray(&entry->Typedef->Dimensions, &entry->Typedef->NumberOfDimensions, ccp); if (ccp[0] >= '0' && ccp[0] <= '9') @@ -410,7 +460,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) /* read the base type (and const) */ bits = 0; i += vtkParse_BasicTypeFromString(&line[i], &bits, &ccp, &n); - entry->Typedef->Class = vtkParse_DuplicateString(ccp, n); + entry->Typedef->Class = vtkParse_CacheString(info->Strings, ccp, n); entry->Typedef->Type |= bits; } @@ -422,10 +472,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) n = 0; while(line[i+n] != '\0' && line[i+n] != ';' && !isspace(line[i+n])) { n++; }; - cp = (char *)malloc(n+1); - strncpy(cp, &line[i], n); - cp[n] = '\0'; - entry->HeaderFile = cp; + entry->HeaderFile = vtkParse_CacheString(info->Strings, &line[i], n); i += n; i += skip_space(&line[i]); @@ -438,10 +485,7 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) n = 0; while(line[i+n] != '\0' && line[i+n] != ';' && !isspace(line[i+n])) { n++; }; - cp = (char *)malloc(n+1); - strncpy(cp, &line[i], n); - cp[n] = '\0'; - entry->Module = cp; + entry->Module = vtkParse_CacheString(info->Strings, &line[i], n); i += n; i += skip_space(&line[i]); @@ -467,10 +511,8 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) { n++; } if (n && skip_space(&line[i]) != n) { - cp = (char *)malloc((n+1)*sizeof(char *)); - strncpy(cp, &line[i], n); - cp[n] = '\0'; - entry->Properties[entry->NumberOfProperties++] = cp; + entry->Properties[entry->NumberOfProperties++] = + vtkParse_CacheString(info->Strings, &line[i], n); } i += n; } @@ -494,39 +536,21 @@ HierarchyInfo *vtkParseHierarchy_ReadFile(const char *filename) void vtkParseHierarchy_Free(HierarchyInfo *info) { HierarchyEntry *entry; - int i, j; + int i; for (i = 0; i < info->NumberOfEntries; i++) { entry = &info->Entries[i]; - free((char *)entry->Name); - free((char *)entry->HeaderFile); - for (j = 0; j < entry->NumberOfTemplateArgs; j++) - { - free((char *)entry->TemplateArgs[j]); - if (entry->TemplateArgDefaults[j]) - { - free((char *)entry->TemplateArgDefaults[j]); - } - } - if (entry->NumberOfTemplateArgs) - { - free((char **)entry->TemplateArgs); - free((char **)entry->TemplateArgDefaults); - } - for (j = 0; j < entry->NumberOfSuperClasses; j++) + if (entry->NumberOfTemplateParameters) { - free((char *)entry->SuperClasses[j]); + free((char **)entry->TemplateParameters); + free((char **)entry->TemplateDefaults); } if (entry->NumberOfSuperClasses) { free((char **)entry->SuperClasses); free(entry->SuperClassIndex); } - for (j = 0; j < entry->NumberOfProperties; j++) - { - free((char *)entry->Properties[j]); - } if (entry->NumberOfProperties) { free((char **)entry->Properties); @@ -540,7 +564,7 @@ void vtkParseHierarchy_Free(HierarchyInfo *info) /* Check whether class is derived from baseclass. You must supply * the entry for the class (returned by FindEntry) as well as the - * classname. If the class is templated, the classname can include + * classname. If the class is templated, the classname can include * template args in angle brackets. If you provide a pointer for * baseclass_with_args, then it will be used to return the name of * name of the baseclass with template args in angle brackets. */ @@ -597,7 +621,7 @@ int vtkParseHierarchy_IsTypeOfTemplated( } /* if class is templated */ - if (entry->NumberOfTemplateArgs) + if (entry->NumberOfTemplateParameters) { /* check for template args for classname */ m = strlen(entry->Name); @@ -605,9 +629,9 @@ int vtkParseHierarchy_IsTypeOfTemplated( { templated = 1; - nargs = entry->NumberOfTemplateArgs; + nargs = entry->NumberOfTemplateParameters; vtkParse_DecomposeTemplatedType(classname, &name, nargs, &args, - entry->TemplateArgDefaults); + entry->TemplateDefaults); } } @@ -618,11 +642,11 @@ int vtkParseHierarchy_IsTypeOfTemplated( if (templated) { - for (k = 0; k < entry->NumberOfTemplateArgs; k++) + for (k = 0; k < entry->NumberOfTemplateParameters; k++) { /* check if the baseclass itself is a template parameter */ - m = strlen(entry->TemplateArgs[k]); - if (strncmp(entry->TemplateArgs[k], supername, m) == 0 && + m = strlen(entry->TemplateParameters[k]); + if (strncmp(entry->TemplateParameters[k], supername, m) == 0 && !isalnum(supername[m]) && supername[m] != '_') { baseclass_is_template_parameter = 1; @@ -632,7 +656,7 @@ int vtkParseHierarchy_IsTypeOfTemplated( /* use the class template args to find baseclass template args */ supername = vtkParse_StringReplace( - supername, entry->NumberOfTemplateArgs, entry->TemplateArgs, args); + supername, entry->NumberOfTemplateParameters, entry->TemplateParameters, args); if (supername != entry->SuperClasses[j]) { supername_needs_free = 1; @@ -771,11 +795,11 @@ const char *vtkParseHierarchy_TemplatedSuperClass( if (classname[j] == '<') { vtkParse_DecomposeTemplatedType(classname, &name, - entry->NumberOfTemplateArgs, &args, entry->TemplateArgDefaults); + entry->NumberOfTemplateParameters, &args, entry->TemplateDefaults); supername = vtkParse_StringReplace(entry->SuperClasses[i], - entry->NumberOfTemplateArgs, entry->TemplateArgs, args); + entry->NumberOfTemplateParameters, entry->TemplateParameters, args); vtkParse_FreeTemplateDecomposition( - name, entry->NumberOfTemplateArgs, args); + name, entry->NumberOfTemplateParameters, args); } if (supername == entry->SuperClasses[i]) @@ -818,7 +842,8 @@ const char *vtkParseHierarchy_GetProperty( /* Expand all unrecognized types in a ValueInfo struct by * using the typedefs in the HierarchyInfo struct. */ int vtkParseHierarchy_ExpandTypedefsInValue( - const HierarchyInfo *info, ValueInfo *val, const char *scope) + const HierarchyInfo *info, ValueInfo *val, StringCache *cache, + const char *scope) { char text[128]; char *cp; @@ -873,7 +898,8 @@ int vtkParseHierarchy_ExpandTypedefsInValue( info, entry->SuperClasses[i], NULL); scope_needs_free = (scope != entry->SuperClasses[i]); /* recurse if more than one superclass */ - if (vtkParseHierarchy_ExpandTypedefsInValue(info, val, scope)) + if (vtkParseHierarchy_ExpandTypedefsInValue( + info, val, cache, scope)) { if (scope_needs_free) { free((char *)scope); } return 1; @@ -904,7 +930,7 @@ int vtkParseHierarchy_ExpandTypedefsInValue( info, val->Class, scope); if (newclass != val->Class) { - val->Class = vtkParse_DuplicateString(newclass, strlen(newclass)); + val->Class = vtkParse_CacheString(cache, newclass, strlen(newclass)); free((char *)newclass); } result = 1; diff --git a/src/ParaView/vtkParseHierarchy.h b/src/ParaView/vtkParseHierarchy.h index 7edb869e..876702c1 100644 --- a/src/ParaView/vtkParseHierarchy.h +++ b/src/ParaView/vtkParseHierarchy.h @@ -40,7 +40,7 @@ #define VTK_PARSE_HIERARCHY_H /* Need the ValueInfo struct for typedefs */ -#include "vtkParse.h" +#include "vtkParseData.h" /** * One entry from the hierarchy file. @@ -51,9 +51,9 @@ typedef struct _HierarchyEntry const char *Name; /* the class or type name */ const char *HeaderFile; /* header file the class is defined in */ const char *Module; /* library the class is defined in */ - int NumberOfTemplateArgs; /* number of template arguments */ - const char **TemplateArgs; - const char **TemplateArgDefaults; + int NumberOfTemplateParameters; /* number of template params */ + const char **TemplateParameters; + const char **TemplateDefaults; int NumberOfProperties; /* number of properties */ const char **Properties; int NumberOfSuperClasses; /* number of superclasses */ @@ -71,6 +71,7 @@ typedef struct _HierarchyInfo { int NumberOfEntries; HierarchyEntry *Entries; + StringCache *Strings; } HierarchyInfo; #ifdef __cplusplus @@ -140,7 +141,8 @@ const char *vtkParseHierarchy_TemplatedSuperClass( * using the typedefs in the HierarchyInfo struct. */ int vtkParseHierarchy_ExpandTypedefsInValue( - const HierarchyInfo *info, ValueInfo *data, const char *scope); + const HierarchyInfo *info, ValueInfo *data, StringCache *cache, + const char *scope); /** * Expand typedefs found in a name stored as a string. The value diff --git a/src/ParaView/vtkParseMain.c b/src/ParaView/vtkParseMain.c index f7ddbbfb..a9e4f7a8 100644 --- a/src/ParaView/vtkParseMain.c +++ b/src/ParaView/vtkParseMain.c @@ -16,118 +16,336 @@ /* This file provides a unified front-end for the wrapper generators. -It contains the main() function and argument parsing, and calls -the code that parses the header file. */ #include "vtkParse.h" +#include "vtkParseData.h" #include "vtkParseMain.h" -#include "vtkParseInternal.h" -#include "vtkConfigure.h" // VTK_VERSION +#include #include #include #include -#include /* This is the struct that contains the options */ OptionInfo options; -/* Flags for --help and --version */ -int vtk_parse_help = 0; -int vtk_parse_version = 0; +/* Get the base filename */ +static const char *parse_exename(const char *cmd) +{ + const char *exename; + + /* remove directory part of exe name */ + for (exename = cmd + strlen(cmd); exename > cmd; --exename) + { + char pc = exename[-1]; + if (pc == ':' || pc == '/' || pc == '\\') + { + break; + } + } + + return exename; +} + +/* Print the help */ +static void parse_print_help(FILE *fp, const char *cmd, int multi) +{ + fprintf(fp, + "Usage: %s [options] infile... \n" + " --help print this help message\n" + " --version print the VTK version\n" + " -o the output file\n" + " -I add an include directory\n" + " -D define a preprocessor macro\n" + " -U undefine a preprocessor macro\n" + " @ read arguments from a file\n", + parse_exename(cmd)); + + /* args for describing a singe header file input */ + if (!multi) + { + fprintf(fp, + " --hints the hints file to use\n" + " --types the type hierarchy file to use\n" + " --concrete force concrete class (ignored, deprecated)\n" + " --abstract force abstract class (ignored, deprecated)\n" + " --vtkobject vtkObjectBase-derived class (ignored, deprecated)\n" + " --special non-vtkObjectBase class (ignored, deprecated)\n"); + } +} -/* This method provides the back-end for the generators */ -extern void vtkParseOutput(FILE *, FileInfo *); +/* append an arg to the arglist */ +static void parse_append_arg(int *argn, char ***args, char *arg) +{ + /* if argn is a power of two, allocate more space */ + if (*argn > 0 && (*argn & (*argn - 1)) == 0) + { + *args = (char **)realloc(*args, 2*(*argn)*sizeof(char *)); + } + /* append argument to list */ + (*args)[*argn] = arg; + (*argn)++; +} -/* Check the options */ -static int check_options(int argc, char *argv[]) +/* read options from a file, return zero on error */ +static int read_option_file( + StringCache *strings, const char *filename, int *argn, char ***args) +{ + static int option_file_stack_max = 10; + static int option_file_stack_size = 0; + static const char *option_file_stack[10]; + FILE *fp; + char *line; + const char *ccp; + char *argstring; + char *arg; + size_t maxlen = 15; + size_t i, n; + int j; + int in_string; + + line = (char *)malloc(maxlen); + + fp = fopen(filename, "r"); + + if (fp == NULL) + { + return 0; + } + + /* read the file line by line */ + while (fgets(line, (int)maxlen, fp)) + { + n = strlen(line); + + /* if buffer not long enough, increase it */ + while (n == maxlen-1 && line[n-1] != '\n' && !feof(fp)) + { + maxlen *= 2; + line = (char *)realloc(line, maxlen); + if (!fgets(&line[n], (int)(maxlen-n), fp)) { break; } + n += strlen(&line[n]); + } + + /* allocate a string to hold the parsed arguments */ + argstring = vtkParse_NewString(strings, n); + arg = argstring; + i = 0; + + /* break the line into individual options */ + ccp = line; + in_string = 0; + while (*ccp != '\0') + { + for (;;) + { + if (*ccp == '\\') + { + ccp++; + } + else if (*ccp == '\"' || *ccp == '\'') + { + if (!in_string) + { + in_string = *ccp++; + continue; + } + else if (*ccp == in_string) + { + in_string = 0; + ccp++; + continue; + } + } + else if (!in_string && isspace(*ccp)) + { + do { ccp++; } while (isspace(*ccp)); + break; + } + if (*ccp == '\0') + { + break; + } + /* append character to argument */ + arg[i++] = *ccp++; + } + arg[i++] = '\0'; + + if (arg[0] == '@') + { + /* recursively expand '@file' option */ + if (option_file_stack_size == option_file_stack_max) + { + fprintf(stderr, "%s: @file recursion is too deep.\n", + (*args)[0]); + exit(1); + } + /* avoid reading the same file recursively */ + option_file_stack[option_file_stack_size++] = filename; + for (j = 0; j < option_file_stack_size; j++) + { + if (strcmp(&arg[1], option_file_stack[j]) == 0) + { + break; + } + } + if (j < option_file_stack_size) + { + parse_append_arg(argn, args, arg); + } + else if (read_option_file(strings, &arg[1], argn, args) == 0) + { + parse_append_arg(argn, args, arg); + } + option_file_stack_size--; + } + else if (arg[0] != '\0') + { + parse_append_arg(argn, args, arg); + } + /* prepare for next arg */ + arg += i; + i = 0; + } + } + + return 1; +} + +/* expand any "@file" args that occur in the command-line args */ +static void parse_expand_args( + StringCache *strings, int argc, char *argv[], int *argn, char ***args) +{ + int i; + + *argn = 0; + *args = (char **)malloc(sizeof(char *)); + + for (i = 0; i < argc; i++) + { + /* check for "@file" unless this is the command name */ + if (i > 0 || argv[i][0] == '@') + { + /* if read_option_file returns null, add "@file" to the args */ + /* (this mimics the way that gcc expands @file arguments) */ + if (read_option_file(strings, &argv[i][1], argn, args) == 0) + { + parse_append_arg(argn, args, argv[i]); + } + } + else + { + /* append any other arg */ + parse_append_arg(argn, args, argv[i]); + } + } +} + +/* Check the options: "multi" should be zero for wrapper tools that + * only take one input file, or one for wrapper tools that take multiple + * input files. Returns zero for "--version" or "--help", or returns -1 + * if an error occurred. Otherwise, it returns the number of args + * that were successfully parsed. */ +static int parse_check_options(int argc, char *argv[], int multi) { int i; size_t j; + char *cp; + char c; + options.NumberOfFiles = 0; + options.Files = NULL; options.InputFileName = NULL; options.OutputFileName = NULL; - options.IsAbstract = 0; - options.IsConcrete = 0; - options.IsVTKObject = 0; - options.IsSpecialObject = 0; options.HierarchyFileName = 0; options.HintFileName = 0; - for (i = 1; i < argc && argv[i][0] == '-'; i++) + for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--concrete") == 0) - { - options.IsConcrete = 1; - } - else if (strcmp(argv[i], "--abstract") == 0) + if (strcmp(argv[i], "--help") == 0) { - options.IsAbstract = 1; + parse_print_help(stdout, argv[0], multi); + return 0; } - else if (strcmp(argv[i], "--vtkobject") == 0) - { - options.IsVTKObject = 1; - } - else if (strcmp(argv[i], "--special") == 0) + else if (strcmp(argv[i], "--version") == 0) { - options.IsSpecialObject = 1; + const char *ver = VTK_PARSE_VERSION; + fprintf(stdout, "%s %s\n", parse_exename(argv[0]), ver); + return 0; } - else if (strcmp(argv[i], "--hints") == 0) + else if (argv[i][0] != '-') { - i++; - if (i >= argc || argv[i][0] == '-') + if (options.NumberOfFiles == 0) { - return -1; + options.Files = (char **)malloc(sizeof(char *)); } - options.HintFileName = argv[i]; - } - else if (strcmp(argv[i], "--types") == 0) - { - i++; - if (i >= argc || argv[i][0] == '-') + else if ((options.NumberOfFiles & (options.NumberOfFiles - 1)) == 0) { - return -1; + options.Files = (char **)realloc( + options.Files, 2*options.NumberOfFiles*sizeof(char *)); } - options.HierarchyFileName = argv[i]; + options.Files[options.NumberOfFiles++] = argv[i]; } - else if (strcmp(argv[i], "-I") == 0) + else if (argv[i][0] == '-' && isalpha(argv[i][1])) { - i++; - if (i >= argc || argv[i][0] == '-') + c = argv[i][1]; + cp = &argv[i][2]; + if (*cp == '\0') { - return -1; + i++; + if (i >= argc || argv[i][0] == '-') + { + return -1; + } + cp = argv[i]; + } + + if (c == 'o') + { + options.OutputFileName = cp; + } + else if (c == 'I') + { + vtkParse_IncludeDirectory(cp); + } + else if (c == 'D') + { + j = 0; + while (cp[j] != '\0' && cp[j] != '=') { j++; } + if (cp[j] == '=') { j++; } + vtkParse_DefineMacro(cp, &cp[j]); + } + else if (c == 'U') + { + vtkParse_UndefineMacro(cp); } - vtkParse_IncludeDirectory(argv[i]); } - else if (strcmp(argv[i], "-D") == 0) + else if (!multi && strcmp(argv[i], "--hints") == 0) { i++; - j = 0; if (i >= argc || argv[i][0] == '-') { return -1; } - while (argv[i][j] != '\0' && argv[i][j] != '=') { j++; } - if (argv[i][j] == '=') { j++; } - vtkParse_DefineMacro(argv[i], &argv[i][j]); + options.HintFileName = argv[i]; } - else if (strcmp(argv[i], "-U") == 0) + else if (!multi && strcmp(argv[i], "--types") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } - vtkParse_UndefineMacro(argv[i]); - } - else if (strcmp(argv[i], "--help") == 0) - { - vtk_parse_help = 1; + options.HierarchyFileName = argv[i]; } - else if (strcmp(argv[i], "--version") == 0) + else if (strcmp(argv[i], "--vtkobject") == 0 || + strcmp(argv[i], "--special") == 0 || + strcmp(argv[i], "--abstract") == 0 || + strcmp(argv[i], "--concrete") == 0) { - vtk_parse_version = 1; + fprintf(stderr, "Warning: the %s option is deprecated " + "and will be ignored.\n", argv[i]); } } @@ -140,96 +358,64 @@ OptionInfo *vtkParse_GetCommandLineOptions() return &options; } -static void vtk_parse_print_help(FILE *stream, const char *cmd) -{ - fprintf(stream, - "Usage: %s [options] input_file output_file\n" - " --help print this help message\n" - " --version print the VTK version\n" - " --concrete force concrete class\n" - " --abstract force abstract class\n" - " --vtkobject vtkObjectBase-derived class\n" - " --special non-vtkObjectBase class\n" - " --hints the hints file to use\n" - " --types the type hierarchy file to use\n" - " -I add an include directory\n" - " -D define a preprocessor macro\n" - " -U undefine a preprocessor macro\n", - cmd); -} - -int main(int argc, char *argv[]) +/* Command-line argument handler for wrapper tools */ +FileInfo *vtkParse_Main(int argc, char *argv[]) { int argi; - int has_options = 0; + int expected_files; FILE *ifile; - FILE *ofile; FILE *hfile = 0; - const char *cp; - char *classname; - size_t i; FileInfo *data; + StringCache strings; + int argn; + char **args; - argi = check_options(argc, argv); - if (argi > 1 && argc - argi == 2) - { - has_options = 1; - } - else if (argi < 0 || argc > 5 || - (argc < 3 && !vtk_parse_help && !vtk_parse_version)) - { - vtk_parse_print_help(stderr, argv[0]); - exit(1); - } + /* expand any "@file" args */ + vtkParse_InitStringCache(&strings); + parse_expand_args(&strings, argc, argv, &argn, &args); + + /* read the args into the static OptionInfo struct */ + argi = parse_check_options(argn, args, 0); - if (vtk_parse_version) + /* was output file already specified by the "-o" option? */ + expected_files = (options.OutputFileName == NULL ? 2 : 1); + + /* verify number of args, print usage if not valid */ + if (argi == 0) { - const char *ver = VTK_VERSION; - const char *exename = argv[0]; - /* remove directory part of exe name */ - for (exename += strlen(exename); exename > argv[0]; --exename) - { - char pc = *(exename - 1); - if (pc == ':' || pc == '/' || pc == '\\') - { - break; - } - } - fprintf(stdout, "%s %s\n", exename, ver); + free(args); exit(0); } - if (vtk_parse_help) + else if (argi < 0 || options.NumberOfFiles != expected_files) { - vtk_parse_print_help(stdout, argv[0]); - exit(0); + parse_print_help(stderr, args[0], 0); + exit(1); } - options.InputFileName = argv[argi++]; + /* open the input file */ + options.InputFileName = options.Files[0]; - ifile = fopen(options.InputFileName, "r"); - if (!ifile) + if (!(ifile = fopen(options.InputFileName, "r"))) { - fprintf(stderr,"Error opening input file %s\n", options.InputFileName); + fprintf(stderr, "Error opening input file %s\n", options.InputFileName); exit(1); } - if (!has_options) + if (options.OutputFileName == NULL && + options.NumberOfFiles > 1) { - if (argc == 5) - { - options.HintFileName = argv[argi++]; - } - if (argc >= 4) - { - options.IsConcrete = atoi(argv[argi++]); - options.IsAbstract = !options.IsConcrete; - } + /* allow outfile to be given after infile, if "-o" option not used */ + options.OutputFileName = options.Files[1]; + fprintf(stderr, "Deprecated: specify output file with \"-o\".\n"); } + /* free the expanded args */ + free(args); + + /* open the hint file, if given on the command line */ if (options.HintFileName && options.HintFileName[0] != '\0') { - hfile = fopen(options.HintFileName, "r"); - if (!hfile) + if (!(hfile = fopen(options.HintFileName, "r"))) { fprintf(stderr, "Error opening hint file %s\n", options.HintFileName); fclose(ifile); @@ -237,12 +423,10 @@ int main(int argc, char *argv[]) } } - options.OutputFileName = argv[argi++]; - ofile = fopen(options.OutputFileName, "w"); - - if (!ofile) + /* make sure than an output file was given on the command line */ + if (options.OutputFileName == NULL) { - fprintf(stderr, "Error opening output file %s\n", options.OutputFileName); + fprintf(stderr, "No output file was specified\n"); fclose(ifile); if (hfile) { @@ -251,59 +435,74 @@ int main(int argc, char *argv[]) exit(1); } - if (options.IsConcrete) - { - cp = options.InputFileName; - i = strlen(cp); - classname = (char *)malloc(i+1); - while (i > 0 && - cp[i-1] != '/' && cp[i-1] != '\\' && cp[i-1] != ':') { i--; } - strcpy(classname, &cp[i]); - i = 0; - while (classname[i] != '\0' && classname[i] != '.') { i++; } - classname[i] = '\0'; - - vtkParse_SetClassProperty(classname, "concrete"); - } - + /* if a hierarchy is was given, then BTX/ETX can be ignored */ vtkParse_SetIgnoreBTX(0); if (options.HierarchyFileName) { vtkParse_SetIgnoreBTX(1); } + /* parse the input file */ data = vtkParse_ParseFile(options.InputFileName, ifile, stderr); if (!data) { - fclose(ifile); - fclose(ofile); - if (hfile) - { - fclose(hfile); - } exit(1); } + /* fill in some blanks by using the hints file */ if (hfile) { vtkParse_ReadHints(data, hfile, stderr); } - if (options.IsConcrete && data->MainClass) - { - data->MainClass->IsAbstract = 0; - } - else if (options.IsAbstract && data->MainClass) + if (data->MainClass) { - data->MainClass->IsAbstract = 1; + /* mark class as abstract unless it has New() method */ + int nfunc = data->MainClass->NumberOfFunctions; + int ifunc; + for (ifunc = 0; ifunc < nfunc; ifunc++) + { + FunctionInfo *func = data->MainClass->Functions[ifunc]; + if (func && func->Access == VTK_ACCESS_PUBLIC && + func->Name && strcmp(func->Name, "New") == 0 && + func->NumberOfParameters == 0) + { + break; + } + } + data->MainClass->IsAbstract = ((ifunc == nfunc) ? 1 : 0); } - vtkParseOutput(ofile, data); + return data; +} - fclose(ofile); +/* Command-line argument handler for wrapper tools */ +void vtkParse_MainMulti(int argc, char *argv[]) +{ + int argi; + int argn; + char **args; + StringCache strings; - vtkParse_Free(data); + /* expand any "@file" args */ + vtkParse_InitStringCache(&strings); + parse_expand_args(&strings, argc, argv, &argn, &args); + + /* read the args into the static OptionInfo struct */ + argi = parse_check_options(argn, args, 1); + free(args); + + if (argi == 0) + { + exit(0); + } + else if (argi < 0 || options.NumberOfFiles == 0) + { + parse_print_help(stderr, argv[0], 1); + exit(1); + } - return 0; + /* the input file */ + options.InputFileName = options.Files[0]; } diff --git a/src/ParaView/vtkParseMain.h b/src/ParaView/vtkParseMain.h new file mode 100644 index 00000000..6bf6f406 --- /dev/null +++ b/src/ParaView/vtkParseMain.h @@ -0,0 +1,86 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkParseMain.h + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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. + +=========================================================================*/ + +/** + vtkParseMain.h provides argument parsing for the wrapper executables. + + Usage: vtkWrap [options] infile ... + + -D add a macro definition + -U cancel a macro definition + -I add an include directory + -o specify the output file + @ read arguments from a file + --help print a help message and exit + --version print the VTK version number and exit + --hints hints file + --types type hierarchy file + + Notes: + + 1) The "-o" option is needed when there are multiple input files. + Otherwise, the output file can be given after the input file. + + 2) The "@file" option allows arguments to be stored in a file, + instead of given on the command line. The use of such a file + is sometimes necessary to avoid overflowing the 8191-character + command-line limit on Windows. If the file is not found, then + "@file" will be passed as as a command-line parameter. +*/ + +#ifndef VTK_PARSE_MAIN_H +#define VTK_PARSE_MAIN_H + +#include "vtkParseData.h" +#include + +/** + * Options for the wrappers + */ +typedef struct _OptionInfo +{ + int NumberOfFiles; /* the total number of file arguments */ + char **Files; /* all of the file arguments */ + char *InputFileName; /* the first file argument */ + char *OutputFileName; /* the second file, or the "-o" file */ + char *HintFileName; /* the file preceded by "--hints" */ + char *HierarchyFileName; /* the file preceded by "--types" */ +} OptionInfo; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Return the options provided on the command line + */ +OptionInfo *vtkParse_GetCommandLineOptions(); + +/** + * The main function, parses the file and returns the result. + */ +FileInfo *vtkParse_Main(int argc, char *argv[]); + +/** + * A main function that can take multiple input files. + * It does not parse the files. It will exit on error. + */ +void vtkParse_MainMulti(int argc, char *argv[]); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/ParaView/vtkParsePreprocess.c b/src/ParaView/vtkParsePreprocess.c index 5bed2aea..8107e37a 100644 --- a/src/ParaView/vtkParsePreprocess.c +++ b/src/ParaView/vtkParsePreprocess.c @@ -33,32 +33,95 @@ #define PREPROC_DEBUG 0 +/** Block size for reading files */ +#define FILE_BUFFER_SIZE 8192 + +/** Size of hash table must be a power of two */ +#define PREPROC_HASH_TABLE_SIZE 1024u + +/** Hashes for preprocessor keywords */ +#define HASH_IFDEF 0x0fa4b283u +#define HASH_IFNDEF 0x04407ab1u +#define HASH_IF 0x00597834u +#define HASH_ELIF 0x7c964b25u +#define HASH_ELSE 0x7c964c6eu +#define HASH_ENDIF 0x0f60b40bu +#define HASH_DEFINED 0x088998d4u +#define HASH_DEFINE 0xf8804a70u +#define HASH_UNDEF 0x10823b97u +#define HASH_INCLUDE 0x9e36af89u +#define HASH_ERROR 0x0f6321efu +#define HASH_LINE 0x7c9a15adu +#define HASH_PRAGMA 0x1566a9fdu + +/** Various possible char types */ +#define CPRE_ID 0x01 /* A-Z a-z and _ */ +#define CPRE_DIGIT 0x02 /* 0-9 */ +#define CPRE_IDGIT 0x03 /* 0-9 A-Z a-z and _ */ +#define CPRE_HEX 0x04 /* 0-9A-Fa-f */ +#define CPRE_EXP 0x08 /* EPep (exponents for floats) */ +#define CPRE_SIGN 0x10 /* +- (sign for floats) */ +#define CPRE_QUOTE 0x20 /* " and ' */ +#define CPRE_HSPACE 0x40 /* space, tab, carriage return */ +#define CPRE_VSPACE 0x80 /* newline, vertical tab, form feed */ +#define CPRE_WHITE 0xC0 /* all whitespace characters */ + +/** Whitespace types. + * WS_NO_EOL treats newline as end-of-line, instead of whitespace. + * WS_ALL treats newlines as regular whitespace. + * WS_COMMENT does not treat comments as whitespace, allowing + * comments blocks to be returned as tokens. */ +typedef enum _preproc_space_t +{ + WS_NO_EOL = CPRE_HSPACE, /* skip horizontal whitespace only */ + WS_ALL = CPRE_WHITE, /* skip all whitespace */ + WS_COMMENT = (CPRE_WHITE | 0x100), /* comments as tokens */ +} preproc_space_t; + /** Preprocessor tokens. */ -enum _preproc_token_t +typedef enum _preproc_token_t { - TOK_ID = 258, - TOK_CHAR, - TOK_STRING, - TOK_NUMBER, - TOK_AND, - TOK_OR, - TOK_NE, - TOK_EQ, - TOK_GE, - TOK_LE, - TOK_LSHIFT, - TOK_RSHIFT, - TOK_DBLHASH, - TOK_ELLIPSIS, - TOK_OTHER -}; + TOK_OTHER = 257, + TOK_ID, /* any id */ + TOK_CHAR, /* char literal */ + TOK_STRING, /* string literal */ + TOK_NUMBER, /* any numeric literal */ + TOK_COMMENT, /* C or C++ comment */ + TOK_DBLHASH, /* ## */ + TOK_SCOPE, /* :: */ + TOK_INCR, /* ++ */ + TOK_DECR, /* -- */ + TOK_RSHIFT, /* >> */ + TOK_LSHIFT, /* << */ + TOK_AND, /* && */ + TOK_OR, /* || */ + TOK_EQ, /* == */ + TOK_NE, /* != */ + TOK_GE, /* >= */ + TOK_LE, /* <= */ + TOK_ADD_EQ, /* += */ + TOK_SUB_EQ, /* -= */ + TOK_MUL_EQ, /* *= */ + TOK_DIV_EQ, /* /= */ + TOK_MOD_EQ, /* %= */ + TOK_AND_EQ, /* &= */ + TOK_OR_EQ, /* |= */ + TOK_XOR_EQ, /* ^= */ + TOK_ARROW, /* -> */ + TOK_DOT_STAR, /* .* */ + TOK_ARROW_STAR,/* ->* */ + TOK_RSHIFT_EQ, /* >>= */ + TOK_LSHIFT_EQ, /* <<= */ + TOK_ELLIPSIS, /* ... */ +} preproc_token_t; /** A struct for going through the input one token at a time. */ typedef struct _preproc_tokenizer { int tok; - size_t len; + unsigned int hash; const char *text; + size_t len; } preproc_tokenizer; /** Extend dynamic arrays in a progression of powers of two. @@ -102,6 +165,55 @@ static preproc_uint_t string_to_preproc_uint(const char *cp, int base) #endif } +/** Array for quick lookup of char types */ +static unsigned char preproc_charbits[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + CPRE_HSPACE, /* tab */ + CPRE_VSPACE, CPRE_VSPACE, CPRE_VSPACE, /* newline, vtab, form feed */ + CPRE_HSPACE, /* carriage return */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + CPRE_HSPACE, /* ' ' */ + 0, CPRE_QUOTE, 0, 0, 0, 0, CPRE_QUOTE, 0, 0, /* !"#$%&'() */ + 0, CPRE_SIGN, 0, CPRE_SIGN, 0, 0, /* *+,-./ */ + CPRE_DIGIT|CPRE_HEX, /* 0 */ + CPRE_DIGIT|CPRE_HEX, CPRE_DIGIT|CPRE_HEX, + CPRE_DIGIT|CPRE_HEX, CPRE_DIGIT|CPRE_HEX, + CPRE_DIGIT|CPRE_HEX, CPRE_DIGIT|CPRE_HEX, + CPRE_DIGIT|CPRE_HEX, CPRE_DIGIT|CPRE_HEX, + CPRE_DIGIT|CPRE_HEX, /* 9 */ + 0, 0, 0, 0, 0, 0, 0, /* :;<=>?@ */ + CPRE_ID|CPRE_HEX, /* A */ + CPRE_ID|CPRE_HEX, CPRE_ID|CPRE_HEX, CPRE_ID|CPRE_HEX, /* BCD */ + CPRE_ID|CPRE_HEX|CPRE_EXP, /* E */ + CPRE_ID|CPRE_HEX, CPRE_ID, CPRE_ID, CPRE_ID, /* FGHI */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* JKLM */ + CPRE_ID, CPRE_ID, CPRE_ID|CPRE_EXP, CPRE_ID, /* NOPQ */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* RSTU */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* VWXY */ + CPRE_ID, /* Z */ + 0, 0, 0, 0, /* [\\]^ */ + CPRE_ID, /* _ */ + 0, /* ` */ + CPRE_ID|CPRE_HEX, /* a */ + CPRE_ID|CPRE_HEX, CPRE_ID|CPRE_HEX, CPRE_ID|CPRE_HEX, /* bcd */ + CPRE_ID|CPRE_HEX|CPRE_EXP, /* e */ + CPRE_ID|CPRE_HEX, CPRE_ID, CPRE_ID, CPRE_ID, /* fghi */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* jklm */ + CPRE_ID, CPRE_ID, CPRE_ID|CPRE_EXP, CPRE_ID, /* nopq */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* rstu */ + CPRE_ID, CPRE_ID, CPRE_ID, CPRE_ID, /* vwxy */ + CPRE_ID, /* z */ + 0, 0, 0, 0, /* {|}~ */ + 0, /* '\x7f' */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +/** Macro to get char type */ +#define preproc_chartype(c, bits) \ + ((preproc_charbits[(unsigned char)(c)] & bits) != 0) /** Skip over a comment. */ static void preproc_skip_comment(const char **cpp) @@ -137,26 +249,47 @@ static void preproc_skip_comment(const char **cpp) *cpp = cp; } -/** Skip over whitespace, but not newlines unless preceeded by backlash. */ -static void preproc_skip_whitespace(const char **cpp) +/** Skip over whitespace, but not newlines unless preceded by backlash. */ +static void preproc_skip_whitespace( + const char **cpp, preproc_space_t spacetype) { const char *cp = *cpp; for (;;) { - while (*cp == ' ' || *cp == '\t' || *cp == '\r') { cp++; } - - if (cp[0] == '\\' && cp[1] == '\n') + if (preproc_chartype(*cp, spacetype)) { - cp += 2; + do + { + cp++; + } + while (preproc_chartype(*cp, spacetype)); } - else if (cp[0] == '\\' && cp[1] == '\r' && cp[2] == '\n') + if (cp[0] == '\\') { - cp += 3; + if (cp[1] == '\n') + { + cp += 2; + } + else if (cp[1] == '\r' && cp[2] == '\n') + { + cp += 3; + } + else + { + break; + } } - else if (cp[0] == '/' && (cp[1] == '/' || cp[1] == '*')) + else if (cp[0] == '/' && (spacetype & WS_COMMENT) != WS_COMMENT) { - preproc_skip_comment(&cp); + if (cp[1] == '/' || cp[1] == '*') + { + preproc_skip_comment(&cp); + } + else + { + break; + } } else { @@ -173,13 +306,16 @@ static void preproc_skip_quotes(const char **cpp) const char *cp = *cpp; const char qc = *cp; - if (*cp == '\'' || *cp == '\"') + if (preproc_chartype(*cp, CPRE_QUOTE)) { cp++; while (*cp != qc && *cp != '\n' && *cp != '\0') { - if (cp[0] == '\\' && cp[1] == qc) { cp++; } - cp++; + if (*cp++ == '\\') + { + if (cp[0] == '\r' && cp[1] == '\n') { cp += 2; } + else if (*cp != '\0') { cp++; } + } } } if (*cp == qc) @@ -195,21 +331,32 @@ static void preproc_skip_name(const char **cpp) { const char *cp = *cpp; - if ((*cp >= 'a' && *cp <= 'z') || - (*cp >= 'A' && *cp <= 'Z') || - (*cp == '_')) + if (preproc_chartype(*cp, CPRE_ID)) { - cp++; - while ((*cp >= '0' && *cp <= '9') || - (*cp >= 'a' && *cp <= 'z') || - (*cp >= 'A' && *cp <= 'Z') || - (*cp == '_')) + do { cp++; } + while (preproc_chartype(*cp, CPRE_IDGIT)); + } + + *cpp = cp; +} + +/** A simple 32-bit hash function based on "djb2". */ +static unsigned int preproc_hash_name(const char **cpp) +{ + const char *cp = (*cpp); + int h = 5381; + + if (preproc_chartype(*cp, CPRE_ID)) + { + do { h = (h << 5) + h + (unsigned char)*cp++; } + while (preproc_chartype(*cp, CPRE_IDGIT)); } *cpp = cp; + return h; } /** Skip over a number. */ @@ -217,22 +364,19 @@ static void preproc_skip_number(const char **cpp) { const char *cp = *cpp; - if ((cp[0] >= '0' && cp[0] <= '9') || - (cp[0] == '.' && (cp[1] >= '0' && cp[1] <= '9'))) + if (preproc_chartype(cp[0], CPRE_DIGIT) || + (cp[0] == '.' && preproc_chartype(cp[1], CPRE_DIGIT))) { - cp++; - while ((*cp >= '0' && *cp <= '9') || - (*cp >= 'a' && *cp <= 'z') || - (*cp >= 'A' && *cp <= 'Z') || - *cp == '_' || *cp == '.') + do { char c = *cp++; - if (c == 'e' || c == 'E' || - c == 'p' || c == 'P') + if (preproc_chartype(c, CPRE_EXP) && + preproc_chartype(*cp, CPRE_SIGN)) { - if (*cp == '-' || *cp == '+') { cp++; } + cp++; } } + while (preproc_chartype(*cp, CPRE_IDGIT) || *cp == '.'); } *cpp = cp; @@ -242,119 +386,118 @@ static void preproc_skip_number(const char **cpp) static int preproc_next(preproc_tokenizer *tokens) { const char *cp = tokens->text + tokens->len; - preproc_skip_whitespace(&cp); - tokens->text = cp; + preproc_skip_whitespace(&cp, WS_NO_EOL); - if (cp[0] == '_' || - (cp[0] >= 'a' && cp[0] <= 'z') || - (cp[0] >= 'A' && cp[0] <= 'Z')) + if (preproc_chartype(*cp, CPRE_ID)) { const char *ep = cp; - preproc_skip_name(&ep); - tokens->len = ep - cp; + unsigned int h = preproc_hash_name(&ep); tokens->tok = TOK_ID; + tokens->hash = h; + tokens->text = cp; + tokens->len = ep - cp; } - else if ((cp[0] >= '0' && cp[0] <= '9') || - (cp[0] == '.' && (cp[1] >= '0' && cp[1] <= '9'))) + else if (preproc_chartype(*cp, CPRE_QUOTE)) { const char *ep = cp; - preproc_skip_number(&ep); + preproc_skip_quotes(&ep); + tokens->tok = (*cp == '\"' ? TOK_STRING : TOK_CHAR); + tokens->hash = 0; + tokens->text = cp; tokens->len = ep - cp; - tokens->tok = TOK_NUMBER; } - else if (cp[0] == '\'') + else if (preproc_chartype(*cp, CPRE_DIGIT) || + (cp[0] == '.' && preproc_chartype(cp[1], CPRE_DIGIT))) { const char *ep = cp; - preproc_skip_quotes(&ep); + preproc_skip_number(&ep); + tokens->tok = TOK_NUMBER; + tokens->hash = 0; + tokens->text = cp; tokens->len = ep - cp; - tokens->tok = TOK_CHAR; } - else if (cp[0] == '\"') + else if (cp[0] == '/' && (cp[1] == '/' || cp[1] == '*')) { const char *ep = cp; - preproc_skip_quotes(&ep); + preproc_skip_comment(&ep); + tokens->tok = TOK_COMMENT; + tokens->hash = 0; + tokens->text = cp; tokens->len = ep - cp; - tokens->tok = TOK_STRING; } else { + int t = cp[0]; + size_t l = 1; + switch (cp[0]) { case ':': - if (cp[1] == ':') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == ':') { l = 2; t = TOK_SCOPE; } break; case '.': - if (cp[1] == '.' && cp[2] == '.') - { tokens->len = 3; tokens->tok = TOK_ELLIPSIS; } - else if (cp[1] == '*') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '.' && cp[2] == '.') { l = 3; t = TOK_ELLIPSIS; } + else if (cp[1] == '*') { l = 2; t = TOK_DOT_STAR; } break; case '=': - if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_EQ; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '=') { l = 2; t = TOK_EQ; } break; case '!': - if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_NE; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '=') { l = 2; t = TOK_NE; } break; case '<': - if (cp[1] == '<' && cp[2] == '=') - { tokens->len = 3; tokens->tok = TOK_OTHER; } - else if (cp[1] == '<') { tokens->len = 2; tokens->tok = TOK_RSHIFT; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_LE; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '<' && cp[2] == '=') { l = 3; t = TOK_LSHIFT_EQ; } + else if (cp[1] == '<') { l = 2; t = TOK_LSHIFT; } + else if (cp[1] == '=') { l = 2; t = TOK_LE; } break; case '>': - if (cp[1] == '>' && cp[2] == '=') - { tokens->len = 3; tokens->tok = TOK_OTHER; } - else if (cp[1] == '>') { tokens->len = 2; tokens->tok = TOK_LSHIFT; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_GE; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '>' && cp[2] == '=') { l = 3; t = TOK_RSHIFT_EQ; } + else if (cp[1] == '>') { l = 2; t = TOK_RSHIFT; } + else if (cp[1] == '=') { l = 2; t = TOK_GE; } break; case '&': - if (cp[1] == '&' && cp[2] == '=') - { tokens->len = 3; tokens->tok = TOK_OTHER; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else if (cp[1] == '&') { tokens->len = 2; tokens->tok = TOK_AND; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '=') { l = 2; t = TOK_AND_EQ; } + else if (cp[1] == '&') { l = 2; t = TOK_AND; } break; case '|': - if (cp[1] == '|' && cp[2] == '=') - { tokens->len = 3; tokens->tok = TOK_OTHER; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else if (cp[1] == '|') { tokens->len = 2; tokens->tok = TOK_OR; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '=') { l = 2; t = TOK_OR_EQ; } + else if (cp[1] == '|') { l = 2; t = TOK_OR; } + break; + case '^': + if (cp[1] == '=') { l = 2; t = TOK_XOR_EQ; } + break; + case '*': + if (cp[1] == '=') { l = 2; t = TOK_MUL_EQ; } break; - case '^': case '*': case '/': case '%': - if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else { tokens->len = 1; tokens->tok = cp[0]; } + case '/': + if (cp[1] == '=') { l = 2; t = TOK_DIV_EQ; } + break; + case '%': + if (cp[1] == '=') { l = 2; t = TOK_MOD_EQ; } break; case '+': - if (cp[1] == '+') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '+') { l = 2; t = TOK_INCR; } + else if (cp[1] == '=') { l = 2; t = TOK_ADD_EQ; } break; case '-': - if (cp[1] == '>' && cp[2] == '*') - { tokens->len = 3; tokens->tok = TOK_OTHER; } - else if (cp[1] == '>') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else if (cp[1] == '-') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else if (cp[1] == '=') { tokens->len = 2; tokens->tok = TOK_OTHER; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '>' && cp[2] == '*') { l = 3; t = TOK_ARROW_STAR; } + else if (cp[1] == '>') { l = 2; t = TOK_ARROW; } + else if (cp[1] == '-') { l = 2; t = TOK_DECR; } + else if (cp[1] == '=') { l = 2; t = TOK_SUB_EQ; } break; case '#': - if (cp[1] == '#') { tokens->len = 2; tokens->tok = TOK_DBLHASH; } - else { tokens->len = 1; tokens->tok = cp[0]; } + if (cp[1] == '#') { l = 2; t = TOK_DBLHASH; } break; case '\n': case '\0': - { tokens->len = 0; tokens->tok = 0; } - break; - default: - { tokens->len = 1; tokens->tok = cp[0]; } + { l = 0; t = 0; } break; } + + tokens->tok = t; + tokens->hash = 0; + tokens->text = cp; + tokens->len = l; } return tokens->tok; @@ -364,11 +507,50 @@ static int preproc_next(preproc_tokenizer *tokens) static void preproc_init(preproc_tokenizer *tokens, const char *text) { tokens->tok = 0; - tokens->len = 0; + tokens->hash = 0; tokens->text = text; + tokens->len = 0; preproc_next(tokens); } +/** Tokenize and compare two strings */ +static int preproc_identical(const char *text1, const char *text2) +{ + int result = 1; + + if (text1 != text2) + { + result = 0; + + if (text1 && text2) + { + preproc_tokenizer t1; + preproc_tokenizer t2; + + preproc_init(&t1, text1); + preproc_init(&t2, text2); + + do + { + if (t1.tok != t2.tok || + t1.hash != t2.hash || + t1.len != t2.len || + strncmp(t1.text, t2.text, t1.len) != 0) + { + break; + } + preproc_next(&t1); + preproc_next(&t2); + } + while (t1.tok && t2.tok); + + result = (t1.tok == 0 && t2.tok == 0); + } + } + + return result; +} + /** Duplicate the first n bytes of a string. */ static const char *preproc_strndup(const char *in, size_t n) { @@ -381,23 +563,8 @@ static const char *preproc_strndup(const char *in, size_t n) return res; } -/** Free a preprocessor macro struct. */ -static void preproc_free_macro(MacroInfo *info) -{ - free(info); -} - -/** Add a preprocessor macro to the PreprocessInfo. */ -static void preproc_add_macro( - PreprocessInfo *info, MacroInfo *macro) -{ - info->Macros = (MacroInfo **)preproc_array_check( - info->Macros, sizeof(MacroInfo *), info->NumberOfMacros); - info->Macros[info->NumberOfMacros++] = macro; -} - -/** A simple way to add a preprocessor macro definition. */ -static MacroInfo *preproc_add_macro_definition( +/** Create a new preprocessor macro. */ +static MacroInfo *preproc_new_macro( PreprocessInfo *info, const char *name, const char *definition) { MacroInfo *macro = (MacroInfo *)malloc(sizeof(MacroInfo)); @@ -430,58 +597,179 @@ static MacroInfo *preproc_add_macro_definition( } macro->IsExternal = info->IsExternal; - preproc_add_macro(info, macro); return macro; } +/** Free a preprocessor macro struct. */ +static void preproc_free_macro(MacroInfo *info) +{ + free(info); +} + /** Find a preprocessor macro, return 0 if not found. */ -static int preproc_find_macro( - PreprocessInfo *info, const char *name, int *idx) +static MacroInfo *preproc_find_macro( + PreprocessInfo *info, preproc_tokenizer *token) { - int i, n; - size_t m; - const char *cp = name; + unsigned int m = PREPROC_HASH_TABLE_SIZE - 1; + unsigned int i = (token->hash & m); + const char *name = token->text; + size_t l = token->len; + MacroInfo ***htable = info->MacroHashTable; + MacroInfo **hptr; + const char *mname; + + if (htable && ((hptr = htable[i]) != NULL) && *hptr) + { + do + { + mname = (*hptr)->Name; + if (mname[0] == name[0] && + strncmp(mname, name, l) == 0 && + mname[l] == '\0') + { + return *hptr; + } + hptr++; + } + while (*hptr); + } + + return NULL; +} - preproc_skip_name(&cp); - m = cp - name; +/** Return the address of the macro within the hash table. + * If "insert" is nonzero, add a new location if macro not found. */ +static MacroInfo **preproc_macro_location( + PreprocessInfo *info, preproc_tokenizer *token, int insert) +{ + MacroInfo ***htable = info->MacroHashTable; + unsigned int m = PREPROC_HASH_TABLE_SIZE - 1; + unsigned int i = (token->hash & m); + const char *name = token->text; + size_t l = token->len; + size_t n; + MacroInfo **hptr; + const char *mname; - n = info->NumberOfMacros; - for (i = 0; i < n; i++) + if (htable == NULL) { - if (strncmp(name, info->Macros[i]->Name, m) == 0 && - info->Macros[i]->Name[m] == '\0') + if (!insert) { - *idx = i; - return 1; + return NULL; } + + m = PREPROC_HASH_TABLE_SIZE; + htable = (MacroInfo ***)malloc(m*sizeof(MacroInfo **)); + info->MacroHashTable = htable; + do { *htable++ = NULL; } while (--m); + htable = info->MacroHashTable; } - *idx = 0; - return 0; + hptr = htable[i]; + + if (hptr == NULL) + { + if (!insert) + { + return NULL; + } + + hptr = (MacroInfo **)malloc(2*sizeof(MacroInfo *)); + hptr[0] = NULL; + hptr[1] = NULL; + htable[i] = hptr; + } + else if (*hptr) + { + /* see if macro is already there */ + n = 0; + do + { + mname = (*hptr)->Name; + if (mname[0] == name[0] && + strncmp(mname, name, l) == 0 && + mname[l] == '\0') + { + break; + } + n++; + hptr++; + } + while (*hptr); + + if (*hptr == NULL) + { + if (!insert) + { + return NULL; + } + + /* if n+1 is a power of two, double allocated space */ + if (n > 0 && (n & (n+1)) == 0) + { + hptr = htable[i]; + hptr = (MacroInfo **)realloc(hptr, (2*(n+1))*sizeof(MacroInfo *)); + htable[i] = hptr; + hptr += n; + } + + /* add a terminating null */ + hptr[1] = NULL; + } + } + + return hptr; } -/** Remove a preprocessor macro. Returns 1 if macro not found. */ +/** Remove a preprocessor macro. Returns 0 if macro not found. */ static int preproc_remove_macro( - PreprocessInfo *info, const char *name) + PreprocessInfo *info, preproc_tokenizer *token) { - int i, n; + MacroInfo **hptr; + + hptr = preproc_macro_location(info, token, 0); - if (preproc_find_macro(info, name, &i)) + if (hptr && *hptr) { - preproc_free_macro(info->Macros[i]); - n = info->NumberOfMacros-1; - for (; i < n; i++) + preproc_free_macro(*hptr); + + do { - info->Macros[i] = info->Macros[i+1]; + hptr[0] = hptr[1]; + hptr++; } - info->NumberOfMacros = n; + while (*hptr); + return 1; } return 0; } +/** A simple way to add a preprocessor macro definition. */ +static MacroInfo *preproc_add_macro_definition( + PreprocessInfo *info, const char *name, const char *definition) +{ + preproc_tokenizer token; + MacroInfo *macro; + MacroInfo **macro_p; + + preproc_init(&token, name); + + macro = preproc_new_macro(info, name, definition); + macro_p = preproc_macro_location(info, &token, 1); +#if PREPROC_DEBUG + if (*macro_p) + { + fprintf(stderr, "duplicate macro definition %s\n", name); + } +#endif + *macro_p = macro; + + return macro; +} + /** Skip over parentheses, return nonzero if not closed. */ static int preproc_skip_parentheses(preproc_tokenizer *tokens) { @@ -510,6 +798,9 @@ static int preproc_skip_parentheses(preproc_tokenizer *tokens) return VTK_PARSE_OK; } +#if PREPROC_DEBUG + fprintf(stderr, "syntax error %d\n", __LINE__); +#endif return VTK_PARSE_SYNTAX_ERROR; } @@ -543,15 +834,12 @@ static int preproc_evaluate_char( else if (*cp == '0') { *val = string_to_preproc_int(cp, 8); - while (*cp >= '0' && *cp <= '7') { cp++; } + do { cp++; } while (*cp >= '0' && *cp <= '7'); } else if (*cp == 'x') { - cp++; - *val = string_to_preproc_int(cp, 16); - while ((*cp >= '0' && *cp <= '9') || - (*cp >= 'a' && *cp <= 'z') || - (*cp >= 'A' && *cp <= 'Z')) { cp++; } + *val = string_to_preproc_int(cp+1, 16); + do { cp++; } while (preproc_chartype(*cp, CPRE_HEX)); } } if (*cp != '\'') @@ -586,14 +874,12 @@ static int preproc_evaluate_integer( base = 16; *is_unsigned = 1; ep = cp; - while ((*ep >= '0' && *ep <= '9') || - (*ep >= 'a' && *ep <= 'f') || - (*ep >= 'A' && *ep <= 'F')) + while (preproc_chartype(*ep, CPRE_HEX)) { ep++; } } - else if (cp[0] == '0' && (cp[1] >= '0' && cp[1] <= '9')) + else if (cp[0] == '0' && preproc_chartype(cp[1], CPRE_DIGIT)) { cp += 1; base = 8; @@ -608,7 +894,7 @@ static int preproc_evaluate_integer( { base = 10; *is_unsigned = 0; - while (*ep >= '0' && *ep <= '9') + while (preproc_chartype(*ep, CPRE_DIGIT)) { ep++; } @@ -651,29 +937,12 @@ static int preproc_evaluate_single( { int result = VTK_PARSE_OK; - if (tokens->tok == '(') - { - preproc_next(tokens); - result = preproc_evaluate_expression(info, tokens, val, is_unsigned); - if ((result & VTK_PARSE_FATAL_ERROR) == 0) - { - if (tokens->tok == ')') - { - preproc_next(tokens); - return result; - } -#if PREPROC_DEBUG - fprintf(stderr, "syntax error %d\n", __LINE__); -#endif - return VTK_PARSE_SYNTAX_ERROR; - } - return result; - } - else if (tokens->tok == TOK_ID) + while (tokens->tok == TOK_ID) { - if (strncmp("defined", tokens->text, tokens->len) == 0) + /* handle the "defined" keyword */ + if (tokens->hash == HASH_DEFINED && tokens->len == 7 && + strncmp("defined", tokens->text, tokens->len) == 0) { - const char *name; int paren = 0; preproc_next(tokens); @@ -684,12 +953,18 @@ static int preproc_evaluate_single( } if (tokens->tok != TOK_ID) { + *val = 0; + *is_unsigned = 0; #if PREPROC_DEBUG fprintf(stderr, "syntax error %d\n", __LINE__); #endif return VTK_PARSE_SYNTAX_ERROR; } - name = tokens->text; + + /* do the name lookup */ + *is_unsigned = 0; + *val = (preproc_find_macro(info, tokens) != 0); + preproc_next(tokens); if (paren) { @@ -703,65 +978,79 @@ static int preproc_evaluate_single( preproc_next(tokens); } - /* do the name lookup */ - *is_unsigned = 0; - *val = (vtkParsePreprocess_GetMacro(info, name) != NULL); - return result; } else { /* look up and evaluate the macro */ - const char *name = tokens->text; - MacroInfo *macro = vtkParsePreprocess_GetMacro(info, name); + MacroInfo *macro = preproc_find_macro(info, tokens); + const char *args = NULL; + const char *expansion = NULL; + const char *cp; preproc_next(tokens); + *val = 0; + *is_unsigned = 0; - if (macro == NULL) + if (macro == NULL || macro->IsExcluded) { - *val = 0; - *is_unsigned = 0; return VTK_PARSE_MACRO_UNDEFINED; } else if (macro->IsFunction) { /* expand function macros using the arguments */ - if (tokens->tok == '(') + args = tokens->text; + if (tokens->tok != '(' || + preproc_skip_parentheses(tokens) != VTK_PARSE_OK) { - const char *args = tokens->text; - *val = 0; - *is_unsigned = 0; - if (preproc_skip_parentheses(tokens) == VTK_PARSE_OK) - { - const char *expansion; - expansion = vtkParsePreprocess_ExpandMacro(macro, args); - if (expansion) - { - result = vtkParsePreprocess_EvaluateExpression( - info, expansion, val, is_unsigned); - vtkParsePreprocess_FreeExpandedMacro(expansion); - return result; - } -#if PREPROC_DEBUG - fprintf(stderr, "wrong number of macro args %d\n", __LINE__); -#endif - } #if PREPROC_DEBUG fprintf(stderr, "syntax error %d\n", __LINE__); #endif return VTK_PARSE_SYNTAX_ERROR; } - else - { + } + expansion = vtkParsePreprocess_ExpandMacro(info, macro, args); + if (expansion == NULL) + { + free((char *)args); #if PREPROC_DEBUG - fprintf(stderr, "syntax error %d\n", __LINE__); + fprintf(stderr, "syntax error %d\n", __LINE__); #endif - return VTK_PARSE_SYNTAX_ERROR; - } + return (args ? VTK_PARSE_MACRO_NUMARGS : VTK_PARSE_SYNTAX_ERROR); + } + cp = expansion; + preproc_skip_whitespace(&cp, WS_NO_EOL); + if (*cp != '\0') + { + macro->IsExcluded = 1; + result = vtkParsePreprocess_EvaluateExpression( + info, expansion, val, is_unsigned); + macro->IsExcluded = 0; + vtkParsePreprocess_FreeMacroExpansion( + info, macro, expansion); + return result; } + vtkParsePreprocess_FreeMacroExpansion(info, macro, expansion); + } + /* if macro expansion was empty, continue */ + } - return vtkParsePreprocess_EvaluateExpression( - info, macro->Definition, val, is_unsigned); + if (tokens->tok == '(') + { + preproc_next(tokens); + result = preproc_evaluate_expression(info, tokens, val, is_unsigned); + if ((result & VTK_PARSE_FATAL_ERROR) == 0) + { + if (tokens->tok == ')') + { + preproc_next(tokens); + return result; + } +#if PREPROC_DEBUG + fprintf(stderr, "syntax error %d\n", __LINE__); +#endif + return VTK_PARSE_SYNTAX_ERROR; } + return result; } else if (tokens->tok == TOK_NUMBER) { @@ -785,9 +1074,15 @@ static int preproc_evaluate_single( *val = 0; *is_unsigned = 0; preproc_next(tokens); + while (tokens->tok == TOK_STRING) + { + preproc_next(tokens); + } return VTK_PARSE_PREPROC_STRING; } + *val = 0; + *is_unsigned = 0; #if PREPROC_DEBUG fprintf(stderr, "syntax error %d \"%*.*s\"\n", __LINE__, (int)tokens->len, (int)tokens->len, tokens->text); @@ -970,7 +1265,7 @@ static int preproc_evaluate_bitshift( { op = tokens->tok; - if (op != TOK_RSHIFT && op != TOK_LSHIFT) + if (op != TOK_LSHIFT && op != TOK_RSHIFT) { return result; } @@ -981,22 +1276,22 @@ static int preproc_evaluate_bitshift( if (*is_unsigned) { - if (op == TOK_RSHIFT) + if (op == TOK_LSHIFT) { *val = (preproc_int_t)((preproc_uint_t)*val << rval); } - else if (op == TOK_LSHIFT) + else if (op == TOK_RSHIFT) { *val = (preproc_int_t)((preproc_uint_t)*val >> rval); } } else { - if (op == TOK_RSHIFT) + if (op == TOK_LSHIFT) { *val = *val << rval; } - else if (op == TOK_LSHIFT) + else if (op == TOK_RSHIFT) { *val = *val >> rval; } @@ -1214,7 +1509,7 @@ static int preproc_evaluate_logic_and( /* short circuit */ while (tokens->tok != 0 && tokens->tok != ')' && tokens->tok != ':' && tokens->tok != '?' && - tokens->tok != TOK_OR && tokens->tok != TOK_OTHER) + tokens->tok != ',' && tokens->tok != TOK_OR) { if (tokens->tok == '(') { @@ -1269,7 +1564,7 @@ static int preproc_evaluate_logic_or( /* short circuit */ while (tokens->tok != 0 && tokens->tok != ')' && tokens->tok != ':' && tokens->tok != '?' && - tokens->tok != TOK_OTHER) + tokens->tok != ',') { if (tokens->tok == '(') { @@ -1372,6 +1667,9 @@ int preproc_evaluate_conditional( { if (tokens->tok != 0) { +#if PREPROC_DEBUG + fprintf(stderr, "syntax error %d\n", __LINE__); +#endif return VTK_PARSE_SYNTAX_ERROR; } return (rval == 0 ? VTK_PARSE_SKIP : VTK_PARSE_OK); @@ -1389,23 +1687,24 @@ int preproc_evaluate_conditional( static int preproc_evaluate_if( PreprocessInfo *info, preproc_tokenizer *tokens) { + MacroInfo *macro; int v1, v2; int result = VTK_PARSE_OK; - if (strncmp("if", tokens->text, tokens->len) == 0 || - strncmp("ifdef", tokens->text, tokens->len) == 0 || - strncmp("ifndef", tokens->text, tokens->len) == 0) + if (tokens->hash == HASH_IF || + tokens->hash == HASH_IFDEF || + tokens->hash == HASH_IFNDEF) { if (info->ConditionalDepth == 0) { - if (strncmp("if", tokens->text, tokens->len) == 0) + if (tokens->hash == HASH_IF) { preproc_next(tokens); result = preproc_evaluate_conditional(info, tokens); } else { - v1 = (strncmp("ifndef", tokens->text, tokens->len) != 0); + v1 = (tokens->hash != HASH_IFNDEF); preproc_next(tokens); if (tokens->tok != TOK_ID) { @@ -1414,7 +1713,8 @@ static int preproc_evaluate_if( #endif return VTK_PARSE_SYNTAX_ERROR; } - v2 = (vtkParsePreprocess_GetMacro(info, tokens->text) != 0); + macro = preproc_find_macro(info, tokens); + v2 = (macro && !macro->IsExcluded); preproc_next(tokens); result = ( (v1 ^ v2) ? VTK_PARSE_SKIP : VTK_PARSE_OK); } @@ -1438,18 +1738,18 @@ static int preproc_evaluate_if( info->ConditionalDepth++; } } - else if (strncmp("elif", tokens->text, tokens->len) == 0 || - strncmp("else", tokens->text, tokens->len) == 0) + else if (tokens->hash == HASH_ELIF || + tokens->hash == HASH_ELSE) { if (info->ConditionalDepth == 0) { - /* preceeding clause was not skipped, so must skip this one */ + /* preceding clause was not skipped, so must skip this one */ info->ConditionalDepth = 1; } else if (info->ConditionalDepth == 1 && info->ConditionalDone == 0) { - if (strncmp("elif", tokens->text, tokens->len) == 0) + if (tokens->hash == HASH_ELIF) { preproc_next(tokens); result = preproc_evaluate_conditional(info, tokens); @@ -1467,7 +1767,7 @@ static int preproc_evaluate_if( } } } - else if (strncmp("endif", tokens->text, tokens->len) == 0) + else if (tokens->hash == HASH_ENDIF) { preproc_next(tokens); if (info->ConditionalDepth > 0) @@ -1491,16 +1791,16 @@ static int preproc_evaluate_if( static int preproc_evaluate_define( PreprocessInfo *info, preproc_tokenizer *tokens) { + MacroInfo **macro_p; MacroInfo *macro; int is_function; const char *name; size_t namelen; - const char *definition = ""; - int i; + const char *definition = 0; int n = 0; - const char **args = NULL; + const char **params = NULL; - if (strncmp("define", tokens->text, tokens->len) == 0) + if (tokens->hash == HASH_DEFINE) { preproc_next(tokens); if (tokens->tok != TOK_ID) @@ -1511,6 +1811,7 @@ static int preproc_evaluate_define( return VTK_PARSE_SYNTAX_ERROR; } + macro_p = preproc_macro_location(info, tokens, 1); name = tokens->text; namelen = tokens->len; preproc_next(tokens); @@ -1524,7 +1825,7 @@ static int preproc_evaluate_define( { if (tokens->tok != TOK_ID && tokens->tok != TOK_ELLIPSIS) { - if (args) { free((char **)args); } + if (params) { free((char **)params); } #if PREPROC_DEBUG fprintf(stderr, "syntax error %d\n", __LINE__); #endif @@ -1532,9 +1833,9 @@ static int preproc_evaluate_define( } /* add to the arg list */ - args = (const char **)preproc_array_check( - (char **)args, sizeof(char *), n); - args[n++] = preproc_strndup(tokens->text, tokens->len); + params = (const char **)preproc_array_check( + (char **)params, sizeof(char *), n); + params[n++] = preproc_strndup(tokens->text, tokens->len); preproc_next(tokens); if (tokens->tok == ',') @@ -1543,7 +1844,7 @@ static int preproc_evaluate_define( } else if (tokens->tok != ')') { - if (args) { free((char **)args); } + if (params) { free((char **)params); } #if PREPROC_DEBUG fprintf(stderr, "syntax error %d\n", __LINE__); #endif @@ -1557,22 +1858,30 @@ static int preproc_evaluate_define( { definition = tokens->text; } - if (preproc_find_macro(info, name, &i)) + + macro = *macro_p; + if (macro) { - if (args) { free((char **)args); } + if (preproc_identical(macro->Definition, definition)) + { + return VTK_PARSE_OK; + } + if (params) { free((char **)params); } #if PREPROC_DEBUG fprintf(stderr, "macro redefined %d\n", __LINE__); #endif return VTK_PARSE_MACRO_REDEFINED; } - macro = preproc_add_macro_definition(info, name, definition); + macro = preproc_new_macro(info, name, definition); macro->IsFunction = is_function; - macro->NumberOfArguments = n; - macro->Arguments = args; + macro->NumberOfParameters = n; + macro->Parameters = params; + *macro_p = macro; + return VTK_PARSE_OK; } - else if (strncmp("undef", tokens->text, tokens->len) == 0) + else if (tokens->hash == HASH_UNDEF) { preproc_next(tokens); if (tokens->tok != TOK_ID) @@ -1582,8 +1891,7 @@ static int preproc_evaluate_define( #endif return VTK_PARSE_SYNTAX_ERROR; } - name = tokens->text; - preproc_remove_macro(info, name); + preproc_remove_macro(info, tokens); return VTK_PARSE_OK; } @@ -1596,6 +1904,7 @@ static int preproc_evaluate_define( static int preproc_add_include_file(PreprocessInfo *info, const char *name) { int i, n; + char *dp; n = info->NumberOfIncludeFiles; for (i = 0; i < n; i++) @@ -1606,9 +1915,12 @@ static int preproc_add_include_file(PreprocessInfo *info, const char *name) } } + dp = (char *)malloc(strlen(name)+1); + strcpy(dp, name); + info->IncludeFiles = (const char **)preproc_array_check( (char **)info->IncludeFiles, sizeof(char *), info->NumberOfIncludeFiles); - info->IncludeFiles[info->NumberOfIncludeFiles++] = name; + info->IncludeFiles[info->NumberOfIncludeFiles++] = dp; return 1; } @@ -1649,10 +1961,7 @@ const char *preproc_find_include_file( /* check for absolute path of form DRIVE: or /path/to/file */ j = 0; - while (filename[j] == '_' || - (filename[j] >= '0' && filename[j] <= '9') || - (filename[j] >= 'a' && filename[j] <= 'z') || - (filename[j] >= 'Z' && filename[j] <= 'Z')) { j++; } + while (preproc_chartype(filename[j], CPRE_IDGIT)) { j++; } if (filename[j] == ':' || filename[0] == '/' || filename[0] == '\\') { @@ -1787,10 +2096,10 @@ static int preproc_include_file( PreprocessInfo *info, const char *filename, int system_first) { char *tbuf; - size_t tbuflen = 8192; + size_t tbuflen = FILE_BUFFER_SIZE; char *line; size_t linelen = 80; - size_t i, j, n; + size_t i, j, n, r; int in_comment = 0; int in_quote = 0; int result = VTK_PARSE_OK; @@ -1849,29 +2158,48 @@ static int preproc_include_file( info->IsExternal = 1; info->FileName = path; - tbuf = (char *)malloc(tbuflen); + tbuf = (char *)malloc(tbuflen+4); line = (char *)malloc(linelen); /* the buffer must hold a whole line for it to be processed */ j = 0; i = 0; n = 0; + r = 0; do { - if (i == n) + if (i >= n) { + /* recycle unused lookahead chars */ + if (r) + { + r = n + 2 - i; + if (r == 2) + { + tbuf[0] = tbuf[tbuflen-2]; + tbuf[1] = tbuf[tbuflen-1]; + } + else if (r == 1) + { + tbuf[0] = tbuf[tbuflen-1]; + } + } + /* read the next chunk of the file */ i = 0; if (feof(fp)) { - n = 0; + /* still have the lookahead chars left */ + n = r; + r = 0; } else { + /* fill the remainder of the buffer */ errno = 0; - i = 0; - while ((n = fread(tbuf, 1, tbuflen, fp)) == 0 && ferror(fp)) + tbuflen = r + FILE_BUFFER_SIZE; + while ((n = fread(&tbuf[r], 1, tbuflen-r, fp)) == 0 && ferror(fp)) { if (errno != EINTR) { @@ -1884,6 +2212,22 @@ static int preproc_include_file( errno = 0; clearerr(fp); } + + if (n + r < tbuflen) + { + /* this only occurs if the final fread does not fill the buffer */ + n += r; + r = 0; + } + else + { + /* set a lookahead reserve of two chars */ + n -= (2 - r); + r = 2; + } + + /* guard against lookahead past last char in file */ + tbuf[n + r] = '\0'; } } @@ -1891,7 +2235,7 @@ static int preproc_include_file( while (i < n) { /* expand line buffer as necessary */ - if (j+4 > linelen) + while (j+4 > linelen) { linelen *= 2; line = (char *)realloc(line, linelen); @@ -1917,7 +2261,7 @@ static int preproc_include_file( line[j++] = tbuf[i++]; in_quote = 0; } - else if (tbuf[i] == '\\' && tbuf[i] == '\"') + else if (tbuf[i] == '\\' && tbuf[i+1] != '\0') { line[j++] = tbuf[i++]; line[j++] = tbuf[i++]; @@ -1927,7 +2271,7 @@ static int preproc_include_file( line[j++] = tbuf[i++]; } } - else if (tbuf[i] == '/' && tbuf[i] == '*') + else if (tbuf[i] == '/' && tbuf[i+1] == '*') { line[j++] = tbuf[i++]; line[j++] = tbuf[i++]; @@ -1965,7 +2309,7 @@ static int preproc_include_file( const char *cp = line; line[j] = '\0'; j = 0; - preproc_skip_whitespace(&cp); + preproc_skip_whitespace(&cp, WS_NO_EOL); if (*cp == '#') { vtkParsePreprocess_HandleDirective(info, line); @@ -1994,7 +2338,7 @@ static int preproc_evaluate_include( const char *cp; const char *filename; - if (strncmp("include", tokens->text, tokens->len) == 0) + if (tokens->hash == HASH_INCLUDE) { preproc_next(tokens); @@ -2002,9 +2346,8 @@ static int preproc_evaluate_include( if (tokens->tok == TOK_ID) { - MacroInfo *macro; - macro = vtkParsePreprocess_GetMacro(info, cp); - if (macro && macro->Definition) + MacroInfo *macro = preproc_find_macro(info, tokens); + if (macro && !macro->IsExcluded && macro->Definition) { cp = macro->Definition; } @@ -2067,12 +2410,18 @@ int vtkParsePreprocess_HandleDirective( if (tokens.tok == TOK_ID) { - if (strncmp("ifdef", tokens.text, tokens.len) == 0 || - strncmp("ifndef", tokens.text, tokens.len) == 0 || - strncmp("if", tokens.text, tokens.len) == 0 || - strncmp("elif", tokens.text, tokens.len) == 0 || - strncmp("else", tokens.text, tokens.len) == 0 || - strncmp("endif", tokens.text, tokens.len) == 0) + if ((tokens.hash == HASH_IFDEF && tokens.len == 5 && + strncmp("ifdef", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_IFNDEF && tokens.len == 6 && + strncmp("ifndef", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_IF && tokens.len == 2 && + strncmp("if", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_ELIF && tokens.len == 4 && + strncmp("elif", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_ELSE && tokens.len == 4 && + strncmp("else", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_ENDIF && tokens.len == 5 && + strncmp("endif", tokens.text, tokens.len) == 0)) { result = preproc_evaluate_if(info, &tokens); while (tokens.tok) { preproc_next(&tokens); } @@ -2098,12 +2447,15 @@ int vtkParsePreprocess_HandleDirective( } else if (info->ConditionalDepth == 0) { - if (strncmp("define", tokens.text, tokens.len) == 0 || - strncmp("undef", tokens.text, tokens.len) == 0) + if ((tokens.hash == HASH_DEFINE && tokens.len == 6 && + strncmp("define", tokens.text, tokens.len) == 0) || + (tokens.hash == HASH_UNDEF && tokens.len == 5 && + strncmp("undef", tokens.text, tokens.len) == 0)) { result = preproc_evaluate_define(info, &tokens); } - else if (strncmp("include", tokens.text, tokens.len) == 0) + else if (tokens.hash == HASH_INCLUDE && tokens.len == 7 && + strncmp("include", tokens.text, tokens.len) == 0) { result = preproc_evaluate_include(info, &tokens); } @@ -2230,16 +2582,28 @@ void vtkParsePreprocess_AddStandardMacros( int vtkParsePreprocess_AddMacro( PreprocessInfo *info, const char *name, const char *definition) { - int i; + preproc_tokenizer token; + MacroInfo **macro_p; MacroInfo *macro; - if (preproc_find_macro(info, name, &i)) + preproc_init(&token, name); + macro_p = preproc_macro_location(info, &token, 1); + if (*macro_p) { - return VTK_PARSE_MACRO_REDEFINED; + macro = *macro_p; + if (preproc_identical(macro->Definition, definition)) + { + return VTK_PARSE_OK; + } + else + { + return VTK_PARSE_MACRO_REDEFINED; + } } - macro = preproc_add_macro_definition(info, name, definition); + macro = preproc_new_macro(info, name, definition); macro->IsExternal = 1; + *macro_p = macro; return VTK_PARSE_OK; } @@ -2250,11 +2614,15 @@ int vtkParsePreprocess_AddMacro( MacroInfo *vtkParsePreprocess_GetMacro( PreprocessInfo *info, const char *name) { - int i = 0; + preproc_tokenizer token; + MacroInfo *macro; - if (preproc_find_macro(info, name, &i)) + preproc_init(&token, name); + macro = preproc_find_macro(info, &token); + + if (macro && !macro->IsExcluded) { - return info->Macros[i]; + return macro; } return NULL; @@ -2264,9 +2632,13 @@ MacroInfo *vtkParsePreprocess_GetMacro( * Remove a preprocessor macro. */ int vtkParsePreprocess_RemoveMacro( - PreprocessInfo *info, const char *name) + PreprocessInfo *info, const char *name) { - if (preproc_remove_macro(info, name)) + preproc_tokenizer token; + + preproc_init(&token, name); + + if (preproc_remove_macro(info, &token)) { return VTK_PARSE_OK; } @@ -2275,184 +2647,188 @@ int vtkParsePreprocess_RemoveMacro( } /** - * Expand a function macro + * Expand a macro, argstring is ignored if not a function macro */ const char *vtkParsePreprocess_ExpandMacro( - MacroInfo *macro, const char *argstring) + PreprocessInfo *info, MacroInfo *macro, const char *argstring) { const char *cp = argstring; int n = 0; int j = 0; + const char *stack_values[8]; const char **values = NULL; const char *pp = NULL; const char *dp = NULL; + const char *wp = NULL; + char stack_rp[128]; char *rp = NULL; size_t rs = 0; size_t i = 0; size_t l = 0; size_t k = 0; int stringify = 0; + int noexpand = 0; int depth = 1; int c; - if (argstring == NULL || *cp != '(') + if (macro->IsFunction) { - return NULL; - } + if (argstring == NULL || *cp != '(') + { + return NULL; + } - /* break the string into individual argument values */ - values = (const char **)malloc(4*sizeof(const char **)); + /* break the string into individual argument values */ + values = stack_values; - cp++; - values[n++] = cp; - while (depth > 0 && *cp != '\0') - { - while (*cp != '\0') + cp++; + values[n++] = cp; + while (depth > 0 && *cp != '\0') { - if (*cp == '\"' || *cp == '\'') - { - preproc_skip_quotes(&cp); - } - else if (cp[0] == '/' && (cp[1] == '*' || cp[1] == '/')) - { - preproc_skip_comment(&cp); - } - else if (*cp == '(') - { - cp++; - depth++; - } - else if (*cp == ')') + while (*cp != '\0') { - cp++; - if (--depth == 0) + if (*cp == '\"' || *cp == '\'') { - break; + preproc_skip_quotes(&cp); } - } - else if (*cp == ',') - { - cp++; - if (depth == 1) + else if (cp[0] == '/' && (cp[1] == '*' || cp[1] == '/')) { - break; + preproc_skip_comment(&cp); + } + else if (*cp == '(') + { + cp++; + depth++; + } + else if (*cp == ')') + { + cp++; + if (--depth == 0) + { + break; + } + } + else if (*cp == ',') + { + cp++; + if (depth == 1) + { + break; + } + } + else if (*cp != '\0') + { + cp++; } } - else if (*cp != '\0') + if (n >= 8 && (n & (n-1)) == 0) { - cp++; + if (values != stack_values) + { + values = (const char **)realloc( + (char **)values, 2*n*sizeof(const char **)); + } + else + { + values = (const char **)malloc(2*n*sizeof(const char **)); + memcpy((char **)values, stack_values, 8*sizeof(const char **)); + } } - } - if (n >= 4 && (n & (n-1)) == 0) - { - values = (const char **)realloc( - (char **)values, 2*n*sizeof(const char **)); - } - values[n++] = cp; - } - --n; + values[n++] = cp; + } + --n; - /* diagnostic: print out the values */ + /* diagnostic: print out the values */ #if PREPROC_DEBUG - for (j = 0; j < n; j++) - { - size_t m = values[j+1] - values[j] - 1; - fprintf(stderr, "arg %i: %*.*s\n", (int)j, (int)m, (int)m, values[j]); - } -#endif - - /* allow whitespace as "no argument" */ - if (macro->NumberOfArguments == 0 && n == 1) - { - cp = values[0]; - c = *cp; - while (c == ' ' || c == '\n' || c == '\t' || c == '\r') + for (j = 0; j < n; j++) { - c = *(++cp); + size_t m = values[j+1] - values[j] - 1; + fprintf(stderr, "arg %i: %*.*s\n", + (int)j, (int)m, (int)m, values[j]); } - if (cp + 1 == values[1]) +#endif + + if (macro->NumberOfParameters == 0 && n == 1) { - n = 0; + const char *tp = values[0]; + preproc_skip_whitespace(&tp, WS_NO_EOL); + if (tp + 1 >= values[1]) + { + n = 0; + } } - } - if (n != macro->NumberOfArguments) - { - free((char **)values); + if (n != macro->NumberOfParameters) + { + if (values != stack_values) { free((char **)values); } #if PREPROC_DEBUG - fprintf(stderr, "wrong number of macro args to %s, %d != %d\n", - macro->Name, n, macro->NumberOfArguments); + fprintf(stderr, "wrong number of macro args to %s, %lu != %lu\n", + macro->Name, n, macro->NumberOfParameters); #endif - return NULL; + return NULL; + } } cp = macro->Definition; + cp = (cp ? cp : ""); dp = cp; - if (cp == NULL) - { - free((char **)values); - return NULL; - } - - rp = (char *)malloc(128); + rp = stack_rp; rp[0] = '\0'; rs = 128; while (*cp != '\0') { pp = cp; + wp = cp; stringify = 0; + noexpand = 0; /* skip all chars that aren't part of a name */ - while ((*cp < 'a' || *cp > 'z') && - (*cp < 'A' || *cp > 'Z') && - *cp != '_' && *cp != '\0') + while (!preproc_chartype(*cp, CPRE_ID) && *cp != '\0') { - if (*cp == '\'' || *cp == '\"') + dp = cp; + preproc_skip_whitespace(&cp, WS_NO_EOL); + if (cp > dp) { - preproc_skip_quotes(&cp); dp = cp; } - else if (*cp >= '0' && *cp <= '9') + else if (preproc_chartype(*cp, CPRE_QUOTE)) { - preproc_skip_number(&cp); + preproc_skip_quotes(&cp); dp = cp; + wp = cp; + noexpand = 0; } - else if (*cp == '/' && (cp[1] == '/' || cp[1] == '*')) + else if (preproc_chartype(*cp, CPRE_DIGIT)) { - preproc_skip_comment(&cp); + preproc_skip_number(&cp); dp = cp; + wp = cp; + noexpand = 0; } else if (cp[0] == '#' && cp[1] == '#') { - dp = cp; - while (dp > pp && (dp[-1] == ' ' || dp[-1] == '\t' || - dp[-1] == '\r' || dp[-1] == '\n')) - { - --dp; - } + noexpand = 1; + dp = wp; cp += 2; - while (*cp == ' ' || *cp == '\t' || *cp == '\r' || *cp == '\n') - { - cp++; - } + wp = cp; + preproc_skip_whitespace(&cp, WS_NO_EOL); break; } else if (*cp == '#') { stringify = 1; dp = cp; + wp = cp; cp++; - while (*cp == ' ' || *cp == '\t' || *cp == '\r' || *cp == '\n') - { - cp++; - } + preproc_skip_whitespace(&cp, WS_NO_EOL); break; } else { cp++; dp = cp; + wp = cp; } } l = dp - pp; @@ -2461,7 +2837,15 @@ const char *vtkParsePreprocess_ExpandMacro( if (i + l + 1 >= rs) { rs += rs + i + l + 1; - rp = (char *)realloc(rp, rs); + if (rp != stack_rp) + { + rp = (char *)realloc(rp, rs); + } + else + { + rp = (char *)malloc(rs); + memcpy(rp, stack_rp, i); + } } strncpy(&rp[i], pp, l); i += l; @@ -2476,16 +2860,16 @@ const char *vtkParsePreprocess_ExpandMacro( { for (j = 0; j < n; j++) { - /* check whether the name matches an argument */ - if (strncmp(pp, macro->Arguments[j], l) == 0 && - macro->Arguments[j][l] == '\0') + /* check whether the name matches a parameter */ + if (strncmp(pp, macro->Parameters[j], l) == 0 && + macro->Parameters[j][l] == '\0') { /* substitute the argument value */ l = values[j+1] - values[j] - 1; pp = values[j]; /* remove leading whitespace from argument */ c = *pp; - while (c == ' ' || c == '\n' || c == '\t' || c == '\r') + while (preproc_chartype(c, CPRE_WHITE)) { c = *(++pp); l--; @@ -2494,7 +2878,7 @@ const char *vtkParsePreprocess_ExpandMacro( if (l > 0) { c = pp[l - 1]; - while (c == ' ' || c == '\n' || c == '\t' || c == '\r') + while (preproc_chartype(c, CPRE_WHITE)) { if (--l == 0) { @@ -2503,6 +2887,13 @@ const char *vtkParsePreprocess_ExpandMacro( c = pp[l-1]; } } + /* check if followed by "##" */ + wp = cp; + preproc_skip_whitespace(&wp, WS_NO_EOL); + if (wp[0] == '#' && wp[1] == '#') + { + noexpand = 1; + } break; } } @@ -2522,7 +2913,15 @@ const char *vtkParsePreprocess_ExpandMacro( if (i + l + stringify + 1 >= rs) { rs += rs + i + l + 1; - rp = (char *)realloc(rp, rs); + if (rp != stack_rp) + { + rp = (char *)realloc(rp, rs); + } + else + { + rp = (char *)malloc(rs); + memcpy(rp, stack_rp, i); + } } if (stringify) { @@ -2538,26 +2937,279 @@ const char *vtkParsePreprocess_ExpandMacro( } rp[i++] = '\"'; } + else if (noexpand) + { + strncpy(&rp[i], pp, l); + i += l; + } else { + /* process the arguments before substituting them */ + const char *text; + int is_excluded = macro->IsExcluded; + macro->IsExcluded = 1; strncpy(&rp[i], pp, l); + rp[i + l] = '\0'; + text = vtkParsePreprocess_ProcessString(info, &rp[i]); + if (text) + { + l = strlen(text); + if (text != &rp[i]) + { + char *tp = NULL; + if (i + l + 1 >= rs) + { + rs += rs + i + l + 1; + tp = rp; + rp = (char *)malloc(rs); + memcpy(rp, tp, i); + } + strncpy(&rp[i], text, l); + vtkParsePreprocess_FreeProcessedString(info, text); + if (tp && tp != stack_rp) + { + free(tp); + } + } + } + macro->IsExcluded = is_excluded; i += l; } rp[i] = '\0'; } } - free((char **)values); + if (values != stack_values) { free((char **)values); } + + if (!macro->IsFunction && macro->Definition && + strcmp(rp, macro->Definition) == 0) + { + if (rp != stack_rp) { free(rp); } + return macro->Definition; + } + + if (rp == stack_rp) + { + rp = (char *)malloc(strlen(stack_rp) + 1); + strcpy(rp, stack_rp); + } + + return rp; +} + +/** + * Process a string + */ +const char *vtkParsePreprocess_ProcessString( + PreprocessInfo *info, const char *text) +{ + char stack_rp[128]; + char *rp; + char *ep; + size_t i = 0; + size_t rs = 128; + int last_tok = 0; + preproc_tokenizer tokens; + preproc_init(&tokens, text); + + rp = stack_rp; + rp[0] = '\0'; + + while (tokens.tok) + { + size_t l = tokens.len; + size_t j; + const char *cp = tokens.text; + const char *dp; + + if (tokens.tok == TOK_STRING && last_tok == TOK_STRING) + { + if (i > 0) + { + do { --i; } while (i > 0 && rp[i] != '\"'); + } + cp++; + } + + if (i + l + 2 >= rs) + { + rs += rs + i + l + 2; + if (rp == stack_rp) + { + rp = (char *)malloc(rs); + memcpy(rp, stack_rp, i); + } + else + { + rp = (char *)realloc(rp, rs); + } + } + + /* copy the token, removing backslash-newline */ + dp = cp; + ep = &rp[i]; + for (j = 0; j < l; j++) + { + if (*dp == '\\') + { + if (dp[1] == '\n') { dp += 2; } + else if (dp[1] == '\r' && dp[2] == '\n') { dp += 3; } + else { *ep++ = *dp++; } + } + else + { + *ep++ = *dp++; + } + } + l = ep - &rp[i]; + + if (tokens.tok == TOK_ID) + { + MacroInfo *macro = preproc_find_macro(info, &tokens); + if (macro && !macro->IsExcluded) + { + const char *args = NULL; + int expand = 1; + + if (macro->IsFunction) + { + /* expand function macros using the arguments */ + preproc_next(&tokens); + if (tokens.tok == '(') + { + int depth = 1; + args = tokens.text; + while (depth > 0 && preproc_next(&tokens)) + { + if (tokens.tok == '(') + { + depth++; + } + else if (tokens.tok == ')') + { + depth--; + } + } + if (tokens.tok != ')') + { + if (rp != stack_rp) { free(rp); } + return NULL; + } + } + else + { + /* unput the last token if it isn't "(" */ + tokens.len = l; + tokens.text = cp; + expand = 0; + } + } + if (expand) + { + const char *expansion; + const char *processed; + expansion = vtkParsePreprocess_ExpandMacro(info, macro, args); + if (expansion == NULL) + { + if (rp != stack_rp) { free(rp); } + return NULL; + } + macro->IsExcluded = 1; + processed = vtkParsePreprocess_ProcessString(info, expansion); + macro->IsExcluded = 0; + if (processed == NULL) + { + vtkParsePreprocess_FreeMacroExpansion(info, macro, expansion); + if (rp != stack_rp) { free(rp); } + return NULL; + } + l = strlen(processed); + if (l > 0) + { + if (i + l + 2 >= rs) + { + rs += rs + i + l + 2; + if (rp == stack_rp) + { + rp = (char *)malloc(rs); + memcpy(rp, stack_rp, i); + } + else + { + rp = (char *)realloc(rp, rs); + } + } + strncpy(&rp[i], processed, l); + } + if (processed != expansion) + { + vtkParsePreprocess_FreeProcessedString(info, processed); + } + vtkParsePreprocess_FreeMacroExpansion(info, macro, expansion); + } + } + } + + i += l; + + last_tok = tokens.tok; + l = tokens.len; + cp = tokens.text; + if (preproc_next(&tokens) && tokens.text > cp + l) + { + rp[i++] = ' '; + } + } + rp[i] = '\0'; + + if (strcmp(rp, text) == 0) + { + /* no change, return */ + if (rp != stack_rp) { free(rp); } + return text; + } + else + { + /* string changed, recursively reprocess */ + const char *tp = vtkParsePreprocess_ProcessString(info, rp); + if (rp != tp) + { + if (rp != stack_rp) { free(rp); } + return tp; + } + if (rp == stack_rp) + { + rp = (char *)malloc(strlen(stack_rp) + 1); + strcpy(rp, stack_rp); + } + } return rp; } /** - * Free an expanded function macro + * Free a string returned by ExpandMacro + */ +void vtkParsePreprocess_FreeMacroExpansion( + PreprocessInfo *info, MacroInfo *macro, const char *text) +{ + /* only free expansion if it is different from definition */ + if (info && text != macro->Definition) + { + free((char *)text); + } +} + +/** + * Free a string returned by ProcessString */ -void vtkParsePreprocess_FreeExpandedMacro(const char *emacro) +void vtkParsePreprocess_FreeProcessedString( + PreprocessInfo *info, const char *text) { - free((char *)emacro); + if (info) + { + free((char *)text); + } } /** @@ -2597,6 +3249,7 @@ const char *vtkParsePreprocess_FindIncludeFile( if (cp) { *already_loaded = 1; + return cp; } *already_loaded = 0; @@ -2611,20 +3264,42 @@ void vtkParsePreprocess_InitMacro(MacroInfo *macro) macro->Name = NULL; macro->Definition = NULL; macro->Comment = NULL; - macro->NumberOfArguments = 0; - macro->Arguments = NULL; + macro->NumberOfParameters = 0; + macro->Parameters = NULL; macro->IsFunction = 0; macro->IsExternal = 0; + macro->IsExcluded = 0; +} + +/** + * Free a preprocessor macro struct + */ +void vtkParsePreprocess_FreeMacro(MacroInfo *macro) +{ + int i, n; + + free((char *)macro->Name); + free((char *)macro->Definition); + free((char *)macro->Comment); + + n = macro->NumberOfParameters; + for (i = 0; i < n; i++) + { + free((char *)macro->Parameters[i]); + } + free((char **)macro->Parameters); + + free(macro); } /** * Initialize a preprocessor struct */ -void vtkParsePreprocess_InitPreprocess(PreprocessInfo *info) +void vtkParsePreprocess_Init( + PreprocessInfo *info, const char *filename) { info->FileName = NULL; - info->NumberOfMacros = 0; - info->Macros = NULL; + info->MacroHashTable = NULL; info->NumberOfIncludeDirectories = 0; info->IncludeDirectories = NULL; info->NumberOfIncludeFiles = 0; @@ -2632,4 +3307,54 @@ void vtkParsePreprocess_InitPreprocess(PreprocessInfo *info) info->IsExternal = 0; info->ConditionalDepth = 0; info->ConditionalDone = 0; + + if (filename) + { + info->FileName = preproc_strndup(filename, strlen(filename)); + } +} + +/** + * Free a preprocessor struct and its contents + */ +void vtkParsePreprocess_Free(PreprocessInfo *info) +{ + int i, n; + MacroInfo **mptr; + + free((char *)info->FileName); + + if (info->MacroHashTable) + { + n = PREPROC_HASH_TABLE_SIZE; + for (i = 0; i < n; i++) + { + mptr = info->MacroHashTable[i]; + if (mptr) + { + while (*mptr) + { + vtkParsePreprocess_FreeMacro(*mptr++); + } + } + free(info->MacroHashTable[i]); + } + free(info->MacroHashTable); + } + + n = info->NumberOfIncludeDirectories; + for (i = 0; i < n; i++) + { + free((char *)info->IncludeDirectories[i]); + } + free((char **)info->IncludeDirectories); + + n = info->NumberOfIncludeFiles; + for (i = 0; i < n; i++) + { + free((char *)info->IncludeFiles[i]); + } + free((char **)info->IncludeFiles); + + free(info); } diff --git a/src/ParaView/vtkParsePreprocess.h b/src/ParaView/vtkParsePreprocess.h index c28bd241..9a4010b2 100644 --- a/src/ParaView/vtkParsePreprocess.h +++ b/src/ParaView/vtkParsePreprocess.h @@ -38,9 +38,6 @@ lookup error occurred, and will also let the parser know if an #if or #else directive requires that the next block of code be skipped. - - No checks are done for recursively-defined macros. If they - occur, the preprocessor will crash. */ #ifndef VTK_PARSE_PREPROCESS_H @@ -65,10 +62,11 @@ typedef struct _MacroInfo const char *Name; const char *Definition; const char *Comment; /* unused */ - int NumberOfArguments; /* only if IsFunction == 1 */ - const char **Arguments; /* symbols for arguments */ - int IsFunction; /* this macro takes arguments */ + int NumberOfParameters; /* only if IsFunction == 1 */ + const char **Parameters; /* symbols for parameters */ + int IsFunction; /* this macro requires arguments */ int IsExternal; /* this macro is from an included file */ + int IsExcluded; /* do not expand this macro */ } MacroInfo; /** @@ -78,8 +76,7 @@ typedef struct _MacroInfo typedef struct _PreprocessInfo { const char *FileName; /* the file that is being parsed */ - int NumberOfMacros; - MacroInfo **Macros; + MacroInfo ***MacroHashTable; /* hash table for macro lookup */ int NumberOfIncludeDirectories; const char **IncludeDirectories; int NumberOfIncludeFiles; /* all included files */ @@ -178,17 +175,34 @@ MacroInfo *vtkParsePreprocess_GetMacro( PreprocessInfo *info, const char *name); /** - * Expand a function macro, given arguments in parentheses. - * Returns a new string that was allocated with malloc, or - * NULL if the wrong number of arguments were given. + * Expand a macro. A function macro must be given an argstring + * with args in parentheses, otherwise the argstring can be NULL. + * returns NULL if the wrong number of arguments were given. */ const char *vtkParsePreprocess_ExpandMacro( - MacroInfo *macro, const char *argstring); + PreprocessInfo *info, MacroInfo *macro, const char *argstring); + +/** + * Free an expanded macro + */ +void vtkParsePreprocess_FreeMacroExpansion( + PreprocessInfo *info, MacroInfo *macro, const char *text); + +/** + * Fully process a string with the preprocessor, and + * return a new string or NULL if a fatal error occurred. + */ +const char *vtkParsePreprocess_ProcessString( + PreprocessInfo *info, const char *text); /** - * Free an expanded macro. + * Free a processed string. Only call this method if + * the string returned by ProcessString is different from + * the original string, because ProcessString will just + * return the original string if no processing was needed. */ -void vtkParsePreprocess_FreeExpandedMacro(const char *emacro); +void vtkParsePreprocess_FreeProcessedString( + PreprocessInfo *info, const char *text); /** * Add an include directory. The directories that were added @@ -213,10 +227,21 @@ const char *vtkParsePreprocess_FindIncludeFile( */ void vtkParsePreprocess_InitMacro(MacroInfo *symbol); +/** + * Free a preprocessor macro struct + */ +void vtkParsePreprocess_FreeMacro(MacroInfo *macro); + /** * Initialize a preprocessor struct. */ -void vtkParsePreprocess_InitPreprocess(PreprocessInfo *info); +void vtkParsePreprocess_Init( + PreprocessInfo *info, const char *filename); + +/** + * Free a preprocessor struct and its contents; + */ +void vtkParsePreprocess_Free(PreprocessInfo *info); #ifdef __cplusplus } /* extern "C" */ diff --git a/src/ParaView/vtkParseString.c b/src/ParaView/vtkParseString.c new file mode 100644 index 00000000..f1863c02 --- /dev/null +++ b/src/ParaView/vtkParseString.c @@ -0,0 +1,119 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkParseString.c + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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. + +=========================================================================*/ +/*------------------------------------------------------------------------- + Copyright (c) 2012 David Gobbi. + + Contributed to the VisualizationToolkit by the author in April 2012 + under the terms of the Visualization Toolkit 2008 copyright. +-------------------------------------------------------------------------*/ + +#include "vtkParseString.h" +#include +#include + +/*---------------------------------------------------------------- + * String utility methods + * + * Strings are centrally allocated and are const. They should not + * be freed until the parse is complete and all the data structures + * generated by the parse have been freed. + */ + +/* allocate a string of n+1 bytes */ +void vtkParse_InitStringCache(StringCache *cache) +{ + cache->NumberOfChunks = 0; + cache->Chunks = NULL; + cache->ChunkSize = 0; + cache->Position = 0; +} + +/* allocate a string of n+1 bytes */ +char *vtkParse_NewString(StringCache *cache, size_t n) +{ + size_t nextPosition; + char *cp; + + if (cache->ChunkSize == 0) + { + cache->ChunkSize = 8176; + } + + // align next start position on an 8-byte boundary + nextPosition = (((cache->Position + n + 8) | 7 ) - 7); + + if (cache->NumberOfChunks == 0 || nextPosition > cache->ChunkSize) + { + if (n + 1 > cache->ChunkSize) + { + cache->ChunkSize = n + 1; + } + cp = (char *)malloc(cache->ChunkSize); + + /* if empty, alloc for the first time */ + if (cache->NumberOfChunks == 0) + { + cache->Chunks = (char **)malloc(sizeof(char *)); + } + /* if count is power of two, reallocate with double size */ + else if ((cache->NumberOfChunks & (cache->NumberOfChunks-1)) == 0) + { + cache->Chunks = (char **)realloc( + cache->Chunks, (2*cache->NumberOfChunks)*sizeof(char *)); + } + + cache->Chunks[cache->NumberOfChunks++] = cp; + + cache->Position = 0; + nextPosition = (((n + 8) | 7) - 7); + } + + cp = &cache->Chunks[cache->NumberOfChunks-1][cache->Position]; + cp[0] = '\0'; + + cache->Position = nextPosition; + + return cp; +} + +/* free all allocated strings */ +void vtkParse_FreeStringCache(StringCache *cache) +{ + unsigned long i; + + for (i = 0; i < cache->NumberOfChunks; i++) + { + free(cache->Chunks[i]); + } + if (cache->Chunks) + { + free(cache->Chunks); + } + + cache->Chunks = NULL; + cache->NumberOfChunks = 0; +} + +/* duplicate the first n bytes of a string and terminate it */ +const char *vtkParse_CacheString(StringCache *cache, const char *in, size_t n) +{ + char *res = NULL; + + res = vtkParse_NewString(cache, n); + strncpy(res, in, n); + res[n] = '\0'; + + return res; +} diff --git a/src/ParaView/vtkParseString.h b/src/ParaView/vtkParseString.h new file mode 100644 index 00000000..11430827 --- /dev/null +++ b/src/ParaView/vtkParseString.h @@ -0,0 +1,78 @@ +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkParseString.h + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm 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. + +=========================================================================*/ + +/* + String allocation routines used by vtkParse. + + The parser uses "const char *" as its string object type, and expects + all string objects to persist and be constant for the entire lifetime + of the data generated by the parse (usually this means until the parser + executable has exited). All strings that are stored in the parser's + data objects should either be statically allocated, or allocated with + the vtkParse_NewString() or vtkParse_CacheString() methods declared here. +*/ + +#ifndef VTK_PARSE_STRING_H +#define VTK_PARSE_STRING_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * StringCache provides a simple way of allocating strings centrally. + * It eliminates the need to allocate and free each individual strings, + * which makes the code simpler and more efficient. + */ +typedef struct _StringCache +{ + unsigned long NumberOfChunks; + char **Chunks; + size_t ChunkSize; + size_t Position; +} StringCache; + +/** + * Initialize the string cache. + */ +void vtkParse_InitStringCache(StringCache *cache); + +/** + * Alocate a new string from the cache. + * A total of n+1 bytes will be allocated, to leave room for null. + */ +char *vtkParse_NewString(StringCache *cache, size_t n); + +/** + * Cache a string so that it can then be used in the vtkParse data + * structures. The string will last until the application exits. + * At most 'n' chars will be copied, and the string will be terminated. + * If a null pointer is provided, then a null pointer will be returned. + */ +const char *vtkParse_CacheString(StringCache *cache, const char *cp, size_t n); + +/** + * Free all strings that were created with vtkParse_NewString() or + * with vtkParse_CacheString(). + */ +void vtkParse_FreeStringCache(StringCache *cache); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/ParaView/vtkWrap.c b/src/ParaView/vtkWrap.c index f41042c4..25ede98b 100644 --- a/src/ParaView/vtkWrap.c +++ b/src/ParaView/vtkWrap.c @@ -14,8 +14,9 @@ =========================================================================*/ #include "vtkWrap.h" -#include "vtkParseInternal.h" +#include "vtkParseData.h" #include "vtkParseExtras.h" +#include "vtkParseString.h" #include #include #include @@ -36,7 +37,20 @@ int vtkWrap_IsVoid(ValueInfo *val) int vtkWrap_IsVoidFunction(ValueInfo *val) { unsigned int t = (val->Type & VTK_PARSE_UNQUALIFIED_TYPE); - return (t == VTK_PARSE_FUNCTION); + + if (t == VTK_PARSE_FUNCTION_PTR || t == VTK_PARSE_FUNCTION) + { + /* check for signature "void (*func)(void *)" */ + if (val->Function->NumberOfParameters == 1 && + val->Function->Parameters[0]->Type == VTK_PARSE_VOID_PTR && + val->Function->Parameters[0]->NumberOfDimensions == 0 && + val->Function->ReturnValue->Type == VTK_PARSE_VOID) + { + return 1; + } + } + + return 0; } int vtkWrap_IsVoidPointer(ValueInfo *val) @@ -340,18 +354,18 @@ int vtkWrap_IsGetVectorMethod(FunctionInfo *f) /* -------------------------------------------------------------------- */ /* Argument counting */ -int vtkWrap_CountWrappedArgs(FunctionInfo *f) +int vtkWrap_CountWrappedParameters(FunctionInfo *f) { - int totalArgs = f->NumberOfArguments; + int totalArgs = f->NumberOfParameters; if (totalArgs > 0 && - (f->Arguments[0]->Type & VTK_PARSE_BASE_TYPE) + (f->Parameters[0]->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) { totalArgs = 1; } else if (totalArgs == 1 && - (f->Arguments[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) + (f->Parameters[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) == VTK_PARSE_VOID) { totalArgs = 0; @@ -360,19 +374,19 @@ int vtkWrap_CountWrappedArgs(FunctionInfo *f) return totalArgs; } -int vtkWrap_CountRequiredArgs(FunctionInfo *f) +int vtkWrap_CountRequiredArguments(FunctionInfo *f) { int requiredArgs = 0; int totalArgs; int i; - totalArgs = vtkWrap_CountWrappedArgs(f); + totalArgs = vtkWrap_CountWrappedParameters(f); for (i = 0; i < totalArgs; i++) { - if (f->Arguments[i]->Value == NULL || - vtkWrap_IsArray(f->Arguments[i]) || - vtkWrap_IsNArray(f->Arguments[i])) + if (f->Parameters[i]->Value == NULL || + vtkWrap_IsArray(f->Parameters[i]) || + vtkWrap_IsNArray(f->Parameters[i])) { requiredArgs = i+1; } @@ -524,9 +538,9 @@ int vtkWrap_HasPublicCopyConstructor(ClassInfo *data) func = data->Functions[i]; if (vtkWrap_IsConstructor(data, func) && - func->NumberOfArguments == 1 && - func->Arguments[0]->Class && - strcmp(func->Arguments[0]->Class, data->Name) == 0 && + func->NumberOfParameters == 1 && + func->Parameters[0]->Class && + strcmp(func->Parameters[0]->Class, data->Name) == 0 && func->Access != VTK_ACCESS_PUBLIC) { return 0; @@ -536,19 +550,72 @@ int vtkWrap_HasPublicCopyConstructor(ClassInfo *data) return 1; } +/* -------------------------------------------------------------------- */ +/* Get the size for subclasses of vtkTuple */ +int vtkWrap_GetTupleSize(ClassInfo *data, HierarchyInfo *hinfo) +{ + HierarchyEntry *entry; + const char *classname = NULL; + size_t m; + int size = 0; + + entry = vtkParseHierarchy_FindEntry(hinfo, data->Name); + if (entry && vtkParseHierarchy_IsTypeOfTemplated( + hinfo, entry, data->Name, "vtkTuple", &classname)) + { + /* attempt to get count from template parameter */ + if (classname) + { + m = strlen(classname); + if (m > 2 && classname[m - 1] == '>' && + isdigit(classname[m-2]) && (classname[m-3] == ' ' || + classname[m-3] == ',' || classname[m-3] == '<')) + { + size = classname[m-2] - '0'; + } + free((char *)classname); + } + } + + return size; +} + /* -------------------------------------------------------------------- */ /* This sets the CountHint for vtkDataArray methods where the * tuple size is equal to GetNumberOfComponents. */ void vtkWrap_FindCountHints( - ClassInfo *data, HierarchyInfo *hinfo) + ClassInfo *data, FileInfo *finfo, HierarchyInfo *hinfo) { int i; + int count; const char *countMethod; - const char *classname; FunctionInfo *theFunc; - HierarchyEntry *entry; - size_t m; - char digit; + + /* add hints for vtkInformation get methods */ + if (vtkWrap_IsTypeOf(hinfo, data->Name, "vtkInformation")) + { + countMethod = "Length(temp0)"; + + for (i = 0; i < data->NumberOfFunctions; i++) + { + theFunc = data->Functions[i]; + + if (strcmp(theFunc->Name, "Get") == 0 && + theFunc->NumberOfParameters >= 1 && + theFunc->Parameters[0]->Type == VTK_PARSE_OBJECT_PTR && + (strcmp(theFunc->Parameters[0]->Class, + "vtkInformationIntegerVectorKey") == 0 || + strcmp(theFunc->Parameters[0]->Class, + "vtkInformationDoubleVectorKey") == 0)) + { + if (theFunc->ReturnValue && theFunc->ReturnValue->Count == 0 && + theFunc->NumberOfParameters == 1) + { + theFunc->ReturnValue->CountHint = countMethod; + } + } + } + } /* add hints for array GetTuple methods */ if (vtkWrap_IsTypeOf(hinfo, data->Name, "vtkDataArray")) @@ -562,8 +629,8 @@ void vtkWrap_FindCountHints( if ((strcmp(theFunc->Name, "GetTuple") == 0 || strcmp(theFunc->Name, "GetTupleValue") == 0) && theFunc->ReturnValue && theFunc->ReturnValue->Count == 0 && - theFunc->NumberOfArguments == 1 && - theFunc->Arguments[0]->Type == VTK_PARSE_ID_TYPE) + theFunc->NumberOfParameters == 1 && + theFunc->Parameters[0]->Type == VTK_PARSE_ID_TYPE) { theFunc->ReturnValue->CountHint = countMethod; } @@ -573,18 +640,18 @@ void vtkWrap_FindCountHints( strcmp(theFunc->Name, "GetTupleValue") == 0 || strcmp(theFunc->Name, "InsertTuple") == 0 || strcmp(theFunc->Name, "InsertTupleValue") == 0) && - theFunc->NumberOfArguments == 2 && - theFunc->Arguments[0]->Type == VTK_PARSE_ID_TYPE && - theFunc->Arguments[1]->Count == 0) + theFunc->NumberOfParameters == 2 && + theFunc->Parameters[0]->Type == VTK_PARSE_ID_TYPE && + theFunc->Parameters[1]->Count == 0) { - theFunc->Arguments[1]->CountHint = countMethod; + theFunc->Parameters[1]->CountHint = countMethod; } else if ((strcmp(theFunc->Name, "InsertNextTuple") == 0 || strcmp(theFunc->Name, "InsertNextTupleValue") == 0) && - theFunc->NumberOfArguments == 1 && - theFunc->Arguments[0]->Count == 0) + theFunc->NumberOfParameters == 1 && + theFunc->Parameters[0]->Count == 0) { - theFunc->Arguments[0]->CountHint = countMethod; + theFunc->Parameters[0]->CountHint = countMethod; } } } @@ -599,13 +666,13 @@ void vtkWrap_FindCountHints( theFunc = data->Functions[i]; if (strcmp(theFunc->Name, "Interpolate") == 0 && - theFunc->NumberOfArguments == 2 && - theFunc->Arguments[0]->Type == (VTK_PARSE_DOUBLE_PTR|VTK_PARSE_CONST) && - theFunc->Arguments[0]->Count == 3 && - theFunc->Arguments[1]->Type == VTK_PARSE_DOUBLE_PTR && - theFunc->Arguments[1]->Count == 0) + theFunc->NumberOfParameters == 2 && + theFunc->Parameters[0]->Type == (VTK_PARSE_DOUBLE_PTR|VTK_PARSE_CONST) && + theFunc->Parameters[0]->Count == 3 && + theFunc->Parameters[1]->Type == VTK_PARSE_DOUBLE_PTR && + theFunc->Parameters[1]->Count == 0) { - theFunc->Arguments[1]->CountHint = countMethod; + theFunc->Parameters[1]->CountHint = countMethod; } } } @@ -616,33 +683,22 @@ void vtkWrap_FindCountHints( /* hints for constructors that take arrays */ if (vtkWrap_IsConstructor(data, theFunc) && - theFunc->NumberOfArguments == 1 && - vtkWrap_IsPointer(theFunc->Arguments[0]) && - vtkWrap_IsNumeric(theFunc->Arguments[0]) && - theFunc->Arguments[0]->Count == 0 && + theFunc->NumberOfParameters == 1 && + vtkWrap_IsPointer(theFunc->Parameters[0]) && + vtkWrap_IsNumeric(theFunc->Parameters[0]) && + theFunc->Parameters[0]->Count == 0 && hinfo) { - entry = vtkParseHierarchy_FindEntry(hinfo, data->Name); - if (entry && vtkParseHierarchy_IsTypeOfTemplated( - hinfo, entry, data->Name, "vtkTuple", &classname)) + count = vtkWrap_GetTupleSize(data, hinfo); + if (count) { - /* attempt to get count from template parameter */ - if (classname) - { - m = strlen(classname); - if (m > 2 && classname[m - 1] == '>' && - isdigit(classname[m-2]) && (classname[m-3] == ' ' || - classname[m-3] == ',' || classname[m-3] == '<')) - { - digit = classname[m-2]; - theFunc->Arguments[0]->Count = digit - '0'; - vtkParse_AddStringToArray( - &theFunc->Arguments[0]->Dimensions, - &theFunc->Arguments[0]->NumberOfDimensions, - vtkParse_DuplicateString(&digit, 1)); - } - free((char *)classname); - } + char counttext[24]; + sprintf(counttext, "%d", count); + theFunc->Parameters[0]->Count = count; + vtkParse_AddStringToArray( + &theFunc->Parameters[0]->Dimensions, + &theFunc->Parameters[0]->NumberOfDimensions, + vtkParse_CacheString(finfo->Strings, counttext, strlen(counttext))); } } @@ -686,6 +742,8 @@ void vtkWrap_FindNewInstanceMethods( { if (strcmp(theFunc->Name, "NewInstance") == 0 || strcmp(theFunc->Name, "CreateInstance") == 0 || + (strcmp(theFunc->Name, "CreateLookupTable") == 0 && + strcmp(data->Name, "vtkColorSeries") == 0) || (strcmp(theFunc->Name, "CreateImageReader2") == 0 && strcmp(data->Name, "vtkImageReader2Factory") == 0) || (strcmp(theFunc->Name, "CreateDataArray") == 0 && @@ -710,7 +768,8 @@ void vtkWrap_FindNewInstanceMethods( /* -------------------------------------------------------------------- */ /* Expand all typedef types that are used in function arguments */ -void vtkWrap_ExpandTypedefs(ClassInfo *data, HierarchyInfo *hinfo) +void vtkWrap_ExpandTypedefs( + ClassInfo *data, FileInfo *finfo, HierarchyInfo *hinfo) { int i, j, n; FunctionInfo *funcInfo; @@ -724,7 +783,7 @@ void vtkWrap_ExpandTypedefs(ClassInfo *data, HierarchyInfo *hinfo) if (newclass != data->SuperClasses[i]) { data->SuperClasses[i] = - vtkParse_DuplicateString(newclass, strlen(newclass)); + vtkParse_CacheString(finfo->Strings, newclass, strlen(newclass)); free((char *)newclass); } } @@ -735,15 +794,15 @@ void vtkWrap_ExpandTypedefs(ClassInfo *data, HierarchyInfo *hinfo) funcInfo = data->Functions[i]; if (funcInfo->Access == VTK_ACCESS_PUBLIC) { - for (j = 0; j < funcInfo->NumberOfArguments; j++) + for (j = 0; j < funcInfo->NumberOfParameters; j++) { vtkParseHierarchy_ExpandTypedefsInValue( - hinfo, funcInfo->Arguments[j], data->Name); + hinfo, funcInfo->Parameters[j], finfo->Strings, data->Name); } if (funcInfo->ReturnValue) { vtkParseHierarchy_ExpandTypedefsInValue( - hinfo, funcInfo->ReturnValue, data->Name); + hinfo, funcInfo->ReturnValue, finfo->Strings, data->Name); } } } diff --git a/src/ParaView/vtkWrap.h b/src/ParaView/vtkWrap.h index 7100e0b8..8b385eb1 100644 --- a/src/ParaView/vtkWrap.h +++ b/src/ParaView/vtkWrap.h @@ -152,14 +152,20 @@ int vtkWrap_HasPublicCopyConstructor(ClassInfo *data); * This should be done before any wrapping is done, to make sure * that the wrappers see the real types. */ -void vtkWrap_ExpandTypedefs(ClassInfo *data, HierarchyInfo *hinfo); +void vtkWrap_ExpandTypedefs( + ClassInfo *data, FileInfo *finfo, HierarchyInfo *hinfo); /** * Apply any hints about array sizes, e.g. hint that the * GetNumberOfComponents() method gives the tuple size. */ void vtkWrap_FindCountHints( - ClassInfo *data, HierarchyInfo *hinfo); + ClassInfo *data, FileInfo *finfo, HierarchyInfo *hinfo); + +/** + * Get the size of a fixed-size tuple + */ +int vtkWrap_GetTupleSize(ClassInfo *data, HierarchyInfo *hinfo); /** * Apply any hints about methods that return a new object instance, @@ -195,11 +201,11 @@ int vtkWrap_IsSetVectorMethod(FunctionInfo *f); int vtkWrap_IsGetVectorMethod(FunctionInfo *f); /** - * Count the number of args that are wrapped. - * This skips the "void *" argument that follows - * wrapped function pointer arguments. + * Count the number of parameters that are wrapped. + * This skips the "void *" parameter that follows + * wrapped function pointer parameters. */ -int vtkWrap_CountWrappedArgs(FunctionInfo *f); +int vtkWrap_CountWrappedParameters(FunctionInfo *f); /** * Count the number of args that are required. @@ -207,7 +213,7 @@ int vtkWrap_CountWrappedArgs(FunctionInfo *f); * have a default value. Array args are not allowed * to have default values. */ -int vtkWrap_CountRequiredArgs(FunctionInfo *f); +int vtkWrap_CountRequiredArguments(FunctionInfo *f); /** * Write a variable declaration to a file. diff --git a/src/ParaView/vtkWrapHierarchy.c b/src/ParaView/vtkWrapHierarchy.c index 22b17004..f53fec9d 100644 --- a/src/ParaView/vtkWrapHierarchy.c +++ b/src/ParaView/vtkWrapHierarchy.c @@ -38,7 +38,8 @@ */ #include "vtkParse.h" -#include "vtkParseInternal.h" +#include "vtkParseData.h" +#include "vtkParseMain.h" #include "vtkParsePreprocess.h" #include #include @@ -125,23 +126,26 @@ static char *append_scope_to_line( * Append template info */ static char *append_template_to_line( - char *line, size_t *m, size_t *maxlen, TemplateArgs *template_args) + char *line, size_t *m, size_t *maxlen, TemplateInfo *template_args) { - TemplateArg *arg; + ValueInfo *arg; int j; line = append_to_line(line, "<", m, maxlen); - for (j = 0; j < template_args->NumberOfArguments; j++) + for (j = 0; j < template_args->NumberOfParameters; j++) { - arg = template_args->Arguments[j]; - line = append_to_line(line, arg->Name, m, maxlen); + arg = template_args->Parameters[j]; + if (arg->Name) + { + line = append_to_line(line, arg->Name, m, maxlen); + } if (arg->Value && arg->Value[0] != '\n') { line = append_to_line(line, "=", m, maxlen); line = append_to_line(line, arg->Value, m, maxlen); } - if (j+1 < template_args->NumberOfArguments) + if (j+1 < template_args->NumberOfParameters) { line = append_to_line(line, ",", m, maxlen); } @@ -502,18 +506,21 @@ static char **append_namespace_contents( line = append_typedef_to_line(line, &m, &maxlen, data->Typedefs[data->Items[i].Index]); } - else + else if (data->Items[i].Type != VTK_NAMESPACE_INFO) { /* unhandled file element */ continue; } - /* append filename and flags */ - line = append_trailer( - line, &m, &maxlen, header_file, module_name, tmpflags); + if (data->Items[i].Type != VTK_NAMESPACE_INFO) + { + /* append filename and flags */ + line = append_trailer( + line, &m, &maxlen, header_file, module_name, tmpflags); - /* append the line to the file */ - lines = append_unique_line(lines, line, np); + /* append the line to the file */ + lines = append_unique_line(lines, line, np); + } /* for classes, add all typed defined within the class */ if ((data->Items[i].Type == VTK_CLASS_INFO || @@ -905,79 +912,34 @@ static int string_compare(const void *vp1, const void *vp2) int main(int argc, char *argv[]) { - int usage_error = 0; - char *output_filename = 0; - int i, argi; + OptionInfo *options; + int i; size_t j, n; char **lines = 0; char **files = 0; char *flags; char *module_name; - char *option; - char *optionarg; - const char *optionargval; /* parse command-line options */ - for (argi = 1; argi < argc && argv[argi][0] == '-'; argi++) - { - if (strncmp(argv[argi], "-o", 2) == 0 || - strncmp(argv[argi], "-I", 2) == 0 || - strncmp(argv[argi], "-D", 2) == 0 || - strncmp(argv[argi], "-U", 2) == 0) - { - option = argv[argi]; - optionarg = &argv[argi][2]; - if (argv[argi][2] == '\0') - { - argi++; - if (argi >= argc || argv[argi][0] == '-') - { - usage_error = 1; - break; - } - optionarg = argv[argi]; - } - if (strncmp(option, "-o", 2) == 0) - { - output_filename = optionarg; - } - else if (strncmp(option, "-I", 2) == 0) - { - vtkParse_IncludeDirectory(optionarg); - } - else if (strncmp(option, "-D", 2) == 0) - { - optionargval = "1"; - j = 0; - while (optionarg[j] != '\0' && optionarg[j] != '=') { j++; } - if (optionarg[j] == '=') - { - optionargval = &optionarg[j+1]; - } - vtkParse_DefineMacro(optionarg, optionargval); - } - else if (strncmp(option, "-U", 2) == 0) - { - vtkParse_UndefineMacro(optionarg); - } - } - } + vtkParse_MainMulti(argc, argv); + options = vtkParse_GetCommandLineOptions(); - if (usage_error || !output_filename || argc - argi < 1) + /* make sure than an output file was given on the command line */ + if (options->OutputFileName == NULL) { - fprintf(stderr, - "Usage: %s -o output_file data_file [files_to_merge]\n", - argv[0]); + fprintf(stderr, "No output file was specified\n"); exit(1); } /* read the data file */ - files = vtkWrapHierarchy_TryReadHierarchyFile(argv[argi++], files); + files = vtkWrapHierarchy_TryReadHierarchyFile( + options->InputFileName, files); /* read in all the prior files */ - while (argi < argc) + for (i = 1; i < options->NumberOfFiles; i++) { - lines = vtkWrapHierarchy_TryReadHierarchyFile(argv[argi++], lines); + lines = vtkWrapHierarchy_TryReadHierarchyFile( + options->Files[i], lines); } /* merge the files listed in the data file */ @@ -1002,7 +964,7 @@ int main(int argc, char *argv[]) qsort(lines, n, sizeof(char *), &string_compare); /* write the file, if it has changed */ - vtkWrapHierarchy_TryWriteHierarchyFile(output_filename, lines); + vtkWrapHierarchy_TryWriteHierarchyFile(options->OutputFileName, lines); for (j = 0; j < n; j++) { diff --git a/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.cxx b/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.cxx index 664bd75b..c1d4bd3f 100644 --- a/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.cxx +++ b/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.cxx @@ -37,7 +37,7 @@ #include -vtkCxxRevisionMacro(vtkElevationSurfaceFilter, "$Revision$"); +//vtkCxxRevisionMacro(vtkElevationSurfaceFilter, "$Revision$"); vtkStandardNewMacro(vtkElevationSurfaceFilter); vtkElevationSurfaceFilter::vtkElevationSurfaceFilter() diff --git a/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.h b/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.h index 5ce7a2f7..5a532a5d 100644 --- a/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.h +++ b/src/Plugins/ElevationSurface/vtkElevationSurfaceFilter.h @@ -28,7 +28,7 @@ class VTK_EXPORT vtkElevationSurfaceFilter: public vtkAlgorithm { public: static vtkElevationSurfaceFilter *New(); - vtkTypeRevisionMacro(vtkElevationSurfaceFilter,vtkAlgorithm); + vtkTypeMacro(vtkElevationSurfaceFilter,vtkAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); // Description : diff --git a/src/Plugins/Filter/vtkMySampleFilter.cxx b/src/Plugins/Filter/vtkMySampleFilter.cxx index 461239e0..790fdd65 100644 --- a/src/Plugins/Filter/vtkMySampleFilter.cxx +++ b/src/Plugins/Filter/vtkMySampleFilter.cxx @@ -21,7 +21,7 @@ #include -vtkCxxRevisionMacro(vtkMySampleFilter, "$Revision$"); +//vtkCxxRevisionMacro(vtkMySampleFilter, "$Revision$"); vtkStandardNewMacro(vtkMySampleFilter); //---------------------------------------------------------------------------- diff --git a/src/Plugins/Filter/vtkMySampleFilter.h b/src/Plugins/Filter/vtkMySampleFilter.h index 393a4bcb..0bb84bfe 100644 --- a/src/Plugins/Filter/vtkMySampleFilter.h +++ b/src/Plugins/Filter/vtkMySampleFilter.h @@ -26,7 +26,7 @@ class vtkMySampleFilter : public vtkExtractEdges { public: static vtkMySampleFilter* New(); - vtkTypeRevisionMacro(vtkMySampleFilter, vtkExtractEdges); + vtkTypeMacro(vtkMySampleFilter, vtkExtractEdges); void PrintSelf(ostream& os, vtkIndent indent); protected: diff --git a/src/Plugins/IntegrationPoints/vtkELNOFilter.cxx b/src/Plugins/IntegrationPoints/vtkELNOFilter.cxx index d10ff1fe..c1a3df0e 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOFilter.cxx +++ b/src/Plugins/IntegrationPoints/vtkELNOFilter.cxx @@ -28,7 +28,7 @@ #include "vtkQuadratureSchemeDefinition.h" #include "vtkUnstructuredGrid.h" -vtkCxxRevisionMacro(vtkELNOFilter, "$Revision$"); +//vtkCxxRevisionMacro(vtkELNOFilter, "$Revision$"); vtkStandardNewMacro(vtkELNOFilter); vtkELNOFilter::vtkELNOFilter() diff --git a/src/Plugins/IntegrationPoints/vtkELNOFilter.h b/src/Plugins/IntegrationPoints/vtkELNOFilter.h index a48959f4..467616d7 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOFilter.h +++ b/src/Plugins/IntegrationPoints/vtkELNOFilter.h @@ -26,7 +26,7 @@ class VTK_EXPORT vtkELNOFilter: public vtkQuadraturePointsGenerator { public: static vtkELNOFilter *New(); - vtkTypeRevisionMacro(vtkELNOFilter,vtkQuadraturePointsGenerator); + vtkTypeMacro(vtkELNOFilter,vtkQuadraturePointsGenerator); void PrintSelf(ostream& os, vtkIndent indent); // Description : diff --git a/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.cxx b/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.cxx index bd43bdff..a612bdf4 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.cxx +++ b/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.cxx @@ -33,8 +33,8 @@ #include "vtkCellData.h" #include "vtkIdList.h" -vtkCxxRevisionMacro(vtkELNOMeshFilter, "$Revision$") -; +//vtkCxxRevisionMacro(vtkELNOMeshFilter, "$Revision$") +//; vtkStandardNewMacro(vtkELNOMeshFilter) ; @@ -77,7 +77,7 @@ int vtkELNOMeshFilter::RequestData(vtkInformation *request, vtkSmartPointer shrink = vtkSmartPointer::New(); - shrink->SetInput(usgInClone); + shrink->SetInputData(usgInClone); shrink->SetShrinkFactor(0.9999); shrink->Update(); vtkUnstructuredGrid* shrinked = shrink->GetOutput(); diff --git a/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.h b/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.h index 0839c377..fb768e23 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.h +++ b/src/Plugins/IntegrationPoints/vtkELNOMeshFilter.h @@ -26,7 +26,7 @@ class VTK_EXPORT vtkELNOMeshFilter: public vtkUnstructuredGridAlgorithm { public: static vtkELNOMeshFilter *New(); - vtkTypeRevisionMacro(vtkELNOMeshFilter,vtkUnstructuredGridAlgorithm); + vtkTypeMacro(vtkELNOMeshFilter,vtkUnstructuredGridAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); protected: diff --git a/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.cxx b/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.cxx index 1e304e83..d75c4460 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.cxx +++ b/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.cxx @@ -34,8 +34,8 @@ #include "vtkCellData.h" #include "vtkIdList.h" -vtkCxxRevisionMacro(vtkELNOSurfaceFilter, "$Revision$") -; +//vtkCxxRevisionMacro(vtkELNOSurfaceFilter, "$Revision$") +//; vtkStandardNewMacro(vtkELNOSurfaceFilter) ; @@ -72,7 +72,7 @@ int vtkELNOSurfaceFilter::RequestData(vtkInformation *request, vtkSmartPointer geomFilter=vtkSmartPointer< vtkPVGeometryFilter>::New(); - geomFilter->SetInput(usgInClone); + geomFilter->SetInputData(usgInClone); geomFilter->SetPassThroughCellIds(1); geomFilter->SetPassThroughPointIds(1); geomFilter->SetUseOutline(0); @@ -98,7 +98,7 @@ int vtkELNOSurfaceFilter::RequestData(vtkInformation *request, vtkSmartPointer shrink= vtkSmartPointer::New(); - shrink->SetInput(surface); + shrink->SetInputConnection(geomFilter->GetOutputPort(0)); shrink->SetShrinkFactor(0.9999); shrink->Update(); diff --git a/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.h b/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.h index 263b71d3..b2801e5b 100644 --- a/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.h +++ b/src/Plugins/IntegrationPoints/vtkELNOSurfaceFilter.h @@ -26,7 +26,7 @@ class VTK_EXPORT vtkELNOSurfaceFilter: public vtkUnstructuredGridAlgorithm { public: static vtkELNOSurfaceFilter *New(); - vtkTypeRevisionMacro(vtkELNOSurfaceFilter,vtkUnstructuredGridAlgorithm); + vtkTypeMacro(vtkELNOSurfaceFilter,vtkUnstructuredGridAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); protected: diff --git a/src/Plugins/MedReader/CMake/FindMED.cmake b/src/Plugins/MedReader/CMake/FindMED.cmake index ca02538a..531520c8 100644 --- a/src/Plugins/MedReader/CMake/FindMED.cmake +++ b/src/Plugins/MedReader/CMake/FindMED.cmake @@ -57,6 +57,8 @@ FIND_LIBRARY(MED_LIBRARY med /usr/lib ) +get_filename_component(MED_LIBRARY_DIR ${MED_LIBRARY} PATH) + FIND_LIBRARY(MEDC_LIBRARY medC HINTS ${MED_LIBRARY_DIR} @@ -66,16 +68,13 @@ FIND_LIBRARY(MEDC_LIBRARY medC /usr/lib ) -get_filename_component(MED_LIBRARY_DIR ${MEDC_LIBRARY} PATH) - IF(MED_INCLUDE_DIR) - IF(MEDC_LIBRARY) - SET(MED_LIBRARIES ${MEDC_LIBRARY} ) - IF(MED_LIBRARY) - SET(MED_LIBRARIES ${MED_LIBRARIES} ${MED_LIBRARY} ) - ENDIF(MED_LIBRARY) - SET( MED_FOUND "YES" ) - ENDIF(MEDC_LIBRARY) + IF(MED_LIBRARY) + IF(MEDC_LIBRARY) + SET(MED_LIBRARIES ${MED_LIBRARY} ${MEDC_LIBRARY} ) + SET( MED_FOUND "YES" ) + ENDIF(MEDC_LIBRARY) + ENDIF(MED_LIBRARY) ENDIF(MED_INCLUDE_DIR) IF(${MED_FOUND}) diff --git a/src/Plugins/MedReader/CMakeLists.txt b/src/Plugins/MedReader/CMakeLists.txt index 3e535a3e..ba2bbc41 100644 --- a/src/Plugins/MedReader/CMakeLists.txt +++ b/src/Plugins/MedReader/CMakeLists.txt @@ -1,22 +1,3 @@ -# Copyright (C) 2010-2012 CEA/DEN, EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# - project(MedReader) cmake_minimum_required(VERSION 2.8) @@ -42,6 +23,8 @@ if(MedReader_BUILD_ParaView_Plugin) MESSAGE(FATAL_ERROR "Please locate ParaView." ) ENDIF(NOT ParaView_FOUND) INCLUDE(${PARAVIEW_USE_FILE}) + # Load information about VTK/ParaView modules loaded/available. + pv_setup_module_environment("vtkMedReader") else(MedReader_BUILD_ParaView_Plugin) FIND_PACKAGE(VTK REQUIRED) if(NOT VTK_FOUND) @@ -62,15 +45,26 @@ SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH} ) FIND_PACKAGE(MED REQUIRED) include_directories(${MED_INCLUDE_DIRS}) +# +# process all vtk-modules defined in this plugin. This generates the necessary +# wrappings for all these modules as well. +# +SET(VTK_INSTALL_RUNTIME_DIR lib/salome) +SET(VTK_INSTALL_LIBRARY_DIR lib/salome) +SET(VTK_INSTALL_ARCHIVE_DIR lib/salome) + +pv_process_modules() + # # Build the vtkMedReader # -add_subdirectory(IO) +# add_subdirectory(IO) # # Build the parallel vtkPMedReader # set(MedReader_BUILD_PARALLEL ${VTK_USE_PARALLEL} CACHE BOOL "Build the Med Reader with parallel support.") +# MESSAGE(${MedReader_BUILD_PARALLEL}) # # Build the ParaView Plugin diff --git a/src/Plugins/MedReader/IO/CMakeLists.txt b/src/Plugins/MedReader/IO/CMakeLists.txt index 14d4738f..3c0bb682 100644 --- a/src/Plugins/MedReader/IO/CMakeLists.txt +++ b/src/Plugins/MedReader/IO/CMakeLists.txt @@ -17,12 +17,6 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -#test if we have not yet included ParaView and/or VTK configuration files -IF(NOT VTK_FOUND) - FIND_PACKAGE(VTK REQUIRED) - INCLUDE(${VTK_USE_FILE}) -ENDIF(NOT VTK_FOUND) - set(MedReader_CLASSES vtkMedReader vtkMedDriver @@ -84,25 +78,21 @@ set_source_files_properties( PROPERTIES WRAP_EXCLUDE 1 ) -add_library(vtkMedReader ${MedReader_SRCS}) - -set(VTK_LIBS vtkIO) -if(${HDF5_IS_PARALLEL}) - set(VTK_LIBS ${VTK_LIBS} vtkParallel) -endif(${HDF5_IS_PARALLEL}) +# this adds target_link_libraries dependencies on all modules listed under +# DEPENDS in module.cmake +vtk_module_library(vtkMedReader ${MedReader_SRCS}) # Introducing selection for parallel compilation +# CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/IO/config.h.cmake ${CMAKE_SOURCE_DIR}/IO/config.h ) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) -add_definitions( -I${CMAKE_CURRENT_BINARY_DIR} ) +target_link_libraries(vtkMedReader ${MED_LIBRARIES}) -target_link_libraries(vtkMedReader ${MED_LIBRARIES} ${VTK_LIBS} ${VTK_PARALLEL} ${vtkPVServerManager}) +#set(MedReader_BUILD_Testing ${VTK_BUILD_TESTING} CACHE BOOL "Build tests for the MedReader filter") -set(MedReader_BUILD_Testing ${VTK_BUILD_TESTING} CACHE BOOL "Build tests for the MedReader filter") - -if(MedReader_BUILD_Testing) - add_subdirectory(Testing) -endif(MedReader_BUILD_Testing) +#if(MedReader_BUILD_Testing) +# add_subdirectory(Testing) +#endif(MedReader_BUILD_Testing) install( TARGETS vtkMedReader @@ -110,7 +100,7 @@ install( LIBRARY DESTINATION lib/salome ARCHIVE DESTINATION lib/salome ) - + install(FILES ${MedReader_HDRS} DESTINATION include) # ----------------------------------------------------------------------------- @@ -118,14 +108,18 @@ install(FILES ${MedReader_HDRS} DESTINATION include) # kit. # ----------------------------------------------------------------------------- # needed by vtkExportKit.cmake -include(${VTK_CMAKE_DIR}/vtkExportKit.cmake) -IF(NOT VTK_INSTALL_NO_DEVELOPMENT) - STRING(REGEX REPLACE "^/" "" VTK_INSTALL_PACKAGE_DIR_CM24 "${VTK_INSTALL_PACKAGE_DIR}") -ENDIF(NOT VTK_INSTALL_NO_DEVELOPMENT) -vtk_export_kit2( - "MedReader_IO" - "MEDREADER_IO" - ${CMAKE_CURRENT_BINARY_DIR} - "${MedReader_SRCS}" -) +#include(${ParaView_CMAKE_DIR}/VTKMono/vtkExportKit.cmake) + +# #include(${VTK_CMAKE_DIR}/vtkExportKit.cmake) +#IF(NOT VTK_INSTALL_NO_DEVELOPMENT) +# STRING(REGEX REPLACE "^/" "" VTK_INSTALL_PACKAGE_DIR_CM24 "${VTK_INSTALL_PACKAGE_DIR}") +#ENDIF(NOT VTK_INSTALL_NO_DEVELOPMENT) + +#set(VTK_INSTALL_PACKAGE_DIR_CM24 ${VTK_MODULES_DIR}) +#vtk_export_kit2( +# "MedReader_IO" +# "MEDREADER_IO" +# ${CMAKE_CURRENT_BINARY_DIR} +# "${MedReader_SRCS}" +#) diff --git a/src/Plugins/MedReader/IO/Testing/Cxx/CMakeLists.txt b/src/Plugins/MedReader/IO/Testing/Cxx/CMakeLists.txt index baf374d8..b409a00a 100644 --- a/src/Plugins/MedReader/IO/Testing/Cxx/CMakeLists.txt +++ b/src/Plugins/MedReader/IO/Testing/Cxx/CMakeLists.txt @@ -17,7 +17,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -include_directories(../..) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/../..) set(TestMedReader_SRCS TestMedReader.cxx @@ -57,21 +58,20 @@ add_executable(TestMedReadPolyhedron ${TestMedReadPolyhedron_SRCS}) add_executable(TestMedDescendingPolyhedron ${TestMedDescendingPolyhedron_SRCS}) add_executable(TestMedReadDescendingPolyhedron ${TestMedReadDescendingPolyhedron_SRCS}) add_executable(TestMedWriteOcta12 ${TestMedWriteOcta12_SRCS}) -add_executable(TestMedParallelRead ${TestMedParallelRead_SRCS}) -add_executable(TestMedParallelWrite ${TestMedParallelWrite_SRCS}) -#set(VTK_LIBS vtkMedReader vtkRendering) -#if(${HDF5_IS_PARALLEL}) -# set(VTK_LIBS ${VTK_LIBS} vtkParallel) -#endif(${HDF5_IS_PARALLEL}) -SET(VTK_LIBS ${VTK_LIBRARIES} vtkMedReader) +if(${HDF5_IS_PARALLEL}) + add_executable(TestMedParallelRead ${TestMedParallelRead_SRCS}) + add_executable(TestMedParallelWrite ${TestMedParallelWrite_SRCS}) + target_link_libraries(TestMedParallelRead vtkParallelCore ${MED_LIBRARIES}) + target_link_libraries(TestMedParallelWrite vtkParallelCore ${MED_LIBRARIES}) +endif(${HDF5_IS_PARALLEL}) -target_link_libraries(TestMedReader ${VTK_LIBS} ${MED_LIBRARIES}) +INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../../module.cmake) + +target_link_libraries(TestMedReader ${${vtk-module-test}_DEPENDS} ${MED_LIBRARIES}) target_link_libraries(TestMedPolyhedron ${MED_LIBRARIES}) target_link_libraries(TestMedReadPolyhedron ${MED_LIBRARIES}) target_link_libraries(TestMedDescendingPolyhedron ${MED_LIBRARIES}) target_link_libraries(TestMedReadDescendingPolyhedron ${MED_LIBRARIES}) target_link_libraries(TestMedWriteOcta12 ${MED_LIBRARIES}) -target_link_libraries(TestMedParallelRead ${MED_LIBRARIES}) -target_link_libraries(TestMedParallelWrite ${MED_LIBRARIES}) diff --git a/src/Plugins/MedReader/IO/module.cmake b/src/Plugins/MedReader/IO/module.cmake new file mode 100644 index 00000000..5a1f56bc --- /dev/null +++ b/src/Plugins/MedReader/IO/module.cmake @@ -0,0 +1,12 @@ +SET(VTK_LIBS vtkCommonExecutionModel vtkParallelCore) + +vtk_module(vtkMedReader + DEPENDS + ${VTK_LIBS} + TEST_DEPENDS + vtkRenderingCore + vtkTestingRendering + vtkInteractionStyle + vtkRenderingFreeTypeOpenGL + EXCLUDE_FROM_WRAP_HIERARCHY +) diff --git a/src/Plugins/MedReader/IO/vtkExtractGroup.cxx b/src/Plugins/MedReader/IO/vtkExtractGroup.cxx index 4b7d4338..e719272a 100644 --- a/src/Plugins/MedReader/IO/vtkExtractGroup.cxx +++ b/src/Plugins/MedReader/IO/vtkExtractGroup.cxx @@ -36,12 +36,15 @@ #include "vtkUnsignedCharArray.h" #include "vtkDataSetAttributes.h" #include "vtkDemandDrivenPipeline.h" -#include "vtkCompositeDataIterator.h" +//#include "vtkCompositeDataIterator.h" +#include "vtkDataObjectTreeIterator.h" -#include -#include +#include +#include +//#include +//#include -vtkCxxRevisionMacro(vtkExtractGroup, "$Revision$"); +// vtkCxxRevisionMacro(vtkExtractGroup, "$Revision$"); vtkStandardNewMacro(vtkExtractGroup); vtkCxxSetObjectMacro(vtkExtractGroup, SIL, vtkMutableDirectedGraph); @@ -132,7 +135,7 @@ void vtkExtractGroup::BuildDefaultSIL(vtkMutableDirectedGraph* sil) crossEdgesArray->SetName("CrossEdges"); sil->GetEdgeData()->AddArray(crossEdgesArray); crossEdgesArray->Delete(); - vtkstd::deque names; + std::deque names; // Now build the hierarchy. vtkIdType rootId=sil->AddVertex(); @@ -168,7 +171,7 @@ void vtkExtractGroup::BuildDefaultSIL(vtkMutableDirectedGraph* sil) namesArray->SetNumberOfTuples(sil->GetNumberOfVertices()); sil->GetVertexData()->AddArray(namesArray); namesArray->Delete(); - vtkstd::deque::iterator iter; + std::deque::iterator iter; vtkIdType cc; for(cc=0, iter=names.begin(); iter!=names.end(); ++iter, ++cc) { @@ -192,7 +195,8 @@ int vtkExtractGroup::RequestData(vtkInformation *request, outmb->CopyStructure(inmb); - vtkCompositeDataIterator* iterator = inmb->NewIterator(); + //vtkCompositeDataIterator* iterator = inmb->NewIterator(); + vtkDataObjectTreeIterator* iterator = vtkDataObjectTreeIterator::SafeDownCast( inmb->NewIterator() ); iterator->SetVisitOnlyLeaves(true); iterator->InitTraversal(); while(!iterator->IsDoneWithTraversal()) diff --git a/src/Plugins/MedReader/IO/vtkExtractGroup.h b/src/Plugins/MedReader/IO/vtkExtractGroup.h index fb3f7332..62eabced 100644 --- a/src/Plugins/MedReader/IO/vtkExtractGroup.h +++ b/src/Plugins/MedReader/IO/vtkExtractGroup.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -14,7 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : +// webmaster.salome@opencascade.com // #ifndef vtkExtractGroup_h__ @@ -32,7 +33,7 @@ class VTK_EXPORT vtkExtractGroup: public vtkMultiBlockDataSetAlgorithm { public: static vtkExtractGroup* New(); -vtkTypeRevisionMacro(vtkExtractGroup, vtkMultiBlockDataSetAlgorithm) + vtkTypeMacro(vtkExtractGroup, vtkMultiBlockDataSetAlgorithm) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkGenerateStructElement.cxx b/src/Plugins/MedReader/IO/vtkGenerateStructElement.cxx index a59c850b..a6cf61f8 100644 --- a/src/Plugins/MedReader/IO/vtkGenerateStructElement.cxx +++ b/src/Plugins/MedReader/IO/vtkGenerateStructElement.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkGenerateStructElement.h" #include "vtkObjectFactory.h" @@ -77,7 +58,7 @@ protected : std::map varAttribute; }; -vtkCxxRevisionMacro(vtkGenerateStructElement, "$Revision$"); +// vtkCxxRevisionMacro(vtkGenerateStructElement, "$Revision$"); vtkStandardNewMacro(vtkGenerateStructElement); vtkGenerateStructElement::vtkGenerateStructElement() @@ -108,6 +89,8 @@ int vtkGenerateStructElement::RequestData(vtkInformation* request, vtkMedStructElement* strelem = vtkMedStructElement::SafeDownCast( inug->GetInformation()->Get(vtkMedUtilities::STRUCT_ELEMENT())); + std::cout << "Inside vtkGenerateStructElement::RequestData" << std::endl; + if(strelem == NULL) { vtkDebugMacro("vtkGenerateStructElement needs a vtkMedStructElement information"); @@ -131,20 +114,23 @@ int vtkGenerateStructElement::RequestData(vtkInformation* request, if(name == MED_BALL_NAME) { + std::cout << "vtkGenerateStructElement::RequestData ... if(name == MED_BALL_NAME)" << std::endl; // sanity check : is the diameter defined? if(!cache.HasParameter(MED_BALL_DIAMETER)) { vtkErrorMacro("MED_BALL elements need a diameter"); return 1; } + std::cout << "inug->GetNumberOfCells() = " << inug->GetNumberOfCells() << std::endl; for(vtkIdType cellId = 0; cellId < inug->GetNumberOfCells(); cellId++) { vtkIdType ballMedId = strelemindex->GetValue(2*cellId); double balldiam = this->GetParameter1(MED_BALL_DIAMETER, ballMedId, cache); - + std::cout << balldiam << " - "; //TODO //this->GenerateBall(inug, cellId, balldiam, outug); } + std::cout << std::endl; } else if(name == MED_PARTICLE_NAME) { diff --git a/src/Plugins/MedReader/IO/vtkGenerateStructElement.h b/src/Plugins/MedReader/IO/vtkGenerateStructElement.h index 2477cc9d..58eec592 100644 --- a/src/Plugins/MedReader/IO/vtkGenerateStructElement.h +++ b/src/Plugins/MedReader/IO/vtkGenerateStructElement.h @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #ifndef __vtkGenerateStructElement_h__ #define __vtkGenerateStructElement_h__ @@ -29,7 +10,7 @@ class VTK_EXPORT vtkGenerateStructElement : public vtkUnstructuredGridAlgorithm { public: static vtkGenerateStructElement* New(); - vtkTypeRevisionMacro(vtkGenerateStructElement, vtkObject) + vtkTypeMacro(vtkGenerateStructElement, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); protected : diff --git a/src/Plugins/MedReader/IO/vtkMed.h b/src/Plugins/MedReader/IO/vtkMed.h index d86f2e32..f1f5bb34 100644 --- a/src/Plugins/MedReader/IO/vtkMed.h +++ b/src/Plugins/MedReader/IO/vtkMed.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public diff --git a/src/Plugins/MedReader/IO/vtkMedCartesianGrid.cxx b/src/Plugins/MedReader/IO/vtkMedCartesianGrid.cxx index 83bed8dd..033e367c 100644 --- a/src/Plugins/MedReader/IO/vtkMedCartesianGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedCartesianGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ #include "vtkObjectFactory.h" -vtkCxxRevisionMacro(vtkMedCartesianGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedCartesianGrid, "$Revision$") vtkStandardNewMacro(vtkMedCartesianGrid) vtkMedCartesianGrid::vtkMedCartesianGrid() diff --git a/src/Plugins/MedReader/IO/vtkMedCartesianGrid.h b/src/Plugins/MedReader/IO/vtkMedCartesianGrid.h index aec09f0e..7f8a5493 100644 --- a/src/Plugins/MedReader/IO/vtkMedCartesianGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedCartesianGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -26,7 +26,7 @@ class VTK_EXPORT vtkMedCartesianGrid : public vtkMedRegularGrid { public : static vtkMedCartesianGrid* New(); - vtkTypeRevisionMacro(vtkMedCartesianGrid, vtkMedRegularGrid); + vtkTypeMacro(vtkMedCartesianGrid, vtkMedRegularGrid); void PrintSelf(ostream& os, vtkIndent indent); protected: diff --git a/src/Plugins/MedReader/IO/vtkMedConstantAttribute.cxx b/src/Plugins/MedReader/IO/vtkMedConstantAttribute.cxx index 01c5d68e..8c324f47 100644 --- a/src/Plugins/MedReader/IO/vtkMedConstantAttribute.cxx +++ b/src/Plugins/MedReader/IO/vtkMedConstantAttribute.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkMedConstantAttribute.h" #include "vtkObjectFactory.h" @@ -31,7 +12,7 @@ #include using namespace std; -vtkCxxRevisionMacro(vtkMedConstantAttribute, "$Revision$") +// vtkCxxRevisionMacro(vtkMedConstantAttribute, "$Revision$") vtkStandardNewMacro(vtkMedConstantAttribute); vtkCxxSetObjectMacro(vtkMedConstantAttribute, Values, vtkAbstractArray); diff --git a/src/Plugins/MedReader/IO/vtkMedConstantAttribute.h b/src/Plugins/MedReader/IO/vtkMedConstantAttribute.h index d93f1172..87ac4eb2 100644 --- a/src/Plugins/MedReader/IO/vtkMedConstantAttribute.h +++ b/src/Plugins/MedReader/IO/vtkMedConstantAttribute.h @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #ifndef __vtkMedConstantAttribute_h_ #define __vtkMedConstantAttribute_h_ @@ -31,7 +12,7 @@ class VTK_EXPORT vtkMedConstantAttribute : public vtkObject { public : static vtkMedConstantAttribute* New(); - vtkTypeRevisionMacro(vtkMedConstantAttribute, vtkObject) + vtkTypeMacro(vtkMedConstantAttribute, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.cxx b/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.cxx index 5379c312..b783c8a6 100644 --- a/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -34,7 +34,7 @@ vtkCxxSetObjectMacro(vtkMedCurvilinearGrid, Coordinates, vtkDataArray); -vtkCxxRevisionMacro(vtkMedCurvilinearGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedCurvilinearGrid, "$Revision$") vtkStandardNewMacro(vtkMedCurvilinearGrid) vtkMedCurvilinearGrid::vtkMedCurvilinearGrid() @@ -102,7 +102,6 @@ vtkDataSet* vtkMedCurvilinearGrid::CreateVTKDataSet( vtkPoints* points = vtkPoints::New(); vtkgrid->SetPoints(points); points->Delete(); - vtkgrid->SetDimensions(this->GetAxisSize(0), this->GetAxisSize(1), this->GetAxisSize(2)); @@ -115,6 +114,20 @@ vtkDataSet* vtkMedCurvilinearGrid::CreateVTKDataSet( } else { + if(this->GetDimension() == 1) + { + vtkgrid->SetDimensions(this->GetAxisSize(0), + 1, + 1); + } + + if(this->GetDimension() == 2) + { + vtkgrid->SetDimensions(this->GetAxisSize(0), + this->GetAxisSize(1), + 1); + } + vtkDataArray* coords = vtkDataArray::SafeDownCast( vtkAbstractArray::CreateArray(this->GetCoordinates()->GetDataType())); coords->SetNumberOfComponents(3); diff --git a/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.h b/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.h index fc4f13d4..07467787 100644 --- a/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedCurvilinearGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -30,7 +30,7 @@ class VTK_EXPORT vtkMedCurvilinearGrid : public vtkMedGrid { public : static vtkMedCurvilinearGrid* New(); - vtkTypeRevisionMacro(vtkMedCurvilinearGrid, vtkMedGrid) + vtkTypeMacro(vtkMedCurvilinearGrid, vtkMedGrid) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedDriver.cxx b/src/Plugins/MedReader/IO/vtkMedDriver.cxx index 4566dcc3..2d1a3877 100644 --- a/src/Plugins/MedReader/IO/vtkMedDriver.cxx +++ b/src/Plugins/MedReader/IO/vtkMedDriver.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkMedDriver.h" #include "vtkObjectFactory.h" @@ -52,7 +33,7 @@ vtkCxxSetObjectMacro(vtkMedDriver, MedFile, vtkMedFile); -vtkCxxRevisionMacro(vtkMedDriver, "$Revision$") +//vtkCxxRevisionMacro(vtkMedDriver, "$Revision$") vtkStandardNewMacro(vtkMedDriver) vtkMedDriver::vtkMedDriver() diff --git a/src/Plugins/MedReader/IO/vtkMedDriver.h b/src/Plugins/MedReader/IO/vtkMedDriver.h index a134f0fa..7b1f8fc6 100644 --- a/src/Plugins/MedReader/IO/vtkMedDriver.h +++ b/src/Plugins/MedReader/IO/vtkMedDriver.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -47,7 +47,7 @@ class VTK_EXPORT vtkMedDriver: public vtkObject { public: static vtkMedDriver* New(); - vtkTypeRevisionMacro(vtkMedDriver, vtkObject) + vtkTypeMacro(vtkMedDriver, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedDriver30.cxx b/src/Plugins/MedReader/IO/vtkMedDriver30.cxx index 601f896c..48bf48f7 100644 --- a/src/Plugins/MedReader/IO/vtkMedDriver30.cxx +++ b/src/Plugins/MedReader/IO/vtkMedDriver30.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -54,11 +54,9 @@ #include "vtkMultiProcessController.h" #include -#include -#include using namespace std; -vtkCxxRevisionMacro(vtkMedDriver30, "$Revision$") +// vtkCxxRevisionMacro(vtkMedDriver30, "$Revision$") vtkStandardNewMacro(vtkMedDriver30) vtkMedDriver30::vtkMedDriver30() : vtkMedDriver() @@ -170,6 +168,7 @@ void vtkMedDriver30::LoadRegularGridCoordinates(vtkMedRegularGrid* grid) return; } } + } // Description: @@ -201,6 +200,7 @@ void vtkMedDriver30::ReadCurvilinearGridInformation(vtkMedCurvilinearGrid* grid) grid->SetNumberOfPoints(size); med_int axissize[3]; + if(MEDmeshGridStructRd( this->FileId, grid->GetParentMesh()->GetName(), @@ -210,24 +210,60 @@ void vtkMedDriver30::ReadCurvilinearGridInformation(vtkMedCurvilinearGrid* grid) { vtkErrorMacro("ReadCurvilinearGridInformation MEDmeshGridStructRd"); } - grid->SetAxisSize(0, (axissize[0] <= 0 ? 1: axissize[0])); - grid->SetAxisSize(1, (axissize[1] <= 0 ? 1: axissize[1])); - grid->SetAxisSize(2, (axissize[2] <= 0 ? 1: axissize[2])); + + switch(grid->GetDimension()) + { + case 0 : + break; + case 1 : + grid->SetAxisSize(0, (axissize[0] <= 0 ? 1: axissize[0])); + break; + case 2 : + grid->SetAxisSize(0, (axissize[0] <= 0 ? 1: axissize[0])); + grid->SetAxisSize(1, (axissize[1] <= 0 ? 1: axissize[1])); + break; + case 3 : + grid->SetAxisSize(0, (axissize[0] <= 0 ? 1: axissize[0])); + grid->SetAxisSize(1, (axissize[1] <= 0 ? 1: axissize[1])); + grid->SetAxisSize(2, (axissize[2] <= 0 ? 1: axissize[2])); + break; + default : + vtkErrorMacro("Unsupported dimension for curvilinear grid : " + << grid->GetDimension()); + return; + } // A test to verify the number of points : total number of // points should be equal to the product of each axis size - if(size != grid->GetAxisSize(0)*grid->GetAxisSize(1)*grid->GetAxisSize(2)) + med_int size2 = 0; + + if (grid->GetDimension() == 1) + { + size2 = grid->GetAxisSize(0); + } + + if (grid->GetDimension() == 2) + { + size2 = grid->GetAxisSize(0)*grid->GetAxisSize(1); + } + + if (grid->GetDimension() == 3) + { + size2 = grid->GetAxisSize(0)*grid->GetAxisSize(1)*grid->GetAxisSize(2); + } + + if(size != size2) { vtkErrorMacro("The total number of points of a Curvilinear grid should " << "be the product of each axis size!"); } med_int ncell = 1; - if(grid->GetAxisSize(0) > 1) + if ((grid->GetDimension() >= 1) && (grid->GetAxisSize(0) > 1)) ncell *= grid->GetAxisSize(0)-1; - if(grid->GetAxisSize(1) > 1) + if ((grid->GetDimension() >= 2) && (grid->GetAxisSize(1) > 1)) ncell *= grid->GetAxisSize(1)-1; - if(grid->GetAxisSize(2) > 1) + if ((grid->GetDimension() >= 3) && (grid->GetAxisSize(2) > 1)) ncell *= grid->GetAxisSize(2)-1; vtkMedEntity entity; @@ -262,7 +298,6 @@ void vtkMedDriver30::ReadCurvilinearGridInformation(vtkMedCurvilinearGrid* grid) array->Delete(); // this triggers the creation of undefined families this->LoadFamilyIds(array); - } // Description : read the number of entity of all geometry type @@ -543,56 +578,17 @@ void vtkMedDriver30::ReadFamilyInformation(vtkMedMesh* mesh, vtkMedFamily* famil family->SetId(familyid); - if( familyid == 0 ) { - family->SetPointOrCell( vtkMedUtilities::OnCell ); - mesh->AppendCellFamily( family ); - } else { - //rnv: improve algorithm to determine entity of the family: - // 1) Read Nb nodes - // 2) Read families of the nodes - // 3) If list of the families of the nodes contains familyid => vtkMedUtilities::OnPoint - // otherwise => vtkMedUtilities::OnCell - med_bool v1, v2; - med_int size = MEDmeshnEntity( - this->FileId, - meshName, - MED_NO_DT, - MED_NO_IT, - MED_NODE, - MED_NO_GEOTYPE, - MED_COORDINATE, - MED_NO_CMODE, - &v1, - &v2 ); - if( size < 0 ) { - vtkErrorMacro( "vtkMedDriver30::ReadInformation(vtkMedFamily* family)" - <<" cannot read nb Nodes" ); - return; + if(familyid <= 0) + { + family->SetPointOrCell(vtkMedUtilities::OnCell); + mesh->AppendCellFamily(family); } - - vector n_fams; - n_fams.resize( size ); - - med_int ret_val = MEDmeshEntityFamilyNumberRd( this->FileId, - meshName, - MED_NO_DT, - MED_NO_IT, - MED_NODE, - MED_NO_GEOTYPE , - &n_fams[0] ); - // Remove ZERO FAMILY - remove( n_fams.begin(),n_fams.end(), 0 ); - - bool isOnPoints = ( ret_val >= 0) && (find( n_fams.begin(), n_fams.end(), familyid ) != n_fams.end() ); - if( isOnPoints ) { - family->SetPointOrCell(vtkMedUtilities::OnPoint); - mesh->AppendPointFamily(family); - } else { - family->SetPointOrCell(vtkMedUtilities::OnCell); - mesh->AppendCellFamily(family); - } - } - + else + { + family->SetPointOrCell(vtkMedUtilities::OnPoint); + mesh->AppendPointFamily(family); + } + family->AllocateNumberOfGroup(ngroup); // if there where no group, set the name to the default value if(has_no_group) @@ -1071,7 +1067,7 @@ void vtkMedDriver30::ReadFieldInformation(vtkMedField* field) vtkMedFieldStep* step = vtkMedFieldStep::New(); step->SetMedIterator(csit + 1); step->SetParentField(field); - this->ReadFieldStepInformation(step, true); + this->ReadFieldStepInformation(step, csit == 0); field->AddFieldStep(step); step->SetPreviousStep(previousStep); previousStep = step; @@ -1115,32 +1111,15 @@ void vtkMedDriver30::ReadFieldStepInformation(vtkMedFieldStep* step, bool readAl if(mesh == NULL) return; - std::set tmp_entities; std::set entities; - mesh->GatherMedEntities(tmp_entities); - - std::set::iterator tmp_entity_it = tmp_entities.begin(); - while(tmp_entity_it != tmp_entities.end()) - { - vtkMedEntity entity = *tmp_entity_it; - tmp_entity_it++; - entities.insert(entity); - if(entity.EntityType == MED_CELL) - { - vtkMedEntity newEntity; - newEntity.EntityType = MED_NODE_ELEMENT; - newEntity.GeometryType = entity.GeometryType; - newEntity.GeometryName = entity.GeometryName; - entities.insert(newEntity); - } - } + mesh->GatherMedEntities(entities); vtkMedEntity pointEntity; pointEntity.EntityType = MED_NODE; pointEntity.GeometryType = MED_NONE; pointEntity.GeometryName = MED_NAME_BLANK; entities.insert(pointEntity); - + std::set::iterator entity_it = entities.begin(); while(entity_it != entities.end()) { @@ -1986,6 +1965,7 @@ void vtkMedDriver30::LoadConnectivity(vtkMedEntityArray* array) { if(array->GetEntity().EntityType == MED_STRUCT_ELEMENT) { + std::cout << " -- MED_STRUCT_ELEMENT --" << std::endl; if(array->GetStructElement() == NULL) { vtkErrorMacro("Entity type = MED_STRUCT_ELEMENT, but StructElement is not set!"); diff --git a/src/Plugins/MedReader/IO/vtkMedDriver30.h b/src/Plugins/MedReader/IO/vtkMedDriver30.h index d74b4ce9..578cebad 100644 --- a/src/Plugins/MedReader/IO/vtkMedDriver30.h +++ b/src/Plugins/MedReader/IO/vtkMedDriver30.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -45,7 +45,7 @@ class VTK_EXPORT vtkMedDriver30: public vtkMedDriver { public: static vtkMedDriver30* New(); - vtkTypeRevisionMacro(vtkMedDriver30, vtkMedDriver) + vtkTypeMacro(vtkMedDriver30, vtkMedDriver) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedEntityArray.cxx b/src/Plugins/MedReader/IO/vtkMedEntityArray.cxx index 99ac5070..bd658b5a 100644 --- a/src/Plugins/MedReader/IO/vtkMedEntityArray.cxx +++ b/src/Plugins/MedReader/IO/vtkMedEntityArray.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -49,7 +49,7 @@ vtkCxxSetObjectMacro(vtkMedEntityArray,NodeIndex,vtkMedIntArray); vtkCxxSetObjectMacro(vtkMedEntityArray,ParentGrid,vtkMedGrid); vtkCxxSetObjectMacro(vtkMedEntityArray,StructElement,vtkMedStructElement); -vtkCxxRevisionMacro(vtkMedEntityArray, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedEntityArray, "$Revision$"); vtkStandardNewMacro(vtkMedEntityArray); vtkMedEntityArray::vtkMedEntityArray() @@ -185,27 +185,9 @@ int vtkMedEntityArray::IsConnectivityLoaded() if(this->Connectivity == MED_NODAL && this->Entity.EntityType != MED_STRUCT_ELEMENT) { - vtkIdType connSize = 0; - if(this->Entity.GeometryType == MED_POLYHEDRON || this->Entity.GeometryType == MED_POLYGON) - { - if(!this->NodeIndex || !this->FaceIndex) - return 0; - for(med_int i = 0; i < this->NumberOfEntity; i++ ) - { - med_int start = this->FaceIndex->GetValue(i)-1; - med_int end = this->FaceIndex->GetValue(i+1)-1; - for(med_int fi = start ; fi < end; fi++ ) - { - med_int fstart = this->NodeIndex->GetValue(fi)-1; - med_int fend = this->NodeIndex->GetValue(fi+1)-1; - connSize += (fend-fstart); - } - } - } else - { - connSize = this->NumberOfEntity * - vtkMedUtilities::GetNumberOfPoint(this->Entity.GeometryType); - } + vtkIdType connSize = this->NumberOfEntity + * vtkMedUtilities::GetNumberOfPoint(this->Entity.GeometryType); + return connSize == this->ConnectivityArray->GetNumberOfTuples(); } else if (this->Connectivity == MED_NODAL && this->Entity.EntityType == MED_STRUCT_ELEMENT) diff --git a/src/Plugins/MedReader/IO/vtkMedEntityArray.h b/src/Plugins/MedReader/IO/vtkMedEntityArray.h index df8a079a..3a7f881e 100644 --- a/src/Plugins/MedReader/IO/vtkMedEntityArray.h +++ b/src/Plugins/MedReader/IO/vtkMedEntityArray.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -40,7 +40,7 @@ class VTK_EXPORT vtkMedEntityArray: public vtkObject { public: static vtkMedEntityArray* New(); - vtkTypeRevisionMacro(vtkMedEntityArray, vtkObject) + vtkTypeMacro(vtkMedEntityArray, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFactory.cxx b/src/Plugins/MedReader/IO/vtkMedFactory.cxx index d66ff49d..b6b57524 100644 --- a/src/Plugins/MedReader/IO/vtkMedFactory.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFactory.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -23,7 +23,7 @@ #include "vtkMedDriver30.h" -vtkCxxRevisionMacro(vtkMedFactory, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFactory, "$Revision$") vtkStandardNewMacro(vtkMedFactory) vtkMedFactory::vtkMedFactory() diff --git a/src/Plugins/MedReader/IO/vtkMedFactory.h b/src/Plugins/MedReader/IO/vtkMedFactory.h index cfdf1dae..859461ac 100644 --- a/src/Plugins/MedReader/IO/vtkMedFactory.h +++ b/src/Plugins/MedReader/IO/vtkMedFactory.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -27,7 +27,7 @@ class VTK_EXPORT vtkMedFactory: public vtkObject { public: static vtkMedFactory* New(); - vtkTypeRevisionMacro(vtkMedFactory, vtkObject) + vtkTypeMacro(vtkMedFactory, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); virtual vtkMedDriver* NewMedDriver(int major, int minor, int release); diff --git a/src/Plugins/MedReader/IO/vtkMedFamily.cxx b/src/Plugins/MedReader/IO/vtkMedFamily.cxx index 5cd940d1..88ff053e 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamily.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFamily.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -28,7 +28,7 @@ vtkCxxGetObjectVectorMacro(vtkMedFamily, Group, vtkMedGroup); vtkCxxSetObjectVectorMacro(vtkMedFamily, Group, vtkMedGroup); -vtkCxxRevisionMacro(vtkMedFamily, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFamily, "$Revision$") vtkStandardNewMacro(vtkMedFamily) vtkMedFamily::vtkMedFamily() diff --git a/src/Plugins/MedReader/IO/vtkMedFamily.h b/src/Plugins/MedReader/IO/vtkMedFamily.h index 81c3cb0e..1eb9f3ff 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamily.h +++ b/src/Plugins/MedReader/IO/vtkMedFamily.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,7 @@ class VTK_EXPORT vtkMedFamily: public vtkObject { public: static vtkMedFamily* New(); - vtkTypeRevisionMacro(vtkMedFamily, vtkObject); + vtkTypeMacro(vtkMedFamily, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.cxx b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.cxx index 6d72c4d9..d938f4e1 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,7 @@ vtkCxxSetObjectMacro(vtkMedFamilyOnEntity, EntityArray, vtkMedEntityArray); vtkCxxSetObjectMacro(vtkMedFamilyOnEntity, ParentGrid,vtkMedGrid); -vtkCxxRevisionMacro(vtkMedFamilyOnEntity, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedFamilyOnEntity, "$Revision$"); vtkStandardNewMacro(vtkMedFamilyOnEntity) vtkMedFamilyOnEntity::vtkMedFamilyOnEntity() diff --git a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.h b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.h index 10bf3176..2a171da7 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.h +++ b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntity.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -37,7 +37,7 @@ class VTK_EXPORT vtkMedFamilyOnEntity : public vtkObject { public : static vtkMedFamilyOnEntity* New(); - vtkTypeRevisionMacro(vtkMedFamilyOnEntity, vtkObject) + vtkTypeMacro(vtkMedFamilyOnEntity, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.cxx b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.cxx index e9ac161f..85e80997 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -45,7 +45,7 @@ vtkCxxSetObjectMacro(vtkMedFamilyOnEntityOnProfile,FamilyOnEntity, vtkMedFamilyOnEntity); vtkCxxSetObjectMacro(vtkMedFamilyOnEntityOnProfile, Profile, vtkMedProfile); -vtkCxxRevisionMacro(vtkMedFamilyOnEntityOnProfile, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedFamilyOnEntityOnProfile, "$Revision$"); vtkStandardNewMacro(vtkMedFamilyOnEntityOnProfile) vtkMedFamilyOnEntityOnProfile::vtkMedFamilyOnEntityOnProfile() @@ -269,9 +269,10 @@ void vtkMedFamilyOnEntityOnProfile::ComputeUsedPoints() this->UseAllPoints = true; return; } - // if there is no profile, the entity is on cell + // if there is no profile, the grid is structured, the entity is on cell // and there is at most 1 family on his entity, then all points are used - if(this->FamilyOnEntity->GetPointOrCell() == vtkMedUtilities::OnCell && + if(vtkMedUnstructuredGrid::SafeDownCast(grid) == NULL && + this->FamilyOnEntity->GetPointOrCell() == vtkMedUtilities::OnCell && this->FamilyOnEntity->GetEntityArray()->GetNumberOfFamilyOnEntity() <= 1) { this->UseAllPoints = true; diff --git a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.h b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.h index 4554128d..b989b95a 100644 --- a/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.h +++ b/src/Plugins/MedReader/IO/vtkMedFamilyOnEntityOnProfile.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -41,7 +41,7 @@ class VTK_EXPORT vtkMedFamilyOnEntityOnProfile : public vtkObject { public : static vtkMedFamilyOnEntityOnProfile* New(); - vtkTypeRevisionMacro(vtkMedFamilyOnEntityOnProfile, vtkObject) + vtkTypeMacro(vtkMedFamilyOnEntityOnProfile, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedField.cxx b/src/Plugins/MedReader/IO/vtkMedField.cxx index f51a704b..ab6e1df6 100644 --- a/src/Plugins/MedReader/IO/vtkMedField.cxx +++ b/src/Plugins/MedReader/IO/vtkMedField.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -38,7 +38,7 @@ vtkCxxSetObjectVectorMacro(vtkMedField, Interpolation, vtkMedInterpolation); vtkCxxSetObjectMacro(vtkMedField, ParentFile, vtkMedFile); -vtkCxxRevisionMacro(vtkMedField, "$Revision$") +// vtkCxxRevisionMacro(vtkMedField, "$Revision$") vtkStandardNewMacro(vtkMedField) vtkMedField::vtkMedField() @@ -181,7 +181,6 @@ void vtkMedField::ExtractFieldType(vtkMedField* otherfield, int type) vtkMedFieldStep* otherstep = otherfield->GetFieldStep(stepid); vtkMedFieldStep* step = vtkMedFieldStep::New(); step->SetComputeStep(otherstep->GetComputeStep()); - step->SetMedIterator(otherstep->GetMedIterator()); this->AddFieldStep(step); step->Delete(); diff --git a/src/Plugins/MedReader/IO/vtkMedField.h b/src/Plugins/MedReader/IO/vtkMedField.h index 70fd637c..b1511da7 100644 --- a/src/Plugins/MedReader/IO/vtkMedField.h +++ b/src/Plugins/MedReader/IO/vtkMedField.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -43,7 +43,7 @@ class VTK_EXPORT vtkMedField: public vtkObject { public: static vtkMedField* New(); - vtkTypeRevisionMacro(vtkMedField, vtkObject); + vtkTypeMacro(vtkMedField, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.cxx b/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.cxx index 6befbd7e..54628698 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ vtkCxxSetObjectMacro(vtkMedFieldOnProfile, Data, vtkDataArray); vtkCxxSetObjectMacro(vtkMedFieldOnProfile, Profile, vtkMedProfile); vtkCxxSetObjectMacro(vtkMedFieldOnProfile, ParentFieldOverEntity, vtkMedFieldOverEntity); -vtkCxxRevisionMacro(vtkMedFieldOnProfile, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFieldOnProfile, "$Revision$") vtkStandardNewMacro(vtkMedFieldOnProfile) vtkMedFieldOnProfile::vtkMedFieldOnProfile() diff --git a/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.h b/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.h index fff4dcd9..4140ee99 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.h +++ b/src/Plugins/MedReader/IO/vtkMedFieldOnProfile.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -34,7 +34,7 @@ class VTK_EXPORT vtkMedFieldOnProfile: public vtkObject { public: static vtkMedFieldOnProfile* New(); - vtkTypeRevisionMacro(vtkMedFieldOnProfile, vtkObject); + vtkTypeMacro(vtkMedFieldOnProfile, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.cxx b/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.cxx index c3880d06..77ade54c 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -34,7 +34,7 @@ vtkCxxSetObjectVectorMacro(vtkMedFieldOverEntity, FieldOnProfile, vtkMedFieldOnP vtkCxxSetObjectMacro(vtkMedFieldOverEntity, ParentStep, vtkMedFieldStep); -vtkCxxRevisionMacro(vtkMedFieldOverEntity, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFieldOverEntity, "$Revision$") vtkStandardNewMacro(vtkMedFieldOverEntity) vtkMedFieldOverEntity::vtkMedFieldOverEntity() diff --git a/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.h b/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.h index dc853728..0a78bcc3 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.h +++ b/src/Plugins/MedReader/IO/vtkMedFieldOverEntity.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ class VTK_EXPORT vtkMedFieldOverEntity: public vtkObject { public: static vtkMedFieldOverEntity* New(); - vtkTypeRevisionMacro(vtkMedFieldOverEntity, vtkObject) + vtkTypeMacro(vtkMedFieldOverEntity, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFieldStep.cxx b/src/Plugins/MedReader/IO/vtkMedFieldStep.cxx index 32578332..78a0fbbb 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldStep.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFieldStep.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ vtkCxxSetObjectVectorMacro(vtkMedFieldStep, FieldOverEntity, vtkMedFieldOverEnti vtkCxxSetObjectMacro(vtkMedFieldStep, ParentField, vtkMedField); vtkCxxSetObjectMacro(vtkMedFieldStep, PreviousStep, vtkMedFieldStep); -vtkCxxRevisionMacro(vtkMedFieldStep, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFieldStep, "$Revision$") vtkStandardNewMacro(vtkMedFieldStep) vtkMedFieldStep::vtkMedFieldStep() diff --git a/src/Plugins/MedReader/IO/vtkMedFieldStep.h b/src/Plugins/MedReader/IO/vtkMedFieldStep.h index 54b82155..b683e198 100644 --- a/src/Plugins/MedReader/IO/vtkMedFieldStep.h +++ b/src/Plugins/MedReader/IO/vtkMedFieldStep.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -35,7 +35,7 @@ class VTK_EXPORT vtkMedFieldStep: public vtkObject { public: static vtkMedFieldStep* New(); - vtkTypeRevisionMacro(vtkMedFieldStep, vtkObject); + vtkTypeMacro(vtkMedFieldStep, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFile.cxx b/src/Plugins/MedReader/IO/vtkMedFile.cxx index cf41b6dd..bbd0aca9 100644 --- a/src/Plugins/MedReader/IO/vtkMedFile.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFile.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -56,7 +56,7 @@ vtkCxxSetObjectVectorMacro(vtkMedFile, SupportMesh, vtkMedMesh); vtkCxxSetObjectMacro(vtkMedFile, MedDriver, vtkMedDriver); -vtkCxxRevisionMacro(vtkMedFile, "$Revision$") +//vtkCxxRevisionMacro(vtkMedFile, "$Revision$") vtkStandardNewMacro(vtkMedFile) vtkMedFile::vtkMedFile() diff --git a/src/Plugins/MedReader/IO/vtkMedFile.h b/src/Plugins/MedReader/IO/vtkMedFile.h index b1e6f3ee..7a7561fc 100644 --- a/src/Plugins/MedReader/IO/vtkMedFile.h +++ b/src/Plugins/MedReader/IO/vtkMedFile.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -36,7 +36,7 @@ class VTK_EXPORT vtkMedFile: public vtkObject { public: static vtkMedFile* New(); - vtkTypeRevisionMacro(vtkMedFile, vtkObject) + vtkTypeMacro(vtkMedFile, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedFilter.cxx b/src/Plugins/MedReader/IO/vtkMedFilter.cxx index b5939661..5cfea518 100644 --- a/src/Plugins/MedReader/IO/vtkMedFilter.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFilter.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ #include "vtkObjectFactory.h" -vtkCxxRevisionMacro(vtkMedFilter, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFilter, "$Revision$") vtkStandardNewMacro(vtkMedFilter) vtkMedFilter::vtkMedFilter() diff --git a/src/Plugins/MedReader/IO/vtkMedFilter.h b/src/Plugins/MedReader/IO/vtkMedFilter.h index 4df3e754..0544c9f9 100644 --- a/src/Plugins/MedReader/IO/vtkMedFilter.h +++ b/src/Plugins/MedReader/IO/vtkMedFilter.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -27,7 +27,7 @@ class VTK_EXPORT vtkMedFilter : public vtkObject { public: static vtkMedFilter* New(); - vtkTypeRevisionMacro(vtkMedFilter, vtkObject) + vtkTypeMacro(vtkMedFilter, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); void SetFilterSizes( int , int , int , int , int ); diff --git a/src/Plugins/MedReader/IO/vtkMedFraction.cxx b/src/Plugins/MedReader/IO/vtkMedFraction.cxx index 2680c6ee..7781aac6 100644 --- a/src/Plugins/MedReader/IO/vtkMedFraction.cxx +++ b/src/Plugins/MedReader/IO/vtkMedFraction.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,7 @@ #include "vtkIntArray.h" #include "vtkDoubleArray.h" -vtkCxxRevisionMacro(vtkMedFraction, "$Revision$") +// vtkCxxRevisionMacro(vtkMedFraction, "$Revision$") vtkStandardNewMacro(vtkMedFraction) vtkMedFraction::vtkMedFraction() diff --git a/src/Plugins/MedReader/IO/vtkMedFraction.h b/src/Plugins/MedReader/IO/vtkMedFraction.h index b594b094..b09b297d 100644 --- a/src/Plugins/MedReader/IO/vtkMedFraction.h +++ b/src/Plugins/MedReader/IO/vtkMedFraction.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -29,7 +29,7 @@ class VTK_EXPORT vtkMedFraction : public vtkObject { public: static vtkMedFraction* New(); - vtkTypeRevisionMacro(vtkMedFraction, vtkObject) + vtkTypeMacro(vtkMedFraction, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedGrid.cxx b/src/Plugins/MedReader/IO/vtkMedGrid.cxx index 80baf774..ddfad540 100644 --- a/src/Plugins/MedReader/IO/vtkMedGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -40,7 +40,7 @@ vtkCxxSetObjectMacro(vtkMedGrid, PointGlobalIds, vtkMedIntArray); vtkCxxSetObjectMacro(vtkMedGrid, ParentMesh, vtkMedMesh); vtkCxxSetObjectMacro(vtkMedGrid, PreviousGrid, vtkMedGrid); -vtkCxxRevisionMacro(vtkMedGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedGrid, "$Revision$") vtkMedGrid::vtkMedGrid() { diff --git a/src/Plugins/MedReader/IO/vtkMedGrid.h b/src/Plugins/MedReader/IO/vtkMedGrid.h index 647b80ec..5f841c5c 100644 --- a/src/Plugins/MedReader/IO/vtkMedGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ class vtkMedIntArray; class VTK_EXPORT vtkMedGrid : public vtkObject { public : - vtkTypeRevisionMacro(vtkMedGrid, vtkObject) + vtkTypeMacro(vtkMedGrid, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedGroup.cxx b/src/Plugins/MedReader/IO/vtkMedGroup.cxx index a2a9ddf0..87ceb93c 100644 --- a/src/Plugins/MedReader/IO/vtkMedGroup.cxx +++ b/src/Plugins/MedReader/IO/vtkMedGroup.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -23,7 +23,7 @@ #include "vtkMedUtilities.h" -vtkCxxRevisionMacro(vtkMedGroup, "$Revision$") +// vtkCxxRevisionMacro(vtkMedGroup, "$Revision$") vtkStandardNewMacro(vtkMedGroup) vtkMedGroup::vtkMedGroup() diff --git a/src/Plugins/MedReader/IO/vtkMedGroup.h b/src/Plugins/MedReader/IO/vtkMedGroup.h index e5b37d09..1bb097d3 100644 --- a/src/Plugins/MedReader/IO/vtkMedGroup.h +++ b/src/Plugins/MedReader/IO/vtkMedGroup.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -28,7 +28,7 @@ class VTK_EXPORT vtkMedGroup : public vtkObject { public : static vtkMedGroup* New(); - vtkTypeRevisionMacro(vtkMedGroup, vtkObject) + vtkTypeMacro(vtkMedGroup, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedIntArray.cxx b/src/Plugins/MedReader/IO/vtkMedIntArray.cxx index e196198c..5f054dcb 100644 --- a/src/Plugins/MedReader/IO/vtkMedIntArray.cxx +++ b/src/Plugins/MedReader/IO/vtkMedIntArray.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -22,7 +22,7 @@ #include "vtkObjectFactory.h" //---------------------------------------------------------------------------- -vtkCxxRevisionMacro(vtkMedIntArray, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedIntArray, "$Revision$"); vtkStandardNewMacro(vtkMedIntArray); //---------------------------------------------------------------------------- diff --git a/src/Plugins/MedReader/IO/vtkMedIntArray.h b/src/Plugins/MedReader/IO/vtkMedIntArray.h index 1926ff71..6b1b0498 100644 --- a/src/Plugins/MedReader/IO/vtkMedIntArray.h +++ b/src/Plugins/MedReader/IO/vtkMedIntArray.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -58,7 +58,7 @@ class VTK_EXPORT vtkMedIntArray { public : static vtkMedIntArray* New(); - vtkTypeRevisionMacro(vtkMedIntArray,vtkMedIntArraySuperclass); + vtkTypeMacro(vtkMedIntArray,vtkMedIntArraySuperclass); void PrintSelf(ostream& os, vtkIndent indent); protected: vtkMedIntArray(vtkIdType numComp=1); diff --git a/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.cxx b/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.cxx index 3fa107ce..f6b87a03 100644 --- a/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.cxx +++ b/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ VTK_ARRAY_ITERATOR_TEMPLATE_INSTANTIATE(med_int); #include "vtkObjectFactory.h" -vtkCxxRevisionMacro(vtkMedIntArrayInternal, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedIntArrayInternal, "$Revision$"); vtkStandardNewMacro(vtkMedIntArrayInternal); //---------------------------------------------------------------------------- diff --git a/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.h b/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.h index b4026ba6..ab107acf 100644 --- a/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.h +++ b/src/Plugins/MedReader/IO/vtkMedIntArrayInternal.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -43,7 +43,7 @@ class VTK_EXPORT vtkMedIntArrayInternal : public vtkDataArray { public: static vtkMedIntArrayInternal* New(); - vtkTypeRevisionMacro(vtkMedIntArrayInternal,vtkDataArray); + vtkTypeMacro(vtkMedIntArrayInternal,vtkDataArray); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedInterpolation.cxx b/src/Plugins/MedReader/IO/vtkMedInterpolation.cxx index 34b7693b..4f82bf75 100644 --- a/src/Plugins/MedReader/IO/vtkMedInterpolation.cxx +++ b/src/Plugins/MedReader/IO/vtkMedInterpolation.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,7 @@ #include "vtkMedUtilities.h" #include "vtkMedFraction.h" -vtkCxxRevisionMacro(vtkMedInterpolation, "$Revision$") +// vtkCxxRevisionMacro(vtkMedInterpolation, "$Revision$") vtkStandardNewMacro(vtkMedInterpolation) vtkCxxGetObjectVectorMacro(vtkMedInterpolation, BasisFunction, diff --git a/src/Plugins/MedReader/IO/vtkMedInterpolation.h b/src/Plugins/MedReader/IO/vtkMedInterpolation.h index 3eb4edca..15cb6d95 100644 --- a/src/Plugins/MedReader/IO/vtkMedInterpolation.h +++ b/src/Plugins/MedReader/IO/vtkMedInterpolation.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -31,7 +31,7 @@ class VTK_EXPORT vtkMedInterpolation : public vtkObject { public: static vtkMedInterpolation* New(); - vtkTypeRevisionMacro(vtkMedInterpolation, vtkObject) + vtkTypeMacro(vtkMedInterpolation, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedLink.cxx b/src/Plugins/MedReader/IO/vtkMedLink.cxx index deaa5211..3f2c10e1 100644 --- a/src/Plugins/MedReader/IO/vtkMedLink.cxx +++ b/src/Plugins/MedReader/IO/vtkMedLink.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -26,7 +26,7 @@ #include using namespace std; -vtkCxxRevisionMacro(vtkMedLink, "$Revision$") +// vtkCxxRevisionMacro(vtkMedLink, "$Revision$") vtkStandardNewMacro(vtkMedLink) vtkMedLink::vtkMedLink() diff --git a/src/Plugins/MedReader/IO/vtkMedLink.h b/src/Plugins/MedReader/IO/vtkMedLink.h index 1f143455..14884550 100644 --- a/src/Plugins/MedReader/IO/vtkMedLink.h +++ b/src/Plugins/MedReader/IO/vtkMedLink.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,7 @@ class VTK_EXPORT vtkMedLink: public vtkObject { public: static vtkMedLink* New(); - vtkTypeRevisionMacro(vtkMedLink, vtkObject); + vtkTypeMacro(vtkMedLink, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedLocalization.cxx b/src/Plugins/MedReader/IO/vtkMedLocalization.cxx index 4ac6fd90..6069d05e 100644 --- a/src/Plugins/MedReader/IO/vtkMedLocalization.cxx +++ b/src/Plugins/MedReader/IO/vtkMedLocalization.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -372,7 +372,7 @@ static const char* PYRA13_functions[PYRA13_nnode] = vtkCxxSetObjectMacro(vtkMedLocalization, ParentFile, vtkMedFile); vtkCxxSetObjectMacro(vtkMedLocalization, Interpolation, vtkMedInterpolation); -vtkCxxRevisionMacro(vtkMedLocalization, "$Revision$") +// vtkCxxRevisionMacro(vtkMedLocalization, "$Revision$") vtkStandardNewMacro(vtkMedLocalization) vtkMedLocalization::vtkMedLocalization() diff --git a/src/Plugins/MedReader/IO/vtkMedLocalization.h b/src/Plugins/MedReader/IO/vtkMedLocalization.h index 7b88c5fa..1f7eb8a6 100644 --- a/src/Plugins/MedReader/IO/vtkMedLocalization.h +++ b/src/Plugins/MedReader/IO/vtkMedLocalization.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ class VTK_EXPORT vtkMedLocalization : public vtkObject { public: static vtkMedLocalization* New(); - vtkTypeRevisionMacro(vtkMedLocalization, vtkObject); + vtkTypeMacro(vtkMedLocalization, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedMesh.cxx b/src/Plugins/MedReader/IO/vtkMedMesh.cxx index d4257412..b27c8245 100644 --- a/src/Plugins/MedReader/IO/vtkMedMesh.cxx +++ b/src/Plugins/MedReader/IO/vtkMedMesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -45,7 +45,7 @@ vtkCxxSetObjectVectorMacro(vtkMedMesh, CellGroup, vtkMedGroup); vtkCxxSetObjectMacro(vtkMedMesh, ParentFile, vtkMedFile); -vtkCxxRevisionMacro(vtkMedMesh, "$Revision$") +// vtkCxxRevisionMacro(vtkMedMesh, "$Revision$") vtkStandardNewMacro(vtkMedMesh) vtkMedMesh::vtkMedMesh() @@ -155,7 +155,7 @@ vtkMedFamily* vtkMedMesh::GetOrCreateCellFamilyById(med_int id) } vtkMedFamily* family = vtkMedFamily::New(); family->SetId(id); - vtkstd::ostringstream sstr; + std::ostringstream sstr; sstr << "UNDEFINED_CELL_FAMILY_" << id; family->SetName(sstr.str().c_str()); family->SetPointOrCell(vtkMedUtilities::OnCell); @@ -187,7 +187,7 @@ vtkMedFamily* vtkMedMesh::GetOrCreatePointFamilyById(med_int id) } vtkMedFamily* family = vtkMedFamily::New(); family->SetId(id); - vtkstd::ostringstream sstr; + std::ostringstream sstr; sstr << "UNDEFINED_POINT_FAMILY_" << id; family->SetName(sstr.str().c_str()); family->SetPointOrCell(vtkMedUtilities::OnPoint); diff --git a/src/Plugins/MedReader/IO/vtkMedMesh.h b/src/Plugins/MedReader/IO/vtkMedMesh.h index 872baab2..0e84dd55 100644 --- a/src/Plugins/MedReader/IO/vtkMedMesh.h +++ b/src/Plugins/MedReader/IO/vtkMedMesh.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -40,7 +40,7 @@ class VTK_EXPORT vtkMedMesh: public vtkObject { public: static vtkMedMesh* New(); - vtkTypeRevisionMacro(vtkMedMesh, vtkObject); + vtkTypeMacro(vtkMedMesh, vtkObject); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedPolarGrid.cxx b/src/Plugins/MedReader/IO/vtkMedPolarGrid.cxx index e765c7b0..3783136d 100644 --- a/src/Plugins/MedReader/IO/vtkMedPolarGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedPolarGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ #include "vtkObjectFactory.h" -vtkCxxRevisionMacro(vtkMedPolarGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedPolarGrid, "$Revision$") vtkStandardNewMacro(vtkMedPolarGrid) vtkMedPolarGrid::vtkMedPolarGrid() diff --git a/src/Plugins/MedReader/IO/vtkMedPolarGrid.h b/src/Plugins/MedReader/IO/vtkMedPolarGrid.h index 13d63324..35c857db 100644 --- a/src/Plugins/MedReader/IO/vtkMedPolarGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedPolarGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -26,7 +26,7 @@ class VTK_EXPORT vtkMedPolarGrid : public vtkMedRegularGrid { public : static vtkMedPolarGrid* New(); - vtkTypeRevisionMacro(vtkMedPolarGrid, vtkMedRegularGrid); + vtkTypeMacro(vtkMedPolarGrid, vtkMedRegularGrid); void PrintSelf(ostream& os, vtkIndent indent); protected: diff --git a/src/Plugins/MedReader/IO/vtkMedProfile.cxx b/src/Plugins/MedReader/IO/vtkMedProfile.cxx index 2bccd4b4..49467717 100644 --- a/src/Plugins/MedReader/IO/vtkMedProfile.cxx +++ b/src/Plugins/MedReader/IO/vtkMedProfile.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -29,7 +29,7 @@ vtkCxxSetObjectMacro(vtkMedProfile,Ids,vtkMedIntArray); vtkCxxSetObjectMacro(vtkMedProfile,ParentFile,vtkMedFile); -vtkCxxRevisionMacro(vtkMedProfile, "$Revision$"); +// vtkCxxRevisionMacro(vtkMedProfile, "$Revision$"); vtkStandardNewMacro(vtkMedProfile); vtkMedProfile::vtkMedProfile() diff --git a/src/Plugins/MedReader/IO/vtkMedProfile.h b/src/Plugins/MedReader/IO/vtkMedProfile.h index 818c5996..1da6bfca 100644 --- a/src/Plugins/MedReader/IO/vtkMedProfile.h +++ b/src/Plugins/MedReader/IO/vtkMedProfile.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -31,7 +31,7 @@ class VTK_EXPORT vtkMedProfile : public vtkObject { public : static vtkMedProfile* New(); - vtkTypeRevisionMacro(vtkMedProfile, vtkObject) + vtkTypeMacro(vtkMedProfile, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedReader.cxx b/src/Plugins/MedReader/IO/vtkMedReader.cxx index ce59b8a2..17d4b241 100644 --- a/src/Plugins/MedReader/IO/vtkMedReader.cxx +++ b/src/Plugins/MedReader/IO/vtkMedReader.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -56,6 +56,7 @@ #include "vtkMultiBlockDataSet.h" #include "vtkExecutive.h" #include "vtkStreamingDemandDrivenPipeline.h" +#include "vtkMultiTimeStepAlgorithm.h" #include "vtkUnstructuredGrid.h" #include "vtkMath.h" #include "vtkPointData.h" @@ -81,7 +82,6 @@ #include #include #include - using namespace std; struct VTKField @@ -187,7 +187,7 @@ public: vtkIdType GetGroupId(const char* key) { - vtkstd::string meshname, celltypename, groupname; + std::string meshname, celltypename, groupname; vtkMedUtilities::SplitGroupKey(key, meshname, celltypename, groupname); vtkIdType root=GetChild(0, "SIL"); if(root==-1) @@ -204,7 +204,7 @@ public: }; -vtkCxxRevisionMacro(vtkMedReader, "$Revision$"); +//vtkCxxRevisionMacro(vtkMedReader, "$Revision$"); vtkStandardNewMacro(vtkMedReader); vtkMedReader::vtkMedReader() @@ -425,11 +425,22 @@ int vtkMedReader::RequestData(vtkInformation *request, this->Internal->GhostLevel=0; } - if (info->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS())) + //vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS() + /* if (info->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS())) { this->Internal->UpdateTimeStep=info->Get( vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS())[0]; } + else + { + this->Internal->UpdateTimeStep=0; + } */ + + if (info->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP())) + { + this->Internal->UpdateTimeStep=info->Get( + vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP()); + } else { this->Internal->UpdateTimeStep=0; @@ -1746,16 +1757,6 @@ void vtkMedReader::AddQuadratureSchemeDefinition(vtkInformation* info, vtkQuadratureSchemeDefinition* def=vtkQuadratureSchemeDefinition::New(); int cellType=vtkMedUtilities::GetVTKCellType(loc->GetGeometryType()); - // Control to avoid crahs when loading a file with structural elements. - // This should be removed in version 7.1.0 of SALOME. - // See mantis issue 21990 - if(loc->GetGeometryType() >= MED_STRUCT_GEO_INTERNAL) - { - vtkErrorMacro("You are loading a file containing structural elements BUT they are still not supported"); - return; - } - if(loc->GetWeights()->GetVoidPointer(0) == NULL) - return; def->Initialize(cellType, vtkMedUtilities::GetNumberOfPoint( loc->GetGeometryType()), loc->GetNumberOfQuadraturePoint(), (double*)loc->GetShapeFunction()->GetVoidPointer(0), @@ -2338,7 +2339,7 @@ void vtkMedReader::SetVTKFieldOnSupport(vtkMedFieldOnProfile* fop, // if the data set is only composed of VTK_VERTEX cells, // and no field called with the same name exist on cells, // map this field to cells too - if(foe->GetVertexOnly()==1 && ds->GetCellData()->GetArray( + if(foe->GetVertexOnly()==1&&ds->GetCellData()->GetArray( vtkfield.DataArray->GetName())==NULL) { ds->GetCellData()->AddArray(vtkfield.DataArray); @@ -2784,7 +2785,7 @@ void vtkMedReader::CreateVTKFieldOnSupport(vtkMedFieldOnProfile* fop, if(!foep->KeepPoint(realIndex)) continue; - vtkfield.DataArray->InsertNextTuple(fop->GetData()->GetTuple(id)); + vtkfield.DataArray->InsertNextTuple(fop->GetData()->GetTuple(realIndex)); } vtkfield.DataArray->Squeeze(); }// support on point @@ -2875,7 +2876,7 @@ void vtkMedReader::BuildSIL(vtkMutableDirectedGraph* sil) crossEdgesArray->SetName("CrossEdges"); sil->GetEdgeData()->AddArray(crossEdgesArray); crossEdgesArray->Delete(); - vtkstd::deque names; + /*vtk*/std::deque names; // Now build the hierarchy. vtkIdType rootId=sil->AddVertex(); @@ -3024,7 +3025,7 @@ void vtkMedReader::BuildSIL(vtkMutableDirectedGraph* sil) namesArray->SetNumberOfTuples(sil->GetNumberOfVertices()); sil->GetVertexData()->AddArray(namesArray); namesArray->Delete(); - vtkstd::deque::iterator iter; + /*vtk*/std::deque::iterator iter; vtkIdType cc; for(cc=0, iter=names.begin(); iter!=names.end(); ++iter, ++cc) { diff --git a/src/Plugins/MedReader/IO/vtkMedReader.h b/src/Plugins/MedReader/IO/vtkMedReader.h index a8998059..564d6dab 100644 --- a/src/Plugins/MedReader/IO/vtkMedReader.h +++ b/src/Plugins/MedReader/IO/vtkMedReader.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -56,7 +56,7 @@ class VTK_EXPORT vtkMedReader: public vtkMultiBlockDataSetAlgorithm { public: static vtkMedReader* New(); - vtkTypeRevisionMacro(vtkMedReader, vtkMultiBlockDataSetAlgorithm); + vtkTypeMacro(vtkMedReader, vtkMultiBlockDataSetAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedRegularGrid.cxx b/src/Plugins/MedReader/IO/vtkMedRegularGrid.cxx index 0f3aafe1..926a4d1c 100644 --- a/src/Plugins/MedReader/IO/vtkMedRegularGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedRegularGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -36,7 +36,7 @@ vtkCxxGetObjectVectorMacro(vtkMedRegularGrid, AxisCoordinate, vtkDataArray); vtkCxxSetAbstractObjectVectorMacro(vtkMedRegularGrid, AxisCoordinate, vtkDataArray); -vtkCxxRevisionMacro(vtkMedRegularGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedRegularGrid, "$Revision$") vtkStandardNewMacro(vtkMedRegularGrid) vtkMedRegularGrid::vtkMedRegularGrid() diff --git a/src/Plugins/MedReader/IO/vtkMedRegularGrid.h b/src/Plugins/MedReader/IO/vtkMedRegularGrid.h index 10732168..23bb0602 100644 --- a/src/Plugins/MedReader/IO/vtkMedRegularGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedRegularGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,7 @@ class VTK_EXPORT vtkMedRegularGrid : public vtkMedGrid { public : static vtkMedRegularGrid* New(); - vtkTypeRevisionMacro(vtkMedRegularGrid, vtkMedGrid) + vtkTypeMacro(vtkMedRegularGrid, vtkMedGrid) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedSelection.cxx b/src/Plugins/MedReader/IO/vtkMedSelection.cxx index 9f70e9dc..4401beba 100644 --- a/src/Plugins/MedReader/IO/vtkMedSelection.cxx +++ b/src/Plugins/MedReader/IO/vtkMedSelection.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -34,7 +34,7 @@ public : vector< string > Keys; }; -vtkCxxRevisionMacro(vtkMedSelection, "$Revision$") +// vtkCxxRevisionMacro(vtkMedSelection, "$Revision$") vtkStandardNewMacro(vtkMedSelection) vtkMedSelection::vtkMedSelection() diff --git a/src/Plugins/MedReader/IO/vtkMedSelection.h b/src/Plugins/MedReader/IO/vtkMedSelection.h index a9f1418b..aa7a05a2 100644 --- a/src/Plugins/MedReader/IO/vtkMedSelection.h +++ b/src/Plugins/MedReader/IO/vtkMedSelection.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -28,7 +28,7 @@ class VTK_EXPORT vtkMedSelection : public vtkObject { public : static vtkMedSelection* New(); - vtkTypeRevisionMacro(vtkMedSelection, vtkObject) + vtkTypeMacro(vtkMedSelection, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); virtual void Initialize(); diff --git a/src/Plugins/MedReader/IO/vtkMedSetGet.h b/src/Plugins/MedReader/IO/vtkMedSetGet.h index 6e3371e4..21ced39e 100644 --- a/src/Plugins/MedReader/IO/vtkMedSetGet.h +++ b/src/Plugins/MedReader/IO/vtkMedSetGet.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public diff --git a/src/Plugins/MedReader/IO/vtkMedStructElement.cxx b/src/Plugins/MedReader/IO/vtkMedStructElement.cxx index b9b7f638..1707416c 100644 --- a/src/Plugins/MedReader/IO/vtkMedStructElement.cxx +++ b/src/Plugins/MedReader/IO/vtkMedStructElement.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkMedStructElement.h" #include "vtkObjectFactory.h" @@ -39,7 +20,7 @@ vtkCxxSetObjectVectorMacro(vtkMedStructElement, ConstantAttribute, vtkMedConstan vtkCxxSetObjectMacro(vtkMedStructElement, ParentFile, vtkMedFile); vtkCxxSetObjectMacro(vtkMedStructElement, SupportMesh, vtkMedMesh); -vtkCxxRevisionMacro(vtkMedStructElement, "$Revision$") +// vtkCxxRevisionMacro(vtkMedStructElement, "$Revision$") vtkStandardNewMacro(vtkMedStructElement) vtkMedStructElement::vtkMedStructElement() diff --git a/src/Plugins/MedReader/IO/vtkMedStructElement.h b/src/Plugins/MedReader/IO/vtkMedStructElement.h index 05429435..2610afb7 100644 --- a/src/Plugins/MedReader/IO/vtkMedStructElement.h +++ b/src/Plugins/MedReader/IO/vtkMedStructElement.h @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #ifndef __vtkMedStructElement_h_ #define __vtkMedStructElement_h_ @@ -34,7 +15,7 @@ class VTK_EXPORT vtkMedStructElement : public vtkObject { public : static vtkMedStructElement* New(); - vtkTypeRevisionMacro(vtkMedStructElement, vtkObject) + vtkTypeMacro(vtkMedStructElement, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedSupportMesh.cxx b/src/Plugins/MedReader/IO/vtkMedSupportMesh.cxx index 2ca5249b..e54973f9 100644 --- a/src/Plugins/MedReader/IO/vtkMedSupportMesh.cxx +++ b/src/Plugins/MedReader/IO/vtkMedSupportMesh.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkMedSupportMesh.h" #include "vtkObjectFactory.h" @@ -32,7 +13,7 @@ using namespace std; vtkCxxSetObjectMacro(vtkMedSupportMesh, ParentFile, vtkMedFile); -vtkCxxRevisionMacro(vtkMedSupportMesh, "$Revision$") +// vtkCxxRevisionMacro(vtkMedSupportMesh, "$Revision$") vtkStandardNewMacro(vtkMedSupportMesh) vtkMedSupportMesh::vtkMedSupportMesh() diff --git a/src/Plugins/MedReader/IO/vtkMedSupportMesh.h b/src/Plugins/MedReader/IO/vtkMedSupportMesh.h index 6280199d..6fb0222c 100644 --- a/src/Plugins/MedReader/IO/vtkMedSupportMesh.h +++ b/src/Plugins/MedReader/IO/vtkMedSupportMesh.h @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #ifndef __vtkMedSupportMesh_h_ #define __vtkMedSupportMesh_h_ @@ -31,7 +12,7 @@ class VTK_EXPORT vtkMedSupportMesh : public vtkObject { public : static vtkMedSupportMesh* New(); - vtkTypeRevisionMacro(vtkMedSupportMesh, vtkObject) + vtkTypeMacro(vtkMedSupportMesh, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.cxx b/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.cxx index 5a43dc05..eb744d10 100644 --- a/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.cxx +++ b/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -45,7 +45,7 @@ vtkCxxSetObjectMacro(vtkMedUnstructuredGrid,Coordinates,vtkDataArray); -vtkCxxRevisionMacro(vtkMedUnstructuredGrid, "$Revision$") +// vtkCxxRevisionMacro(vtkMedUnstructuredGrid, "$Revision$") vtkStandardNewMacro(vtkMedUnstructuredGrid) vtkMedUnstructuredGrid::vtkMedUnstructuredGrid() @@ -216,6 +216,7 @@ vtkDataSet* vtkMedUnstructuredGrid::CreateVTKDataSet( } vtkugrid->GetInformation()->Set(vtkMedUtilities::STRUCT_ELEMENT(), structelem); + std::cout << "structelem->GetNumberOfVariableAttribute() = " << structelem->GetNumberOfVariableAttribute() << std::endl; for(int varattid = 0; varattidGetNumberOfVariableAttribute(); varattid++) { vtkMedVariableAttribute* varatt = structelem->GetVariableAttribute(varattid); @@ -246,7 +247,6 @@ vtkDataSet* vtkMedUnstructuredGrid::CreateVTKDataSet( if (controller->GetNumberOfProcesses() > 1) valid = 1; - array->LoadConnectivity(); for (vtkIdType pindex = 0; pindexKeepCell(realIndex)) continue; + array->GetCellVertices(realIndex, pts); + for(int sid = 0; sid < nsupportcell; sid++) { cellGlobalIds->InsertNextValue(intialGlobalId+pindex); @@ -287,7 +289,6 @@ vtkDataSet* vtkMedUnstructuredGrid::CreateVTKDataSet( } else { - array->GetCellVertices(realIndex, pts); vtkpts->Initialize(); vtkpts->SetNumberOfIds(pts->GetNumberOfIds()); diff --git a/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.h b/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.h index 5c5944a4..30c1e1fc 100644 --- a/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.h +++ b/src/Plugins/MedReader/IO/vtkMedUnstructuredGrid.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,7 @@ class VTK_EXPORT vtkMedUnstructuredGrid : public vtkMedGrid { public : static vtkMedUnstructuredGrid* New(); - vtkTypeRevisionMacro(vtkMedUnstructuredGrid, vtkMedGrid); + vtkTypeMacro(vtkMedUnstructuredGrid, vtkMedGrid); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/IO/vtkMedUtilities.cxx b/src/Plugins/MedReader/IO/vtkMedUtilities.cxx index 10a29238..04f647db 100644 --- a/src/Plugins/MedReader/IO/vtkMedUtilities.cxx +++ b/src/Plugins/MedReader/IO/vtkMedUtilities.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -213,8 +213,6 @@ const char* vtkMedUtilities::GeometryName(med_geometry_type geometry) return "MED_POLYGON"; case MED_POLYHEDRON: return "MED_POLYHEDRON"; - case MED_STRUCT_GEO_INTERNAL: - return "MED_STRUCT_GEO_INTERNAL"; case MED_NO_GEOTYPE: return "MED_NO_GEOTYPE"; default: @@ -631,7 +629,7 @@ int vtkMedUtilities::FormatPolyhedronForVTK( if (array->GetConnectivity()==MED_NODAL) { - ids->InsertNextId(end-start); + ids->InsertNextId(end-start-1); for (int ff = start; ffGetValue(ff)-1; @@ -686,21 +684,21 @@ int vtkMedUtilities::FormatPolyhedronForVTK( return 1; } -void vtkMedUtilities::SplitGroupKey(const char* name, vtkstd::string& mesh, - vtkstd::string& entity, vtkstd::string& group) +void vtkMedUtilities::SplitGroupKey(const char* name, std::string& mesh, + std::string& entity, std::string& group) { - vtkstd::string remain; + std::string remain; remain=name; mesh="*"; entity="*"; group="*"; - vtkstd::string header="*"; + std::string header="*"; if(remain=="*") { return; } - vtkstd::string::size_type pos; + std::string::size_type pos; // First get the header, which must be "GROUP" pos=remain.find_first_of(vtkMedUtilities::Separator); header=remain.substr(0, pos); diff --git a/src/Plugins/MedReader/IO/vtkMedUtilities.h b/src/Plugins/MedReader/IO/vtkMedUtilities.h index 551635df..b6fe3687 100644 --- a/src/Plugins/MedReader/IO/vtkMedUtilities.h +++ b/src/Plugins/MedReader/IO/vtkMedUtilities.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D +// Copyright (C) 2010-2011 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -194,8 +194,8 @@ public: static const char* OnPointName; //BTX - static void SplitGroupKey(const char* name, vtkstd::string& mesh, - vtkstd::string& entity, vtkstd::string& group); + static void SplitGroupKey(const char* name, /*vtkstd::*/std::string& mesh, + /*vtkstd::*/std::string& entity, /*vtkstd::*/std::string& group); static std::string GetModeKey(int index, double frequency, int maxindex); static int GetModeFromKey(const char*, int& index, double& frequency); diff --git a/src/Plugins/MedReader/IO/vtkMedVariableAttribute.cxx b/src/Plugins/MedReader/IO/vtkMedVariableAttribute.cxx index cb0f7d52..51c5653b 100644 --- a/src/Plugins/MedReader/IO/vtkMedVariableAttribute.cxx +++ b/src/Plugins/MedReader/IO/vtkMedVariableAttribute.cxx @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #include "vtkMedVariableAttribute.h" #include "vtkObjectFactory.h" @@ -30,7 +11,7 @@ #include using namespace std; -vtkCxxRevisionMacro(vtkMedVariableAttribute, "$Revision$") +// vtkCxxRevisionMacro(vtkMedVariableAttribute, "$Revision$") vtkStandardNewMacro(vtkMedVariableAttribute); vtkCxxSetObjectMacro(vtkMedVariableAttribute, ParentStructElement, vtkMedStructElement); diff --git a/src/Plugins/MedReader/IO/vtkMedVariableAttribute.h b/src/Plugins/MedReader/IO/vtkMedVariableAttribute.h index f3526757..82a5bf9c 100644 --- a/src/Plugins/MedReader/IO/vtkMedVariableAttribute.h +++ b/src/Plugins/MedReader/IO/vtkMedVariableAttribute.h @@ -1,22 +1,3 @@ -// Copyright (C) 2010-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - #ifndef __vtkMedVariableAttribute_h_ #define __vtkMedVariableAttribute_h_ @@ -32,7 +13,7 @@ class VTK_EXPORT vtkMedVariableAttribute : public vtkObject { public : static vtkMedVariableAttribute* New(); - vtkTypeRevisionMacro(vtkMedVariableAttribute, vtkObject) + vtkTypeMacro(vtkMedVariableAttribute, vtkObject) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/MedReader/ParaViewPlugin/CMakeLists.txt b/src/Plugins/MedReader/ParaViewPlugin/CMakeLists.txt index c03f2670..9fa21fde 100644 --- a/src/Plugins/MedReader/ParaViewPlugin/CMakeLists.txt +++ b/src/Plugins/MedReader/ParaViewPlugin/CMakeLists.txt @@ -17,26 +17,11 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -set(MEDREADER_HDRS) -set(EXTRACTGROUP_HDRS) +# add include indirectories to the vtk files in this plugin. +include_directories( + ${MedReader_SOURCE_DIR}/IO + ${MedReader_BINARY_DIR}/IO) -include(${MedReader_BINARY_DIR}/IO/vtkMedReader_IOKit.cmake) - -include_directories(${VTK_MEDREADER_IO_HEADER_DIR}) - -add_definitions( -I${CMAKE_CURRENT_BINARY_DIR}/../IO ) - -foreach(class ${VTK_MEDREADER_IO_CLASSES}) - set(MEDREADER_HDRS ${MEDREADER_HDRS} ${VTK_MEDREADER_IO_HEADER_DIR}/${class}.h) -endforeach(class) - -foreach(class ${VTK_MEDREADER_IO_CLASSES_ABSTRACT}) - set_source_files_properties(${VTK_MEDREADER_IO_HEADER_DIR}/${class}.h PROPERTIES ABSTRACT 1) -endforeach(class) - -foreach(class ${VTK_MEDREADER_IO_CLASSES_WRAP_EXCLUDE}) - set_source_files_properties(${VTK_MEDREADER_IO_HEADER_DIR}/${class}.h PROPERTIES WRAP_EXCLUDE 1) -endforeach(class) SET(SM_SRCS vtkSMMedGroupSelectionDomain.cxx @@ -74,7 +59,7 @@ IF(PARAVIEW_BUILD_QT_GUI) # create the med reader plugin itself ADD_PARAVIEW_PLUGIN(MedReaderPlugin "4.0" - SERVER_MANAGER_SOURCES ${MEDREADER_HDRS} ${EXTRACTGROUP_HDRS} ${SM_SRCS} + SERVER_MANAGER_SOURCES ${SM_SRCS} SERVER_MANAGER_XML Resources/MedReaderServer.xml GUI_INTERFACES ${MEDREADER_IFACES} ${EXTRACTGROUP_IFACES} GUI_RESOURCES Resources/pqMedReader.qrc @@ -83,19 +68,27 @@ IF(PARAVIEW_BUILD_QT_GUI) ${MOC_SRCS} ${MEDREADER_IFACE_SRCS} ${EXTRACTGROUP_IFACE_SRCS} + CS_KITS + # this is the same name as the name in module.cmake file IO + # directory. + vtkMedReader ) ELSE(PARAVIEW_BUILD_QT_GUI) # create the med reader plugin itself ADD_PARAVIEW_PLUGIN(MedReaderPlugin "4.0" - SERVER_MANAGER_SOURCES ${MEDREADER_HDRS} ${EXTRACTGROUP_HDRS} ${SM_SRCS} + SERVER_MANAGER_SOURCES ${SM_SRCS} SERVER_MANAGER_XML Resources/MedReaderServer.xml + CS_KITS + # this is the same name as the name in module.cmake file IO + # directory. + vtkMedReader ) ENDIF(PARAVIEW_BUILD_QT_GUI) -TARGET_LINK_LIBRARIES(MedReaderPlugin vtkMedReader) +TARGET_LINK_LIBRARIES(MedReaderPlugin vtkMedReader vtkMedReaderCS) # Install INSTALL( diff --git a/src/Plugins/MedReader/ParaViewPlugin/pqExtractGroupPanel.cxx b/src/Plugins/MedReader/ParaViewPlugin/pqExtractGroupPanel.cxx index 095d9b5e..a6729518 100644 --- a/src/Plugins/MedReader/ParaViewPlugin/pqExtractGroupPanel.cxx +++ b/src/Plugins/MedReader/ParaViewPlugin/pqExtractGroupPanel.cxx @@ -149,7 +149,14 @@ void pqExtractGroupPanel::linkServerManagerProperties() void pqExtractGroupPanel::updateSIL() { - +/* VSR???????? +//<<<<<<< HEAD:ParaViewPlugin/pqExtractGroupPanel.cxx + + this->proxy()->UpdatePropertyInformation( + this->proxy()->GetProperty("SILUpdateStamp")); +//======= +//>>>>>>> medparallel:ParaViewPlugin/pqExtractGroupPanel.cxx +*/ vtkSMProxy* reader = this->referenceProxy()->getProxy(); reader->UpdatePropertyInformation(reader->GetProperty("SILUpdateStamp")); diff --git a/src/Plugins/MedReader/plugin.cmake b/src/Plugins/MedReader/plugin.cmake new file mode 100644 index 00000000..7d1291e9 --- /dev/null +++ b/src/Plugins/MedReader/plugin.cmake @@ -0,0 +1,5 @@ +pv_plugin(MedReader + # provide a description for the plugin. + DESCRIPTION "Reads the MED data format from Electricite de France" + PLUGIN_NAMES MedReader + DEFAULT_ENABLED) diff --git a/src/Plugins/NavigationMode/pqSetModeStarter.cxx b/src/Plugins/NavigationMode/pqSetModeStarter.cxx index f7aa1375..fa8e2d3d 100644 --- a/src/Plugins/NavigationMode/pqSetModeStarter.cxx +++ b/src/Plugins/NavigationMode/pqSetModeStarter.cxx @@ -53,7 +53,7 @@ void pqSetModeStarter::setStandardMode() // Set Post-Pro-like settings QStringList strs; pqRenderView::ManipulatorType manips[9]; - const pqRenderView::ManipulatorType* default3DManips = pqRenderView::getDefaultManipulatorTypes(); + const pqRenderView::ManipulatorType* default3DManips = pqRenderView::getDefault3DManipulatorTypes(); // Copy default settings, make changes for Ctrl+MB and MB modes for(int i=0; i<9; i++) diff --git a/src/Plugins/ParaMEDCorba/CMakeLists.txt b/src/Plugins/ParaMEDCorba/CMakeLists.txt index fac81bbd..50333c3d 100644 --- a/src/Plugins/ParaMEDCorba/CMakeLists.txt +++ b/src/Plugins/ParaMEDCorba/CMakeLists.txt @@ -19,7 +19,7 @@ PROJECT( ParaMEDCorba ) - CMAKE_MINIMUM_REQUIRED( VERSION 2.6 ) + CMAKE_MINIMUM_REQUIRED( VERSION 2.8.7 ) ## !!! This definition corrupts wrapping process #SET( LIBRARY_OUTPUT_PATH ${ParaMEDCorba_BINARY_DIR}/bin CACHE INTERNAL "Single place for output" ) #SET( EXECUTABLE_OUTPUT_PATH ${ParaMEDCorba_BINARY_DIR}/bin CACHE INTERNAL "Single place for output" ) @@ -28,12 +28,15 @@ PROJECT( ParaMEDCorba ) EXECUTABLE_OUTPUT_PATH ) - FIND_PACKAGE( ParaView REQUIRED ) + FIND_PACKAGE( ParaView COMPONENTS pqCore NO_MODULE) IF( ParaView_FOUND ) INCLUDE( ${PARAVIEW_USE_FILE} ) + FIND_PACKAGE( VTK 6.0 COMPONENTS vtkClientServer NO_MODULE) + INCLUDE( ${VTK_USE_FILE} ) + SET( PARACORBAPLUG_SRCS ${ParaMEDCorba_SOURCE_DIR}/vtkParaMEDCorbaSource.cxx ) @@ -52,9 +55,9 @@ PROJECT( ParaMEDCorba ) SET_TARGET_PROPERTIES(ParaMEDCorbaPlugin PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}") TARGET_LINK_LIBRARIES(ParaMEDMEM2VTK - vtkCommon - vtkFiltering - vtkGraphics + #vtkCommon + #vtkFiltering + #vtkGraphics vtkClientServer pqCore ${OMNIORB_LIBRARIES} diff --git a/src/Plugins/ParaMEDCorba/VTKParaMEDFieldClient.cxx b/src/Plugins/ParaMEDCorba/VTKParaMEDFieldClient.cxx index dd58e36f..80e3b0af 100644 --- a/src/Plugins/ParaMEDCorba/VTKParaMEDFieldClient.cxx +++ b/src/Plugins/ParaMEDCorba/VTKParaMEDFieldClient.cxx @@ -39,11 +39,11 @@ std::vector ParaMEDMEM2VTK::FillMEDCouplingParaFieldDoubleInstanceFrom(S SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_var fieldCorba=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj); std::vector times; vtkDataSet *part=ParaMEDMEM2VTK::BuildFullyFilledFromMEDCouplingFieldDoubleInstance(fieldCorba,times); - tmp->AddInputConnection(part->GetProducerPort()); + tmp->SetInputData(part); part->Delete(); } vtkCompositeDataToUnstructuredGridFilter *tmp2=vtkCompositeDataToUnstructuredGridFilter::New(); - tmp2->AddInputConnection(tmp->GetOutput()->GetProducerPort()); + tmp2->SetInputData(tmp->GetOutput()); tmp2->Update(); // vtkUnstructuredGrid *ret3=tmp2->GetOutput(); diff --git a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx index 3ed90734..c5a204ed 100644 --- a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx +++ b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx @@ -35,9 +35,9 @@ #include "vtkObjectFactory.h" #include "vtkInformation.h" // -#include "vtkstd/string" +#include "vtksys/stl/string" #include "vtksys/ios/fstream" -#include "vtkstd/algorithm" +#include "vtksys/stl/algorithm" #include "VTKMEDCouplingMeshClient.hxx" #include "VTKMEDCouplingFieldClient.hxx" @@ -49,7 +49,7 @@ // vtkStandardNewMacro(vtkParaMEDCorbaSource); -vtkCxxRevisionMacro(vtkParaMEDCorbaSource,"$Revision$"); +//vtkCxxRevisionMacro(vtkParaMEDCorbaSource,"$Revision$"); void *vtkParaMEDCorbaSource::Orb=0; @@ -85,7 +85,7 @@ void vtkParaMEDCorbaSource::SetIORCorba(char *ior) return; int length=strlen(ior); IOR.resize(length+1); - vtkstd::copy(ior,ior+length+1,&IOR[0]); + vtksys_stl::copy(ior,ior+length+1,&IOR[0]); this->Modified(); } @@ -187,15 +187,15 @@ int vtkParaMEDCorbaSource::RequestData(vtkInformation* request, vtkInformationVe { vtkInformation *outInfo=outputVector->GetInformationObject(0); // - this->UpdatePiece = this->GetOutputDataObject(0)->GetUpdatePiece();//emulation vtkUnstructuredGrid::GetUpdateExtent(int&,int&,int&) - this->NumberOfPieces = this->GetOutputDataObject(0)->GetUpdateNumberOfPieces();//emulation vtkUnstructuredGrid::GetUpdateExtent(int&,int&,int&) - this->GhostLevel = this->GetOutputDataObject(0)->GetUpdateGhostLevel();//emulation vtkUnstructuredGrid::GetUpdateExtent(int&,int&,int&) + this->UpdatePiece = vtkStreamingDemandDrivenPipeline::GetUpdatePiece(outInfo); + this->NumberOfPieces = vtkStreamingDemandDrivenPipeline::GetUpdateNumberOfPieces(outInfo); + this->GhostLevel = vtkStreamingDemandDrivenPipeline::GetUpdateGhostLevel(outInfo); this->StartPiece=((this->UpdatePiece*this->TotalNumberOfPieces)/this->NumberOfPieces); this->EndPiece=(((this->UpdatePiece+1)*this->TotalNumberOfPieces)/this->NumberOfPieces); vtkMultiBlockDataSet *ret0=vtkMultiBlockDataSet::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT())); - double *reqTS = 0; - if(outInfo->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS())) - reqTS = outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS()); + double reqTS = 0; + if(outInfo->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP())) + reqTS = outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP()); //Client request on ORB. CORBA::ORB_var *OrbC=(CORBA::ORB_var *)this->Orb; CORBA::Object_var obj=(*OrbC)->string_to_object(&IOR[0]); @@ -232,13 +232,13 @@ int vtkParaMEDCorbaSource::RequestData(vtkInformation* request, vtkInformationVe timeRange[1]=ret2[0]; outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),&ret2[0],1); outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),timeRange,2); - ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEPS(), &ret2[0], 1); + ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),ret2[0]); return 1; } SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_var multiPtr=SALOME_MED::MEDCouplingMultiFieldsCorbaInterface::_narrow(obj); if(!CORBA::is_nil(multiPtr)) { - vtkDataSet *ret=mfieldsFetcher->buildDataSetOnTime(reqTS[0]); + vtkDataSet *ret=mfieldsFetcher->buildDataSetOnTime(reqTS); if(!ret) { vtkErrorMacro("On multi fields CORBA fetching an error occurs !"); @@ -246,7 +246,7 @@ int vtkParaMEDCorbaSource::RequestData(vtkInformation* request, vtkInformationVe } ret0->SetBlock(0,ret); ret->Delete(); - ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEPS(),reqTS, 1); + ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),reqTS); return 1; } vtkErrorMacro("Unrecognized sequential CORBA reference !"); diff --git a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.h b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.h index d4646c6b..147dcab1 100644 --- a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.h +++ b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.h @@ -23,7 +23,7 @@ #include "ParaMEDMEM2VTK_defines.hxx" #include "vtkUnstructuredGridAlgorithm.h" -#include +#include class vtkDoubleArray; class vtkUnstructuredGrid; @@ -36,7 +36,7 @@ namespace ParaMEDMEM2VTK class vtkParaMEDCorbaSource : public vtkAlgorithm // { public: - vtkTypeRevisionMacro(vtkParaMEDCorbaSource, vtkAlgorithm); + vtkTypeMacro(vtkParaMEDCorbaSource, vtkAlgorithm) ParaMEDMEM2VTK_EXPORT static vtkParaMEDCorbaSource* New(); virtual void PrintSelf( ostream& os, vtkIndent indent ); const char *GetIORCorba(); @@ -60,7 +60,7 @@ protected: int EndPiece; int BufferingPolicy; vtkUnstructuredGrid *MyDataSet; - vtkstd::vector IOR; + vtksys_stl::vector IOR; ParaMEDMEM2VTK::MEDCouplingMultiFieldsFetcher *mfieldsFetcher; //not clean but to avoid to include CORBA.h in this *.h static void *Orb; diff --git a/src/Plugins/ScaleVector/vtkScaleVectorFilter.cxx b/src/Plugins/ScaleVector/vtkScaleVectorFilter.cxx index 266b9bb9..988ee58a 100644 --- a/src/Plugins/ScaleVector/vtkScaleVectorFilter.cxx +++ b/src/Plugins/ScaleVector/vtkScaleVectorFilter.cxx @@ -29,7 +29,7 @@ using namespace std; -vtkCxxRevisionMacro(vtkScaleVectorFilter, "$Revision$"); +//vtkCxxRevisionMacro(vtkScaleVectorFilter, "$Revision$"); vtkStandardNewMacro(vtkScaleVectorFilter); vtkScaleVectorFilter::vtkScaleVectorFilter() diff --git a/src/Plugins/ScaleVector/vtkScaleVectorFilter.h b/src/Plugins/ScaleVector/vtkScaleVectorFilter.h index dea186c8..4f75d939 100644 --- a/src/Plugins/ScaleVector/vtkScaleVectorFilter.h +++ b/src/Plugins/ScaleVector/vtkScaleVectorFilter.h @@ -26,7 +26,7 @@ class VTK_EXPORT vtkScaleVectorFilter: public vtkPassInputTypeAlgorithm { public: static vtkScaleVectorFilter *New(); - vtkTypeRevisionMacro(vtkScaleVectorFilter,vtkPassInputTypeAlgorithm); + vtkTypeMacro(vtkScaleVectorFilter,vtkPassInputTypeAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); // Description : diff --git a/src/Plugins/TableReader/ParaViewPlugin/Resources/TableReaderClient.xml b/src/Plugins/TableReader/ParaViewPlugin/Resources/TableReaderClient.xml index 33f4cf03..7fdc1fb1 100644 --- a/src/Plugins/TableReader/ParaViewPlugin/Resources/TableReaderClient.xml +++ b/src/Plugins/TableReader/ParaViewPlugin/Resources/TableReaderClient.xml @@ -1,6 +1,6 @@ diff --git a/src/Plugins/TableReader/Reader/vtkVisuTableReader.cxx b/src/Plugins/TableReader/Reader/vtkVisuTableReader.cxx index cd20f03f..e32cb653 100644 --- a/src/Plugins/TableReader/Reader/vtkVisuTableReader.cxx +++ b/src/Plugins/TableReader/Reader/vtkVisuTableReader.cxx @@ -29,14 +29,14 @@ #include "vtkStringArray.h" #include "vtkStringToNumeric.h" -#include +#include #include #include // STL include #include // STL include using namespace std; -vtkCxxRevisionMacro(vtkVisuTableReader, "$Revision$"); +//vtkCxxRevisionMacro(vtkVisuTableReader, "$Revision$"); vtkStandardNewMacro(vtkVisuTableReader); vtkVisuTableReader::vtkVisuTableReader(): @@ -130,7 +130,7 @@ int vtkVisuTableReader::RequestData(vtkInformation*, if (table.myColumnTitles[col].empty()) { - vtkstd::stringstream buffer; + vtksys_ios::stringstream buffer; if (hasUnit) { buffer << col <<" [" << table.myColumnUnits[col].c_str() << "]"; @@ -145,7 +145,7 @@ int vtkVisuTableReader::RequestData(vtkInformation*, { if (hasUnit) { - vtkstd::stringstream buffer; + vtksys_ios::stringstream buffer; buffer << table.myColumnTitles[col].c_str() <<" [" << table.myColumnUnits[col].c_str() << "]"; newCol->SetName(buffer.str().c_str()); @@ -166,14 +166,14 @@ int vtkVisuTableReader::RequestData(vtkInformation*, vtkStringToNumeric* convertor = vtkStringToNumeric::New(); vtkTable* clone = output_table->NewInstance(); clone->ShallowCopy(output_table); - convertor->SetInput(clone); + convertor->SetInputData(clone); convertor->Update(); clone->Delete(); output_table->ShallowCopy(convertor->GetOutputDataObject(0)); convertor->Delete(); } } - catch(vtkstd::exception& e) + catch(vtksys_stl::exception& e) { vtkErrorMacro(<< "caught exception: " << e.what() << endl); output_table->Initialize(); diff --git a/src/Plugins/TableReader/Reader/vtkVisuTableReader.h b/src/Plugins/TableReader/Reader/vtkVisuTableReader.h index 8a7ff2bd..6332eee7 100644 --- a/src/Plugins/TableReader/Reader/vtkVisuTableReader.h +++ b/src/Plugins/TableReader/Reader/vtkVisuTableReader.h @@ -28,7 +28,7 @@ class VTK_EXPORT vtkVisuTableReader: public vtkTableAlgorithm { public: static vtkVisuTableReader* New(); - vtkTypeRevisionMacro(vtkVisuTableReader, vtkTableAlgorithm) + vtkTypeMacro(vtkVisuTableReader, vtkTableAlgorithm) void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.cxx b/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.cxx index 574b289c..4ae49499 100644 --- a/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.cxx +++ b/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.cxx @@ -34,7 +34,7 @@ #include "vtkContourFilter.h" vtkStandardNewMacro(vtkTableTo3D); -vtkCxxRevisionMacro(vtkTableTo3D, "$Revision$"); +//vtkCxxRevisionMacro(vtkTableTo3D, "$Revision$"); vtkTableTo3D::vtkTableTo3D() @@ -155,7 +155,7 @@ int vtkTableTo3D::RequestData(vtkInformation* vtkNotUsed(request), vtkSmartPointer geomFilter = vtkSmartPointer::New(); - geomFilter->SetInput(structuredGrid); + geomFilter->SetInputData(structuredGrid); geomFilter->Update(); vtkSmartPointer warpScalar = @@ -179,17 +179,17 @@ int vtkTableTo3D::RequestData(vtkInformation* vtkNotUsed(request), if (this->PresentationType == TABLETO3D_SURFACE) { - warpScalar->SetInput(geomFilter->GetOutput()); + warpScalar->SetInputConnection(geomFilter->GetOutputPort(0)); warpScalar->SetScaleFactor(scaleFactor); } else { vtkSmartPointer contourFilter = vtkSmartPointer::New(); - contourFilter->SetInput(geomFilter->GetOutput()); + contourFilter->SetInputConnection(geomFilter->GetOutputPort(0)); contourFilter->GenerateValues(this->NumberOfContours, geomFilter->GetOutput()->GetScalarRange()); - warpScalar->SetInput(contourFilter->GetOutput()); + warpScalar->SetInputConnection(contourFilter->GetOutputPort(0)); warpScalar->SetScaleFactor(scaleFactor); } diff --git a/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.h b/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.h index c1d74283..c4edecd7 100644 --- a/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.h +++ b/src/Plugins/TableReader/TableTo3DFilter/vtkTableTo3D.h @@ -29,7 +29,7 @@ class VTK_EXPORT vtkTableTo3D : public vtkPolyDataAlgorithm { public: static vtkTableTo3D* New(); - vtkTypeRevisionMacro(vtkTableTo3D, vtkPolyDataAlgorithm); + vtkTypeMacro(vtkTableTo3D, vtkPolyDataAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); // Description: diff --git a/test/VisuPrs/2D_viewer/A0.py b/test/VisuPrs/2D_viewer/A0.py index 3d8b6173..ef7fd95c 100755 --- a/test/VisuPrs/2D_viewer/A0.py +++ b/test/VisuPrs/2D_viewer/A0.py @@ -36,20 +36,24 @@ aXYPlot.ChartTitle = ' ' aXYPlot.ChartTitle = 'title of XY plot' print "Chart title for xyplot ...", aXYPlot.ChartTitle -# Show left and bottom axis -aXYPlot.ShowAxis = [1, 1, 0, 0] +error = 0 +try: + aXYPlot.ShowAxis = [1, 1, 0, 0] +except: + print "Error: ShowAxis property is not avaliable for XYPlotView" + error = error + 1 + +aXYPlot.AxisUseCustomRange = [1, 1, 0, 0] # Show grids aXYPlot.ShowAxisGrid = [1, 1, 0, 0] -# Set axis range for left and bottom axis -aXYPlot.AxisBehavior = [1, 1, 0, 0] - aMinX = 0 aMaxX = 100 aMinY = 0 aMaxY = 10 -aXYPlot.AxisRange = [aMinX, aMaxX, aMinY, aMaxY, 0.0, 1.0, 0.0, 1.0] +aXYPlot.BottomAxisRange = [aMinX, aMaxX] +aXYPlot.LeftAxisRange = [aMinY, aMaxY] # Set horizontal scaling for left and bottom axis print "Default logarithmic scaling ...", aXYPlot.AxisLogScale @@ -73,3 +77,6 @@ print "Title of the bottom axis ...", aXYPlot.AxisTitle[1] # Show/hide legend aXYPlot.ShowLegend = 1 aXYPlot.ShowLegend = 0 + +if error > 0: + raise RuntimeError, "There is(are) some error(s) was(were) found... For more info see ERRORs above..." diff --git a/test/VisuPrs/2D_viewer/A1.py b/test/VisuPrs/2D_viewer/A1.py index 17fc4c80..fc4191ed 100755 --- a/test/VisuPrs/2D_viewer/A1.py +++ b/test/VisuPrs/2D_viewer/A1.py @@ -25,31 +25,51 @@ from pvsimple import CreateXYPlotView # Create view aXYPlot = CreateXYPlotView() -# Set range -axisRange = aXYPlot.AxisRange +error = 0 + +aXYPlot.AxisUseCustomRange = [1, 1, 0, 0] # Left axis range +axisRange = aXYPlot.LeftAxisRange axisRange[0:2] = [200., 800.] -Ranges = aXYPlot.AxisRange -Etvalue = [200, 800, axisRange[2], axisRange[3], - axisRange[4], axisRange[5], axisRange[6], axisRange[7] ] -error = test_values(Ranges, Etvalue) +Ranges = aXYPlot.LeftAxisRange +Etvalue = [200, 800] +error = error + test_values(Ranges, Etvalue) # Bottom axis range -aXYPlot.AxisRange[2:4] = [350.,750.] -Ranges = aXYPlot.AxisRange -Etvalue = [200, 800, 350, 750, - axisRange[4], axisRange[5], axisRange[6], axisRange[7]] +axisRange = aXYPlot.BottomAxisRange +axisRange[0:2] = [350.,750.] +Ranges = aXYPlot.BottomAxisRange +Etvalue = [350, 750] error = error + test_values(Ranges, Etvalue) # Left and bottom axis range -aXYPlot.AxisRange[0:4] = [1350.,2750.,240.,2230.] -Ranges=aXYPlot.AxisRange -Etvalue=[1350.,2750.,240.,2230., - axisRange[4], axisRange[5], axisRange[6], axisRange[7]] -error = error + test_values(Ranges, Etvalue) +aXYPlot.LeftAxisRange[0:2] = [1350.,2750.] +aXYPlot.BottomAxisRange[0:2] = [240.,2230.] +Etvalue=[1350.,2750.,240.,2230.] +Ranges=aXYPlot.LeftAxisRange +error = error + test_values(Ranges, Etvalue[0:2]) +Ranges=aXYPlot.BottomAxisRange +error = error + test_values(Ranges, Etvalue[2:4]) + +try: + aXYPlot.ShowAxis = [1, 1, 1, 1] +except: + print "Error: ShowAxis property is not avaliable for XYPlotView" + error = error + 1 + +aXYPlot.AxisUseCustomRange = [1, 1, 1, 1] # Left, bottom, right and top axis range -aXYPlot.AxisRange = [0, 200, 100, 450, 0, 200, 100, 450] -Ranges = aXYPlot.AxisRange +aXYPlot.LeftAxisRange = [0, 200] +aXYPlot.BottomAxisRange = [100, 450] +aXYPlot.RightAxisRange = [0, 200] +aXYPlot.TopAxisRange = [100, 450] Etvalue = [0, 200, 100, 450, 0, 200, 100, 450] -error = error + test_values(Ranges, Etvalue) +Ranges=aXYPlot.LeftAxisRange +error = error + test_values(Ranges, Etvalue[0:2]) +Ranges=aXYPlot.BottomAxisRange +error = error + test_values(Ranges, Etvalue[2:4]) +Ranges=aXYPlot.RightAxisRange +error = error + test_values(Ranges, Etvalue[4:6]) +Ranges=aXYPlot.TopAxisRange +error = error + test_values(Ranges, Etvalue[6:8]) if error > 0: raise RuntimeError, "There is(are) some error(s) was(were) found... For more info see ERRORs above..." diff --git a/test/VisuPrs/2D_viewer/CMakeLists.txt b/test/VisuPrs/2D_viewer/CMakeLists.txt index 2bc72967..cec60468 100644 --- a/test/VisuPrs/2D_viewer/CMakeLists.txt +++ b/test/VisuPrs/2D_viewer/CMakeLists.txt @@ -22,6 +22,8 @@ IF (PYTHON_EXECUTABLE) A0 A1 ) - ADD_TEST(2DVIEWER_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET(TIMEOUT 1500) + ADD_TEST(2DVIEWER_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(2DVIEWER_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/3D_viewer/CMakeLists.txt b/test/VisuPrs/3D_viewer/CMakeLists.txt index f1d6c37f..3bac165b 100755 --- a/test/VisuPrs/3D_viewer/CMakeLists.txt +++ b/test/VisuPrs/3D_viewer/CMakeLists.txt @@ -31,7 +31,8 @@ IF (PYTHON_EXECUTABLE) B0 B2 ) - ADD_TEST(3DVIEWER_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(3DVIEWER_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(3DVIEWER_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(3DVIEWER_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/Animation/CMakeLists.txt b/test/VisuPrs/Animation/CMakeLists.txt index ae79d51f..98ae1def 100755 --- a/test/VisuPrs/Animation/CMakeLists.txt +++ b/test/VisuPrs/Animation/CMakeLists.txt @@ -49,7 +49,8 @@ IF (PYTHON_EXECUTABLE) H1 H2 ) - ADD_TEST(ANIMATION_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(ANIMATION_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(ANIMATION_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(ANIMATION_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/CMakeLists.txt b/test/VisuPrs/CMakeLists.txt index bfb7a985..250b24df 100644 --- a/test/VisuPrs/CMakeLists.txt +++ b/test/VisuPrs/CMakeLists.txt @@ -33,5 +33,5 @@ SUBDIRS(Util GaussPoints StreamLines SWIG_scripts - Tables) - + Tables +) diff --git a/test/VisuPrs/CutLines/CMakeLists.txt b/test/VisuPrs/CutLines/CMakeLists.txt index 367f6fca..d99c8342 100644 --- a/test/VisuPrs/CutLines/CMakeLists.txt +++ b/test/VisuPrs/CutLines/CMakeLists.txt @@ -57,7 +57,8 @@ IF (PYTHON_EXECUTABLE) G1 G2 ) - ADD_TEST(CUTLINES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(CUTLINES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(CUTLINES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(CUTLINES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/CutPlanes/CMakeLists.txt b/test/VisuPrs/CutPlanes/CMakeLists.txt index 7edb069a..93591e9e 100644 --- a/test/VisuPrs/CutPlanes/CMakeLists.txt +++ b/test/VisuPrs/CutPlanes/CMakeLists.txt @@ -57,7 +57,8 @@ IF (PYTHON_EXECUTABLE) G1 G2 ) - ADD_TEST(CUTPLANES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(CUTPLANES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(CUTPLANES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(CUTPLANES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/DeformedShape/CMakeLists.txt b/test/VisuPrs/DeformedShape/CMakeLists.txt index a064d534..b50dca0c 100644 --- a/test/VisuPrs/DeformedShape/CMakeLists.txt +++ b/test/VisuPrs/DeformedShape/CMakeLists.txt @@ -55,7 +55,8 @@ IF (PYTHON_EXECUTABLE) F8 F9 ) - ADD_TEST(DEFORMEDSHAPE_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(DEFORMEDSHAPE_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(DEFORMEDSHAPE_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(DEFORMEDSHAPE_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/GaussPoints/CMakeLists.txt b/test/VisuPrs/GaussPoints/CMakeLists.txt index c2c47daf..4a95dfd1 100644 --- a/test/VisuPrs/GaussPoints/CMakeLists.txt +++ b/test/VisuPrs/GaussPoints/CMakeLists.txt @@ -47,7 +47,8 @@ IF (PYTHON_EXECUTABLE) C6 C7 ) - ADD_TEST(GAUSSPOINTS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(GAUSSPOINTS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(GAUSSPOINTS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(GAUSSPOINTS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) -ENDIF (PYTHON_EXECUTABLE) \ No newline at end of file +ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/IsoSurfaces/CMakeLists.txt b/test/VisuPrs/IsoSurfaces/CMakeLists.txt index e8d266bd..eee46f4d 100755 --- a/test/VisuPrs/IsoSurfaces/CMakeLists.txt +++ b/test/VisuPrs/IsoSurfaces/CMakeLists.txt @@ -56,7 +56,8 @@ IF (PYTHON_EXECUTABLE) G1 G2 ) - ADD_TEST(ISOSURFACES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(ISOSURFACES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(ISOSURFACES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(ISOSURFACES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/MeshPresentation/CMakeLists.txt b/test/VisuPrs/MeshPresentation/CMakeLists.txt index 1c8920c9..ec144f37 100644 --- a/test/VisuPrs/MeshPresentation/CMakeLists.txt +++ b/test/VisuPrs/MeshPresentation/CMakeLists.txt @@ -104,8 +104,9 @@ IF (PYTHON_EXECUTABLE) L0 L1 ) - ADD_TEST(MESH_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(MESH_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(MESH_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(MESH_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/Plot3D/CMakeLists.txt b/test/VisuPrs/Plot3D/CMakeLists.txt index 40c6803d..5cb35646 100755 --- a/test/VisuPrs/Plot3D/CMakeLists.txt +++ b/test/VisuPrs/Plot3D/CMakeLists.txt @@ -56,7 +56,8 @@ IF (PYTHON_EXECUTABLE) G1 G2 ) - ADD_TEST(PLOT3D_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(PLOT3D_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(PLOT3D_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(PLOT3D_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/SWIG_scripts/CMakeLists.txt b/test/VisuPrs/SWIG_scripts/CMakeLists.txt index 2a86c470..e180475c 100644 --- a/test/VisuPrs/SWIG_scripts/CMakeLists.txt +++ b/test/VisuPrs/SWIG_scripts/CMakeLists.txt @@ -37,7 +37,8 @@ IF (PYTHON_EXECUTABLE) C3 C7 ) - ADD_TEST(SWIGSCRIPTS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(SWIGSCRIPTS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(SWIGSCRIPTS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(SWIGSCRIPTS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/ScalarMap/CMakeLists.txt b/test/VisuPrs/ScalarMap/CMakeLists.txt index 453222bc..836e08fa 100644 --- a/test/VisuPrs/ScalarMap/CMakeLists.txt +++ b/test/VisuPrs/ScalarMap/CMakeLists.txt @@ -56,7 +56,8 @@ IF (PYTHON_EXECUTABLE) G1 G2 ) - ADD_TEST(SCALARMAP_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(SCALARMAP_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(SCALARMAP_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(SCALARMAP_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) -ENDIF (PYTHON_EXECUTABLE) \ No newline at end of file +ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/ScalarMap_On_DeformedShape/CMakeLists.txt b/test/VisuPrs/ScalarMap_On_DeformedShape/CMakeLists.txt index 43ec9347..728a686b 100644 --- a/test/VisuPrs/ScalarMap_On_DeformedShape/CMakeLists.txt +++ b/test/VisuPrs/ScalarMap_On_DeformedShape/CMakeLists.txt @@ -53,7 +53,8 @@ IF (PYTHON_EXECUTABLE) F7 F8 ) - ADD_TEST(DEFORMEDSHAPESCALARMAP_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(DEFORMEDSHAPESCALARMAP_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(DEFORMEDSHAPESCALARMAP_${tfile} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(DEFORMEDSHAPESCALARMAP_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/StreamLines/CMakeLists.txt b/test/VisuPrs/StreamLines/CMakeLists.txt index a440cf19..74e40cc8 100644 --- a/test/VisuPrs/StreamLines/CMakeLists.txt +++ b/test/VisuPrs/StreamLines/CMakeLists.txt @@ -53,7 +53,8 @@ IF (PYTHON_EXECUTABLE) F8 F9 ) - ADD_TEST(STREAMLINES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(STREAMLINES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(STREAMLINES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(STREAMLINES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) -ENDIF (PYTHON_EXECUTABLE) \ No newline at end of file +ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/Tables/CMakeLists.txt b/test/VisuPrs/Tables/CMakeLists.txt index 8a1ecb44..53da6970 100644 --- a/test/VisuPrs/Tables/CMakeLists.txt +++ b/test/VisuPrs/Tables/CMakeLists.txt @@ -22,7 +22,8 @@ IF (PYTHON_EXECUTABLE) A0 A2 ) - ADD_TEST(TABLES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(TABLES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(TABLES_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(TABLES_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) diff --git a/test/VisuPrs/Util/CMakeLists.txt b/test/VisuPrs/Util/CMakeLists.txt index f084e8f4..d681ba70 100644 --- a/test/VisuPrs/Util/CMakeLists.txt +++ b/test/VisuPrs/Util/CMakeLists.txt @@ -19,6 +19,7 @@ SET(dist_testscript_DATA paravistest.py + paravistesthelper.py ) FOREACH(f ${dist_testscript_DATA}) diff --git a/test/VisuPrs/Util/paravistest.py b/test/VisuPrs/Util/paravistest.py index c59d281f..0b257ccc 100755 --- a/test/VisuPrs/Util/paravistest.py +++ b/test/VisuPrs/Util/paravistest.py @@ -29,7 +29,6 @@ from datetime import date import salome - # Auxiliary variables # Data directory @@ -78,7 +77,8 @@ class SalomeSession(object): def __init__(self): import runSalome import sys - sys.argv += ["--killall"] + #sys.argv += ["--killall"] + #sys.argv += ["--portkill=" + port] sys.argv += ["--show-desktop=1"] sys.argv += ["--splash=0"] sys.argv += ["--modules=MED,VISU,PARAVIS"] diff --git a/test/VisuPrs/Util/paravistesthelper.py b/test/VisuPrs/Util/paravistesthelper.py new file mode 100644 index 00000000..14fa7c8c --- /dev/null +++ b/test/VisuPrs/Util/paravistesthelper.py @@ -0,0 +1,18 @@ +import searchFreePort +import subprocess +import sys +import signal + +args = {} +searchFreePort.searchFreePort(args) +port = args['port'] + +def timeout_handler(signum, frame): + print "FAILED : timeout(" + sys.argv[1] + ") is reached" + import killSalomeWithPort + killSalomeWithPort.killMyPort(port) + +signal.alarm(abs(int(sys.argv[1])-10)) +signal.signal(signal.SIGALRM, timeout_handler) + +subprocess.check_call([sys.executable]+sys.argv[2:]) diff --git a/test/VisuPrs/Vectors/CMakeLists.txt b/test/VisuPrs/Vectors/CMakeLists.txt index 9fd9cdc3..257da3b3 100644 --- a/test/VisuPrs/Vectors/CMakeLists.txt +++ b/test/VisuPrs/Vectors/CMakeLists.txt @@ -54,7 +54,8 @@ IF (PYTHON_EXECUTABLE) F8 F9 ) - ADD_TEST(VECTORS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) - SET_TESTS_PROPERTIES(VECTORS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED") + SET(TIMEOUT 1500) + ADD_TEST(VECTORS_${tfile} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test/VisuPrs/Util/paravistesthelper.py ${TIMEOUT} ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py ${PARAVIS_TEST_OUTPUT_DIR}) + SET_TESTS_PROPERTIES(VECTORS_${tfile} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED" TIMEOUT ${TIMEOUT}) ENDFOREACH( tfile ) ENDIF (PYTHON_EXECUTABLE) -- 2.39.2