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();
}
示例#2
0
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();
}
示例#3
0
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); 
}
示例#5
0
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;
}