FwStack
Pilha LIFO (last-in-first-out) do framework TLPP. Util pra parsers, navegacao de arvore, undo/redo.
Assinatura: oStack := FwStack():New() // :Push(x), :Pop(), :Top(), :Size()
Retorna: FwStack object
FwStack e a pilha LIFO classica em TLPP. Usado em algoritmos recursivos (eliminando recursao via stack explicita), parsing, navegacao de arvore.
#include "tlpp-core.th"
User Function PilhaTeste()
Local oPilha := FwStack():New()
oPilha:Push("nivel-1")
oPilha:Push("nivel-2")
oPilha:Push("nivel-3")
ConOut(oPilha:Top()) // "nivel-3" (sem remover)
ConOut(oPilha:Pop()) // "nivel-3" (remove)
ConOut(oPilha:Pop()) // "nivel-2"
ConOut(oPilha:Size()) // 1
Return
Caso classico — undo/redo
oUndo := FwStack():New()
oRedo := FwStack():New()
User Function MyEdit(cNovo)
oUndo:Push(cValorAtual)
cValorAtual := cNovo
// limpa redo a cada nova acao
While !oRedo:IsEmpty()
oRedo:Pop()
EndDo
Return
Pegadinhas
- Top() nao remove, Pop() remove. Confundir os dois quebra logica.
- Pop em pilha vazia retorna NIL — sempre teste IsEmpty antes.