Intro
Contents
Nell’articolo precedente, relativo alla classe CLB_messenger, si sono discusse le funzionalità di trasmissione/ricezione dei messaggi fra oggetti costruiti con il framework di Colibrì. In particolare è stata analizzata la classe di servizio test_request utilizzata per la formattazione e il parsing dei comandi scambiati.
In questo articolo presenteremo in modo sintetico le macro che semplificano e rendono più leggibile la scrittura del codice, senza la necessità di usare le funzioni, a volte complesse, che abbiamo descritto nel precedente articolo.
L’insieme delle macro qui descritte costituisce un sottoinsieme dei comandi che possono essere scritti nel linguaggio di Colibri. Le definizioni relative sono scritte in un insieme di file di inclusione, disponibili attraverso la linea
#include "WIDGET_DEFINITION.h"
Comandi, messaggi, parametri..
Le macro che verranno descritte, fanno parte del linguaggio di Colibri (CLB_lang, come definito di seguito) , e consistono in metodi e funzioni, nell’accezione di un linguaggio come c /c++; Nel nostro caso, per comodità parleremo di comandi quando faremo riferimento alle macro di CLB_lang, parleremo di messaggi quando definiremo la frase che viene scambiata fra gli oggetti usando le macro relative di CLB_lang; ad esempio:
#define __send_cmd_to_obj(receiver,...) send_to_obj(receiver,__VA_ARGS__,_$end)
__send_cmd_to_obj è un comando di CLB_lang i cui parametri sono receiver ed una lista variadic di altri elementi.
Quando usiamo il comando nel codice, probabilmente scriveremo un’istruzione di questo tipo:
__send_cmd_to_obj(w_plot, _$get, _$selected, _$curve, curva);
il parametro w_plot, è il destinatario del messaggio
la sequenza di parametri _$get, _$selected, _$curve, curva costituisce il messaggio che sarà ricevuto dalla funzione slot_messenger
$get, _$selected, _$curve è la frase del messaggio
curva è il puntatore ad un oggetto passato come allegato al messaggio;
la frase che compone il messaggio è in genere formato da stringhe nella forma _$word dove il suffisso mnemonico _$ serve ad indicare che è una stringa appartenente a CLB_lang; tutti gli altri costituenti il messaggio sono parametri, come in questo esempio. Lo scopo è quello di rendere evidente a chi legge il programma (anche chi lo scrive, magari dopo mesi, dovrà rileggerlo..) la funzione svolta dal messaggio. ad esempio un comando come il seguente è simile nella forma a quello sopra riportato, ma il significato è evidentemente diverso.
__send_cmd_to_obj(w_plot, _$get, _$selected, _$document, doc);
Cosa c’è scritto nelle stringhe di tipo _$word? un testo mnemonico che richiama la descrizione stessa: ad esempio, facendo riferimento agli elementi della frase appena descritta,
#define _$get L"get" #define _$selected L"selected" #define _$document L"document"
Ma nella logica del programma$get poteva contenere l’italiano “estrai”, ma non sarebbe cambiato nulla per il significato d’uso.