0024023: Revamp the OCCT Handle -- general
[occt.git] / src / IFSelect / IFSelect_SelectCombine.cxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #include <IFSelect_SelectCombine.ixx>
15 #include <IFGraph_Cumulate.hxx>
16
17
18 IFSelect_SelectCombine::IFSelect_SelectCombine ()    {  }
19 //      {  thelist = new IFSelect_SequenceOfSelection();  }
20
21     Standard_Integer  IFSelect_SelectCombine::NbInputs () const 
22       {  return thelist.Length();  }
23
24     Handle(IFSelect_Selection)  IFSelect_SelectCombine::Input
25   (const Standard_Integer num) const 
26       {  return thelist.Value(num);  }
27
28     Standard_Integer  IFSelect_SelectCombine::InputRank
29   (const Handle(IFSelect_Selection)& sel) const 
30 {
31   if (sel.IsNull()) return 0;
32   Standard_Integer i, nb = thelist.Length();
33   for (i = 1; i <= nb; i ++)
34     if (sel == thelist.Value(i)) return i;
35   return 0;
36 }
37
38     void  IFSelect_SelectCombine::Add
39   (const Handle(IFSelect_Selection)& sel, const Standard_Integer atnum)
40 {
41   if (atnum <= 0 || atnum > thelist.Length()) thelist.Append(sel);
42   else thelist.InsertBefore(atnum,sel);
43 }
44
45     Standard_Boolean  IFSelect_SelectCombine::Remove
46   (const Handle(IFSelect_Selection)& sel)
47       {  return Remove (InputRank(sel));  }
48
49     Standard_Boolean  IFSelect_SelectCombine::Remove
50   (const Standard_Integer num)
51 {
52   if (num <= 0 || num > thelist.Length()) return Standard_False;
53   thelist.Remove(num);
54   return Standard_True;
55 }
56
57
58     Standard_Boolean  IFSelect_SelectCombine::HasUniqueResult () const 
59       {  return Standard_True;  }
60
61     void  IFSelect_SelectCombine::FillIterator
62   (IFSelect_SelectionIterator& iter) const 
63       {  iter.AddList(thelist);  }