Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GroupVectorAdd (LibOpt_ScopeThin scope, LibOpt_Group group) as BinaryValue 
 | 
{ 
 | 
  Description: 'Calculate the new `NumberVector` that represents the associated groups, after adding another scope with an associated group.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    result := BinaryValue::Construct(); 
 | 
    if( not isnull( group ) ) 
 | 
    { 
 | 
      vector := NumberVector::Construct( this.GroupVector() ); 
 | 
       
 | 
      // Add enough space 
 | 
      if( vector.Size() <= scope.ID() ) 
 | 
      { 
 | 
        new_vector := NumberVector::Construct( scope.ID() + 1 ); 
 | 
        new_vector.SetRange( 0, vector ); 
 | 
         
 | 
        vector := & new_vector; 
 | 
      } 
 | 
       
 | 
      vector.Set( scope.ID(), group.ID() ); 
 | 
       
 | 
      result := vector.AsBinaryValue(); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      result := this.GroupVectorRemove( scope ); 
 | 
    } 
 | 
     
 | 
    return result; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |