Intro

In un vecchio post avevamo descritto  l’interfaccia OPERATION_CALL;  in questo articolo descriviamo un insieme di macro usate per semplificare la comunicazione fra oggetti dotati di questa interfaccia;

Le nuove funzionalità, introdotte dalla versione 7 di Colibri, permettono di trasferire messaggi e dati fra oggetti usando la nuova classe test_request (che in questa esposizione non è necessario discutere).

Per procedere nell’esposizione ricordiamo che nel framework Colibri sono definibili due tipi di oggetti/widget: oggetti a visibilità globale e oggetti accessibili attraverso il pointer.

Oggetti visibili globalmente

Una istanza di una classe di interfaccia OPERATION_CALL  (in genere WIDGET, ma non necessariamente)  può essere accessibile globalmente nell’applicazione attraverso una registrazione, in genere definita nel costruttore; In questo caso l’istanza dovrà essere unica, cioè registrata una sola volta, definendo un identificatore; ad esempio la classe DOCK_edit_layout, che deve essere visibile alle classi LAYOUT_printing_page, viene costruita in fase di inizializzazione del programma in un’unica istanza, assegnandogli  l’identificatore  _$dock_edit_layout (definita in CLB_language.h); il codice che segue ne mostra le modalità di registrazione:

La macro __register_global_object garantisce la visibilità globale dell’istanza, rendendola accessibile mediante l’identificatore dock_edit_layout; si ribadisce che la classe deve avere un’unica istanza allocata;

Accesso ad istanze registrate globalmente: Un oggetto registrato globalmente può essere individuato mediante la macro __get_global_object definita in CLB_language.h:

Gli oggetti visibili globalmente sono in genere utilizzati per ricevere e trasmettere messaggi ed altre informazioni associate;

Oggetti visibili localmente

Sono tutti gli oggetti di interfaccia OPERATION_CALL che il programmatore può accedere attraverso il pointer dell’istanza, ad esempio un WIDGET definito localmente o ricevuto come puntatore da una funzione.

%d bloggers like this:
Skip to toolbar