SimpleString Test::getFormattedName() const { const char* format = "%s(%s, %s)"; char *stage = new char [strlen(format) - (3 * strlen("%s")) + getMacroName().size() + group_.size () + name_.size () + 1]; sprintf(stage, format, getMacroName().asCharString(), group_.asCharString(), name_.asCharString()); SimpleString formattedName(stage); delete[] stage; return formattedName; }
SimpleString UtestShell::getFormattedName() const { SimpleString formattedName(getMacroName()); formattedName += "("; formattedName += group_; formattedName += ", "; formattedName += name_; formattedName += ")"; return formattedName; }
//功能:处理无用宏 void uselessMacro() { int i=0; string temp = ""; string single[255] = {""}; string macroName = ""; for(i=0; i<cmdCount; i++) { temp = command[i]; if(checkDef(temp)) // 如果是宏定义语句 { macroName = getMacroName(temp); // 得到宏名 if(1 == getMacroCount(macroName)) // 宏出现次数等于1则是没有用过 { errNum[errLen] = i+1; errType[errLen] = 5; errLen++; } } } }
bool SpriteState::exportSprite(const QString& filename, const QString& outputDir_, const QString &postpScript, SpriteStateError* err) const { setError(err, ErrNone); QFileInfo fileInfo(filename); QString outputDir; if (!outputDir_.isEmpty()) { outputDir = outputDir_; } else { outputDir = fileInfo.path(); } QString binFileName = outputDir + QDir::separator() + fileInfo.baseName() + ".lkob"; QString textFileName = outputDir + QDir::separator() + fileInfo.baseName() + ".lkot"; QString headerFileName = outputDir + QDir::separator() + "AnimNameDef_" + fileInfo.baseName() + ".h"; QFile binOutput(binFileName); QFile textOutput(textFileName); QFile headerOutput(headerFileName); if (binOutput.exists()) { if (!binOutput.remove()) { qDebug() << "Error: SpriteState::exportSprite():" << binOutput.fileName() << "already exists and cannot be removed"; setError(err, ErrCantOpenReadWriteMode); return false; } } if (!binOutput.open(QFile::WriteOnly | QFile::Append)) { qDebug() << "Error: SpriteState::exportSprite(): could not open " << binOutput.fileName() << " in WriteOnly mode"; setError(err, ErrCantOpenReadWriteMode); return false; } if (!textOutput.open(QFile::WriteOnly | QFile::Text)) { qDebug() << "Error: SpriteState::exportSprite(): could not open " << textOutput.fileName() << " in WriteOnly mode"; setError(err, ErrCantOpenReadWriteMode); return false; } if (!headerOutput.open(QFile::WriteOnly | QFile::Text)) { qDebug() << "Error: SpriteState::exportSprite(): could not open " << headerOutput.fileName() << " in WriteOnly mode"; setError(err, ErrCantOpenReadWriteMode); return false; } ///////////////////////////////////////////////////////////////////////////////// // Export bin and text file QTextStream textStream(&textOutput); textStream << "### Exported LvkSprite ################################\n"; textStream << "Exported LvkSprite version 0.1\n\n"; textStream << "# Frame Pixmaps\n"; textStream << "# format: frameId,offset(bytes),length(bytes)\n"; textStream << "fpixmaps(\n"; qint64 prevOffset = 0; /* previous offset */ qint64 offset = 0; for (QMapIterator<Id, LvkFrame> it(_frames); it.hasNext();) { LvkFrame frame = it.next().value(); // export only those frames that are used at least in one animation if (!isFrameUnused(frame.id)) { prevOffset = offset; writeImageWithPostprocessing(binOutput, frame, postpScript); offset = binOutput.size(); textStream << "\t" << frame.id << "," << prevOffset << "," << (offset - prevOffset) << "\n"; } else { qDebug() << "Omitting unused frame " << frame.id; } } textStream << ")\n\n"; binOutput.close(); textStream << "# Animations\n"; textStream << "# format: animationId,name\n"; textStream << "# Animation frames\n"; textStream << "# format: aframeId,frameId,delay,ox,oy,sticky\n"; textStream << "animations(\n"; for (QMapIterator<Id, LvkAnimation> it(_animations); it.hasNext();) { it.next(); textStream << "\t" << it.value().toString() << "\n"; textStream << "\taframes(\n"; for (QListIterator<LvkAframe> it2(it.value()._aframes); it2.hasNext();) { textStream << "\t\t" << it2.next().toString() << "\n"; } textStream << "\t)\n\n"; } textStream << ")\n\n"; textStream << "### End Exported LvkSprite ############################\n"; textOutput.close(); ///////////////////////////////////////////////////////////////////////////////// // Export header file QString headerFileMacroName = "__" + getMacroName(headerFileName) + "__"; QTextStream headerStream(&headerOutput); headerStream << "// File autogenerated by " HEADER_LATEST "\n"; headerStream << "// -- DO NOT EDIT OR MODIFY THIS FILE --\n\n"; headerStream << "#ifndef " << headerFileMacroName << "\n"; headerStream << "#define " << headerFileMacroName << "\n\n"; for (QMapIterator<Id, LvkAnimation> it(_animations); it.hasNext();) { it.next(); headerStream << "#define ANIM_" << getMacroName(it.value().name) << "\t\t\t\"" << it.value().name << "\"\n"; headerStream << "#define ANIM_" << getMacroName(it.value().name) << "_FLAGS\t\t\t 0x" << QString::number(it.value().flags, 16) << "\n"; } headerStream << "\n"; if (!_customHeader.isEmpty()) { headerStream << "////////////////////////////////////////////////\n"; headerStream << "// starting custom header data\n\n"; headerStream << _customHeader << "\n"; headerStream << "// end custom header data\n"; headerStream << "////////////////////////////////////////////////\n"; headerStream << "\n"; headerStream << "\n"; } headerStream << "#endif //" << headerFileMacroName << "\n"; headerOutput.close(); return true; }