	/**********************************************/
	/* CVPCB : declaration des variables globales */
	/**********************************************/


#ifndef eda_global
#define eda_global extern
#endif

#include "wxstruct.h"
#include "pcbnew.h"
#include "cvstruct.h"

#include "gr_basic.h"
#include "colors.h"

// Define print format d to display a schematic component line
#define CMP_FORMAT wxT("%3d %8.8s - %16.16s : %-.32s")

#define FILTERFOOTPRINTKEY "FilterFootprint"

enum TypeOfStruct
	{
	STRUCT_NOT_INIT,
	STRUCT_COMPONENT,
	STRUCT_PIN,
	STRUCT_MODULE,
	STRUCT_PSEUDOMODULE
	};

class STOREPIN
{
public:
	int m_Type;				/* Type de la structure */
	STOREPIN * Pnext;		/* Chainage avant */
	int m_Index;				/* variable utilisee selon types de netlistes */
	int m_PinType;			/* code type electrique ( Entree Sortie Passive..) */
	wxString m_PinNet;			/* Pointeur sur le texte nom de net */
	wxString m_PinNum;
	wxString m_PinName;
	wxString m_Repere;		/* utilise selon formats de netliste */

	STOREPIN(void);
} ;

class STORECMP
{
public:
	int m_Type;				/* Type de la structure */
	STORECMP * Pnext;		/* Chainage avant */
	STORECMP * Pback;		/* Chainage arriere */
	int m_Num;				/* Numero d'ordre */
	int m_Multi;				/* Nombre d' unites par boitier */
	STOREPIN * m_Pins;		/* pointeur sur la liste des Pins */
	wxString m_Reference;		/* U3, R5  ... */
	wxString m_Valeur;		/* 7400, 47K ... */
	wxString m_TimeStamp;		/* Signature temporelle ("00000000" si absente) */
	wxString m_Module;		/* Nom du module (Package) corresp */
	wxString m_Repere;		/* utilise selon formats de netliste */
	wxArrayString m_FootprintFilter;	/* List of allowed footprints (wildcart allowed
							if void: no filtering */

	STORECMP(void);
	~STORECMP(void);
} ;

class STOREMOD
{
public:
	int m_Type;				/* Type de la structure */
	STOREMOD * Pnext;		/* Chainage avant */
	STOREMOD * Pback;		/* Chainage arriere */
	wxString m_Module;		/* Nom du module */
	wxString m_LibName;		/* Nom de la librairie contenant ce module */
	int m_Num ;				/* Numero d'ordre pour affichage sur la liste */
	wxString m_Doc;			/* Doc associee */
	wxString m_KeyWord;		/* Mots cles associes */

	STOREMOD(void);
};


eda_global STOREMOD * g_BaseListePkg;
eda_global STORECMP * g_BaseListeCmp;

eda_global FILE *source ;
eda_global FILE *dest	;
eda_global FILE *libcmp ;
eda_global FILE *lib_module ;

/* nom des fichiers a traiter */
eda_global wxString FFileName;

/* Types de netliste: */
#define TYPE_NON_SPECIFIE 0
#define TYPE_ORCADPCB2 1
#define TYPE_PCAD 2
#define TYPE_VIEWLOGIC_WIR 3
#define TYPE_VIEWLOGIC_NET 4

/* Gestion des noms des librairies */
eda_global wxString g_EquivExtBuffer
#ifdef MAIN
( wxT(".equ") )
#endif
;
eda_global wxString g_ExtCmpBuffer
#ifdef MAIN
 ( wxT(".cmp") )
#endif
;

eda_global wxString g_UserNetDirBuffer;	// Netlist path (void = current working directory)

eda_global wxArrayString g_ListName_Equ;	// list of .equ files to load

eda_global int g_FlagEESchema;
eda_global int Rjustify;		/* flag pout troncature des noms de Net:
							= 0: debut de chaine conservee (->ORCADPCB2)
							= 1: fin de chaine conservee (->VIEWLOGIC) */
eda_global int selection_type;	/* 0 pour sel par U??, 1 pour sel par ref ORCADPCB */

eda_global int modified;		/* Flag != 0 si modif attribution des modules */
eda_global int ListModIsModified;		/* Flag != 0 si modif liste des lib modules */

eda_global char alim[1024];

eda_global int nbcomp ;					/* nombre de composants trouves */
eda_global int nblib  ;					/* nombre d'empreintes trouvees */
eda_global int composants_non_affectes ;/* nbre de composants non affectes */

eda_global wxString NameBuffer;
eda_global wxString NetInNameBuffer;
eda_global wxString NetInExtBuffer;
eda_global wxString PkgInExtBuffer;
eda_global wxString NetDirBuffer;

eda_global wxString ExtRetroBuffer
#ifdef MAIN
 ( wxT(".stf") )
#endif
;


// Variables generales */
// Unused, for pcbnew compatibility:
eda_global Ki_PageDescr * SheetList[]
#ifdef MAIN
= {NULL}
#endif
;

// Unused, for pcbnew compatibility:
void Plume(int state);
