Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IFSelect / IFSelect_SelectFlag.cxx
1 #include <IFSelect_SelectFlag.ixx>
2
3
4     IFSelect_SelectFlag::IFSelect_SelectFlag (const Standard_CString flagname)
5     : thename (flagname)    {  }
6
7     Standard_CString  IFSelect_SelectFlag::FlagName () const
8       {  return thename.ToCString();  }
9
10
11     Interface_EntityIterator  IFSelect_SelectFlag::RootResult
12   (const Interface_Graph& G) const
13 {
14   Standard_Boolean direct = IsDirect();
15   Interface_EntityIterator res;
16   const Interface_BitMap& bm = G.BitMap();
17   Standard_Integer flag = bm.FlagNumber (thename.ToCString());
18   if (flag == 0) return res;
19   Interface_EntityIterator inp = InputResult(G);
20
21   for (inp.Start(); inp.More(); inp.Next()) {
22     Standard_Integer num = G.EntityNumber(inp.Value());
23     if (num == 0) continue;
24     if (direct == bm.Value(num,flag)) res.AddItem (G.Entity(num));
25   }
26   return res;
27 }
28
29     Standard_Boolean  IFSelect_SelectFlag::Sort
30   (const Standard_Integer ,
31    const Handle(Standard_Transient)&,
32    const Handle(Interface_InterfaceModel)& ) const
33       {  return Standard_False;  }
34
35     TCollection_AsciiString  IFSelect_SelectFlag::ExtractLabel () const
36 {
37   TCollection_AsciiString lab ("Entities Flagged by ");
38   lab.AssignCat (thename);
39   return lab;
40 }