__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.
