void MSBuildProvider::writeFileListToProject(const FileNode &dir, std::ofstream &projectFile, const int, const StringList &duplicate, const std::string &objPrefix, const std::string &filePrefix) { // Reset lists _filters.clear(); _compileFiles.clear(); _includeFiles.clear(); _otherFiles.clear(); _resourceFiles.clear(); _asmFiles.clear(); // Compute the list of files _filters.push_back(""); // init filters computeFileList(dir, duplicate, objPrefix, filePrefix); _filters.pop_back(); // remove last empty filter // Output compile files if (!_compileFiles.empty()) { projectFile << "\t<ItemGroup>\n"; for (std::list<FileEntry>::const_iterator entry = _compileFiles.begin(); entry != _compileFiles.end(); ++entry) { const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), (*entry).name + ".o") != duplicate.end()); // Deal with duplicated file names if (isDuplicate) { projectFile << "\t\t<ClCompile Include=\"" << (*entry).path << "\">\n" "\t\t\t<ObjectFileName>$(IntDir)" << (*entry).prefix << "%(Filename).obj</ObjectFileName>\n"; projectFile << "\t\t</ClCompile>\n"; } else { projectFile << "\t\t<ClCompile Include=\"" << (*entry).path << "\" />\n"; } } projectFile << "\t</ItemGroup>\n"; } // Output include, other and resource files outputFiles(projectFile, _includeFiles, "ClInclude"); outputFiles(projectFile, _otherFiles, "None"); outputFiles(projectFile, _resourceFiles, "ResourceCompile"); // Output asm files if (!_asmFiles.empty()) { projectFile << "\t<ItemGroup>\n"; for (std::list<FileEntry>::const_iterator entry = _asmFiles.begin(); entry != _asmFiles.end(); ++entry) { const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), (*entry).name + ".o") != duplicate.end()); projectFile << "\t\t<CustomBuild Include=\"" << (*entry).path << "\">\n" "\t\t\t<FileType>Document</FileType>\n"; outputNasmCommand(projectFile, "Debug", (isDuplicate ? (*entry).prefix : "")); outputNasmCommand(projectFile, "Analysis", (isDuplicate ? (*entry).prefix : "")); outputNasmCommand(projectFile, "Release", (isDuplicate ? (*entry).prefix : "")); outputNasmCommand(projectFile, "LLVM", (isDuplicate ? (*entry).prefix : "")); projectFile << "\t\t</CustomBuild>\n"; } projectFile << "\t</ItemGroup>\n"; } }
void Grammar::process( void ) { RuleTable::get()->findPrecedences(); /// Compute the lambda-nonterminals and the first-sets for every /// nonterminal findFirstSets(); // Compute all LR(0) states. Also record follow-set propagation // links so that the follow-set can be computed later findStates(); // Tie up loose ends on the propagation links findLinks(); // Compute the follow set of every reducible configuration findFollowSets(); // Compute the action tables findActions(); // Compress the action tables if ( isCompressActions() ) compressTables(); // Generate a report of the parser generated. (the "y.output" file) */ if ( ! isQuiet() ) reportOutput(); // Generate the source code for the parser outputFiles(); }
/*! \internal Returns true if file names for \a input and \a output are the same. */ bool SpdrImportPrivate::areFilesTheSame(const QString &input, const QString &output) const { Q_Q(const SpdrImport); QFileInfo outputInfo(output); if (!outputInfo.exists()) { if (q->isSuffixCaseSensitive()) { return false; } else { SpdrFileData inputData(input, q->inputPath(), SpdrFileData::ShallowSearch, q); QDir outputDir(output); outputDir.cdUp(); QFileInfoList outputFiles(outputDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot)); foreach (const QFileInfo &file, outputFiles) { if (file.baseName() != outputInfo.baseName()) { continue; } SpdrFileData outputData(file.absoluteFilePath(), "", SpdrFileData::ShallowSearch, q); if (inputData.isEqual(outputData, q->isSuffixCaseSensitive())) { return true; } else { continue; } } } return false; } SpdrFileData inputData(input, q->inputPath(), SpdrFileData::ShallowSearch, q); SpdrFileData outputData(output, q->inputPath(), SpdrFileData::ShallowSearch, q); if (inputData.isEqual(outputData, q->isSuffixCaseSensitive())) { return true; } return false; }