0024157: Parallelization of assembly part of BO
[occt.git] / src / IFSelect / IFSelect_SelectCombine.cxx
1 // Copyright (c) 1999-2012 OPEN CASCADE SAS
2 //
3 // The content of this file is subject to the Open CASCADE Technology Public
4 // License Version 6.5 (the "License"). You may not use the content of this file
5 // except in compliance with the License. Please obtain a copy of the License
6 // at http://www.opencascade.org and read it completely before using this file.
7 //
8 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
9 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
10 //
11 // The Original Code and all software distributed under the License is
12 // distributed on an "AS IS" basis, without warranty of any kind, and the
13 // Initial Developer hereby disclaims all such warranties, including without
14 // limitation, any warranties of merchantability, fitness for a particular
15 // purpose or non-infringement. Please see the License for the specific terms
16 // and conditions governing the rights and limitations under the License.
17
18 #include <IFSelect_SelectCombine.ixx>
19 #include <IFGraph_Cumulate.hxx>
20
21
22 IFSelect_SelectCombine::IFSelect_SelectCombine ()    {  }
23 //      {  thelist = new IFSelect_SequenceOfSelection();  }
24
25     Standard_Integer  IFSelect_SelectCombine::NbInputs () const 
26       {  return thelist.Length();  }
27
28     Handle(IFSelect_Selection)  IFSelect_SelectCombine::Input
29   (const Standard_Integer num) const 
30       {  return thelist.Value(num);  }
31
32     Standard_Integer  IFSelect_SelectCombine::InputRank
33   (const Handle(IFSelect_Selection)& sel) const 
34 {
35   if (sel.IsNull()) return 0;
36   Standard_Integer i, nb = thelist.Length();
37   for (i = 1; i <= nb; i ++)
38     if (sel == thelist.Value(i)) return i;
39   return 0;
40 }
41
42     void  IFSelect_SelectCombine::Add
43   (const Handle(IFSelect_Selection)& sel, const Standard_Integer atnum)
44 {
45   if (atnum <= 0 || atnum > thelist.Length()) thelist.Append(sel);
46   else thelist.InsertBefore(atnum,sel);
47 }
48
49     Standard_Boolean  IFSelect_SelectCombine::Remove
50   (const Handle(IFSelect_Selection)& sel)
51       {  return Remove (InputRank(sel));  }
52
53     Standard_Boolean  IFSelect_SelectCombine::Remove
54   (const Standard_Integer num)
55 {
56   if (num <= 0 || num > thelist.Length()) return Standard_False;
57   thelist.Remove(num);
58   return Standard_True;
59 }
60
61
62     Standard_Boolean  IFSelect_SelectCombine::HasUniqueResult () const 
63       {  return Standard_True;  }
64
65     void  IFSelect_SelectCombine::FillIterator
66   (IFSelect_SelectionIterator& iter) const 
67       {  iter.AddList(thelist);  }