Branch data Line data Source code
1 : : #include "ToolDataUser.hpp"
2 : : #include "TDUPtr.hpp"
3 : :
4 : :
5 : 0 : void TDPtr::remove_from_TD( TDUPtrListNode* ptr, ToolDataUser* tdu )
6 : : {
7 [ # # ]: 0 : if ( !tdu )
8 : 0 : return;
9 : :
10 : 0 : TDPtr* td = (TDPtr*)(tdu->get_TD(&is_ptr));
11 [ # # ]: 0 : assert(td != NULL);
12 : :
13 [ # # ]: 0 : if (ptr == td->listHead) {
14 : 0 : td->listHead = ptr->nextInTD;
15 [ # # ]: 0 : if (!td->listHead ) {
16 [ # # ]: 0 : delete tdu->remove_TD(&is_ptr);
17 : : }
18 : : }
19 : : else {
20 : 0 : TDUPtrListNode* prev = td->listHead;
21 [ # # ]: 0 : while (prev->nextInTD != ptr) {
22 : 0 : prev = prev->nextInTD;
23 [ # # ]: 0 : assert(prev != NULL);
24 : : }
25 : 0 : prev->nextInTD = ptr->nextInTD;
26 : : }
27 : :
28 : 0 : ptr->nextInTD = 0;
29 : : }
30 : :
31 : 0 : void TDPtr::add_to_TD( TDUPtrListNode* ptr, ToolDataUser* tdu )
32 : : {
33 [ # # ]: 0 : if( !tdu )
34 : 0 : return;
35 : :
36 : 0 : TDPtr* td = (TDPtr*)(tdu->get_TD(&is_ptr));
37 [ # # ]: 0 : if( ! td ) {
38 [ # # ]: 0 : tdu->add_TD(td = new TDPtr);
39 : : }
40 : :
41 [ # # ][ # # ]: 0 : assert(ptr && !ptr->nextInTD);
42 : 0 : ptr->nextInTD = td->listHead;
43 : 0 : td->listHead = ptr;
44 : : }
45 : :
46 : 0 : TDPtr::~TDPtr()
47 : : {
48 [ # # ]: 0 : while (listHead) {
49 : 0 : TDUPtrListNode* dead = listHead;
50 : 0 : listHead = dead->nextInTD;
51 : 0 : dead->nextInTD = 0;
52 [ # # ]: 0 : dead->nullify();
53 : : }
54 [ # # ]: 0 : }
55 : :
56 : :
57 : :
|