/*****************************************************************************
 * File:  EXP_T_object.h
 *
 * Object:     technique  (T)
 * Subsystem:  experiment
 * Domain:     EXP
 * Repository: exp.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. !!!
 ****************************************************************************/

#ifndef EXP_T_OBJECT_H
#define EXP_T_OBJECT_H

#ifdef	__cplusplus
extern "C" {
#endif

#include "e_mechs.h"
#include "e_events.h"
#include "EXP_objects.h"
#include "sys_user_co.h"

/*****************************************************************************
 * Structure: EXP_T_s
 * Structural representation of application analysis object:
 *   'technique'  (T)
 ****************************************************************************/
struct EXP_T_s
{
  /* Application analysis OIM attributes */
  Escher_UniqueID_t m_T_ID;  /* * T_ID */
  unsigned int m_start : 2;  /* - start */
  unsigned int m_end : 6;  /* - end */
  unsigned int m_number_of_batches : 4;  /* - number_of_batches */
  unsigned int m_current_batch : 4;  /* - current_batch */


  /* State machine current state */
  Escher_StateNumber_t mc_current_state;
};

/*****************************************************************************
 * Object Factory/Manipulation Methods
 ****************************************************************************/
extern void EXP_T_FactoryInit( void );
extern EXP_T_s * EXP_T_Create( void );
/* Note: No instance deletion accessor needed */

#define EXP_T_MAX_EXTENT_SIZE 10
extern Escher_ObjectSet_s * pG_EXP_T_extent;

/*****************************************************************************
 * Object Relationship Methods
 ****************************************************************************/

/*****************************************************************************
 * Enumeration of state model states for object
 *****************************************************************************/
#define EXP_T_STATE_1 1  /* State [1]: 'idle' */
#define EXP_T_STATE_2 2  /* State [2]: 'running' */

/*****************************************************************************
 * Enumeration of state model event numbers
 *****************************************************************************/
#define EXP_T_EVENT_T1 0  /* 'go' */
#define EXP_T_EVENT_T2 1  /* 'batch_done' */
#define EXP_T_EVENT_T3 2  /* 'stop' */


/*****************************************************************************
 * State Action Methods
 ****************************************************************************/
extern void EXP_T_Action_1( EXP_T_s *, const OoaEvent_t * const );
extern void EXP_T_Action_2( EXP_T_s *, const OoaEvent_t * const );

extern void EXP_T_Dispatch( const OoaEvent_t * const );

#ifdef	__cplusplus
}
#endif

#endif  /* EXP_T_OBJECT_H */