コード例 #1
0
ファイル: grid.cpp プロジェクト: 52North/IlwisCore
GridBlockInternal *GridBlockInternal::clone(quint64 newRasterId)
{

    GridBlockInternal *block = new GridBlockInternal(blockNr(), newRasterId, _size.xsize(), _size.ysize());
    block->init();
    std::copy(_data.begin(), _data.end(), block->_data.begin());
    block->_inMemory = true;
    block->save2Cache(); // as a result, block->_inMemory becomes false
    return block;
}
コード例 #2
0
ファイル: grid.cpp プロジェクト: 52North/IlwisCore
char *Grid::blockAsMemory(quint32 block) {
    if ( _blocks[block]->inMemory() ) { // no load needed
        GridBlockInternal *du = _blocks[block];
        char * p = du->blockAsMemory();
        return p;
    }
    Locker<> lock(_mutex);
    if(!update(block, true))
        return 0;
    GridBlockInternal *du = _blocks[block];
    char * p = du->blockAsMemory();
    return p;
}
コード例 #3
0
ファイル: grid.cpp プロジェクト: ridoo/IlwisCore
char *Grid::blockAsMemory(quint32 block, bool creation) {
    if ( _allInMemory) { // no cache case
        GridBlockInternal *du = _blocks[block];
        char * p = du->blockAsMemory();
        return p;
    }
    Locker<> lock(_mutex);
    if(!update(block, creation))
        return 0;
    GridBlockInternal *du = _blocks[_cache[block]];
    char * p = du->blockAsMemory();
    return p;

}
コード例 #4
0
ファイル: grid.cpp プロジェクト: ridoo/IlwisCore
GridBlockInternal *GridBlockInternal::clone()
{
    GridBlockInternal *block = new GridBlockInternal(_id, i64UNDEF, _size.xsize(), _size.ysize());
    block->prepare();
    block->_undef = _undef;
    block->_blockSize = _blockSize;
    if(!inMemory())
        loadFromCache();
    else if (!_initialized){
        needData();
    }
    std::copy(_data.begin(), _data.end(), block->_data.begin());

    return block;


}