]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/graphe/GCmex1.9/LinkedBlockList.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
modif finale lnivs + keywords
[these_gilles.git] / THESE / codes / graphe / GCmex1.9 / LinkedBlockList.cpp
1 #include "LinkedBlockList.h"\r
2 //#include <stdio.h>\r
3 #include "mex.h"\r
4 #include <stdlib.h>\r
5 \r
6 /*********************************************************************/\r
7 \r
8 void LinkedBlockList::addFront(ListType item) {\r
9 \r
10         if ( m_head_block_size == GCLL_BLOCK_SIZE )\r
11         {\r
12                 LLBlock *tmp      = (LLBlock *) new LLBlock;\r
13                 if ( !tmp ) \r
14             mexErrMsgIdAndTxt("GraphCut:LinkedBlockList:addFront", "Out of memory");\r
15                 tmp -> m_next     = m_head;\r
16                 m_head            = tmp;\r
17                 m_head_block_size = 0;\r
18         }\r
19         \r
20         m_head ->m_item[m_head_block_size] = item;\r
21         m_head_block_size++;\r
22 }\r
23 \r
24 /*********************************************************************/\r
25 \r
26 ListType LinkedBlockList::next()\r
27 {\r
28         ListType toReturn = m_cursor -> m_item[m_cursor_ind];\r
29 \r
30         m_cursor_ind++;\r
31 \r
32         if ( m_cursor == m_head && m_cursor_ind >= m_head_block_size )\r
33         {\r
34                 m_cursor     = m_cursor ->m_next;\r
35                 m_cursor_ind = 0;\r
36         }\r
37         else if ( m_cursor_ind == GCLL_BLOCK_SIZE )\r
38         {\r
39                 m_cursor = m_cursor ->m_next;\r
40                 m_cursor_ind = 0;\r
41         }\r
42         return(toReturn);\r
43 }\r
44 \r
45 /*********************************************************************/\r
46 \r
47 bool LinkedBlockList::hasNext()\r
48 {\r
49         if ( m_cursor != 0 ) return (true);\r
50         else return(false);\r
51 }\r
52 \r
53 \r
54 /*********************************************************************/\r
55 \r
56 LinkedBlockList::~LinkedBlockList()\r
57 {\r
58         LLBlock *tmp;\r
59 \r
60         while ( m_head != 0 ) \r
61         {\r
62                 tmp = m_head;\r
63                 m_head = m_head->m_next;\r
64                 delete tmp;\r
65         }\r
66 };\r
67 \r
68 /*********************************************************************/\r
69 \r