#ifndef _S_SCD_H
#define _S_SCD_H
#include <sys/cdefs.h>
#define kSCDData CFSTR("data")
#define kSCDInstance CFSTR("instance")
#define kSCDWatchers CFSTR("watchers")
#define kSCDWatcherRefs CFSTR("watcherRefs")
#define kSCDSession CFSTR("session")
#define kSCDName CFSTR("name")
#define kSCDChangedKeys CFSTR("changedKeys")
#define kSCDRegexKeys CFSTR("regexKeys")
#define kSCDRegexData CFSTR("regexData")
#define kSCDSessionKeys CFSTR("sessionKeys")
extern CFMutableDictionaryRef cacheData;
extern CFMutableDictionaryRef sessionData;
extern CFMutableSetRef changedKeys;
extern CFMutableSetRef deferredRemovals;
extern CFMutableSetRef removedSessionKeys;
extern CFMutableSetRef needsNotification;
extern CFMutableDictionaryRef cacheData_s;
extern CFMutableSetRef changedKeys_s;
extern CFMutableSetRef deferredRemovals_s;
extern CFMutableSetRef removedSessionKeys_s;
typedef struct {
SCDSessionPrivateRef session;
regex_t *preg;
} addContext, *addContextRef;
typedef struct {
SCDSessionPrivateRef session;
regex_t *preg;
} removeContext, *removeContextRef;
__BEGIN_DECLS
SCDStatus _SCDOpen __P((SCDSessionRef *session,
CFStringRef name));
SCDStatus _SCDClose __P((SCDSessionRef *session));
SCDStatus _SCDLock __P((SCDSessionRef session));
SCDStatus _SCDUnlock __P((SCDSessionRef session));
SCDStatus _SCDList __P((SCDSessionRef session,
CFStringRef key,
int regexOptions,
CFArrayRef *subKeys));
SCDStatus _SCDAdd __P((SCDSessionRef session,
CFStringRef key,
SCDHandleRef handle));
SCDStatus _SCDAddSession __P((SCDSessionRef session,
CFStringRef key,
SCDHandleRef handle));
SCDStatus _SCDGet __P((SCDSessionRef session,
CFStringRef key,
SCDHandleRef *handle));
SCDStatus _SCDSet __P((SCDSessionRef session,
CFStringRef key,
SCDHandleRef handle));
SCDStatus _SCDRemove __P((SCDSessionRef session,
CFStringRef key));
SCDStatus _SCDTouch __P((SCDSessionRef session,
CFStringRef key));
SCDStatus _SCDSnapshot __P((SCDSessionRef session));
SCDStatus _SCDNotifierList __P((SCDSessionRef session,
int regexOptions,
CFArrayRef *notifierKeys));
SCDStatus _SCDNotifierAdd __P((SCDSessionRef session,
CFStringRef key,
int regexOptions));
SCDStatus _SCDNotifierRemove __P((SCDSessionRef session,
CFStringRef key,
int regexOptions));
SCDStatus _SCDNotifierGetChanges __P((SCDSessionRef session,
CFArrayRef *notifierKeys));
SCDStatus _SCDNotifierInformViaMachPort __P((SCDSessionRef session,
mach_msg_id_t msgid,
mach_port_t *port));
SCDStatus _SCDNotifierInformViaFD __P((SCDSessionRef session,
int32_t identifier,
int *fd));
SCDStatus _SCDNotifierInformViaSignal __P((SCDSessionRef session,
pid_t pid,
int sig));
SCDStatus _SCDNotifierCancel __P((SCDSessionRef session));
void _swapLockedCacheData __P(());
void _addWatcher __P((CFNumberRef sessionNum,
CFStringRef watchedKey));
void _addRegexWatcherByKey __P((const void *key,
void *val,
void *context));
void _addRegexWatchersBySession __P((const void *key,
void *val,
void *context));
void _removeWatcher __P((CFNumberRef sessionNum,
CFStringRef watchedKey));
void _removeRegexWatcherByKey __P((const void *key,
void *val,
void *context));
void _removeRegexWatchersBySession __P((const void *key,
void *val,
void *context));
__END_DECLS
#endif