/*****************************************************************************
* File: A_PAA_ASG_actions.c
*
* Description:
* State actions methods implementation for the following object Assigner:
*
* Object: probe_assignment (PAA)
* Domain: A
* Subsystem: autosampler
* Repository: as2.ooa
*
* Notice:
* (C) Copyright 1999, 2000 ROX Software, Inc.
* All rights reserved.
*
* Model Compiler: MC3020 V1.3.0
*
* Warnings:
* !!! THIS IS AN AUTO-GENERATED FILE. PLEASE DO NOT EDIT. !!!
****************************************************************************/
#include "e_mechs.h"
#include "e_events.h"
#include "A_objects.h"
#include "A_ROW_object.h"
#include "A_ROW_events.h"
#include "A_SP_object.h"
#include "A_SP_events.h"
#include "A_PAA_object.h"
#include "A_PAA_ASG.h"
#include "A_PAA_ASG_events.h"
/*****************************************************************************
* State [1]: 'waiting on row'
****************************************************************************/
void
A_PAA_ASG_Action_1( A_PAA_Asg_s * self, const OoaEvent_t * const event )
{
A_ROW_s * v48; /* row */
/* SELECT ANY row FROM INSTANCES OF ROW
WHERE (SELECTED.needs_probe == TRUE) */
v48 = (A_ROW_s *)0;
{ /* Begin selection scope */
A_ROW_s * w47;
Escher_Iterator_s iter49_ROW;
Escher_IteratorReset( &iter49_ROW, pG_A_ROW_extent );
while ( (w47 = (A_ROW_s *)Escher_IteratorNext( &iter49_ROW )) != 0 )
{
if ( (w47->m_needs_probe == true) )
{
v48 = w47;
break;
}
}
} /* End selection scope */
/* IF (NOT_EMPTY row) */
if ( (((v48 != 0) ? true : false)) )
{
/* GENERATE PAA_A1:'row_needs_probe'() TO PAA ASSIGNER */
{
A_PAA_AsgEvent1_s * event50 = (A_PAA_AsgEvent1_s *) Escher_NewOoaEvent( (void *) 0, &A_PAA_AsgEvent1_sc );
Escher_SendSelfEvent( (OoaEvent_t *)event50 );
}
}
/* END IF */
}
/*****************************************************************************
* State [2]: 'waiting on probe'
****************************************************************************/
void
A_PAA_ASG_Action_2( A_PAA_Asg_s * self, const OoaEvent_t * const event )
{
A_SP_s * v52; /* probe */
/* SELECT ANY probe FROM INSTANCES OF SP
WHERE (SELECTED.available == TRUE) */
v52 = (A_SP_s *)0;
{ /* Begin selection scope */
A_SP_s * w51;
Escher_Iterator_s iter53_SP;
Escher_IteratorReset( &iter53_SP, pG_A_SP_extent );
while ( (w51 = (A_SP_s *)Escher_IteratorNext( &iter53_SP )) != 0 )
{
if ( (w51->m_available == true) )
{
v52 = w51;
break;
}
}
} /* End selection scope */
/* IF (NOT_EMPTY probe) */
if ( (((v52 != 0) ? true : false)) )
{
/* GENERATE PAA_A2:'probe_available'() TO PAA ASSIGNER */
{
A_PAA_AsgEvent2_s * event54 = (A_PAA_AsgEvent2_s *) Escher_NewOoaEvent( (void *) 0, &A_PAA_AsgEvent2_sc );
Escher_SendSelfEvent( (OoaEvent_t *)event54 );
}
}
/* END IF */
}
/*****************************************************************************
* State [3]: 'assigning pair'
****************************************************************************/
void
A_PAA_ASG_Action_3( A_PAA_Asg_s * self, const OoaEvent_t * const event )
{
A_ROW_s * v56; /* row */
A_SP_s * v59; /* probe */
A_PAA_s * v61; /* assignment */
/* SELECT ANY row FROM INSTANCES OF ROW
WHERE (SELECTED.needs_probe == TRUE) */
v56 = (A_ROW_s *)0;
{ /* Begin selection scope */
A_ROW_s * w55;
Escher_Iterator_s iter57_ROW;
Escher_IteratorReset( &iter57_ROW, pG_A_ROW_extent );
while ( (w55 = (A_ROW_s *)Escher_IteratorNext( &iter57_ROW )) != 0 )
{
if ( (w55->m_needs_probe == true) )
{
v56 = w55;
break;
}
}
} /* End selection scope */
/* SELECT ANY probe FROM INSTANCES OF SP
WHERE (SELECTED.available == TRUE) */
v59 = (A_SP_s *)0;
{ /* Begin selection scope */
A_SP_s * w58;
Escher_Iterator_s iter60_SP;
Escher_IteratorReset( &iter60_SP, pG_A_SP_extent );
while ( (w58 = (A_SP_s *)Escher_IteratorNext( &iter60_SP )) != 0 )
{
if ( (w58->m_available == true) )
{
v59 = w58;
break;
}
}
} /* End selection scope */
/* ASSIGN probe.available = FALSE */
v59->m_available = false;
/* ASSIGN row.needs_probe = FALSE */
v56->m_needs_probe = false;
/* CREATE OBJECT INSTANCE assignment OF PAA */
v61 = A_PAA_Create();
/* RELATE row TO probe ACROSS R2 USING assignment */
A_PAA_R2_Link( v56, v59, v61 );
/* GENERATE PAA_A3:'probe_assigned'() TO PAA ASSIGNER */
{
A_PAA_AsgEvent3_s * event62 = (A_PAA_AsgEvent3_s *) Escher_NewOoaEvent( (void *) 0, &A_PAA_AsgEvent3_sc );
Escher_SendSelfEvent( (OoaEvent_t *)event62 );
}
/* GENERATE ROW2:'probe_assigned'() TO row */
{
A_ROW_Event2_s * event63 = (A_ROW_Event2_s *) Escher_NewOoaEvent( (void *) v56, &A_ROW_Event2_sc );
SetEventSendingInstance( event63, self );
Escher_SendEvent( (OoaEvent_t *)event63 );
}
}