; #INDEX# ======================================================================================================================= ; Titre .........: StackStructure ; Auteur ........: L4crymal ; AutoIt Version : 3.3.0++ ; Langage .......: Francais ; Description ...: UDF de gestion de pile. ; =============================================================================================================================== ; #FONCTION# ==================================================================================================================== ; Nom .................: StackCreate ; Description .........: Creation d'une pile. ; Syntaxe .............: StackCreate([$size = 10]) ; Parametres ..........: $size - [optional] Taille initial maximum de la pile. Defaut : 10 ; Valeures retournées .: La variable contenant la pile. ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackCreate($size = 10) If $size < 0 Then $size = 10 Local $avArray[$size + 1] $avArray[0] = 1 Return $avArray EndFunc ;==>StackCreate ; #FONCTION# ==================================================================================================================== ; Nom .................: StackDelete ; Description .........: Supprime toute la pile. ; Syntaxe .............: StackDelete(ByRef $avArray) ; Parametres ..........: $avArray - Pile a supprimer ; Valeures retournées .: ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackDelete(ByRef $avArray) ReDim $avArray[1] $avArray[0] = -1 EndFunc ;==>StackDelete ; #FONCTION# ==================================================================================================================== ; Nom .................: StackClear ; Description .........: Repositionne le curseur à la base de la pile. ; Syntaxe .............: StackClear(ByRef $avArray) ; Parametres ..........: $avArray - Pile a nettoyer ; Valeures retournées .: ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackClear(ByRef $avArray) $avArray[0] = 1 EndFunc ;==>StackClear ; #FONCTION# ==================================================================================================================== ; Nom .................: StackSee ; Description .........: Retourne la tete de la pile sans la retirer. ; Syntaxe .............: StackSee(ByRef $avArray) ; Parametres ..........: $avArray - Pile concernee ; Valeures retournées .: Succes - Tete de la pile, @error = 0 ; Echec - -1, @error = 1 ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackSee(ByRef $avArray) If $avArray[0] > 1 Then SetError(0) Return $avArray[$avArray[0] - 1] Else SetError(1) Return -1 EndIf EndFunc ;==>StackSee ; #FONCTION# ==================================================================================================================== ; Nom .................: StackPop ; Description .........: Retourne la tete de la pile en la retirant. ; Syntaxe .............: StackPop(ByRef $avArray[, $suppr = False]) ; Parametres ..........: $avArray - Pile concernee ; $suppr - [optional] Si on doit supprimer ou pas le contenu de la memoire perdue. Defaut : False ; Valeures retournées .: Succes - Tete de la pile, @error = 0 ; Echec - -1, @error = 1 ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackPop(ByRef $avArray, $suppr = False) If $avArray[0] > 1 Then Local $val = $avArray[$avArray[0] - 1] If $suppr Then $avArray[$avArray[0] - 1] = "" $avArray[0] -= 1 SetError(0) Return $val Else SetError(1) Return -1 EndIf EndFunc ;==>StackPop ; #FONCTION# ==================================================================================================================== ; Nom .................: StackPush ; Description .........: Ajoute une valeur à la pile, si cette dernière est pleine elle sera redimentionnée. ; Syntaxe .............: Func StackPush(ByRef $avArray[, $val = ""[, $n = 1]]) ; Parametres ..........: $avArray - Pile concernee ; $val - [optional] Nouvelle valeur. Defaut : "" ; $n - [optional] Redimensionnement (ajoute à la taille si la pile est pleine). Defaut : 1 ; Valeures retournées .: ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackPush(ByRef $avArray, $val = "", $n = 1) If $n < 1 Then $n = 1 If StackIsFull($avArray) Then ReDim $avArray[$avArray[0] + $n] EndIf $avArray[$avArray[0]] = $val $avArray[0] += 1 EndFunc ;==>StackPush ; #FONCTION# ==================================================================================================================== ; Nom .................: StackIsEmpty ; Description .........: Verifie si la pile est vide. ; Syntaxe .............: StackIsEmpty(ByRef $avArray) ; Parametres ..........: $avArray - Pile concernee ; Valeures retournées .: Succes - True ; Echec - False ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackIsEmpty(ByRef $avArray) If $avArray[0] = 1 Then Return True Else Return False EndIf EndFunc ;==>StackIsEmpty ; #FONCTION# ==================================================================================================================== ; Nom .................: StackIsFull ; Description .........: Verifie si la pile est pleine. ; Syntaxe .............: StackIsFull(ByRef $avArray) ; Parametres ..........: $avArray - Pile concernee ; Valeures retournées .: Succes - True ; Echec - False ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackIsFull(ByRef $avArray) If $avArray[0] = UBound($avArray) Then Return True Else Return False EndIf EndFunc ;==>StackIsFull ; #FONCTION# ==================================================================================================================== ; Nom .................: StackSize ; Description .........: Retourne la taille de la pile ou la taille max de la pile ; Syntaxe .............: StackSize(ByRef $avArray[, $mode = 1]) ; Parametres ..........: $avArray - Pile concernee ; $mode - [optional] 1 pour le nombre d'elements dans la pile, 2 pour la taille de la pile. Defaut : 1 ; Valeures retournées .: Succes - Taille de la pile ; Echec - -1 ; Auteur ..............: L4crymal ; Modifie .............: ; Remarques ...........: ; Exemple .............: Oui ; =============================================================================================================================== Func StackSize(ByRef $avArray, $mode = 1) If $mode = 1 Then Return $avArray[0] ElseIf $mode = 2 Then Return UBound($avArray) - 1 Else Return -1 EndIf EndFunc ;==>StackSize