Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkXMLWriterF.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkXMLWriterF.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*
00016  * vtkXMLWriterF.h helps fortran programs call the C interface for
00017  * writing VTK XML files.  A program can use this by writing one
00018  * vtkXMLWriterF.c file that includes this header.  DO NOT INCLUDE
00019  * THIS HEADER ELSEWHERE.  The fortran program then compiles
00020  * vtkXMLWriterF.c using a C compiler and links to the resulting
00021  * object file.
00022  */
00023 
00024 #if defined(__cplusplus)
00025 # error "This should be included only by a .c file."
00026 #endif
00027 
00028 /* Calls will be forwarded to the C interface.  */
00029 #include "vtkXMLWriterC.h"
00030 
00031 #include <stdio.h>  /* fprintf */
00032 #include <stdlib.h> /* malloc, free */
00033 #include <string.h> /* memcpy */
00034 
00035 /* Define a static-storage default-zero-initialized table to store
00036    writer objects for the fortran program.  */
00037 #define VTK_XMLWRITERF_MAX 256
00038 static vtkXMLWriterC* vtkXMLWriterF_Table[VTK_XMLWRITERF_MAX+1];
00039 
00040 /* Fortran compilers expect certain symbol names for their calls to C
00041    code.  These macros help build the C symbols so that the fortran
00042    program can link to them properly.  The definitions here are
00043    reasonable defaults but the source file that includes this can
00044    define them appropriately for a particular compiler and override
00045    these.  */
00046 #if !defined(VTK_FORTRAN_NAME)
00047 # define VTK_FORTRAN_NAME(name, NAME) name##__
00048 #endif
00049 #if !defined(VTK_FORTRAN_ARG_STRING_POINTER)
00050 # define VTK_FORTRAN_ARG_STRING_POINTER(name) const char* name##_ptr_arg
00051 #endif
00052 #if !defined(VTK_FORTRAN_ARG_STRING_LENGTH)
00053 # define VTK_FORTRAN_ARG_STRING_LENGTH(name) , const long int name##_len_arg
00054 #endif
00055 #if !defined(VTK_FORTRAN_REF_STRING_POINTER)
00056 # define VTK_FORTRAN_REF_STRING_POINTER(name) name##_ptr_arg
00057 #endif
00058 #if !defined(VTK_FORTRAN_REF_STRING_LENGTH)
00059 # define VTK_FORTRAN_REF_STRING_LENGTH(name) ((int)name##_len_arg)
00060 #endif
00061 
00062 /*--------------------------------------------------------------------------*/
00063 /* vtkXMLWriterF_New */
00064 void VTK_FORTRAN_NAME(vtkxmlwriterf_new, VTKXMLWRITERF_NEW)(
00065   int* self
00066   )
00067 {
00068   int i;
00069 
00070   /* Initialize result to failure.  */
00071   *self = 0;
00072 
00073   /* Search for a table entry to use for this object.  */
00074   for(i=1;i <= VTK_XMLWRITERF_MAX; ++i)
00075     {
00076     if(!vtkXMLWriterF_Table[i])
00077       {
00078       vtkXMLWriterF_Table[i] = vtkXMLWriterC_New();
00079       if(vtkXMLWriterF_Table[i])
00080         {
00081         *self = i;
00082         }
00083       return;
00084       }
00085     }
00086 }
00087 
00088 /*--------------------------------------------------------------------------*/
00089 /* vtkXMLWriterF_Delete */
00090 void VTK_FORTRAN_NAME(vtkxmlwriterf_delete, VTKXMLWRITERF_DELETE)(
00091   int* self
00092   )
00093 {
00094   /* Check if the writer object exists.  */
00095   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00096     {
00097     /* Delete this writer object.  */
00098     vtkXMLWriterC_Delete(vtkXMLWriterF_Table[*self]);
00099 
00100     /* Erase the table entry.  */
00101     vtkXMLWriterF_Table[*self] = 0;
00102     }
00103   else
00104     {
00105     fprintf(stderr,
00106             "vtkXMLWriterF_Delete called with invalid id %d.\n",
00107             *self);
00108     }
00109 
00110   /* The writer object no longer exists.  Destroy the id.  */
00111   *self = 0;
00112 }
00113 
00114 /*--------------------------------------------------------------------------*/
00115 /* vtkXMLWriterF_SetDataObjectType */
00116 void VTK_FORTRAN_NAME(vtkxmlwriterf_setdataobjecttype, VTKXMLWRITERF_SETDATAOBJECTTYPE)(
00117   const int* self, const int* objType
00118   )
00119 {
00120   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00121     {
00122     vtkXMLWriterC_SetDataObjectType(vtkXMLWriterF_Table[*self], *objType);
00123     }
00124   else
00125     {
00126     fprintf(stderr,
00127             "vtkXMLWriterF_SetDataObjectType called with invalid id %d.\n",
00128             *self);
00129     }
00130 }
00131 
00132 /*--------------------------------------------------------------------------*/
00133 /* vtkXMLWriterF_SetExtent */
00134 void VTK_FORTRAN_NAME(vtkxmlwriterf_setextent, VTKXMLWRITERF_SETEXTENT)(
00135   const int* self, int extent[6]
00136   )
00137 {
00138   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00139     {
00140     vtkXMLWriterC_SetExtent(vtkXMLWriterF_Table[*self], extent);
00141     }
00142   else
00143     {
00144     fprintf(stderr,
00145             "vtkXMLWriterF_SetExtent called with invalid id %d.\n",
00146             *self);
00147     }
00148 }
00149 
00150 /*--------------------------------------------------------------------------*/
00151 /* vtkXMLWriterF_SetPoints */
00152 void VTK_FORTRAN_NAME(vtkxmlwriterf_setpoints, VTKXMLWRITERF_SETPOINTS)(
00153   const int* self, const int* dataType,
00154   void* data, const vtkIdType* numPoints
00155   )
00156 {
00157   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00158     {
00159     vtkXMLWriterC_SetPoints(vtkXMLWriterF_Table[*self], *dataType,
00160                             data, *numPoints);
00161     }
00162   else
00163     {
00164     fprintf(stderr,
00165             "vtkXMLWriterF_SetPoints called with invalid id %d.\n",
00166             *self);
00167     }
00168 }
00169 
00170 /*--------------------------------------------------------------------------*/
00171 /* vtkXMLWriterF_SetOrigin */
00172 void VTK_FORTRAN_NAME(vtkxmlwriterf_setorigin, VTKXMLWRITERF_SETORIGIN)(
00173   const int* self, double origin[3]
00174   )
00175 {
00176   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00177     {
00178     vtkXMLWriterC_SetOrigin(vtkXMLWriterF_Table[*self], origin);
00179     }
00180   else
00181     {
00182     fprintf(stderr,
00183             "vtkXMLWriterF_SetOrigin called with invalid id %d.\n",
00184             *self);
00185     }
00186 }
00187 
00188 /*--------------------------------------------------------------------------*/
00189 /* vtkXMLWriterF_SetSpacing */
00190 void VTK_FORTRAN_NAME(vtkxmlwriterf_setspacing, VTKXMLWRITERF_SETSPACING)(
00191   const int* self, double spacing[3]
00192   )
00193 {
00194   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00195     {
00196     vtkXMLWriterC_SetSpacing(vtkXMLWriterF_Table[*self], spacing);
00197     }
00198   else
00199     {
00200     fprintf(stderr,
00201             "vtkXMLWriterF_SetSpacing called with invalid id %d.\n",
00202             *self);
00203     }
00204 }
00205 
00206 /*--------------------------------------------------------------------------*/
00207 /* vtkXMLWriterF_SetCoordinates */
00208 void VTK_FORTRAN_NAME(vtkxmlwriterf_setcoordinates, VTKXMLWRITERF_SETCOORDINATES)(
00209   const int* self, const int* axis, const int* dataType, void* data,
00210   const vtkIdType* numCoordinates
00211   )
00212 {
00213   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00214     {
00215     vtkXMLWriterC_SetCoordinates(vtkXMLWriterF_Table[*self], *axis,
00216                                  *dataType, data, *numCoordinates);
00217     }
00218   else
00219     {
00220     fprintf(stderr,
00221             "vtkXMLWriterF_SetCoordinates called with invalid id %d.\n",
00222             *self);
00223     }
00224 }
00225 
00226 /*--------------------------------------------------------------------------*/
00227 /* vtkXMLWriterF_SetCellsWithType */
00228 void VTK_FORTRAN_NAME(vtkxmlwriterf_setcellswithtype, VTKXMLWRITERF_SETCELLSWITHTYPE)(
00229   const int* self, const int* cellType, const vtkIdType* ncells,
00230   vtkIdType* cells, const vtkIdType* cellsSize
00231   )
00232 {
00233   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00234     {
00235     vtkXMLWriterC_SetCellsWithType(vtkXMLWriterF_Table[*self], *cellType,
00236                                    *ncells, cells, *cellsSize);
00237     }
00238   else
00239     {
00240     fprintf(stderr,
00241             "vtkXMLWriterF_SetCellsWithType called with invalid id %d.\n",
00242             *self);
00243     }
00244 }
00245 
00246 /*--------------------------------------------------------------------------*/
00247 /* vtkXMLWriterF_SetCellsWithTypes */
00248 void VTK_FORTRAN_NAME(vtkxmlwriterf_setcellswithtypes, VTKXMLWRITERF_SETCELLSWITHTYPES)(
00249   const int* self, int* cellTypes, const vtkIdType* ncells,
00250   vtkIdType* cells, const vtkIdType* cellsSize
00251   )
00252 {
00253   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00254     {
00255     vtkXMLWriterC_SetCellsWithTypes(vtkXMLWriterF_Table[*self], cellTypes,
00256                                     *ncells, cells, *cellsSize);
00257     }
00258   else
00259     {
00260     fprintf(stderr,
00261             "vtkXMLWriterF_SetCellsWithTypes called with invalid id %d.\n",
00262             *self);
00263     }
00264 }
00265 
00266 /*--------------------------------------------------------------------------*/
00267 /* vtkXMLWriterF_SetPointData */
00268 void VTK_FORTRAN_NAME(vtkxmlwriterf_setpointdata, VTKXMLWRITERF_SETPOINTDATA)(
00269   const int* self, VTK_FORTRAN_ARG_STRING_POINTER(name),
00270   const int* dataType, void* data, const vtkIdType* numTuples,
00271   const int* numComponents, VTK_FORTRAN_ARG_STRING_POINTER(role)
00272   VTK_FORTRAN_ARG_STRING_LENGTH(name)
00273   VTK_FORTRAN_ARG_STRING_LENGTH(role)
00274   )
00275 {
00276   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00277     {
00278     /* Prepare NULL-terminated strings.  */
00279     const char* name_ptr = VTK_FORTRAN_REF_STRING_POINTER(name);
00280     int name_length = VTK_FORTRAN_REF_STRING_LENGTH(name);
00281     char* name_buffer = malloc(name_length+1);
00282     const char* role_ptr = VTK_FORTRAN_REF_STRING_POINTER(role);
00283     int role_length = VTK_FORTRAN_REF_STRING_LENGTH(role);
00284     char* role_buffer = malloc(role_length+1);
00285     if(!name_buffer || !role_buffer)
00286       {
00287       fprintf(stderr,
00288               "vtkXMLWriterF_SetPointData failed to allocate name or role.\n");
00289       if(name_buffer) { free(name_buffer); }
00290       if(role_buffer) { free(role_buffer); }
00291       return;
00292       }
00293     memcpy(name_buffer, name_ptr, name_length);
00294     name_buffer[name_length] = 0;
00295     memcpy(role_buffer, role_ptr, role_length);
00296     role_buffer[role_length] = 0;
00297 
00298     /* Forward the call.  */
00299     vtkXMLWriterC_SetPointData(vtkXMLWriterF_Table[*self], name_buffer,
00300                                *dataType, data, *numTuples, *numComponents,
00301                                role_buffer);
00302 
00303     /* Free the NULL-terminated strings.  */
00304     free(name_buffer);
00305     free(role_buffer);
00306     }
00307   else
00308     {
00309     fprintf(stderr,
00310             "vtkXMLWriterF_SetPointData called with invalid id %d.\n",
00311             *self);
00312     }
00313 }
00314 
00315 /*--------------------------------------------------------------------------*/
00316 /* vtkXMLWriterF_SetCellData */
00317 void VTK_FORTRAN_NAME(vtkxmlwriterf_setcelldata, VTKXMLWRITERF_SETCELLDATA)(
00318   const int* self, VTK_FORTRAN_ARG_STRING_POINTER(name),
00319   const int* dataType, void* data, const vtkIdType* numTuples,
00320   const int* numComponents, VTK_FORTRAN_ARG_STRING_POINTER(role)
00321   VTK_FORTRAN_ARG_STRING_LENGTH(name)
00322   VTK_FORTRAN_ARG_STRING_LENGTH(role)
00323   )
00324 {
00325   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00326     {
00327     /* Prepare NULL-terminated strings.  */
00328     const char* name_ptr = VTK_FORTRAN_REF_STRING_POINTER(name);
00329     int name_length = VTK_FORTRAN_REF_STRING_LENGTH(name);
00330     char* name_buffer = malloc(name_length+1);
00331     const char* role_ptr = VTK_FORTRAN_REF_STRING_POINTER(role);
00332     int role_length = VTK_FORTRAN_REF_STRING_LENGTH(role);
00333     char* role_buffer = malloc(role_length+1);
00334     if(!name_buffer || !role_buffer)
00335       {
00336       fprintf(stderr,
00337               "vtkXMLWriterF_SetCellData failed to allocate name or role.\n");
00338       if(name_buffer) { free(name_buffer); }
00339       if(role_buffer) { free(role_buffer); }
00340       return;
00341       }
00342     memcpy(name_buffer, name_ptr, name_length);
00343     name_buffer[name_length] = 0;
00344     memcpy(role_buffer, role_ptr, role_length);
00345     role_buffer[role_length] = 0;
00346 
00347     /* Forward the call.  */
00348     vtkXMLWriterC_SetCellData(vtkXMLWriterF_Table[*self], name_buffer,
00349                               *dataType, data, *numTuples, *numComponents,
00350                               role_buffer);
00351 
00352     /* Free the NULL-terminated strings.  */
00353     free(name_buffer);
00354     free(role_buffer);
00355     }
00356   else
00357     {
00358     fprintf(stderr,
00359             "vtkXMLWriterF_SetCellData called with invalid id %d.\n",
00360             *self);
00361     }
00362 }
00363 
00364 /*--------------------------------------------------------------------------*/
00365 /* vtkXMLWriterF_SetFileName */
00366 void VTK_FORTRAN_NAME(vtkxmlwriterf_setfilename, VTKXMLWRITERF_SETFILENAME)(
00367   const int* self, VTK_FORTRAN_ARG_STRING_POINTER(name)
00368   VTK_FORTRAN_ARG_STRING_LENGTH(name)
00369   )
00370 {
00371   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00372     {
00373     /* Prepare NULL-terminated string.  */
00374     const char* name_ptr = VTK_FORTRAN_REF_STRING_POINTER(name);
00375     int name_length = VTK_FORTRAN_REF_STRING_LENGTH(name);
00376     char* name_buffer = malloc(name_length+1);
00377     if(!name_buffer)
00378       {
00379       fprintf(stderr,
00380               "vtkXMLWriterF_SetFileName failed to allocate name.\n");
00381       return;
00382       }
00383     memcpy(name_buffer, name_ptr, name_length);
00384     name_buffer[name_length] = 0;
00385 
00386     /* Forward the call.  */
00387     vtkXMLWriterC_SetFileName(vtkXMLWriterF_Table[*self], name_buffer);
00388 
00389     /* Free the NULL-terminated string.  */
00390     free(name_buffer);
00391     }
00392   else
00393     {
00394     fprintf(stderr,
00395             "vtkXMLWriterF_SetFileName called with invalid id %d.\n",
00396             *self);
00397     }
00398 }
00399 
00400 /*--------------------------------------------------------------------------*/
00401 /* vtkXMLWriterF_Write */
00402 void VTK_FORTRAN_NAME(vtkxmlwriterf_write, VTKXMLWRITERF_WRITE)(
00403   const int* self, int* success
00404   )
00405 {
00406   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00407     {
00408     *success = vtkXMLWriterC_Write(vtkXMLWriterF_Table[*self]);
00409     }
00410   else
00411     {
00412     fprintf(stderr,
00413             "vtkXMLWriterF_Write called with invalid id %d.\n",
00414             *self);
00415     }
00416 }
00417 
00418 /*--------------------------------------------------------------------------*/
00419 /* vtkXMLWriterF_SetNumberOfTimeSteps */
00420 void VTK_FORTRAN_NAME(vtkxmlwriterf_setnumberoftimesteps, VTKXMLWRITERF_SETNUMBEROFTIMESTEPS)(
00421   const int* self, const int* numTimeSteps
00422   )
00423 {
00424   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00425     {
00426     vtkXMLWriterC_SetNumberOfTimeSteps(vtkXMLWriterF_Table[*self],
00427                                        *numTimeSteps);
00428     }
00429   else
00430     {
00431     fprintf(stderr,
00432             "vtkXMLWriterF_SetNumberOfTimeSteps called with invalid id %d.\n",
00433             *self);
00434     }
00435 }
00436 
00437 /*--------------------------------------------------------------------------*/
00438 /* vtkXMLWriterF_Start */
00439 void VTK_FORTRAN_NAME(vtkxmlwriterf_start, VTKXMLWRITERF_START)(
00440   const int* self
00441   )
00442 {
00443   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00444     {
00445     vtkXMLWriterC_Start(vtkXMLWriterF_Table[*self]);
00446     }
00447   else
00448     {
00449     fprintf(stderr,
00450             "vtkXMLWriterF_Start called with invalid id %d.\n",
00451             *self);
00452     }
00453 }
00454 
00455 /*--------------------------------------------------------------------------*/
00456 /* vtkXMLWriterF_WriteNextTimeStep */
00457 void VTK_FORTRAN_NAME(vtkxmlwriterf_writenexttimestep, VTKXMLWRITERF_WRITENEXTTIMESTEP)(
00458   const int* self, const double* timeValue
00459   )
00460 {
00461   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00462     {
00463     vtkXMLWriterC_WriteNextTimeStep(vtkXMLWriterF_Table[*self], *timeValue);
00464     }
00465   else
00466     {
00467     fprintf(stderr,
00468             "vtkXMLWriterF_WriteNextTimeStep called with invalid id %d.\n",
00469             *self);
00470     }
00471 }
00472 
00473 /*--------------------------------------------------------------------------*/
00474 /* vtkXMLWriterF_Stop */
00475 void VTK_FORTRAN_NAME(vtkxmlwriterf_stop, VTKXMLWRITERF_STOP)(
00476   const int* self
00477   )
00478 {
00479   if(*self > 0 && *self <= VTK_XMLWRITERF_MAX && vtkXMLWriterF_Table[*self])
00480     {
00481     vtkXMLWriterC_Stop(vtkXMLWriterF_Table[*self]);
00482     }
00483   else
00484     {
00485     fprintf(stderr,
00486             "vtkXMLWriterF_Stop called with invalid id %d.\n",
00487             *self);
00488     }
00489 }

Generated on Mon Jan 21 23:07:33 2008 for VTK by  doxygen 1.4.3-20050530