TailBite et interface
Publié : mar. 10/avr./2007 16:40
J'ai un petit problem j'essaye de faire une lib, une sorte de file pour etre exact et j'utilise les interfaces mais impossible de compiler avec tailbite.
Si quelqu'un pouvait m'aiguiller sa serait sympa.
Si quelqu'un pouvait m'aiguiller sa serait sympa.
Code : Tout sélectionner
EnableExplicit
Structure Class_File
MTable.l
*First
EndStructure
Structure Class_Cellule
MTable.l
*Element
*Next
*Previous
EndStructure
DeclareDLL AddFileElement(*this.Class_File, *element)
DeclareDLL GetFirstElement(*this.Class_File)
DeclareDLL FreeFile(*this.Class_File)
DeclareDLL SetElement(*this.Class_Cellule, *element)
DeclareDLL GetElement(*this.Class_Cellule)
DeclareDLL SetNextElement(*this.Class_Cellule, *element)
DeclareDLL GetNextElement(*this.Class_Cellule)
DeclareDLL SetPreviousElement(*this.Class_Cellule, *element)
DeclareDLL GetPreviousElement(*this.Class_Cellule)
DeclareDLL FreeCellule(*this.Class_Cellule)
DeclareDLL NewCellule(*Element)
DeclareDLL NewFile(*FirstElement = #Null)
Interface File
AddFileElement(*element)
GetFirstElement()
FreeFile()
EndInterface
Interface Cellule
SetElement(*element)
GetElement()
SetNextElement(*element)
GetNextElement()
SetPreviousElement(*element)
GetPreviousElement()
FreeCellule()
EndInterface
ProcedureDLL NewCellule(*Element)
Protected *this.Class_Cellule = AllocateMemory(SizeOf(Cellule))
*this\MTable = ?Cellule_MTable
*this\Element = *Element
*this\Next = #Null
*this\Previous = #Null
ProcedureReturn *this
EndProcedure
ProcedureDLL SetElement(*this.Class_Cellule, *Element)
*this\Element = *Element
EndProcedure
ProcedureDLL SetNextElement(*this.Class_Cellule, *Element)
*this\Next = *Element
EndProcedure
ProcedureDLL GetElement(*this.Class_Cellule)
ProcedureReturn *this\Element
EndProcedure
ProcedureDLL GetNextElement(*this.Class_Cellule)
ProcedureReturn *this\Next
EndProcedure
ProcedureDLL FreeCellule(*this.Class_Cellule)
FreeMemory(*this)
EndProcedure
ProcedureDLL SetPreviousElement(*this.Class_Cellule, *element)
*this\Previous = *element
EndProcedure
ProcedureDLL GetPreviousElement(*this.Class_Cellule)
ProcedureReturn *this\Previous
EndProcedure
ProcedureDLL NewFile(*FirstElement = #Null)
Protected *this.Class_File = AllocateMemory(SizeOf(Class_File))
*this\MTable = ?File_MTable
If *FirstElement
*this\First = NewCellule(*FirstElement)
Else
*this\First = *FirstElement
EndIf
ProcedureReturn *this
EndProcedure
ProcedureDLL AddFileElement(*this.Class_File, *element)
Protected *first.Cellule
*first = NewCellule(*element)
If *this\First
*first\SetNextElement(*this\First)
SetPreviousElement(*this\First, *first)
EndIf
*this\First = *first
EndProcedure
ProcedureDLL GetFirstElement(*this.Class_File)
ProcedureReturn = *this\First
EndProcedure
ProcedureDLL FreeFile(*this.Class_File)
FreeMemory(*this)
EndProcedure
DataSection
File_MTable:
Data.l @AddFileElement()
Data.l @GetFirstElement()
Data.l @FreeFile()
EndDataSection
DataSection
Cellule_MTable:
Data.l @SetElement()
Data.l @GetElement()
Data.l @SetNextElement()
Data.l @GetNextElement()
Data.l @SetPreviousElement()
Data.l @GetPreviousElement()
Data.l @FreeCellule()
EndDataSection
DisableExplicit