0024157: Parallelization of assembly part of BO
[occt.git] / src / IFSelect / IFSelect_SelectExtract.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_SelectExtract.ixx>
19
20
21 IFSelect_SelectExtract::IFSelect_SelectExtract ()
22       {  thesort = Standard_True;  }
23
24     Standard_Boolean  IFSelect_SelectExtract::IsDirect () const 
25       {  return thesort;  }
26
27     void  IFSelect_SelectExtract::SetDirect (const Standard_Boolean direct)
28       {  thesort = direct;  }
29
30
31     Interface_EntityIterator  IFSelect_SelectExtract::RootResult
32   (const Interface_Graph& G) const 
33 {
34   Interface_EntityIterator iter;
35   Interface_EntityIterator inputer = InputResult(G);  // tient compte de tout
36   Handle(Interface_InterfaceModel) model = G.Model();
37   Standard_Integer rank = 0;
38   for (inputer.Start(); inputer.More(); inputer.Next()) {
39     Handle(Standard_Transient) ent = inputer.Value();
40     rank ++;
41     if (SortInGraph(rank,ent,G) == thesort) iter.GetOneItem(ent);
42   }
43   return iter;
44 }
45
46
47     Standard_Boolean  IFSelect_SelectExtract::SortInGraph
48   (const Standard_Integer rank, const Handle(Standard_Transient)& ent,
49    const Interface_Graph& G) const
50       {  return Sort (rank, ent, G.Model());  }
51
52
53     TCollection_AsciiString  IFSelect_SelectExtract::Label () const
54 {
55   TCollection_AsciiString labl;
56   if ( thesort) labl.AssignCat("Picked: ");
57   if (!thesort) labl.AssignCat("Removed: ");
58   labl.AssignCat(ExtractLabel());
59   return labl;
60 }