Ce n'est un secret pour personne, j'aime la Poo et regrette que Pb n'offre pas cette possibilité. Cependant il possible dans l'ide de configurer un logiciel qui se lance avant la compilation et pourrait ainsi convertir une couche Poo en code Purebasic
Voici un exemple :
Code de la couche poo
Code : Tout sélectionner
Class Car
private string name
private int id
public Method Car(string name,int id)
this.name = name
this.id = id
EndMethod
public Method void teste(string name)
Debug name
EndMethod
public Method string getName()
return this.name
EndMethod
EndClass
Class FleetCar
private string name
public Method FleetCar(string name)
this.name = name
EndMethod
EndClass
Global Car myCar = new Car("volvo",1)
myCar\teste("ok")
Debug myCar\getName()
Code généré par le pré-compilateur
Code : Tout sélectionner
DeclareModule __OOP_INTERFACES
Interface Car
getName.s()
teste(name.s)
EndInterface
Interface FleetCar
EndInterface
EndDeclareModule
Module __OOP_INTERFACES
EndModule
DeclareModule _Car
Structure _struct
*methods
id.l
name.s
EndStructure
Declare new(name.s,id)
EndDeclareModule
Module _Car
Procedure new(name.s,id)
Protected *this._struct = AllocateStructure(_struct)
With *this
\methods = ?METHODS
\name = name
\id = id
ProcedureReturn *this
EndWith
EndProcedure
Procedure.s getName(*this._struct)
With *this
procedureReturn \name
EndWith
EndProcedure
Procedure teste(*this._struct,name.s)
With *this
Debug name
EndWith
EndProcedure
DataSection
METHODS:
Data.i @getName()
Data.i @teste()
EndDataSection
EndModule
DeclareModule _FleetCar
Structure _struct
*methods
name.s
EndStructure
Declare new(name.s)
EndDeclareModule
Module _FleetCar
Procedure new(name.s)
Protected *this._struct = AllocateStructure(_struct)
With *this
\methods = ?METHODS
\name = name
ProcedureReturn *this
EndWith
EndProcedure
DataSection
METHODS:
EndDataSection
EndModule
Global myCar.__OOP_INTERFACES::Car = _Car::new("volvo",1)
myCar\teste("ok")
Debug myCar\getName()
Note: pour garder l’esprit pb les fonctions (poo) ne sont pas sensible à la case
Voila le projet sur le quel je vais travaillé selon mon temps disponible
Toutes vos idées sont bonnes à prendre