18#define PL_BLOB_MAGIC_B 0x75293a00
19#define PL_BLOB_VERSION 1
20#define PL_BLOB_MAGIC (PL_BLOB_MAGIC_B | PL_BLOB_VERSION)
22#define PL_BLOB_UNIQUE 0x01
23#define PL_BLOB_TEXT 0x02
24#define PL_BLOB_NOCOPY 0x04
25#define PL_BLOB_WCHAR 0x08
31 int (*release)(YAP_Atom a);
32 int (*compare)(YAP_Atom a, YAP_Atom b);
34 int (*write)(FILE *s, YAP_Atom a,
int flags);
36 int (*write)(
void *s, YAP_Atom a,
int flags);
38 void (*acquire)(YAP_Atom a);
40 int (*save)(YAP_Atom a, FILE *s);
41 YAP_Atom (*load)(FILE *s);
43 int (*save)(YAP_Atom a,
void *);
44 YAP_Atom (*load)(
void *s);
55#define YAP_BLOB_MAGIC_B PL_BLOB_MAGIC_B
56#define YAP_blob_t blob_type_t
57#define PL_blob_t blob_type_t
61PL_EXPORT(
int) PL_is_blob(term_t t, PL_blob_t **type);
62PL_EXPORT(
int) PL_unify_blob(term_t t,
void *blob,
size_t len, PL_blob_t *type);
63PL_EXPORT(
int) PL_put_blob(term_t t,
void *blob,
size_t len, PL_blob_t *type);
65PL_get_blob(term_t t,
void **blob,
size_t *len, PL_blob_t **type);
67PL_EXPORT(
void *) PL_blob_data(atom_t a,
size_t *len, PL_blob_t **type);
69PL_EXPORT(
void) PL_register_blob_type(PL_blob_t *type);
70PL_EXPORT(PL_blob_t *) PL_find_blob_type(
const char *name);
71PL_EXPORT(
int) PL_unregister_blob_type(PL_blob_t *type);
72PL_EXPORT(
int) PL_raise(
int sig);
77extern int Yap_write_blob(
AtomEntry *ref, FILE *stream);
78extern char *Yap_blob_to_string(
AtomEntry *ref,
const char *s,
size_t sz);
80extern X_API
bool YAP_is_blob(YAP_Term t, YAP_blob_t **type);
81extern X_API
bool YAP_unify_blob(YAP_Term *t,
void *blob,
size_t len,
83extern X_API
bool YAP_put_blob(YAP_Term *t,
void *blob,
size_t len,
85extern X_API
bool YAP_get_blob(YAP_Term t,
void **blob,
size_t *len,
88extern X_API
void *YAP_blob_data(YAP_Atom a,
size_t *len, YAP_blob_t **type);
90extern X_API
void YAP_register_blob_type(YAP_blob_t *type);
91extern X_API YAP_blob_t *YAP_find_blob_type(
const char *name);
93extern X_API
bool YAP_unregister_blob_type(YAP_blob_t *type);