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