Esempio n. 1
0
	CDataStream* CFileArchive::Open(char* filename)
	{
		CDataStream *pDataStream = new CFileHandleDataStream;
		pDataStream->Open(filename);
		
		return pDataStream;
	}
Esempio n. 2
0
	CDataStream* CMpqArchive::Open(char* filename)
	{
		CDataStream *pDataStream = new CMpqDataStream(m_hMpq);
		pDataStream->Open(filename);

		return pDataStream;
	}
Esempio n. 3
0
std::vector<unsigned char> Endpoint::getKey() const
{
    CDataStream ss;
    ss.reserve(18);
    ss << FLATDATA(_ipv6) << (uint32_t) address().to_v4().to_ulong() << port();

    #if defined(_MSC_VER) && _MSC_VER < 1300
    return std::vector<unsigned char>((unsigned char*)&ss.begin()[0], (unsigned char*)&ss.end()[0]);
    #else
    return std::vector<unsigned char>(ss.begin(), ss.end());
    #endif
}
Esempio n. 4
0
// When performing a read, if we have an active batch we need to check it first
// before reading from the database, as the rest of the code assumes that once
// a database transaction begins reads are consistent with it. It would be good
// to change that assumption in future and avoid the performance hit, though in
// practice it does not appear to be large.
bool CTxDB::ScanBatch(const CDataStream &key, string *value, bool *deleted) const {
    assert(activeBatch);
    *deleted = false;
    CBatchScanner scanner;
    scanner.needle = key.str();
    scanner.deleted = deleted;
    scanner.foundValue = value;
    leveldb::Status status = activeBatch->Iterate(&scanner);
    if (!status.ok()) {
        throw runtime_error(status.ToString());
    }
    return scanner.foundEntry;
}
Esempio n. 5
0
void CBeatDetectView::OnViewStreamChange() 
{
	// Update the view with changes in the streams we are to show
    CList<CDataStream*,CDataStream*> lstStream;

    DOUBLE dDuration = 0;

    HRESULT hr = CreateStreamsList( &lstStream );
    if( S_OK == hr )
    {
        POSITION pos = lstStream.GetHeadPosition();
        while( pos != NULL )
        {
            CDataStream* pStrm = lstStream.GetNext(pos);
            if( pStrm->GetDuration() > dDuration )
                dDuration = pStrm->GetDuration();
        }        
    }
    // Set View Size
    RECT rcWnd;
    GetClientRect(&rcWnd);
    
    SIZE sz;
    sz.cx = max((INT32)(dDuration/m_dZoom), rcWnd.right-rcWnd.left);
    sz.cy = rcWnd.bottom-rcWnd.top;
    SetScrollSizes(MM_TEXT, sz);

    Invalidate( TRUE );

    ////////////////////
    // Scroll Error Crap
    // Scrollbars suck and can't go higher than 32767, so warn if this happens
    m_fScrollError = (sz.cx > 32767);

    return;
}
Esempio n. 6
0
bool
ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
             CWalletScanState &wss, string& strType, string& strErr)
{
    try {
        // Unserialize
        // Taking advantage of the fact that pair serialization
        // is just the two items serialized one after the other
        ssKey >> strType;
        if (strType == "name")
        {
            string strAddress;
            ssKey >> strAddress;
            ssValue >> pwallet->mapAddressBook[CBitcoinAddress(strAddress).Get()];
        }
        else if (strType == "tx")
        {
            uint256 hash;
            ssKey >> hash;
            CWalletTx& wtx = pwallet->mapWallet[hash];
            ssValue >> wtx;
            CValidationState state;
            if (CheckTransaction(wtx, state) && (wtx.GetHash() == hash) && state.IsValid())
                wtx.BindWallet(pwallet);
            else
            {
                pwallet->mapWallet.erase(hash);
                return false;
            }

            // Undo serialize changes in 31600
            if (31404 <= wtx.fTimeReceivedIsTxTime && wtx.fTimeReceivedIsTxTime <= 31703)
            {
                if (!ssValue.empty())
                {
                    char fTmp;
                    char fUnused;
                    ssValue >> fTmp >> fUnused >> wtx.strFromAccount;
                    strErr = strprintf("LoadWallet() upgrading tx ver=%d %d '%s' %s",
                                       wtx.fTimeReceivedIsTxTime, fTmp, wtx.strFromAccount.c_str(), hash.ToString().c_str());
                    wtx.fTimeReceivedIsTxTime = fTmp;
                }
                else
                {
Esempio n. 7
0
bool RichListDB::ScanBatch(const CDataStream& key, std::string* value, bool* deleted) const
{
    if (!activeBatch)
        return false;

    *deleted = false;
    RichListDbBatchScanner scanner;
    scanner.needle = key.str();
    scanner.deleted = deleted;
    scanner.foundValue = value;
    leveldb::Status s = activeBatch->Iterate(&scanner);
    if (!s.ok())
    {
        LogPrintf("RichListDB ScanBatch error: %s", s.ToString().c_str());
        return false;
    };

    return scanner.foundEntry;
}
Esempio n. 8
0
void CPicture::LoadDDS( CDataStream& dataStream )
{
	char const* header = (char const*)dataStream.GetCursorData() + 4;

	m_height = *(unsigned int*)&(header[8]);
	m_width = *(unsigned int*)&(header[12]);
	unsigned int linearSize = *(unsigned int*)&(header[16]);
	m_mipMapCount = *(unsigned int*)&(header[24]);
	unsigned int fourCC = *(unsigned int*)&(header[80]);

	m_pPixelData = const_cast<char*>(header) + 124;

	switch (fourCC)
	{
	case FOURCC_DXT1:	m_format = ePF_R8G8B8A8_DTX1; break;
	case FOURCC_DXT3:	m_format = ePF_R8G8B8A8_DTX3; break;
	case FOURCC_DXT5:	m_format = ePF_R8G8B8A8_DTX5; break;
	default:
		break;
		// free
	}
}
Esempio n. 9
0
bool CWalletBackup::LoadBuffer(CDataStream& ssBuffer)
{
    try
    {
        while(!ssBuffer.empty())
        {
            string strType;
            ssBuffer >> strType;
            if (strType == "key")
            {
                vector<unsigned char> vchPubKey;
                CPrivKey pkey;
                ssBuffer >> vchPubKey >> pkey;
                CKey key;
                key.SetPubKey(vchPubKey);
                key.SetPrivKey(pkey);
                if (key.GetPubKey() != vchPubKey || !key.IsValid()
                    || !AddKey(key))
                {
                    return false;
                }
            }
            else if (strType == "wkey")
            {
                vector<unsigned char> vchPubKey;
                CWalletKey wkey;
                ssBuffer >> vchPubKey >> wkey;
                CKey key;
                key.SetPubKey(vchPubKey);
                key.SetPrivKey(wkey.vchPrivKey);
                if (key.GetPubKey() != vchPubKey || !key.IsValid()
                    || !AddKey(key))
                {
                    return false;
                }
            }
Esempio n. 10
0
        local_check(pretype(real_vector.begin(), real_vector.end()) == pre_vector);
        local_check(pretype(pre_vector.begin(), pre_vector.end()) == pre_vector);
        size_t pos = 0;
        BOOST_FOREACH(const T& v, pre_vector) {
             local_check(v == real_vector[pos++]);
        }
        BOOST_REVERSE_FOREACH(const T& v, pre_vector) {
             local_check(v == real_vector[--pos]);
        }
        BOOST_FOREACH(const T& v, const_pre_vector) {
             local_check(v == real_vector[pos++]);
        }
        BOOST_REVERSE_FOREACH(const T& v, const_pre_vector) {
             local_check(v == real_vector[--pos]);
        }
        CDataStream ss1(SER_DISK, 0);
        CDataStream ss2(SER_DISK, 0);
        ss1 << real_vector;
        ss2 << pre_vector;
        local_check_equal(ss1.size(), ss2.size());
        for (Size s = 0; s < ss1.size(); s++) {
            local_check_equal(ss1[s], ss2[s]);
        }
    }

public:
    void resize(Size s) {
        real_vector.resize(s);
        local_check_equal(real_vector.size(), s);
        pre_vector.resize(s);
        local_check_equal(pre_vector.size(), s);
Esempio n. 11
0
void CResourceManager::UpdateResourceLoading()
{
	std::vector< CResourceDescriptor* > dependenciesToLoad; dependenciesToLoad.reserve(100);

	if ( !m_bCheckForDependencyMode )
	{
		// 1. Force acquire dependencies that we're going to load (in order to avoid them being destroyed and then reloaded again)
		for ( size_t iRes = 0; iRes < m_resourceLoadQueries.size(); ++iRes )
		{
			CResourceDescriptor* pDescriptor = m_resourceLoadQueries[ iRes ];
			if ( pDescriptor->GetRefCount() == 0 )
			{
				continue; // Can happen if resource queried for load and unload the same frame
			}
			GetRecursiveDependencies( pDescriptor, dependenciesToLoad );
		}
		for ( size_t i = 0; i < dependenciesToLoad.size(); ++i )
		{
			dependenciesToLoad[i]->Acquire();
		}

		// 2. Destroy unused resources
		for ( size_t iRes = 0; iRes < m_resourceUnloadQueries.size(); ++iRes )
		{
			CResourceDescriptor* pDescriptor = m_resourceUnloadQueries[ iRes ];
			pDescriptor->DestroyIfNoRef();
		}
	}
	
	// 3. Load resources (and dependencies)
	for( size_t iRes = 0 ; iRes < ((m_bCheckForDependencyMode)? 1 : m_resourceLoadQueries.size()) ; ++iRes )
	{
		// Load the resource
		CResourceDescriptor* pDescriptor = m_resourceLoadQueries[ iRes ];
		if ( pDescriptor->GetRefCount() == 0 )
		{
			continue; // Can happen if resource queried for load and unload the same frame
		}

		//WbLog( "Default",  "Loading resource %s of type %s\n...", pDescriptor->GetName().c_str(), pDescriptor->GetResourceType()->GetName().c_str() );
		
		CDataStream dataStream;
		gVars->pOperatingSystem->GetDataStream( m_resourceRootDir + pDescriptor->GetPath(), dataStream, pDescriptor->GetSize() );
		
		IResource* pResource = pDescriptor->GetResourceType()->GetSerializer()->Load( dataStream, *pDescriptor );
		if ( pResource == NULL )
		{
			//WbLog( "Default",  "FAILED loading resource %s\n", pDescriptor->GetName().c_str() );
		}
		else
		{
		//	WbLog( "Default",  "Succeeded loading resource %s\n", pDescriptor->GetName().c_str() );
		}
		
		pDescriptor->SetResource( pResource );
		
		dataStream.Destroy();
	}

	// Resource post load
	for( CResourceDescriptor* pDescriptor : m_resourceLoadQueries )
	{
		if ( pDescriptor->GetResource() != nullptr )
		{
			pDescriptor->GetResource()->OnPostLoad();
		}
	}

	if ( !m_bCheckForDependencyMode )
	{
		// 4. Reset Release of step 1
		for ( size_t i = 0; i < dependenciesToLoad.size(); ++i )
		{
			dependenciesToLoad[ i ]->Release();
		}

		m_resourceLoadQueries.clear();
	}
}
Esempio n. 12
0
void CPicture::LoadPNG( CDataStream& dataStream )
{
	lodepng_decode_memory( (unsigned char**)&m_pPixelData, &m_width, &m_height, (unsigned char*)dataStream.GetCursorData(), dataStream.GetSize(), LodePNGColorType::LCT_RGBA, 8 );
	m_format = ePF_R8G8B8A8;
	m_mipMapCount = 0;
}
Esempio n. 13
0
        BOOST_CHECK(pretype(real_vector.begin(), real_vector.end()) == pre_vector);
        BOOST_CHECK(pretype(pre_vector.begin(), pre_vector.end()) == pre_vector);
        size_t pos = 0;
        BOOST_FOREACH(const T& v, pre_vector) {
             BOOST_CHECK(v == real_vector[pos++]);
        }
        BOOST_REVERSE_FOREACH(const T& v, pre_vector) {
             BOOST_CHECK(v == real_vector[--pos]);
        }
        BOOST_FOREACH(const T& v, const_pre_vector) {
             BOOST_CHECK(v == real_vector[pos++]);
        }
        BOOST_REVERSE_FOREACH(const T& v, const_pre_vector) {
             BOOST_CHECK(v == real_vector[--pos]);
        }
        CDataStream ss1(SER_DISK, 0);
        CDataStream ss2(SER_DISK, 0);
        ss1 << real_vector;
        ss2 << pre_vector;
        BOOST_CHECK_EQUAL(ss1.size(), ss2.size());
        for (Size s = 0; s < ss1.size(); s++) {
            BOOST_CHECK_EQUAL(ss1[s], ss2[s]);
        }
    }

public:
    void resize(Size s) {
        real_vector.resize(s);
        BOOST_CHECK_EQUAL(real_vector.size(), s);
        pre_vector.resize(s);
        BOOST_CHECK_EQUAL(pre_vector.size(), s);