File: Component.cpp

package info (click to toggle)
sofa-framework 1.0~beta4-12
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 88,828 kB
  • ctags: 27,300
  • sloc: cpp: 151,126; ansic: 2,387; xml: 581; sh: 417; makefile: 68
file content (56 lines) | stat: -rw-r--r-- 2,445 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/***************************************************************************
                                Component.cpp
                             -------------------
    begin             : Wed Aug 8 2001
    copyright         : (C) 2001 TIMC (Emmanuel Promayon, Matthieu Chabanas)
    email             : Emmanuel.Promayon@imag.fr
    Date              : $Date: 2006/10/17 14:33:21 $
    Version           : $Revision: 1.5 $
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "Component.h"
#include "MultiComponent.h"

// -------------------- constructor --------------------
Component::Component(PhysicalModel *p, std::string n) {
    this->properties = new Properties(p,n);
    exclusive = true;
}

// -------------------- destructor --------------------
Component::~Component() {
    deleteProperties();
    removeFromParents();
}

// -------------------- deleteProperties --------------------
void Component::deleteProperties() {
    delete properties;
    properties = NULL;
}

// -------------------- removeFromParents --------------------
void Component::removeFromParents() {
    // tell all the parents that I am disappearing from memory
    // (copy the list as removeSubComponent modify my list)
    std::vector <MultiComponent *> parentMultiComponentsCopy;
    parentMultiComponentsCopy.reserve(parentMultiComponentList.size());
	//std::copy(parentMultiComponentList.begin(), parentMultiComponentList.end(), parentMultiComponentsCopy.begin());
	for (unsigned int i=0 ; i<parentMultiComponentList.size();i++)
		parentMultiComponentsCopy.push_back(parentMultiComponentList[i]);
    

    for (unsigned int i=0; i<parentMultiComponentsCopy.size(); i++)
        parentMultiComponentsCopy[i]->removeSubComponent(this);

    // here assert parentMultiComponentList.size()==0
}