陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
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
Quintiq file version 2.0
#parent: #root
Method GetAlgorithm (String id) const as owning Algorithm
{
  Description:
  [*
    Get the `Algorithm` from the `AlgorithmStore`.
    
    Make sure to put it back in the `AlgorithmStore` after using this method.
    One exception: when you want to remove it.
  *]
  TextBody:
  [*
    result := AlgorithmStore::TryRetrieve( id );
    
    if( result = null( Algorithm ) )
    {
      timelimit := Duration::Seconds( 5 );
      stop := OS::PrecisionCounter() + timelimit.TotalInSeconds() * OS::PrecisionCounterFrequency();
      repeat
      {
        result := AlgorithmStore::TryRetrieve( id );
      }
      until( result <> null( Algorithm ) or OS::PrecisionCounter() >= stop );
      if( OS::PrecisionCounter() >= stop )
      {
        error( Translations::LibOpt_Channel_GetAlgorithm_Error_Timelimit( this.Name(), timelimit ) );
      }
    }
    
    return & result;
  *]
  InterfaceProperties { Accessibility: 'Module' }
}