class ACTION

la classe ACTION è  l’interfaccia di gestione di azioni su un documento. da questa classe derivano le azioni specifiche di undo/redo eseguite su un documento. La classe espone una funzione di gestione della memoria, che permette al programmatore l’allocazione e disallocazione automatica di buffer; contiene inoltre tre metodi virtuali che saranno riscritti nelle classi derivate.

Malloc()

La classe mette a disposizione una funzione Malloc, il cui compito e di allocare un blocco di memoria utilizzabile dalle istanze derivate o all’interno dei documenti durante la costruzione dell’azione undo (ad esempio per allocare un buffer assegnato ad un’area immagine copiata..)
La memoria allocata verrà liberata automaticamente alla distruzione della classe

FilePush() e FilePop() scrittura su file delle azioni

Le due funzioni sono virtuali e devono essere riscritte dalle classi derivate. Consistono nell’interfaccia di salvataggio e richiamo dell’azione da un file: è compito della classe derivata da ACTION decidere se effettuare il flush o meno su file. In genere la strategia è quella di decidere internamente alla classe se vale la pena liberare la memoria temporaneamente fino al FilePop successivo;

Do(OPERATIN_CALL *doc)  esecuzione delle operazioni di Undo/Redo

La funzione virtuale Do(),  esegue l’azione di undo/redo su un documento doc passato come argomento. Di seguito è riportata la funzione usata nella classe AREA_RESTORE

[sourcecode language=”cpp”]
bool AREA_RESTORE::Do(OPERATION_CALL *doc)
{
GETSTR
___SENDER(doc,OP_RESTORE_AREA)
A_PUSH(this)
___SENDER_END
return RECEIVER_RESPONSE;
}
[/sourcecode]
La funzione controlla che per prima cosa che il comando OP_RESTORE_AREA sia riconosciuto dal documento, quindi esegue la chiamata al receiver di doc.

Per maggiori dettagli sul paradigma SENDER/RECEIVER leggere questo articolo

Pages: 1 2 3 4
Skip to toolbar