Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
2.9 KiB

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* warning this code is also in getclasses.cxx under pcmaker */
/* this roputine creates the init file */
static void CreateInitFile(const char *libName,
int numConcrete, char **concrete,
FILE *fout)
{
int i;
#if defined(_WIN32) && !defined(__CYGWIN__)
const char* prefix = "";
#else
const char* prefix = "lib";
#endif
#if defined(_WIN32)
const char* dllexp = "__declspec(dllexport) ";
#else
const char* dllexp = "";
#endif
fprintf(fout,"// Generated by vtkWrapPythonInit in VTK/Wrapping\n");
fprintf(fout,"#include \"vtkPython.h\"\n\n");
fprintf(fout,"#include \"vtkSystemIncludes.h\"\n");
fprintf(fout,"#include <string.h>\n");
fprintf(fout,"// Handle compiler warning messages, etc.\n"
"#if defined( _MSC_VER ) && !defined(VTK_DISPLAY_WIN32_WARNINGS)\n"
"#pragma warning ( disable : 4706 )\n"
"#endif // Windows Warnings \n\n");
for (i = 0; i < numConcrete; i++)
{
fprintf(fout,"extern \"C\" {%sPyObject *PyVTKClass_%sNew(char *); }\n", dllexp, concrete[i]);
}
fprintf(fout,"\nstatic PyMethodDef Py%s_ClassMethods[] = {\n", libName);
fprintf(fout,"{NULL, NULL, 0, NULL}};\n\n");
fprintf(fout,"extern \"C\" {%svoid init%s%s();}\n\n", dllexp, prefix, libName);
fprintf(fout,"void init%s%s()\n{\n", prefix, libName);
/* module init function */
fprintf(fout," PyObject *m, *d, *c;\n\n");
fprintf(fout," static const char modulename[] = \"%s%s\";\n", prefix, libName);
fprintf(fout," m = Py_InitModule((char*)modulename, Py%s_ClassMethods);\n",
libName);
fprintf(fout," d = PyModule_GetDict(m);\n");
fprintf(fout," if (!d) Py_FatalError((char*)\"can't get dictionary for module %s!\");\n\n",
libName);
for (i = 0; i < numConcrete; i++)
{
fprintf(fout," if ((c = PyVTKClass_%sNew((char*)modulename)))\n",
concrete[i]);
fprintf(fout," if (-1 == PyDict_SetItemString(d, (char*)\"%s\", c))\n",
concrete[i]);
fprintf(fout," Py_FatalError((char*)\"can't add class %s to dictionary!\");\n\n",
concrete[i]);
}
fprintf(fout,"}\n\n");
}
int main(int argc,char *argv[])
{
FILE *file;
FILE *fout;
int numConcrete = 0;
char libName[250];
char tmpVal[250];
char *concrete[4000];
if (argc < 3)
{
fprintf(stderr,"Usage: %s input_file output_file\n",argv[0]);
return 1;
}
file = fopen(argv[1],"r");
if (!file)
{
fprintf(stderr,"Input file %s could not be opened\n",argv[1]);
return 1;
}
fout = fopen(argv[2],"w");
if (!fout)
{
return 1;
}
/* read the info from the file */
fscanf(file,"%s",libName);
/* read in the classes */
while (fscanf(file,"%s",tmpVal) != EOF)
{
concrete[numConcrete] = strdup(tmpVal);
numConcrete++;
}
/* close the file */
fclose(file);
CreateInitFile(libName, numConcrete, concrete, fout);
fclose(fout);
return 0;
}