#pragma once
#include "CStepMoveHeadToCamera.h"
#include "CStepWaferSearchDie.h"
#include "CStepGelpakBond.h"
#include "CStepWaferPick.h"
#include "CStepGelpakPick.h"
#include "CStepCalibDie.h"
#include "CStepLookupCalibDie.h"
#include "CStepWaferBond.h"
#include "CStepTransferPick.h"
#include "CStepBondAln.h"
#include "CStepBondDie.h"
#include "CStepSetBondDieTotal.h"

#include "CTemplateFactory.h"


#define CRAFT_STEP_WAFER_SEARCH_DIE_STR "CStepWaferSearchDie"
#define CRAFT_STEP_WAFER_PICK_DIE_STR "CStepWaferPick"
#define CRAFT_STEP_GELPAK_PICK_DIE_STR "CStepGelpakPick"
#define CRAFT_STEP_WAFER_BOND_STR "CStepWaferBond"
#define CRAFT_STEP_GELPAK_BOND_DIE_STR "CStepGelpakBond"

//#define CRAFT_STEP_CALIB_DIE_STR "CStepCalibDie"
#define CRAFT_STEP_TRANSFER_PICK_STR "CStepTransferPick"
#define CRAFT_STEP_LOOKUP_CALIB_DIE_STR "CStepLookupCalibDie"
#define CRAFT_STEP_BOND_ALN_STR "CStepBondAln"
#define CRAFT_STEP_BOND_DIE_STR "CStepBondDie"


static ProductRegistrar<CStepBase, CStepWaferSearchDie> step_wafer_search_die_class(CRAFT_STEP_WAFER_SEARCH_DIE_STR);
static ProductRegistrar<CStepBase, CStepGelpakPick> step_gelpak_pick_class(CRAFT_STEP_GELPAK_PICK_DIE_STR);
static ProductRegistrar<CStepBase, CStepWaferBond> step_calib_bond_class(CRAFT_STEP_WAFER_BOND_STR);
static ProductRegistrar<CStepBase, CStepGelpakBond> step_gelpak_search_die_class(CRAFT_STEP_GELPAK_BOND_DIE_STR);
static ProductRegistrar<CStepBase, CStepWaferPick> step_wafer_pick_class(CRAFT_STEP_WAFER_PICK_DIE_STR);
//static ProductRegistrar<CStepBase, CStepCalibDie> step_calib_die_class(CRAFT_STEP_CALIB_DIE_STR);
static ProductRegistrar<CStepBase, CStepTransferPick> step_calib_pick_class(CRAFT_STEP_TRANSFER_PICK_STR);
static ProductRegistrar<CStepBase, CStepLookupCalibDie> step_lookup_calib_die_class(CRAFT_STEP_LOOKUP_CALIB_DIE_STR);
static ProductRegistrar<CStepBase, CStepBondAln> step_bond_aln_class(CRAFT_STEP_BOND_ALN_STR);
static ProductRegistrar<CStepBase, CStepBondDie> step_bond_die_class(CRAFT_STEP_BOND_DIE_STR);