Ejemplo n.º 1
0
/**
 * 親構成要素から削除親要素(セル)を削除する.
 * @param parent_cell        削除親要素(セル)
 * @return        親構成要素数
 */
UdmSize_t UdmComponent::removeReferencedCell(const UdmCell* parent_cell)
{
    if (parent_cell == NULL) return this->getNumParentCells();

    int count = 0;
    int n;
    for (n=0; n<2; n++) {
        if (this->parent_cells[n] == parent_cell) {
            this->parent_cells[n] = NULL;
        }
        else if (this->parent_cells[n] != NULL) {
            count++;
        }
    }

    // 親要素が存在しないので、構成節点(ノード)からこの部品要素を削除する.
    if (count == 0) {
        // 構成節点(ノード)から親要素(セル)を削除する.
        std::vector<UdmNode*>::iterator  itr_node;
        for (itr_node=this->nodes.begin(); itr_node!=this->nodes.end(); itr_node++) {
            UdmNode* node = (*itr_node);
            // 親要素(セル)を削除する.
            node->removeReferencedCell(this);
        }
    }

    return this->getNumParentCells();
}
Ejemplo n.º 2
0
/**
 * この要素(セル)を親に持つ節点(ノード)、要素(セル)からこの要素(セル)を削除する.
 * @return        エラー番号 : UDM_OK | UDM_ERROR
 */
UdmError_t UdmCell::removeReferencedCells()
{
    UdmSize_t num_parents;
    int i, size;

    // セクション(要素構成)情報のUdmElements::cell_listから削除する.
    // std::vectorから削除するのみ.
    if (this->parent_elements != NULL) {
        this->parent_elements->removeCell(this);
    }

    // 部品要素(セル)から親要素(セル)を削除する.
    size = this->components.size();
    if (size > 0) {
        for (i=size-1; i>=0; i--) {
            UdmComponent* component = this->components[i];
            // 親要素(セル)を削除する.
            num_parents = component->removeReferencedCell(this);

            // 部品要素(セル)から要素(セル)を削除(free)する.
            // 親要素(セル)が存在しない独立要素(セル)は、要素(セル)自身を削除する.
            this->removeComponentCell(component);
        }
    }

    // 構成節点(ノード)から親要素(セル)を削除する.
    std::vector<UdmNode*>::iterator  itr_node;
    for (itr_node=this->nodes.begin(); itr_node!=this->nodes.end(); itr_node++) {
        UdmNode* node = (*itr_node);
        // 親要素(セル)を削除する.
        num_parents = node->removeReferencedCell(this);
    }

    return UDM_OK;
}
Ejemplo n.º 3
0
/**
 * 親構成要素からすべての削除親要素(セル)を削除する.
 * @return        親構成要素数
 */
UdmSize_t UdmComponent::removeReferencedCells()
{

    int count = 0;
    int n;
    for (n=0; n<2; n++) {
        if (this->parent_cells[n] != NULL) {
            this->parent_cells[n]->removeComponentCell(this);
            this->parent_cells[n] = NULL;
        }
    }

    // 親要素が存在しないので、構成節点(ノード)からこの部品要素を削除する.
    // 構成節点(ノード)から親要素(セル)を削除する.
    std::vector<UdmNode*>::iterator  itr_node;
    for (itr_node=this->nodes.begin(); itr_node!=this->nodes.end(); itr_node++) {
        UdmNode* node = (*itr_node);
        // 親要素(セル)を削除する.
        node->removeReferencedCell(this);
    }

    return 0;
}