__return : ritornare informazioni dall'oggetto ricevente il messaggio
il comando __return permette di rimandare un oggetto dopo la ricezione del messaggio; è importante notare che utilizzando questi metodi di comunicazione fra gli oggetti non è in genere necessario conoscerne la tipizzazione, nel caso di oggetti globali; questo permette di lanciare messaggi che non necessariamente saranno interpretati (ad esempio l’oggetto globale può non esistere, o il comando non essere corretto, ma questo non genererà eccezioni nel codice); l’oggetto globale può essere definito in una DLL non direttamente accessibile (visibile) da quella chiamante.
__return: all’interno del blocco di riconoscimento del comando è possibile utilizzare la macro per restituire un oggetto; ad esempio:
__is_function(_$export) { if (__required_operation(_$lum)) // expor lum channel.. { __return($obj->GetLuminanceMap()) } //...... //...... //...... } //...
Il codice riportato riconosce il comando (_$export,_$lum) e usa la macro __return per rimandare il canale di luminanza generato sull’istanza SPECTRAL_IMAGE.
Un possibile comando per ricevere questa informazione è :
DOCUMENT *doc = ( DOCUMENT * ) __exec_global_fn(spt_doc, _$export,_$lum); if (doc) { //..... //..... }
Dove doc è il documento luminanza rimandato e spt_doc è l’oggetto SPECTRAL_IMAGE interrogato; notare che il valore ritornato è caratterizzato come DOCUMENT.