Exemple #1
0
// *****************************************************************************
void PodNode::setValue(const PodNode& other)
{
    delete m_value; 
    if (other.valueType() != UNDEFINED)
    {
        m_value = other.m_value->copy();
    }
    else
    {
        m_value = NULL;
    }
    syncBlock();
}
Exemple #2
0
// *****************************************************************************
PodNode::PodNode(const std::string& podName, 
                 const std::string& podType,
                 PodValue* value)
        : m_podName(podName),
          m_podType(podType),
          m_value(value),
          m_parent(NULL),
          m_sourcefile(),
          m_sourceline(-1)
{
    if (m_value)
    {
        syncBlock();
    }
}
Exemple #3
0
// *****************************************************************************
void PodNode::setValue(PodNodeDeque& value, const std::string& blockScopeType)
{
    for (PodNodeDeque::iterator iter = value.begin();
            iter != value.end(); ++iter)
    {
        PodNode* child = (*iter);
        if (child->parent())
        {
            throw PodIntegrityError(child, "Node cannot be a member of more than one block");
        }
    }

    delete m_value;
    m_value = new BlockPodValue(value, blockScopeType);
    syncBlock();
}
Exemple #4
0
bool_t BusController::signal_allocate(int blockNum, int j){
    getExec(blockNum, j);
    printf("signal allocate\n");
    int id;
    for(id=shared_count-1;id>=0;--id){
        if(recs[id][blockNum] & REC_WRITE)
            break;
    }
    if(id>=0){ // dirty cache
        int i = mem_map[id]->ca->findLine(blockNum*cB);
        mem_map[id]->ca->commit(i);
        syncBlock(blockNum, id);
        recs[id][blockNum] = REC_READ;
    }
    recs[j][blockNum] |= REC_READ;
    return TRUE;
}
Exemple #5
0
// *****************************************************************************
void PodNode::setValue(PodValue* value)
{
    delete m_value;
    m_value = value;
    syncBlock();
}