void BlockFileReader::loadDict() { QString dictFile = m_baseFilename + ".dict"; QFile dfile(dictFile); dfile.open(QIODevice::ReadOnly); QDataStream in(&dfile); in >> m_minLevel; for(int ib=0; ib<m_minLevel; ib++) { in >> m_uniform[ib]; in >> m_fileBlocks[ib]; in >> m_blockOffset[ib]; } dfile.close(); QString lowresFile = m_baseFilename + ".lowres"; QFile lfile(lowresFile); lfile.open(QIODevice::ReadOnly); lfile.read((char*)&m_sslevel, 1); lfile.read((char*)&m_ssd, 4); lfile.read((char*)&m_ssw, 4); lfile.read((char*)&m_ssh, 4); m_ssvol = new uchar[m_ssd*m_ssw*m_ssh*m_bytesPerVoxel]; lfile.read((char*)m_ssvol, m_ssd*m_ssw*m_ssh*m_bytesPerVoxel); lfile.close(); // QMessageBox::information(0, "", QString("%1 : %2 %3 %4").\ // arg(m_sslevel).arg(m_ssd).arg(m_ssw).arg(m_ssh)); initializeBlockReader(); }
KdeIni::KdeIni(const QString &name) { QString buffer; localFile = confPath[0] + name; QFile lfile(localFile); if (lfile.open(QIODevice::ReadOnly)) { localGroup == local.end(); QTextStream stream(&lfile); do { buffer = stream.readLine().trimmed(); if (buffer.startsWith('[')) // group localGroup = local.insert(buffer.mid(1,buffer.length()-2), Entries()); else if (!(buffer.isEmpty() || localGroup == local.end())) localGroup.value().insert(buffer.section('=',0,0), buffer.section('=',1)); } while (!buffer.isNull()); lfile.close(); } QFile gfile(confPath[1] + name); if (gfile.open(QIODevice::ReadOnly)) { localGroup == global.end(); QTextStream stream(&gfile); do { buffer = stream.readLine().trimmed(); if (buffer.startsWith('[')) // group localGroup = global.insert(buffer.mid(1,buffer.length()-2), Entries()); else if (!(buffer.isEmpty() || localGroup == global.end())) localGroup.value().insert(buffer.section('=',0,0), buffer.section('=',1)); } while (!buffer.isNull()); gfile.close(); } localGroup = local.end(); globalGroup = global.constEnd(); }
FormatType fileType( const char* aFileName ) { wxFileName lfile( wxString::FromUTF8Unchecked( aFileName ) ); if( !lfile.FileExists() ) { std::ostringstream ostr; #ifdef __WXDEBUG__ ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; #endif /* __WXDEBUG */ ostr << " * no such file: '" << aFileName << "'\n"; wxLogMessage( "%s", ostr.str().c_str() ); return FMT_NONE; } wxString ext = lfile.GetExt(); if( ext.Lower() == "wrl" ) return FMT_WRL; if( ext == "idf" || ext == "IDF" ) return FMT_IDF; // component outline else if( ext == "emn" || ext == "EMN" ) return FMT_EMN; // PCB assembly OPEN_ISTREAM( ifile, aFileName ); if( ifile.fail() ) return FMT_NONE; char iline[82]; memset( iline, 0, 82 ); ifile.getline( iline, 82 ); CLOSE_STREAM( ifile ); iline[81] = 0; // ensure NULL termination when string is too long // check for STEP in Part 21 format // (this can give false positives since Part 21 is not exclusively STEP) if( !strncmp( iline, "ISO-10303-21;", 13 ) ) return FMT_STEP; std::string fstr = iline; // check for STEP in XML format // (this can give both false positive and false negatives) if( fstr.find( "urn:oid:1.0.10303." ) != std::string::npos ) return FMT_STEP; // Note: this is a very simple test which can yield false positives; the only // sure method for determining if a file *not* an IGES model is to attempt // to load it. if( iline[72] == 'S' && ( iline[80] == 0 || iline[80] == 13 || iline[80] == 10 ) ) return FMT_IGES; return FMT_NONE; }
extern "C" bool CGT_DumpLinkFile( CGT_CDiagMsg* pdm, ICG_IECFront* pIF, const CG_Symtab* pSym, bool bSourceCode, const TCHAR* pszTrgType, const TCHAR* pszVersion, const TCHAR* pszClass, const TCHAR* pszBackend ) { int i; FC_CString lfile(MAX_PATH); CGT_CDmp dmp; BSTR mangeld; const CG_Symtab*const* ppSym; long nHdr; TCHAR* pszHdr; bool bOk; FC_CString genHdrFullPath(MAX_PATH); FC_CString prjSourceFullPath(MAX_PATH); //makes no sense at all: assert(!pSym->pLibCtx); if((pSym->flags & CG_STAB_HDR_NOERR)==0 || pSym->pLibCtx) { CGT_IERR2(pdm, &pSym->edp, _T("CGT_DumpLinkFile: symtab invalid or is lib POU")); return false; } //CG_LINK_LIB_VERSION: //version string: dmp<<CG_LINK_LIB_VERSION _T(";")<<(pszVersion?pszVersion:_T(""))<< _T('\n'); //CG_LINK_LIB_IECIF: mangeld = pIF->createIECMangeledName(pSym); assert(mangeld); //cannot fail, return false above if sym was bad dmp<<CG_LINK_LIB_IECIF _T(";")<<mangeld<<_T('\n'); FC_FREESYSTRING(mangeld); //CG_LINK_LIB_POUCLASS: //display type for libraian, may be custom defined: if(!pszClass) { switch(pSym->pouTyp)//use default.. { case CG_POU_FUN: pszClass = _T("FUNCTION");break; case CG_POU_FB: pszClass = _T("FUNCTION_BLOCK");break; case CG_POU_SDT: pszClass = _T("STRUCT");break; case CG_POU_PRG: pszClass = _T("PROGRAM");break; default: CGT_IERR2(pdm, &pSym->edp, _T("CGT_DumpLinkFile: invalid POU type for lib insert")); return false; } } dmp<<CG_LINK_LIB_POUCLASS _T(";")<<pszClass<<_T('\n'); //CG_LINK_LIB_TRGTYP: dmp<<CG_LINK_LIB_TRGTYP _T(";")<<(pszTrgType?pszTrgType:_T(""))<<_T('\n'); //CG_LINK_LIB_HEADER //get header portion and dump ..\.link\<pou name>.hdr: //+ 1 for 0-termination: nHdr = pSym->ulHdrBytes/sizeof(TCHAR); pszHdr = new TCHAR[nHdr+1]; bOk = pIF->getIECHeaderText(pSym, nHdr+1, pszHdr)!=0; if(bOk) { assert(pSym->srcTyp != CG_SRC_TYPE_ADDON_FILTER);//<-TODO ? genHdrFullPath.load(pIF->FCPgetGenPath()); if(pszTrgType && pszTrgType[0]) genHdrFullPath<<_T("\\.")<<pszTrgType<<_T("\\.link\\"); else genHdrFullPath<<_T("\\.link\\"); genHdrFullPath<<FC_StringGetFilePart(pSym->pszId); if(pSym->pouTyp==CG_POU_SDT) genHdrFullPath<<_T(".")CG_PREDEF_SOURCE_SDT; else genHdrFullPath<<_T(".")CG_PREDEF_SOURCE_HDR; //assert: must not exist, directory should be clean: assert(!FC_FileExists(pIF->FCPgetGenPath(), genHdrFullPath)); bOk = CGT_WriteFile(pdm, NULL, genHdrFullPath, pszHdr, nHdr*sizeof(TCHAR), CGT_WF_STD); } delete(pszHdr); if(!bOk) return false; assert(pSym->ulIF_Bytes<=pSym->ulHdrBytes && pSym->ulIF_Bytes>0); dmp<<CG_LINK_LIB_HEADER _T(";")<<FC_StringGetFilePart(genHdrFullPath)<<_T(';') <<pSym->ulIF_Bytes<<_T('\n'); //CG_LINK_LIB_SOURCE: dmp<<CG_LINK_LIB_SOURCE _T(";"); //need source ? if(pszTrgType && pszTrgType[0]) { if(bSourceCode || (pSym->flags & (CG_STAB_MACRO|CG_STAB_OPERATOR))!=0 || pSym->pouTyp==CG_POU_SDT ) { if(!FC_StringIsAbsPath(pSym->edp.pszFile)) prjSourceFullPath<<pIF->FCPgetPrjPath(); prjSourceFullPath<<_T("\\")<<pSym->edp.pszFile; dmp<<FC_StringGetFilePart(prjSourceFullPath); } }//else: only template if no trg typ dmp<<_T('\n'); //CG_LINK_LIB_POUATTR: if(pSym->pAttribs) { for(i=0; i<pSym->pAttribs->nAttribs; i++) { dmp<<CG_LINK_LIB_POUATTR _T(";"); dmp<<pSym->pAttribs->pairs[i].pszKey<<_T(';'); dmp.dumpAsCSV(pSym->pAttribs->pairs[i].pszVal,-1,true)<<_T('\n'); } } //CG_LINK_LIB_LINK if(pSym->pzRefSyms) { for(ppSym=pSym->pzRefSyms; *ppSym; ppSym++) { mangeld = pIF->createIECMangeledName(*ppSym); dmp<<CG_LINK_LIB_LINK _T(";")<<mangeld<<_T('\n'); FC_FREESYSTRING(mangeld); } } else { CGT_IERR2(pdm, &pSym->edp, _T("CGT_DumpLinkFile: POU has body but no CG_Symtab::pzHdrRefSyms==NULL")); return false; } //TODO var_external and CONST use ? if(pSym->nExternal>0) { } //CG_LINK_LIB_PUT the IEC header dumped above and opt. source: if(pszTrgType && pszTrgType[0]) { dmp<<CG_LINK_LIB_PUT _T(";")<<genHdrFullPath<<_T('\n'); if(!prjSourceFullPath.isEmpty()) dmp<<CG_LINK_LIB_PUT _T(";")<<prjSourceFullPath<<_T('\n'); //append back end domain list: if(pszBackend) dmp<<pszBackend; } else { assert(!pszBackend); } //write link file to disk: if(pszTrgType && pszTrgType[0]) lfile.load(_T("."))<<pszTrgType<<_T("\\.link\\"); else lfile.load(_T("\\.link\\")); lfile<<FC_StringGetFilePart(pSym->edp.pszFile)<<_T(".link"); //assert: must not exist, directory should be clean: assert(!FC_FileExists(pIF->FCPgetGenPath(), lfile)); return CGT_DmpToFile(pdm, pIF->FCPgetGenPath(), lfile, dmp, false); }
int main(int argc, char** argv){ QStringList arg; for(int i=0; i<argc; ++i){ arg.append(argv[i]); } if(arg.length() != 4){ help(); return -1; } const QString sfile = arg[1]; QFile ffile(sfile); if(!ffile.open(QIODevice::ReadOnly)){ qerr << "Unable to open input file "<<sfile<<endl; help(); return -1; } QTextStream tfile(&ffile); const QString slfile = arg[2]; QFile flfile(slfile); if(!flfile.open(QIODevice::WriteOnly)){ qerr << "Unable to open input file "<<slfile<<endl; help(); return -1; } QTextStream lfile(&flfile); const QString sdfile = arg[3]; QFile fdfile(sdfile); if(!fdfile.open(QIODevice::WriteOnly)){ qerr << "Unable to open input file "<<sdfile<<endl; help(); return -1; } QTextStream dfile(&fdfile); // read in transactions from file QList<Transaction> tlist = readTransactionFile(tfile); // create a map of transactions searchable by name QHash<QString,Transaction> tname = mapNameTransaction(tlist); // create the intermediate transaction states QHash<TransactionStateHead,TransactionState> tstate = generateTransactionState(tlist); // create a map of dependencies QHash<TransactionStateHead,QSet<TransactionEdge> > tgraph = generateStateMap(tstate); // create a reveresed set of dependencies QHash<TransactionStateHead,QSet<TransactionEdge> > reverse = reverseStateMap(tgraph); // create a trimmed set of dependencies PeerMap trimLive = trimStateMapLive(tgraph, reverse); PeerMap trimDead = trimStateMapDead(tgraph, reverse); // printTransactions(qout, tlist); // printTransactionRoot(qout, tstate); printTransactionGraph(lfile, trimLive, true); printTransactionGraph(dfile, trimDead, false); ffile.close(); flfile.close(); fdfile.close(); return 0; }