diff options
-rw-r--r-- | Source/cmCommands.cxx | 8 | ||||
-rw-r--r-- | Source/cmVTKMakeInstantiatorCommand.cxx | 491 | ||||
-rw-r--r-- | Source/cmVTKMakeInstantiatorCommand.h | 103 | ||||
-rw-r--r-- | Source/cmVTKWrapJavaCommand.cxx | 199 | ||||
-rw-r--r-- | Source/cmVTKWrapJavaCommand.h | 96 | ||||
-rw-r--r-- | Source/cmVTKWrapPythonCommand.cxx | 262 | ||||
-rw-r--r-- | Source/cmVTKWrapPythonCommand.h | 102 | ||||
-rw-r--r-- | Source/cmVTKWrapTclCommand.cxx | 388 | ||||
-rw-r--r-- | Source/cmVTKWrapTclCommand.h | 105 |
9 files changed, 0 insertions, 1754 deletions
diff --git a/Source/cmCommands.cxx b/Source/cmCommands.cxx index ec6f84b..ac188be 100644 --- a/Source/cmCommands.cxx +++ b/Source/cmCommands.cxx @@ -52,10 +52,6 @@ #include "cmSubdirDependsCommand.cxx" #include "cmUseMangledMesaCommand.cxx" #include "cmUtilitySourceCommand.cxx" -#include "cmVTKMakeInstantiatorCommand.cxx" -#include "cmVTKWrapJavaCommand.cxx" -#include "cmVTKWrapPythonCommand.cxx" -#include "cmVTKWrapTclCommand.cxx" #include "cmVariableRequiresCommand.cxx" #include "cmWhileCommand.cxx" #include "cmWriteFileCommand.cxx" @@ -110,10 +106,6 @@ void GetPredefinedCommands(std::list<cmCommand*>& commands.push_back(new cmSubdirDependsCommand); commands.push_back(new cmUseMangledMesaCommand); commands.push_back(new cmUtilitySourceCommand); - commands.push_back(new cmVTKMakeInstantiatorCommand); - commands.push_back(new cmVTKWrapJavaCommand); - commands.push_back(new cmVTKWrapPythonCommand); - commands.push_back(new cmVTKWrapTclCommand); commands.push_back(new cmVariableRequiresCommand); commands.push_back(new cmWhileCommand); commands.push_back(new cmWriteFileCommand); diff --git a/Source/cmVTKMakeInstantiatorCommand.cxx b/Source/cmVTKMakeInstantiatorCommand.cxx deleted file mode 100644 index 9f7a2f9..0000000 --- a/Source/cmVTKMakeInstantiatorCommand.cxx +++ /dev/null @@ -1,491 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#include "cmVTKMakeInstantiatorCommand.h" - -#include "cmCacheManager.h" -#include "cmGeneratedFileStream.h" -#include "cmSourceFile.h" - -bool -cmVTKMakeInstantiatorCommand -::InitialPass(std::vector<std::string> const& argsIn) -{ - if(argsIn.size() < 3) - { - this->SetError("called with incorrect number of arguments"); - return false; - } - std::vector<std::string> args; - this->Makefile->ExpandSourceListArguments(argsIn, args, 2); - std::string sourceListValue; - - this->ClassName = args[0]; - - std::vector<cmStdString> inSourceLists; - this->ExportMacro = "-"; - bool includesMode = false; - bool oldVersion = true; - - // Find the path of the files to be generated. - std::string filePath = this->Makefile->GetCurrentOutputDirectory(); - std::string headerPath = filePath; - - // Check whether to use the old or new form. - if(this->Makefile->GetDefinition("VTK_USE_INSTANTIATOR_NEW")) - { - oldVersion = false; - } - - for(unsigned int i=2;i < args.size();++i) - { - if(args[i] == "HEADER_LOCATION") - { - includesMode = false; - if(++i < args.size()) - { - headerPath = args[i]; - } - else - { - this->SetError("HEADER_LOCATION option used without value."); - return false; - } - } - else if(args[i] == "EXPORT_MACRO") - { - includesMode = false; - if(++i < args.size()) - { - this->ExportMacro = args[i]; - } - else - { - this->SetError("EXPORT_MACRO option used without value."); - return false; - } - } - else if(args[i] == "INCLUDES") - { - includesMode = true; - } - // If not an option, it must be another input source list name or - // an include file. - else - { - if(!includesMode) - { - inSourceLists.push_back(args[i]); - } - else - { - this->Includes.push_back(args[i]); - } - } - } - - if(this->ExportMacro == "-") - { - this->SetError("No EXPORT_MACRO option given."); - return false; - } - - for(std::vector<cmStdString>::const_iterator s = inSourceLists.begin(); - s != inSourceLists.end(); ++s) - { - std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*s); - cmSourceFile *sf = this->Makefile->GetSource(s->c_str()); - - // Wrap-excluded and abstract classes do not have a New() method. - // vtkIndent and vtkTimeStamp are special cases and are not - // vtkObject subclasses. - if( - (!sf || (!sf->GetPropertyAsBool("WRAP_EXCLUDE") && - !sf->GetPropertyAsBool("ABSTRACT"))) && - ((srcName != "vtkIndent") && (srcName != "vtkTimeStamp"))) - { - this->Classes.push_back(srcName); - } - } - - // Generate the header with the class declaration. - { - std::string fileName = this->ClassName + ".h"; - std::string fullName = headerPath+"/"+fileName; - - // Generate the output file with copy-if-different. - cmGeneratedFileStream fout(fullName.c_str()); - fout.SetCopyIfDifferent(true); - - // Actually generate the code in the file. - if(!oldVersion) - { - this->GenerateHeaderFile(fout); - } - else - { - this->OldGenerateHeaderFile(fout); - } - } - - // Generate the implementation file. - { - std::string fileName = this->ClassName + ".cxx"; - std::string fullName = filePath+"/"+fileName; - - // Generate the output file with copy-if-different. - { - cmGeneratedFileStream fout(fullName.c_str()); - fout.SetCopyIfDifferent(true); - - // Actually generate the code in the file. - if(!oldVersion) - { - this->GenerateImplementationFile(fout); - } - else - { - this->OldGenerateImplementationFile(fout); - } - } - - // Add the generated source file into the source list. - cmSourceFile file; - file.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - file.SetProperty("WRAP_EXCLUDE","1"); - file.SetProperty("ABSTRACT","0"); - file.SetName(fileName.c_str(), filePath.c_str(), - this->Makefile->GetSourceExtensions(), - this->Makefile->GetHeaderExtensions()); - this->Makefile->AddSource(file); - sourceListValue += file.GetSourceName() + ".cxx"; - } - - if(oldVersion) - { - int groupSize = 10; - size_t numClasses = this->Classes.size(); - size_t numFullBlocks = numClasses / groupSize; - size_t lastBlockSize = numClasses % groupSize; - size_t numBlocks = numFullBlocks + ((lastBlockSize>0)? 1:0); - - // Generate the files with the ::New() calls to each class. These - // are done in groups to keep the translation unit size smaller. - for(unsigned int block=0; block < numBlocks;++block) - { - std::string fileName = this->OldGenerateCreationFileName(block); - std::string fullName = filePath+"/"+fileName; - - // Generate the output file with copy-if-different. - { - cmGeneratedFileStream fout(fullName.c_str()); - fout.SetCopyIfDifferent(true); - - size_t thisBlockSize = - (block < numFullBlocks)? groupSize:lastBlockSize; - - // Actually generate the code in the file. - this->OldGenerateCreationFile(fout, - block*groupSize, - static_cast<int>(thisBlockSize)); - } - - // Add the generated source file into the source list. - cmSourceFile file; - file.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - file.SetProperty("WRAP_EXCLUDE","1"); - file.SetProperty("ABSTRACT","0"); - file.SetName(fileName.c_str(), filePath.c_str(), - this->Makefile->GetSourceExtensions(), - this->Makefile->GetHeaderExtensions()); - this->Makefile->AddSource(file); - sourceListValue += ";"; - sourceListValue += file.GetSourceName() + ".cxx"; - } - } - - this->Makefile->AddDefinition(args[1].c_str(), sourceListValue.c_str()); - return true; -} - -// Generates the class header file with the definition of the class -// and its initializer class. -void -cmVTKMakeInstantiatorCommand -::GenerateHeaderFile(std::ostream& os) -{ - os << - "#ifndef __" << this->ClassName.c_str() << "_h\n" - "#define __" << this->ClassName.c_str() << "_h\n" - "\n" - "#include \"vtkInstantiator.h\"\n"; - for(unsigned int i=0;i < this->Includes.size();++i) - { - os << "#include \"" << this->Includes[i].c_str() << "\"\n"; - } - - // Write the instantiator class definition. - os << - "\n" - "class " << this->ExportMacro.c_str() - << " " << this->ClassName.c_str() << "\n" - "{\n" - "public:\n" - " " << this->ClassName.c_str() << "();\n" - " ~" << this->ClassName.c_str() << "();\n" - "private:\n" - " static void ClassInitialize();\n" - " static void ClassFinalize();\n" - " static unsigned int Count;\n" - "};\n" - "\n"; - - // Write the initialization instance to make sure the creation - // functions get registered when this generated header is included. - os << - "static " - << this->ClassName.c_str() << " " - << this->ClassName.c_str() << "Initializer;\n" - "\n" - "#endif\n"; -} - -// Generates the file with the implementation of the class. All -// methods except the actual object creation functions are generated -// here. -void -cmVTKMakeInstantiatorCommand -::GenerateImplementationFile(std::ostream& os) -{ - // Include the instantiator class header. - os << - "#include \"" << this->ClassName.c_str() << ".h\"\n" - "\n"; - - // Write the extern declarations for all the creation functions. - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << "extern vtkObject* vtkInstantiator" << - this->Classes[i].c_str() << "New();\n"; - } - - // Write the ClassInitialize method to register all the creation functions. - os << - "\n" - "void " << this->ClassName.c_str() << "::ClassInitialize()\n" - "{\n"; - - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << " vtkInstantiator::RegisterInstantiator(\"" - << this->Classes[i].c_str() << "\", vtkInstantiator" - << this->Classes[i].c_str() << "New);\n"; - } - - // Write the ClassFinalize method to unregister all the creation functions. - os << - "}\n" - "\n" - "void " << this->ClassName.c_str() << "::ClassFinalize()\n" - "{\n"; - - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << " vtkInstantiator::UnRegisterInstantiator(\"" - << this->Classes[i].c_str() << "\", vtkInstantiator" - << this->Classes[i].c_str() << "New);\n"; - } - - // Write the constructor and destructor of the initializer class to - // call the ClassInitialize and ClassFinalize methods at the right - // time. - os << - "}\n" - "\n" << - this->ClassName.c_str() << "::" << this->ClassName.c_str() << "()\n" - "{\n" - " if(++" << this->ClassName.c_str() << "::Count == 1)\n" - " { " << this->ClassName.c_str() << "::ClassInitialize(); }\n" - "}\n" - "\n" << - this->ClassName.c_str() << "::~" << this->ClassName.c_str() << "()\n" - "{\n" - " if(--" << this->ClassName.c_str() << "::Count == 0)\n" - " { " << this->ClassName.c_str() << "::ClassFinalize(); }\n" - "}\n" - "\n" - "// Number of translation units that include this class's header.\n" - "// Purposely not initialized. Default is static initialization to 0.\n" - "unsigned int " << this->ClassName.c_str() << "::Count;\n"; -} - -std::string -cmVTKMakeInstantiatorCommand::OldGenerateCreationFileName(unsigned int block) -{ - cmOStringStream nameStr; - nameStr << this->ClassName.c_str() << block << ".cxx"; - std::string result = nameStr.str(); - return result; -} - -// Generates a file that includes the headers of the classes it knows -// how to create and provides functions which create the classes with -// the New() method. -void -cmVTKMakeInstantiatorCommand -::OldGenerateCreationFile(std::ostream& os, unsigned int groupStart, - unsigned int groupSize) -{ - // Need to include header of generated class. - os << - "#include \"" << this->ClassName.c_str() << ".h\"\n" - "\n"; - - // Include class files. - for(unsigned int i=0;i < groupSize;++i) - { - os << "#include \"" << this->Classes[groupStart+i].c_str() << ".h\"\n"; - } - - os << - "\n"; - - // Write the create function implementations. - for(unsigned int i=0;i < groupSize;++i) - { - os << "vtkObject* " << this->ClassName.c_str() << "::Create_" - << this->Classes[groupStart+i].c_str() << "() { return " - << this->Classes[groupStart+i].c_str() << "::New(); }\n"; - } -} - -// Generates the class header file with the definition of the class -// and its initializer class. -void -cmVTKMakeInstantiatorCommand -::OldGenerateHeaderFile(std::ostream& os) -{ - os << - "#ifndef __" << this->ClassName.c_str() << "_h\n" - "#define __" << this->ClassName.c_str() << "_h\n" - "\n" - "#include \"vtkInstantiator.h\"\n"; - for(unsigned int i=0;i < this->Includes.size();++i) - { - os << "#include \"" << this->Includes[i].c_str() << "\"\n"; - } - os << - "\n" - "class " << this->ClassName.c_str() << "Initialize;\n" - "\n" - "class " << this->ExportMacro.c_str() << " " - << this->ClassName.c_str() << "\n" - "{\n" - " friend class " << this->ClassName.c_str() << "Initialize;\n" - "\n" - " static void ClassInitialize();\n" - " static void ClassFinalize();\n" - "\n"; - - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << " static vtkObject* Create_" - << this->Classes[i].c_str() << "();\n"; - } - - // Write the initializer class to make sure the creation functions - // get registered when this generated header is included. - os << - "};\n" - "\n" - "class " << this->ExportMacro.c_str() << " " - << this->ClassName.c_str() << "Initialize\n" - "{\n" - "public:\n" - " " << this->ClassName.c_str() << "Initialize();\n" - " ~" << this->ClassName.c_str() << "Initialize();\n" - "private:\n" - " static unsigned int Count;\n" - "};\n" - "\n" - "static " << this->ClassName.c_str() << "Initialize " - << this->ClassName.c_str() << "Initializer;\n" - "\n" - "#endif\n"; -} - -// Generates the file with the implementation of the class. All -// methods except the actual object creation functions are generated -// here. -void cmVTKMakeInstantiatorCommand -::OldGenerateImplementationFile(std::ostream& os) -{ - // Write the ClassInitialize method to register all the creation functions. - os << - "#include \"" << this->ClassName.c_str() << ".h\"\n" - "\n" - "void " << this->ClassName.c_str() << "::ClassInitialize()\n" - "{\n"; - - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << " vtkInstantiator::RegisterInstantiator(\"" - << this->Classes[i].c_str() << "\", " - << this->ClassName.c_str() << "::Create_" - << this->Classes[i].c_str() << ");\n"; - } - - // Write the ClassFinalize method to unregister all the creation functions. - os << - "}\n" - "\n" - "void " << this->ClassName.c_str() << "::ClassFinalize()\n" - "{\n"; - - for(unsigned int i=0;i < this->Classes.size();++i) - { - os << " vtkInstantiator::UnRegisterInstantiator(\"" - << this->Classes[i].c_str() << "\", " - << this->ClassName.c_str() << "::Create_" - << this->Classes[i].c_str() << ");\n"; - } - - // Write the constructor and destructor of the initializer class to - // call the ClassInitialize and ClassFinalize methods at the right - // time. - os << - "}\n" - "\n" << - this->ClassName.c_str() << "Initialize::" << - this->ClassName.c_str() << "Initialize()\n" - "{\n" - " if(++" << this->ClassName.c_str() << "Initialize::Count == 1)\n" - " { " << this->ClassName.c_str() << "::ClassInitialize(); }\n" - "}\n" - "\n" << - this->ClassName.c_str() << "Initialize::~" << - this->ClassName.c_str() << "Initialize()\n" - "{\n" - " if(--" << this->ClassName.c_str() << "Initialize::Count == 0)\n" - " { " << this->ClassName.c_str() << "::ClassFinalize(); }\n" - "}\n" - "\n" - "// Number of translation units that include this class's header.\n" - "// Purposely not initialized. Default is static initialization to 0.\n" - "unsigned int " << this->ClassName.c_str() << "Initialize::Count;\n"; -} diff --git a/Source/cmVTKMakeInstantiatorCommand.h b/Source/cmVTKMakeInstantiatorCommand.h deleted file mode 100644 index 6eefed9..0000000 --- a/Source/cmVTKMakeInstantiatorCommand.h +++ /dev/null @@ -1,103 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#ifndef cmVTKMakeInstantiatorCommand_h -#define cmVTKMakeInstantiatorCommand_h - -#include "cmCommand.h" - -/** \class cmVTKMakeInstantiatorCommand - * cmVTKMakeInstantiatorCommand implements the VTK_MAKE_INSTANTIATOR - * command. This generates a source file to add to a VTK library that - * registers instance creation functions with vtkInstantiator for every - * class in that library. - */ -class cmVTKMakeInstantiatorCommand : public cmCommand -{ -public: - /** This is a virtual constructor for the command. */ - virtual cmCommand* Clone() - { return new cmVTKMakeInstantiatorCommand; } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ - virtual bool InitialPass(std::vector<std::string> const& args); - - /** The name of the command as specified in CMakeList.txt. */ - virtual const char* GetName() { return "VTK_MAKE_INSTANTIATOR"; } - - /** Succinct documentation. */ - virtual const char* GetTerseDocumentation() - { - return "Deprecated. For use only in VTK 4.0."; - } - - /** More documentation. */ - virtual const char* GetFullDocumentation() - { - return - " VTK_MAKE_INSTANTIATOR(className outSourceList\n" - " src-list1 [src-list2 ..]\n" - " EXPORT_MACRO exportMacro\n" - " [HEADER_LOCATION dir]\n" - " [GROUP_SIZE groupSize]\n" - " [INCLUDES [file1 file2 ..]])\n" - "Generates a new class with the given name and adds its files to the " - "given outSourceList. It registers the classes from the other given " - "source lists with vtkInstantiator when it is loaded. The output " - "source list should be added to the library with the classes it " - "registers. " - "The EXPORT_MACRO argument must be given and followed by the export " - "macro to use when generating the class (ex. VTK_COMMON_EXPORT). " - "The HEADER_LOCATION option must be followed by a path. It specifies " - "the directory in which to place the generated class's header file. " - "The generated class implementation files always go in the build " - "directory corresponding to the CMakeLists.txt file containing " - "the command. This is the default location for the header. " - "The INCLUDES option can be followed by a list of zero or more files. " - "These files will be #included by the generated instantiator header, " - "and can be used to gain access to the specified exportMacro in the " - "C++ code."; - } - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() - { - return true; - } - - cmTypeMacro(cmVTKMakeInstantiatorCommand, cmCommand); - -protected: - std::string ClassName; - std::string ExportMacro; - std::vector<cmStdString> Includes; - std::vector<cmStdString> Classes; - - void GenerateHeaderFile(std::ostream&); - void GenerateImplementationFile(std::ostream&); - - void OldGenerateHeaderFile(std::ostream&); - void OldGenerateImplementationFile(std::ostream&); - std::string OldGenerateCreationFileName(unsigned int group); - void OldGenerateCreationFile(std::ostream&, unsigned int groupStart, - unsigned int groupSize); -}; - - -#endif diff --git a/Source/cmVTKWrapJavaCommand.cxx b/Source/cmVTKWrapJavaCommand.cxx deleted file mode 100644 index 11f0dc6..0000000 --- a/Source/cmVTKWrapJavaCommand.cxx +++ /dev/null @@ -1,199 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#include "cmVTKWrapJavaCommand.h" - -// cmVTKWrapJavaCommand -bool cmVTKWrapJavaCommand::InitialPass(std::vector<std::string> const& argsIn) -{ - if(argsIn.size() < 3 ) - { - this->SetError("called with incorrect number of arguments"); - return false; - } - std::vector<std::string> args; - this->Makefile->ExpandSourceListArguments(argsIn, args, 2); - - // Now check and see if the value has been stored in the cache - // already, if so use that value and don't look for the program - if(!this->Makefile->IsOn("VTK_WRAP_JAVA")) - { - return true; - } - - // what is the current source dir - std::string cdir = this->Makefile->GetCurrentDirectory(); - - // keep the library name - this->LibraryName = args[0]; - this->SourceList = args[1]; - std::string sourceListValue; - // was the list already populated - const char *def = this->Makefile->GetDefinition(this->SourceList.c_str()); - if (def) - { - sourceListValue = def; - } - - // Prepare java dependency file - const char* resultDirectory = - this->Makefile->GetRequiredDefinition("VTK_JAVA_HOME"); - std::string res = this->Makefile->GetCurrentOutputDirectory(); - - std::string depFileName = res + "/JavaDependencies.cmake"; - std::ofstream depFile(depFileName.c_str()); - depFile << "# This file is automatically generated by CMake VTK_WRAP_JAVA" - << std::endl << std::endl; - depFile << - "SET(VTK_JAVA_DEPENDENCIES ${VTK_JAVA_DEPENDENCIES}" << std::endl; - - // get the list of classes for this library - for(std::vector<std::string>::const_iterator j = (args.begin() + 2); - j != args.end(); ++j) - { - cmSourceFile *curr = this->Makefile->GetSource(j->c_str()); - - // if we should wrap the class - if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE")) - { - cmSourceFile file; - file.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - if (curr) - { - file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT")); - } - std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j); - std::string newName = srcName + "Java"; - file.SetName(newName.c_str(), - this->Makefile->GetCurrentOutputDirectory(), "cxx",false); - std::string hname = cdir + "/" + srcName + ".h"; - this->WrapHeaders.push_back(hname); - // add starting depends - file.GetDepends().push_back(hname); - this->WrapClasses.push_back(file); - this->OriginalNames.push_back(srcName); - if (sourceListValue.size() > 0) - { - sourceListValue += ";"; - } - sourceListValue += newName + ".cxx"; - - // Write file to java dependency file - std::string jafaFile = resultDirectory; - jafaFile += "/"; - jafaFile += srcName; - jafaFile += ".java"; - depFile << " " << jafaFile << std::endl; - } - } - - // Finalize java dependency file - depFile << ")" << std::endl; - - this->Makefile->AddDefinition(this->SourceList.c_str(), - sourceListValue.c_str()); - return true; -} - -void cmVTKWrapJavaCommand::FinalPass() -{ - // first we add the rules for all the .h to Java.cxx files - size_t lastClass = this->WrapClasses.size(); - std::vector<std::string> depends; - std::vector<std::string> depends2; - std::vector<std::string> alldepends; - const char* wjava = - this->Makefile->GetRequiredDefinition("VTK_WRAP_JAVA_EXE"); - const char* pjava = - this->Makefile->GetRequiredDefinition("VTK_PARSE_JAVA_EXE"); - const char* hints = this->Makefile->GetDefinition("VTK_WRAP_HINTS"); - const char* resultDirectory = - this->Makefile->GetRequiredDefinition("VTK_JAVA_HOME"); - - // wrap all the .h files - depends.push_back(wjava); - depends2.push_back(pjava); - if(hints) - { - depends.push_back(hints); - depends2.push_back(hints); - } - for(size_t classNum = 0; classNum < lastClass; classNum++) - { - this->Makefile->AddSource(this->WrapClasses[classNum]); - - // wrap java - std::string res = this->Makefile->GetCurrentOutputDirectory(); - res += "/"; - res += this->WrapClasses[classNum].GetSourceName() + ".cxx"; - std::string res2 = resultDirectory; - res2 += "/"; - res2 += this->OriginalNames[classNum]; - res2 += ".java"; - - cmCustomCommandLine commandLineW; - commandLineW.push_back(wjava); - commandLineW.push_back(this->WrapHeaders[classNum]); - if(hints) - { - commandLineW.push_back(hints); - } - commandLineW.push_back((this->WrapClasses[classNum]. - GetPropertyAsBool("ABSTRACT") ? "0" : "1")); - commandLineW.push_back(res); - - cmCustomCommandLines commandLines; - commandLines.push_back(commandLineW); - std::vector<std::string> outputs; - outputs.push_back(res); - const char* no_comment = 0; - this->Makefile->AddCustomCommandOldStyle(this->LibraryName.c_str(), - outputs, - depends, - this->WrapHeaders[classNum].c_str(), - commandLines, - no_comment); - - cmCustomCommandLine commandLineP; - commandLineP.push_back(pjava); - commandLineP.push_back(this->WrapHeaders[classNum]); - if(hints) - { - commandLineP.push_back(hints); - } - commandLineP.push_back((this->WrapClasses[classNum]. - GetPropertyAsBool("ABSTRACT") ? "0" : "1")); - commandLineP.push_back(res2); - - cmCustomCommandLines commandLines2; - commandLines2.push_back(commandLineP); - std::vector<std::string> outputs2; - outputs2.push_back(res2); - this->Makefile->AddCustomCommandOldStyle(this->LibraryName.c_str(), - outputs2, - depends2, - this->WrapHeaders[classNum].c_str(), - commandLines2, - no_comment); - alldepends.push_back(res2); - } - - const char* no_working_directory = 0; - this->Makefile->AddUtilityCommand( - (this->LibraryName+"JavaClasses").c_str(), - true, alldepends, no_working_directory, ""); -} diff --git a/Source/cmVTKWrapJavaCommand.h b/Source/cmVTKWrapJavaCommand.h deleted file mode 100644 index 419e399..0000000 --- a/Source/cmVTKWrapJavaCommand.h +++ /dev/null @@ -1,96 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#ifndef cmVTKWrapJavaCommand_h -#define cmVTKWrapJavaCommand_h - -#include "cmCommand.h" - -#include "cmSourceFile.h" - -/** \class cmVTKWrapJavaCommand - * \brief Create Java Language bindings for classes - * - * cmVTKWrapJavaCommand is used to create wrappers for classes into Java - */ -class cmVTKWrapJavaCommand : public cmCommand -{ -public: - cmTypeMacro(cmVTKWrapJavaCommand, cmCommand); - - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmVTKWrapJavaCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ - virtual bool InitialPass(std::vector<std::string> const& args); - - /** - * This is called at the end after all the information - * specified by the command is accumulated. Most commands do - * not implement this method. At this point, reading and - * writing to the cache can be done. - */ - virtual void FinalPass(); - - /** - * The name of the command as specified in CMakeList.txt. - */ - virtual const char* GetName() { return "VTK_WRAP_JAVA";} - - /** - * Succinct documentation. - */ - virtual const char* GetTerseDocumentation() - { - return "Deprecated. For use only in VTK 4.0."; - } - - /** - * More documentation. - */ - virtual const char* GetFullDocumentation() - { - return - " VTK_WRAP_JAVA(resultingLibraryName SourceListName\n" - " class1 class2 ...)\n" - "Create Java wrappers for VTK classes."; - } - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() - { - return true; - } - -private: - std::vector<cmSourceFile> WrapClasses; - std::vector<std::string> WrapHeaders; - std::vector<std::string> OriginalNames; - std::string LibraryName; - std::string SourceList; -}; - - - -#endif diff --git a/Source/cmVTKWrapPythonCommand.cxx b/Source/cmVTKWrapPythonCommand.cxx deleted file mode 100644 index 9b3ea35..0000000 --- a/Source/cmVTKWrapPythonCommand.cxx +++ /dev/null @@ -1,262 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#include "cmVTKWrapPythonCommand.h" - -// cmVTKWrapPythonCommand -bool cmVTKWrapPythonCommand::InitialPass(std::vector<std::string> const& - argsIn) -{ - if(argsIn.size() < 3 ) - { - this->SetError("called with incorrect number of arguments"); - return false; - } - std::vector<std::string> args; - this->Makefile->ExpandSourceListArguments(argsIn, args, 2); - - // Now check and see if the value has been stored in the cache - // already, if so use that value and don't look for the program - if(!this->Makefile->IsOn("VTK_WRAP_PYTHON")) - { - return true; - } - - - // what is the current source dir - std::string cdir = this->Makefile->GetCurrentDirectory(); - - // keep the library name - this->LibraryName = args[0]; - this->SourceList = args[1]; - std::string sourceListValue; - // was the list already populated - const char *def = this->Makefile->GetDefinition(this->SourceList.c_str()); - if (def) - { - sourceListValue = def; - sourceListValue += ";"; - } - - // Create the init file - std::string res = this->LibraryName; - res += "Init.cxx"; - - // add the init file - std::string initName = this->LibraryName; - initName += "Init"; - sourceListValue += initName + ".cxx"; - - // get the list of classes for this library - for(std::vector<std::string>::iterator j = (args.begin() + 2); - j != args.end(); ++j) - { - cmSourceFile *curr = this->Makefile->GetSource(j->c_str()); - - // if we should wrap the class - if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE")) - { - cmSourceFile file; - file.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - if (curr) - { - file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT")); - } - std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j); - std::string newName = srcName + "Python"; - file.SetName(newName.c_str(), - this->Makefile->GetCurrentOutputDirectory(), - "cxx",false); - std::string hname = cdir + "/" + srcName + ".h"; - this->WrapHeaders.push_back(hname); - // add starting depends - file.GetDepends().push_back(hname); - this->WrapClasses.push_back(file); - sourceListValue += ";"; - sourceListValue += newName + ".cxx"; - } - } - - cmSourceFile cfile; - cfile.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - cfile.SetProperty("ABSTRACT","0"); - this->CreateInitFile(res); - cfile.SetName(initName.c_str(), this->Makefile->GetCurrentOutputDirectory(), - "cxx",false); - this->Makefile->AddSource(cfile); - this->Makefile->AddDefinition(this->SourceList.c_str(), - sourceListValue.c_str()); - return true; -} - -void cmVTKWrapPythonCommand::FinalPass() -{ - // first we add the rules for all the .h to Python.cxx files - size_t lastClass = this->WrapClasses.size(); - std::vector<std::string> depends; - const char* wpython = - this->Makefile->GetRequiredDefinition("VTK_WRAP_PYTHON_EXE"); - const char* hints = this->Makefile->GetDefinition("VTK_WRAP_HINTS"); - - // wrap all the .h files - depends.push_back(wpython); - if(hints) - { - depends.push_back(hints); - } - for(size_t classNum = 0; classNum < lastClass; classNum++) - { - this->Makefile->AddSource(this->WrapClasses[classNum]); - std::string res = this->Makefile->GetCurrentOutputDirectory(); - res += "/"; - res += this->WrapClasses[classNum].GetSourceName() + ".cxx"; - cmCustomCommandLine commandLine; - commandLine.push_back(wpython); - commandLine.push_back(this->WrapHeaders[classNum]); - if(hints) - { - commandLine.push_back(hints); - } - commandLine.push_back((this->WrapClasses[classNum]. - GetPropertyAsBool("ABSTRACT") ? "0" : "1")); - commandLine.push_back(res); - - cmCustomCommandLines commandLines; - commandLines.push_back(commandLine); - std::vector<std::string> outputs; - outputs.push_back(res); - const char* no_comment = 0; - this->Makefile->AddCustomCommandOldStyle(this->LibraryName.c_str(), - outputs, - depends, - this->WrapHeaders[classNum].c_str(), - commandLines, - no_comment); - } -} - -bool cmVTKWrapPythonCommand::CreateInitFile(std::string& res) -{ - std::vector<std::string> classes; - size_t lastClass = this->WrapHeaders.size(); - size_t classNum; - for(classNum = 0; classNum < lastClass; classNum++) - { - std::string cls = this->WrapHeaders[classNum]; - cls = cls.substr(0,cls.size()-2); - std::string::size_type pos = cls.rfind('/'); - if(pos != std::string::npos) - { - cls = cls.substr(pos+1); - } - classes.push_back(cls); - } - - // open the init file - std::string outFileName = - this->Makefile->GetCurrentOutputDirectory(); - outFileName += "/" + res; - - return this->WriteInit(this->LibraryName.c_str(), outFileName, classes); -} - - -/* warning this code is also in getclasses.cxx under pcmaker */ -bool cmVTKWrapPythonCommand::WriteInit(const char *kitName, - std::string& outFileName, - std::vector<std::string>& classes) -{ - unsigned int i; - - std::string tempOutputFile = outFileName + ".tmp"; - FILE *fout = fopen(tempOutputFile.c_str(),"w"); - if (!fout) - { - cmSystemTools::ReportLastSystemError("cmVTKWrapPythonCommand error:"); - return false; - } - - fprintf(fout,"// Generated by cmVTKWrapPythonCommand in CMake\n\n"); - fprintf(fout,"#include <string.h>\n"); - fprintf(fout,"#include \"Python.h\"\n\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 < classes.size(); i++) - { -#ifdef _WIN32 - fprintf(fout, "extern \"C\" {__declspec( dllexport) " - "PyObject *PyVTKClass_%sNew(char *); }\n", classes[i].c_str()); -#else - fprintf(fout,"extern \"C\" {PyObject *PyVTKClass_%sNew(char *); }\n", - classes[i].c_str()); -#endif - } - - fprintf(fout,"\nstatic PyMethodDef Py%s_ClassMethods[] = {\n", - kitName); - fprintf(fout,"{NULL, NULL, 0, NULL}};\n\n"); - -#ifdef _WIN32 - fprintf(fout,"extern \"C\" {__declspec( dllexport) void init%s();}\n\n", - kitName); - fprintf(fout,"void init%s()\n{\n",kitName); -#else - fprintf(fout,"extern \"C\" {void initlib%s();}\n\n",kitName); - fprintf(fout,"void initlib%s()\n{\n",kitName); -#endif - - - /* module init function */ - fprintf(fout," PyObject *m, *d, *c;\n\n"); -#ifdef _WIN32 - fprintf(fout," static char modulename[] = \"%s\";\n",kitName); -#else - fprintf(fout," static char modulename[] = \"lib%s\";\n",kitName); -#endif - fprintf(fout," m = Py_InitModule(modulename, Py%s_ClassMethods);\n", - kitName); - - fprintf(fout," d = PyModule_GetDict(m);\n"); - fprintf(fout," if (!d) Py_FatalError" - "(\"can't get dictionary for module %s!\");\n\n", kitName); - - for (i = 0; i < classes.size(); i++) - { - fprintf(fout," if ((c = PyVTKClass_%sNew(modulename)))\n", - classes[i].c_str()); - fprintf(fout," if (-1 == PyDict_SetItemString(d, \"%s\", c))\n", - classes[i].c_str()); - fprintf(fout, - " Py_FatalError(\"can't add class %s to dictionary!\");\n\n", - classes[i].c_str()); - } - fprintf(fout,"}\n\n"); - fclose(fout); - - - // copy the file if different - cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(), - outFileName.c_str()); - cmSystemTools::RemoveFile(tempOutputFile.c_str()); - return true; -} - - diff --git a/Source/cmVTKWrapPythonCommand.h b/Source/cmVTKWrapPythonCommand.h deleted file mode 100644 index b9f4e69..0000000 --- a/Source/cmVTKWrapPythonCommand.h +++ /dev/null @@ -1,102 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#ifndef cmVTKWrapPythonCommand_h -#define cmVTKWrapPythonCommand_h - -#include "cmCommand.h" - -#include "cmSourceFile.h" - -/** \class cmVTKWrapPythonCommand - * \brief Create Python Language bindings for classes - * - * cmVTKWrapPythonCommand is used to create wrappers for classes into Python - */ -class cmVTKWrapPythonCommand : public cmCommand -{ -public: - cmTypeMacro(cmVTKWrapPythonCommand, cmCommand); - - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmVTKWrapPythonCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ - virtual bool InitialPass(std::vector<std::string> const& args); - - /** - * This is called at the end after all the information - * specified by the command is accumulated. Most commands do - * not implement this method. At this point, reading and - * writing to the cache can be done. - */ - virtual void FinalPass(); - - /** - * The name of the command as specified in CMakeList.txt. - */ - virtual const char* GetName() { return "VTK_WRAP_PYTHON";} - - /** - * Succinct documentation. - */ - virtual const char* GetTerseDocumentation() - { - return "Deprecated. For use only in VTK 4.0."; - } - - /** - * More documentation. - */ - virtual const char* GetFullDocumentation() - { - return - " VTK_WRAP_PYTHON(resultingLibraryName SourceListName\n" - " class1 class2 ...)\n" - "Create Python wrappers for VTK classes."; - } - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() - { - return true; - } - - /** - * Helper methods - */ - virtual bool CreateInitFile(std::string &name); - virtual bool WriteInit(const char *kitName, std::string& outFileName, - std::vector<std::string>& classes); - -private: - std::vector<cmSourceFile> WrapClasses; - std::vector<std::string> WrapHeaders; - std::string LibraryName; - std::string SourceList; -}; - - - -#endif diff --git a/Source/cmVTKWrapTclCommand.cxx b/Source/cmVTKWrapTclCommand.cxx deleted file mode 100644 index 57e3f99..0000000 --- a/Source/cmVTKWrapTclCommand.cxx +++ /dev/null @@ -1,388 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#include "cmVTKWrapTclCommand.h" - -// cmVTKWrapTclCommand -bool cmVTKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn) -{ - if(argsIn.size() < 3 ) - { - this->SetError("called with incorrect number of arguments"); - return false; - } - std::vector<std::string> args; - - // keep the library name - this->LibraryName = argsIn[0]; - - if (argsIn[1] == std::string("SOURCES")) - { - this->Makefile->ExpandSourceListArguments(argsIn, args, 3); - } - else - { - this->Makefile->ExpandSourceListArguments(argsIn, args, 2); - } - - // Now check and see if the value has been stored in the cache - // already, if so use that value and don't look for the program - if(!this->Makefile->IsOn("VTK_WRAP_TCL")) - { - return true; - } - - // extract the sources and commands parameters - std::vector<std::string> sources; - bool doing_sources = true; - - for(std::vector<std::string>::const_iterator j = (args.begin() + 1); - j != args.end(); ++j) - { - if(*j == "SOURCES") - { - doing_sources = true; - } - else if (*j == "COMMANDS") - { - doing_sources = false; - } - else - { - if(doing_sources) - { - sources.push_back(*j); - } - else - { - this->Commands.push_back(*j); - } - } - } - - // get the list of classes for this library - if (sources.size()) - { - // what is the current source dir - std::string cdir = this->Makefile->GetCurrentDirectory(); - - // get the resulting source list name - this->SourceList = sources[0]; - std::string sourceListValue; - - // was the list already populated - const char *def = - this->Makefile->GetDefinition(this->SourceList.c_str()); - if (def) - { - sourceListValue = def; - sourceListValue += ";"; - } - - // Create the init file - std::string res = this->LibraryName; - res += "Init.cxx"; - sourceListValue += res; - - for(std::vector<std::string>::iterator j = (sources.begin() + 1); - j != sources.end(); ++j) - { - cmSourceFile *curr = this->Makefile->GetSource(j->c_str()); - - // if we should wrap the class - if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE")) - { - cmSourceFile file; - file.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - std::string srcDir = cdir; - if (curr) - { - file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT")); - srcDir = cmSystemTools::GetFilenamePath(curr->GetFullPath()); - } - std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j); - std::string newName = srcName + "Tcl"; - std::string hname = srcDir + "/" + srcName + ".h"; - file.SetName(newName.c_str(), - this->Makefile->GetCurrentOutputDirectory(), - "cxx",false); - this->WrapHeaders.push_back(hname); - // add starting depends - file.GetDepends().push_back(hname); - this->WrapClasses.push_back(file); - sourceListValue += ";"; - sourceListValue += newName + ".cxx"; - } - } - // add the init file - cmSourceFile cfile; - cfile.GetProperties().SetCMakeInstance - (this->Makefile->GetCMakeInstance()); - cfile.SetProperty("ABSTRACT","0"); - std::string newName = this->LibraryName; - newName += "Init"; - this->CreateInitFile(res); - cfile.SetName(newName.c_str(), - this->Makefile->GetCurrentOutputDirectory(), - "cxx",false); - this->Makefile->AddSource(cfile); - this->Makefile->AddDefinition(this->SourceList.c_str(), - sourceListValue.c_str()); - } - - return true; -} - -void cmVTKWrapTclCommand::FinalPass() -{ - // first we add the rules for all the .h to Tcl.cxx files - size_t lastClass = this->WrapClasses.size(); - std::vector<std::string> depends; - const char* wtcl = - this->Makefile->GetRequiredDefinition("VTK_WRAP_TCL_EXE"); - const char* hints = this->Makefile->GetDefinition("VTK_WRAP_HINTS"); - - // wrap all the .h files - depends.push_back(wtcl); - if(hints) - { - depends.push_back(hints); - } - for(size_t classNum = 0; classNum < lastClass; classNum++) - { - this->Makefile->AddSource(this->WrapClasses[classNum]); - cmCustomCommandLine commandLine; - commandLine.push_back(wtcl); - commandLine.push_back(this->WrapHeaders[classNum]); - if(hints) - { - commandLine.push_back(hints); - } - commandLine.push_back((this->WrapClasses[classNum]. - GetPropertyAsBool("ABSTRACT") ? "0" : "1")); - std::string res = this->Makefile->GetCurrentOutputDirectory(); - res += "/"; - res += this->WrapClasses[classNum].GetSourceName() + ".cxx"; - commandLine.push_back(res); - - cmCustomCommandLines commandLines; - commandLines.push_back(commandLine); - std::vector<std::string> outputs; - outputs.push_back(res); - const char* no_comment = 0; - this->Makefile->AddCustomCommandOldStyle(this->LibraryName.c_str(), - outputs, - depends, - this->WrapHeaders[classNum].c_str(), - commandLines, - no_comment); - } -} - -bool cmVTKWrapTclCommand::CreateInitFile(std::string& res) -{ - /* we have to make sure that the name is the correct case */ - std::string kitName = cmSystemTools::Capitalized(this->LibraryName); - - std::vector<std::string> classes; - size_t lastClass = this->WrapHeaders.size(); - size_t classNum; - for(classNum = 0; classNum < lastClass; classNum++) - { - if (!this->WrapClasses[classNum].GetPropertyAsBool("ABSTRACT")) - { - std::string cls = this->WrapHeaders[classNum]; - cls = cls.substr(0,cls.size()-2); - std::string::size_type pos = cls.rfind('/'); - if(pos != std::string::npos) - { - cls = cls.substr(pos+1); - } - classes.push_back(cls); - } - } - - // open the init file - std::string outFileName = - this->Makefile->GetCurrentOutputDirectory(); - outFileName += "/" + res; - - return this->WriteInit(kitName.c_str(), outFileName, classes); -} - - -/* warning this code is also in getclasses.cxx under pcmaker */ -bool cmVTKWrapTclCommand::WriteInit(const char *kitName, - std::string& outFileName, - std::vector<std::string>& classes) -{ - unsigned int i; - std::string tempOutputFile = outFileName + ".tmp"; - FILE *fout = fopen(tempOutputFile.c_str(),"w"); - if (!fout) - { - cmSystemTools::Error("Failed to open TclInit file for ", - tempOutputFile.c_str()); - cmSystemTools::ReportLastSystemError(""); - return false; - } - - // capitalized commands just once - std::vector<std::string> capcommands; - for (i = 0; i < this->Commands.size(); i++) - { - capcommands.push_back(cmSystemTools::Capitalized(this->Commands[i])); - } - - fprintf(fout,"#include \"vtkTclUtil.h\"\n"); - fprintf(fout,"#include \"vtkVersion.h\"\n"); - fprintf(fout,"#define VTK_TCL_TO_STRING(x) VTK_TCL_TO_STRING0(x)\n"); - fprintf(fout,"#define VTK_TCL_TO_STRING0(x) #x\n"); - - fprintf(fout, - "extern \"C\"\n" - "{\n" - "#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4) " - "&& (TCL_RELEASE_LEVEL >= TCL_FINAL_RELEASE)\n" - " typedef int (*vtkTclCommandType)(ClientData, Tcl_Interp *," - "int, CONST84 char *[]);\n" - "#else\n" - " typedef int (*vtkTclCommandType)(ClientData, Tcl_Interp *," - "int, char *[]);\n" - "#endif\n" - "}\n" - "\n"); - - for (i = 0; i < classes.size(); i++) - { - fprintf(fout,"int %sCommand(ClientData cd, Tcl_Interp *interp,\n" - ,classes[i].c_str()); - fprintf(fout," int argc, char *argv[]);\n"); - fprintf(fout,"ClientData %sNewCommand();\n",classes[i].c_str()); - } - - if (!strcmp(kitName,"Vtkcommontcl")) - { - fprintf(fout,"int vtkCommand(ClientData cd, Tcl_Interp *interp,\n" - " int argc, char *argv[]);\n"); - fprintf(fout,"\nTcl_HashTable vtkInstanceLookup;\n"); - fprintf(fout,"Tcl_HashTable vtkPointerLookup;\n"); - fprintf(fout,"Tcl_HashTable vtkCommandLookup;\n"); - fprintf(fout,"int vtkCommandForward(ClientData cd, Tcl_Interp *interp,\n" - " int argc, char *argv[]){\n" - " return vtkCommand(cd, interp, argc, argv);\n" - "}\n"); - } - else - { - fprintf(fout,"\nextern Tcl_HashTable vtkInstanceLookup;\n"); - fprintf(fout,"extern Tcl_HashTable vtkPointerLookup;\n"); - fprintf(fout,"extern Tcl_HashTable vtkCommandLookup;\n"); - } - fprintf(fout,"extern void vtkTclDeleteObjectFromHash(void *);\n"); - fprintf(fout,"extern void vtkTclListInstances(Tcl_Interp *interp," - "ClientData arg);\n"); - - for (i = 0; i < this->Commands.size(); i++) - { - fprintf(fout, - "\nextern \"C\" {int VTK_EXPORT %s_Init(Tcl_Interp *interp);}\n", - capcommands[i].c_str()); - } - - fprintf(fout,"\n\nextern \"C\" {int VTK_EXPORT " - "%s_SafeInit(Tcl_Interp *interp);}\n", kitName); - fprintf(fout,"\nextern \"C\" {int VTK_EXPORT %s_Init" - "(Tcl_Interp *interp);}\n", kitName); - - /* create an extern ref to the generic delete function */ - fprintf(fout,"\nextern void vtkTclGenericDeleteObject(ClientData cd);\n"); - - if (!strcmp(kitName,"Vtkcommontcl")) - { - fprintf(fout,"extern \"C\"\n{\nvoid " - "vtkCommonDeleteAssocData(ClientData cd)\n"); - fprintf(fout," {\n"); - fprintf(fout," vtkTclInterpStruct *tis = " - "static_cast<vtkTclInterpStruct*>(cd);\n"); - fprintf(fout," delete tis;\n }\n}\n"); - } - - /* the main declaration */ - fprintf(fout, - "\n\nint VTK_EXPORT %s_SafeInit(Tcl_Interp *interp)\n{\n",kitName); - fprintf(fout," return %s_Init(interp);\n}\n",kitName); - - fprintf(fout,"\n\nint VTK_EXPORT %s_Init(Tcl_Interp *interp)\n{\n", - kitName); - if (!strcmp(kitName,"Vtkcommontcl")) - { - fprintf(fout, - " vtkTclInterpStruct *info = new vtkTclInterpStruct;\n"); - fprintf(fout, - " info->Number = 0; info->InDelete = 0; info->DebugOn = 0;\n"); - fprintf(fout,"\n"); - fprintf(fout,"\n"); - fprintf(fout, - " Tcl_InitHashTable(&info->InstanceLookup, TCL_STRING_KEYS);\n"); - fprintf(fout, - " Tcl_InitHashTable(&info->PointerLookup, TCL_STRING_KEYS);\n"); - fprintf(fout, - " Tcl_InitHashTable(&info->CommandLookup, TCL_STRING_KEYS);\n"); - fprintf(fout, " Tcl_SetAssocData(interp,(char *) " - "\"vtk\",NULL,(ClientData *)info);\n"); - fprintf(fout, " Tcl_CreateExitHandler(vtkCommonDeleteAssocData" - ",(ClientData *)info);\n"); - - /* create special vtkCommand command */ - fprintf(fout, - " Tcl_CreateCommand(interp,(char *) \"vtkCommand\",\n" - " reinterpret_cast<vtkTclCommandType>(" - "vtkCommandForward),\n" - " (ClientData *)NULL, NULL);\n\n"); - } - - for (i = 0; i < this->Commands.size(); i++) - { - fprintf(fout," %s_Init(interp);\n", capcommands[i].c_str()); - } - fprintf(fout,"\n"); - - for (i = 0; i < classes.size(); i++) - { - fprintf(fout," vtkTclCreateNew(interp,(char *) \"%s\", %sNewCommand,\n", - classes[i].c_str(), classes[i].c_str()); - fprintf(fout," %sCommand);\n",classes[i].c_str()); - } - - fprintf(fout," char pkgName[]=\"%s\";\n", this->LibraryName.c_str()); - fprintf(fout," char pkgVers[]=VTK_TCL_TO_STRING(VTK_MAJOR_VERSION)" - " \".\" " - "VTK_TCL_TO_STRING(VTK_MINOR_VERSION);\n"); - fprintf(fout," Tcl_PkgProvide(interp, pkgName, pkgVers);\n"); - fprintf(fout," return TCL_OK;\n}\n"); - fclose(fout); - - // copy the file if different - cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(), - outFileName.c_str()); - cmSystemTools::RemoveFile(tempOutputFile.c_str()); - - return true; -} - - diff --git a/Source/cmVTKWrapTclCommand.h b/Source/cmVTKWrapTclCommand.h deleted file mode 100644 index 4fa061e..0000000 --- a/Source/cmVTKWrapTclCommand.h +++ /dev/null @@ -1,105 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html 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 notices for more information. - -=========================================================================*/ -#ifndef cmVTKWrapTclCommand_h -#define cmVTKWrapTclCommand_h - -#include "cmCommand.h" - -#include "cmSourceFile.h" - -/** \class cmVTKWrapTclCommand - * \brief Create Tcl Wrappers for VTK classes. - * - * cmVTKWrapTclCommand is used to define a CMake variable include - * path location by specifying a file and list of directories. - */ -class cmVTKWrapTclCommand : public cmCommand -{ -public: - cmTypeMacro(cmVTKWrapTclCommand, cmCommand); - - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmVTKWrapTclCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ - virtual bool InitialPass(std::vector<std::string> const& args); - - /** - * This is called at the end after all the information - * specified by the command is accumulated. Most commands do - * not implement this method. At this point, reading and - * writing to the cache can be done. - */ - virtual void FinalPass(); - - /** - * The name of the command as specified in CMakeList.txt. - */ - virtual const char* GetName() { return "VTK_WRAP_TCL";} - - /** - * Succinct documentation. - */ - virtual const char* GetTerseDocumentation() - { - return "Deprecated. For use only in VTK 4.0."; - } - - /** - * More documentation. - */ - virtual const char* GetFullDocumentation() - { - return - " VTK_WRAP_TCL(resultingLibraryName [SOURCES]\n" - " SourceListName class1 class2 ...\n" - " [COMMANDS CommandName1 CommandName2 ...])\n" - "Create Tcl wrappers for VTK classes."; - } - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() - { - return true; - } - - /** - * Helper methods - */ - virtual bool CreateInitFile(std::string &name); - virtual bool WriteInit(const char *kitName, std::string& outFileName, - std::vector<std::string>& classes); - -private: - std::vector<cmSourceFile> WrapClasses; - std::vector<std::string> WrapHeaders; - std::string LibraryName; - std::string SourceList; - std::vector<std::string> Commands; -}; - - - -#endif |