__slot_function_parser: analisi e riconoscimento dei messaggi

Lo slot di ricezione dei messaggi è definito all’interno del blocco

__slot_function_parser  …  __end__declare_slots

Per l’analisi dei messaggi sono definite un gruppo di macro che semplificano la navigazione nella struttura dati relativa:

__is_function: usata per il riconoscimento di una  func_name ; se riconoscita la func_name viene eseguito il blocco { .. } che segue nel codice:

__slot_function_parser

	__is_function(_$detach)
	{
		__operation_case(_$document)
		{
			__pop_param(edit, LAYOUT_printing_page);
			if (!edit)
			{
					_$str->layout = 0;
				return true;
			}
			else
			if (edit == _$str->layout)
			{
				_$str->layout = 0;
				return true;
			}
		}
	}
        ....
        ....
__end_slot

__operation_case: individuazione dell’argomento op_id.  La macro è usata all’interno del blocco __is_function; se l’argomento passato alla macro è quello atteso, viene definito un nuovo blocco per continuare l’analisi degli argomenti e/o eseguire il codice successivo;

__pop_param: estrazione di un argomento tipizzato (args). la macro permette di istanziare un puntatore all’argomento successivo ricevuto; gli argomenti ricevuti sono tipizzati, pertanto la macro riceve due argomenti: il primo (nell’esempio, edit) è il nome dell’istanza estratta; il secondo (nell’esempio  LAYOUT_printing_page) è la classe del tipo di istanza generata; la tipizzazione può corrispondere ad uno dei tipi, strutture o classi standard di C++; La funzione deve essere richiamata nel blocco tante volte quante previste nel protocollo di comunicazione; nel nostro caso, tratto dalla classe DOCK_edit_layout,  è presente un solo argomento (args), avendo interpretato il comando:

__exec_global_fn(_$dock_edit_layout,_$detach,_$document,doc);

Valore ritornato dalla __slot_function_parser: la funzione rimanda true o false ad indicare che il comando è stato intercettato (true) o no (false); prima di ritornare al chiamante, è possibile dichiarare un oggetto di ritorno per le macro __exec_global_fn__exec_obj_fn usate dal chiamante, attraverso l’uso della macro __return.

Pages: 1 2 3 4 5 6 7
Skip to toolbar