#ifndef macrolib_ibis_vecvs_pwl_ideal_INCLUDED
#define macrolib_ibis_vecvs_pwl_ideal_INCLUDED
#include "macrolib_ibis_vecvs_pwl.hpp"
#if defined(__GNUC__) && defined(unix)
#  pragma interface "macrolib_ibis_vecvs_pwl_ideal.hpp"
#endif
#ifndef macrolib_ibis_vecvs_pwl_ideal_export
#  if defined(_WIN32) && !defined(unix)
#    define macrolib_ibis_vecvs_pwl_ideal_export __declspec(dllimport)
#  else
#    define macrolib_ibis_vecvs_pwl_ideal_export
#  endif
#endif
#include "std_standard.hpp"
using namespace STD;
namespace MACROLIB {
class macrolib_ibis_vecvs_pwl_ideal_export IBIS_VECVS_PWL_IDEAL : public IBIS_VECVS_PWL {
public:
ELECTRICAL_SYSTEMS_VOLTAGE VOUT;
ELECTRICAL_SYSTEMS_VOLTAGE mM1_VOUT;
ELECTRICAL_SYSTEMS_CURRENT IOUT;
ELECTRICAL_SYSTEMS_CURRENT mM1_IOUT;
ELECTRICAL_SYSTEMS_VOLTAGE VIN;
ELECTRICAL_SYSTEMS_VOLTAGE mM1_VIN;
STANDARD_REAL T_EVENT;
VHDL_Dispatcher *T_EVENT_dispatchers;
STANDARD_INTEGER EVENTSTATE;
VHDL_Dispatcher *EVENTSTATE_dispatchers;
double LOOKUP_REAL_REAL_VECTOR_REAL_VECTOR_STRING_REAL(IBIS_VECVS_PWL_IDEAL *inParent, const double , const STANDARD_REAL_VECTOR &, const STANDARD_REAL_VECTOR &, const STANDARD_STRING &);
void *mCG1;
unsigned mF2 : 1;
unsigned mF3 : 1;
short mP1();
static short smP1(IBIS_VECVS_PWL_IDEAL *);
STANDARD_REAL_DriverHandle p1_T_EVENT_driver;
STANDARD_INTEGER_DriverHandle p1_EVENTSTATE_driver;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tP_through_qP_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tP_root_exp_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tP_through_qIOUT_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tportP_through_qIOUT_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tN_through_qN_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tN_root_exp_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tN_through_qIOUT_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tportN_through_qIOUT_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tPS_through_qPS_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tPS_root_exp_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tNS_through_qNS_smp;
ELECTRICAL_SYSTEMS_CURRENT_MatrixPointer tNS_root_exp_smp;
double *exp_P_4[7];
double *exp_N_5[7];
double *exp_PS_6[7];
double *exp_NS_7[7];
STANDARD_BOOLEAN_DriverHandle VIN_ABOVE_8_driver;
STANDARD_BOOLEAN_DriverHandle VIN_ABOVE_9_driver;
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e11_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e11_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e11_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e12_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e12_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e12_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e13_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e13_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e13_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e14_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e14_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e14_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e15_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e15_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e15_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e16_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e16_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e16_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
#ifndef ELECTRICAL_SYSTEMS_VOLTAGE_e17_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
#define ELECTRICAL_SYSTEMS_VOLTAGE_e17_q10_ELECTRICAL_SYSTEMS_VOLTAGE_Identifier
typedef ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer ELECTRICAL_SYSTEMS_VOLTAGE_e17_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer;
#endif
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VOUT_across_VOUT_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VOUT_across_P_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VOUT_across_N_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VIN_across_VIN_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VIN_across_PS_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer VIN_across_NS_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e11_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e11_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e12_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e12_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e13_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e13_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e14_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e14_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e15_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e15_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e16_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e16_VOUTq10_smp;
ELECTRICAL_SYSTEMS_VOLTAGE_e17_q10_ELECTRICAL_SYSTEMS_VOLTAGE_MatrixPointer e17_VOUTq10_smp;
static short smD_STANDARD_DOMAIN(IBIS_VECVS_PWL_IDEAL *inInstance);
short mD_STANDARD_DOMAIN();
static short smD_VIN_ABOVE_8(IBIS_VECVS_PWL_IDEAL *inInstance);
short mD_VIN_ABOVE_8();
static short smD_VIN_ABOVE_9(IBIS_VECVS_PWL_IDEAL *inInstance);
short mD_VIN_ABOVE_9();
STANDARD_BOOLEAN VIN_ABOVE_8; 
VHDL_Dispatcher *VIN_ABOVE_8_dispatchers; 
bool VIN_ABOVE_8_Control();
bool VIN_ABOVE_8_Initialize(double *);
STANDARD_BOOLEAN VIN_ABOVE_9; 
VHDL_Dispatcher *VIN_ABOVE_9_dispatchers; 
bool VIN_ABOVE_9_Control();
bool VIN_ABOVE_9_Initialize(double *);
short Elaborate(const char *, long);
short ElaborateDrivers(void);
virtual short ElaborateConfiguration(const char *, long);
short Initialize(long, double *);
short Finalize(void);
short AmsLink(long, long **);
short AmsBim(long, TRANS_PARAM_BIM *, long **);
short AmsConverge(long, long **, double *, unsigned char *, ANALYSISTYPE);
void CreateDispatchers(void);
void DeleteDispatchers(void);
public:
IBIS_VECVS_PWL_IDEAL();
virtual ~IBIS_VECVS_PWL_IDEAL();
};
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_Elaborate(T_B3CIHandle *, const char *, long);
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_Initialize(T_B3CIHandle, long, double *);
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_Finalize(T_B3CIHandle inInstance);
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_AmsLink(T_B3CIHandle, long, long **);
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_AmsBim(T_B3CIHandle, long, TRANS_PARAM_BIM *, long **);
extern "C" macrolib_ibis_vecvs_pwl_ideal_export short MACROLIB_IBIS_VECVS_PWL_IDEAL_AmsConverge(T_B3CIHandle, long, long **, double *, unsigned char *, ANALYSISTYPE);
}
#endif /* macrolib_ibis_vecvs_pwl_ideal_INCLUDED */
