summaryrefslogtreecommitdiff
path: root/src/Transfer/Transfer_TransferInput.cxx
blob: 2774ef1e2f96e36100579ee90a12a26e91a79492 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <Transfer_TransferInput.ixx>
#include <Transfer_Binder.hxx>
#include <Transfer_IteratorOfProcessForTransient.hxx>
#include <Transfer_IteratorOfProcessForFinder.hxx>
#include <Transfer_VoidBinder.hxx>
#include <Transfer_SimpleBinderOfTransient.hxx>
#include <Transfer_MultipleBinder.hxx>
#include <TColStd_HSequenceOfTransient.hxx>
#include <Interface_Macros.hxx>


    Transfer_TransferInput::Transfer_TransferInput ()    {  }


//  Resultats : Pour le Modele ...

    Interface_EntityIterator  Transfer_TransferInput::Entities
  (Transfer_TransferIterator& list) const
{
  Interface_EntityIterator iter;
  for (list.Start(); list.More(); list.Next()) {
    Handle(Transfer_Binder) binder = list.Value();
    if (binder.IsNull()) continue;
    if (binder->IsKind(STANDARD_TYPE(Transfer_VoidBinder))) continue;

// Vrai resultat : doit etre transient (simple ou liste)
    DeclareAndCast(Transfer_SimpleBinderOfTransient,transb,binder);
    DeclareAndCast(Transfer_MultipleBinder,multi,binder);
    if (!transb.IsNull()) {
      if (transb->HasResult()) iter.AddItem(transb->Result());
    }
    else if (!multi.IsNull()) {
      Handle(TColStd_HSequenceOfTransient) mulres = multi->MultipleResult();
      Standard_Integer nbres = 0;
      if (!mulres.IsNull()) nbres = mulres->Length();
      for (Standard_Integer i = 1; i <= nbres; i ++)
	iter.AddItem(mulres->Value(i));
    }
    else Transfer_TransferFailure::Raise
      ("TransferInput : Entities, one of the Results is not Transient Handle");
  }
  return iter;
}


    void Transfer_TransferInput::FillModel
  (const Handle(Transfer_TransientProcess)& proc,
   const Handle(Interface_InterfaceModel)& amodel) const
{
  Transfer_TransferIterator list = proc->CompleteResult();
  Interface_EntityIterator  iter = Entities (list);
  amodel->GetFromTransfer(iter);
}

    void Transfer_TransferInput::FillModel
  (const Handle(Transfer_TransientProcess)& proc,
   const Handle(Interface_InterfaceModel)& amodel,
   const Handle(Interface_Protocol)& proto,
   const Standard_Boolean roots) const
{
  Transfer_TransferIterator list;
  if (roots) list = proc->RootResult();
  else       list = proc->CompleteResult();
  Interface_EntityIterator  iter = Entities (list);
  for (iter.Start(); iter.More(); iter.Next())
    amodel->AddWithRefs (iter.Value(), proto);
}


    void Transfer_TransferInput::FillModel
  (const Handle(Transfer_FinderProcess)& proc,
   const Handle(Interface_InterfaceModel)& amodel) const
{
  Transfer_TransferIterator list = proc->CompleteResult();
  Interface_EntityIterator  iter = Entities (list);
  amodel->GetFromTransfer(iter);
}

    void Transfer_TransferInput::FillModel
  (const Handle(Transfer_FinderProcess)& proc,
   const Handle(Interface_InterfaceModel)& amodel,
   const Handle(Interface_Protocol)& proto,
   const Standard_Boolean roots) const
{
  Transfer_TransferIterator list;
  if (roots) list = proc->RootResult();
  else       list = proc->CompleteResult();
  Interface_EntityIterator  iter = Entities (list);
  for (iter.Start(); iter.More(); iter.Next())
    amodel->AddWithRefs (iter.Value(), proto);
}