/*

$FILE		:	informa.c
$VERSIONE	:	1.00
$DATA		:	Novembre 1991
$PROGETTO	:	Tecniche OOP in C, prima soluzione
$AUTORE		:	Paolo Sommaruga
$RUOLO		:	Funzioni a supporto dei messaggi di errore degli oggetti.
$USO		:	Linking con tutti i files le cui funzioni usino INFO_SET()
				ed INFORMA()
*/

/*
    NOTA:
    Unit standard per l'assegnazione di due campi (titolo e messaggio) che
    ogni funzione puo` riempire per notificare un evento, tipicamente un
    errore che la funzione stessa descrive. Io uso il titolo per scrivere
    cosa fa la funzione in cui e` successo, ed il messaggio per indicare
    cosa e` realmente successo. Poi la funzione ritornera` un codice di
    errore.
    Il programma chiamante, a questo punto, avvisera` l'interfaccia utente
    che c'e` una notifica. L'UI chiamera` INFORMA con il puntatore alla
    propria funzione di notifica (la quale notifica e` cosi` indipendente,
    ed e` frutto della interfaccia utente stessa.
    Cio` fatto, il programma chiamante puo` prendere i necessari provvedi_
    menti, tipo chiudere e uscire.
*/

#include "exec/types.h"
#include "stdio.h"

#include "oopc.h"

#define MAXTLEN 75

static char in_titolo[ MAXTLEN ];
static char in_messaggio[ MAXTLEN ];

/*---------------------------------------
    INFO_SET: Riempie titolo e messaggio.
*/

void INFO_SET( pT , pM )
SZ pT;
SZ pM;

{
LONG Len;

Len = sprintf( in_titolo , pT );

if ( Len >= MAXTLEN )
    in_titolo[ MAXTLEN ] = '\0';

Len = sprintf( in_messaggio , pM );

if ( Len >= MAXTLEN )
    in_messaggio[ MAXTLEN ] = '\0';

} /* Fine di INFO_SET*/

/*
    INFORMA: Invoca la funzione passata come parametro.
*/

int INFORMA( fpFn )
FUNCTIONP fpFn;

{
int fr;
fr = (*fpFn)( in_titolo , in_messaggio );
return (int)fr;
} /* Fine di INFORMA */
