#ifndef _SMLIB_H_
#define _SMLIB_H_
#include <X11/SM/SM.h>
#include <X11/ICE/ICElib.h>
typedef IcePointer SmPointer;
typedef struct _SmcConn *SmcConn;
typedef struct _SmsConn *SmsConn;
typedef struct {
int length;
SmPointer value;
} SmPropValue;
typedef struct {
char *name;
char *type;
int num_vals;
SmPropValue *vals;
} SmProp;
typedef enum {
SmcClosedNow,
SmcClosedASAP,
SmcConnectionInUse
} SmcCloseStatus;
typedef void (*SmcSaveYourselfProc) (
SmcConn ,
SmPointer ,
int ,
Bool ,
int ,
Bool
);
typedef void (*SmcSaveYourselfPhase2Proc) (
SmcConn ,
SmPointer
);
typedef void (*SmcInteractProc) (
SmcConn ,
SmPointer
);
typedef void (*SmcDieProc) (
SmcConn ,
SmPointer
);
typedef void (*SmcShutdownCancelledProc) (
SmcConn ,
SmPointer
);
typedef void (*SmcSaveCompleteProc) (
SmcConn ,
SmPointer
);
typedef void (*SmcPropReplyProc) (
SmcConn ,
SmPointer ,
int ,
SmProp **
);
typedef struct {
struct {
SmcSaveYourselfProc callback;
SmPointer client_data;
} save_yourself;
struct {
SmcDieProc callback;
SmPointer client_data;
} die;
struct {
SmcSaveCompleteProc callback;
SmPointer client_data;
} save_complete;
struct {
SmcShutdownCancelledProc callback;
SmPointer client_data;
} shutdown_cancelled;
} SmcCallbacks;
#define SmcSaveYourselfProcMask (1L << 0)
#define SmcDieProcMask (1L << 1)
#define SmcSaveCompleteProcMask (1L << 2)
#define SmcShutdownCancelledProcMask (1L << 3)
typedef Status (*SmsRegisterClientProc) (
SmsConn ,
SmPointer ,
char *
);
typedef void (*SmsInteractRequestProc) (
SmsConn ,
SmPointer ,
int
);
typedef void (*SmsInteractDoneProc) (
SmsConn ,
SmPointer ,
Bool
);
typedef void (*SmsSaveYourselfRequestProc) (
SmsConn ,
SmPointer ,
int ,
Bool ,
int ,
Bool ,
Bool
);
typedef void (*SmsSaveYourselfPhase2RequestProc) (
SmsConn ,
SmPointer
);
typedef void (*SmsSaveYourselfDoneProc) (
SmsConn ,
SmPointer ,
Bool
);
typedef void (*SmsCloseConnectionProc) (
SmsConn ,
SmPointer ,
int ,
char **
);
typedef void (*SmsSetPropertiesProc) (
SmsConn ,
SmPointer ,
int ,
SmProp **
);
typedef void (*SmsDeletePropertiesProc) (
SmsConn ,
SmPointer ,
int ,
char **
);
typedef void (*SmsGetPropertiesProc) (
SmsConn ,
SmPointer
);
typedef struct {
struct {
SmsRegisterClientProc callback;
SmPointer manager_data;
} register_client;
struct {
SmsInteractRequestProc callback;
SmPointer manager_data;
} interact_request;
struct {
SmsInteractDoneProc callback;
SmPointer manager_data;
} interact_done;
struct {
SmsSaveYourselfRequestProc callback;
SmPointer manager_data;
} save_yourself_request;
struct {
SmsSaveYourselfPhase2RequestProc callback;
SmPointer manager_data;
} save_yourself_phase2_request;
struct {
SmsSaveYourselfDoneProc callback;
SmPointer manager_data;
} save_yourself_done;
struct {
SmsCloseConnectionProc callback;
SmPointer manager_data;
} close_connection;
struct {
SmsSetPropertiesProc callback;
SmPointer manager_data;
} set_properties;
struct {
SmsDeletePropertiesProc callback;
SmPointer manager_data;
} delete_properties;
struct {
SmsGetPropertiesProc callback;
SmPointer manager_data;
} get_properties;
} SmsCallbacks;
#define SmsRegisterClientProcMask (1L << 0)
#define SmsInteractRequestProcMask (1L << 1)
#define SmsInteractDoneProcMask (1L << 2)
#define SmsSaveYourselfRequestProcMask (1L << 3)
#define SmsSaveYourselfP2RequestProcMask (1L << 4)
#define SmsSaveYourselfDoneProcMask (1L << 5)
#define SmsCloseConnectionProcMask (1L << 6)
#define SmsSetPropertiesProcMask (1L << 7)
#define SmsDeletePropertiesProcMask (1L << 8)
#define SmsGetPropertiesProcMask (1L << 9)
typedef Status (*SmsNewClientProc) (
SmsConn ,
SmPointer ,
unsigned long * ,
SmsCallbacks * ,
char **
);
typedef void (*SmcErrorHandler) (
SmcConn ,
Bool ,
int ,
unsigned long ,
int ,
int ,
SmPointer
);
typedef void (*SmsErrorHandler) (
SmsConn ,
Bool ,
int ,
unsigned long ,
int ,
int ,
SmPointer
);
_XFUNCPROTOBEGIN
extern SmcConn SmcOpenConnection (
char * ,
SmPointer ,
int ,
int ,
unsigned long ,
SmcCallbacks * ,
char * ,
char ** ,
int ,
char *
);
extern SmcCloseStatus SmcCloseConnection (
SmcConn ,
int ,
char **
);
extern void SmcModifyCallbacks (
SmcConn ,
unsigned long ,
SmcCallbacks *
);
extern void SmcSetProperties (
SmcConn ,
int ,
SmProp **
);
extern void SmcDeleteProperties (
SmcConn ,
int ,
char **
);
extern Status SmcGetProperties (
SmcConn ,
SmcPropReplyProc ,
SmPointer
);
extern Status SmcInteractRequest (
SmcConn ,
int ,
SmcInteractProc ,
SmPointer
);
extern void SmcInteractDone (
SmcConn ,
Bool
);
extern void SmcRequestSaveYourself (
SmcConn ,
int ,
Bool ,
int ,
Bool ,
Bool
);
extern Status SmcRequestSaveYourselfPhase2 (
SmcConn ,
SmcSaveYourselfPhase2Proc ,
SmPointer
);
extern void SmcSaveYourselfDone (
SmcConn ,
Bool
);
extern int SmcProtocolVersion (
SmcConn
);
extern int SmcProtocolRevision (
SmcConn
);
extern char *SmcVendor (
SmcConn
);
extern char *SmcRelease (
SmcConn
);
extern char *SmcClientID (
SmcConn
);
extern IceConn SmcGetIceConnection (
SmcConn
);
extern Status SmsInitialize (
char * ,
char * ,
SmsNewClientProc ,
SmPointer ,
IceHostBasedAuthProc ,
int ,
char *
);
extern char *SmsClientHostName (
SmsConn
);
extern char *SmsGenerateClientID (
SmsConn
);
extern Status SmsRegisterClientReply (
SmsConn ,
char *
);
extern void SmsSaveYourself (
SmsConn ,
int ,
Bool ,
int ,
Bool
);
extern void SmsSaveYourselfPhase2 (
SmsConn
);
extern void SmsInteract (
SmsConn
);
extern void SmsDie (
SmsConn
);
extern void SmsSaveComplete (
SmsConn
);
extern void SmsShutdownCancelled (
SmsConn
);
extern void SmsReturnProperties (
SmsConn ,
int ,
SmProp **
);
extern void SmsCleanUp (
SmsConn
);
extern int SmsProtocolVersion (
SmsConn
);
extern int SmsProtocolRevision (
SmsConn
);
extern char *SmsClientID (
SmsConn
);
extern IceConn SmsGetIceConnection (
SmsConn
);
extern SmcErrorHandler SmcSetErrorHandler (
SmcErrorHandler
);
extern SmsErrorHandler SmsSetErrorHandler (
SmsErrorHandler
);
extern void SmFreeProperty (
SmProp *
);
extern void SmFreeReasons (
int ,
char **
);
_XFUNCPROTOEND
#endif