Automatically Generated by etc/build-api-doc.fdx at 2002-06-26T14:58:37.044382-4:00
Function | Arguments | Returns |
fd_get_uname | uid_t id | char * |
| a uid | a string |
| Gets the user name for a particular id | |
fd_set_gid | char *gname | int |
| a gid | changes the current group to be name, return 1 if successful |
| | |
fd_inhibit_herald | int inhibit | void |
| none | void |
| Keeps the startup and shutdown heralds from being shown | |
fd_get_uid | char *uname | uid_t |
| a string | gets the user ID for a named user |
| | |
fd_set_build_date | char *date | void |
| a string | nothing |
| Sets the build date to be returned by fd_get_build_date | |
fd_int_getenv | char *var,int dflt | int |
| a string naming a variable and an int default | an int |
| Gets a variable from the environment. It first tries the
top level LISP environment, then the Windows registry (under WIN32),
and finally the "POSIX" environment.
Unlike fd_getenv, this doesn't parse the string. | |
fd_get_gid | char *uname | gid_t |
| a string | gets the group ID for a named group |
| | |
fd_get_gname | gid_t id | char * |
| a gid | a string |
| Gets the group name for a particular gid | |
fd_exit | int status | void |
| a status code (an int) | no. |
| This sets the variable fd_normal_exit to 1 if the status
code is zero, which can be read by atexit handlers. | |
fd_load_config | char *config_file | int |
| a filename (a string) | nothing |
| Loads the variable bindings defined in the specified
configuration file, setting the corresponding symbol values | |
fd_inhibit_anti_warranty | int inhibit | void |
| none | void |
| Keeps the startup and shutdown heralds from being shown | |
fd_getenv | char *var | lisp |
| a string naming a variable | a lisp object |
| Gets a variable from the environment. It first tries the
top level LISP environment, then the Windows registry (under WIN32),
and finally the "POSIX" environment used by getenv. When the value comes
from anywhere besides the lisp environment, it is parsed as a LISP argument,
so that numbers turn into numbers. | |
fd_getrusage | struct rusage *r | void |
| a pointer to an rusage structure | void |
| Gets rusage information, covering for holes in various
implementations (currently just Linux) | |
fd_string_getenv | char *var | fd_u8char * |
| a string naming a variable | a lisp string |
| Gets a variable from the environment. It first tries the
top level LISP environment, then the Windows registry (under WIN32),
and finally the "POSIX" environment.
Unlike fd_getenv, this doesn't parse the string. | |
fd_set_random | unsigned int seed | void |
| an unsigned int | void |
| This sets the random seed. | |
fd_set_uid | char *uname | int |
| a uid | changes the current user to be name, return 1 if successful |
| | |
fd_set_session_mnemonic | char *mnemonic | void |
| a string | nothing |
| Sets the string used to identify this kind of session (e.g. 'fdscript'
or more usefully, 'mailreader') | |
fd_get_user_data | uid_t id | lisp |
| a uid | a lisp structure |
| Gets the user password data for a particular id | |
Function | Arguments | Returns |
fd_default_notifier | fd_u8char *message | void |
| a string | void |
| This is the default notification function, which outputs a bracketed
time and report. | |
_fd_sputc | fd_string_stream ss,int ch | void |
| a pointer to a string stream and a unicode character | void |
| Writes the utf8 representation of the character to the string stream. | |
fd_xprintf | char *format_string,... | void |
| a format string, and other args | void |
| Outputs a string as exceptional I/O generated from the format string and
using the provided arguments. Much like printf (surprise). | |
fd_fprintf | FILE *f,char *fstring,... | void |
| a FILE * stream, a format string, and other args | void |
| Outputs a string to a file stream generated from the format string and
using the provided arguments. Much like printf (surprise). | |
_fd_sputn | fd_string_stream ss,fd_u8char *string,int n | void |
| a pointer to a string stream, a utf8 string, and an int | void |
| Internal string stream string putn function, used in macro
ssputn | |
fd_notify | char *format_string,... | void |
| a FILE * stream, a format string, and other args | void |
| Outputs a string as a notification, which is generated from the format
string and using the provided arguments. Much like printf (surprise). | |
_fd_sputs | fd_string_stream ss,fd_u8char *string | void |
| a pointer to a string stream and a utf8 string | void |
| Internal string stream string put function, used in macro
ssputs | |
fd_printf | fd_string_stream s,char *format_string,... | void |
| a string stream, a format string, and other args | void |
| Outputs a string to string stream generated from the format string and
using the provided arguments. Much like printf (surprise). | |
fd_set_notify_handler | void (*nf | void |
| a function taking a string arg | void |
| Sets the function which is called on notification messages | |
fd_warn | char *format_string,... | void |
| a FILE * stream, a format string, and other args | void |
| Outputs a string as a warning, which is generated from the format
string and using the provided arguments. Much like printf (surprise).
Note that notifications can be turned off but warnings cannot. | |
_fd_grow_string_stream | fd_string_stream ss,int delta | void |
| a pointer to a string stream and a number of bytes | void |
| Grows the data structures for the string stream to include delta
more bytes | |
fd_set_warn_handler | void (*wf | void |
| a function taking a string arg | void |
| Sets the function which is called on warning messages | |
Function | Arguments | Returns |
fd_init_xtime | struct FD_XTIME *xtp | void |
| a pointer to an extended timestamp structure | void |
| This takes a timestamp object and fills out an extended time pointer
structure which includes timezone and precision information. | |
fd_parse_tzspec | char *s,int dflt | int |
| a string and a default offset | an offset from UTC |
| This uses a built in table but should really use operating system
facilities if they were even remotely standardized. | |
fd_sleep | double secs | void |
| an interval in seconds (a double) | nothing |
| This is a platform abstraction for sleeping that *may*
allow sub-second sleeps. | |
fd_mktime | struct tm *tptr,int tzoff | time_t |
| a pointer to a tm struct and a time offset (from UTC) in seconds | a time_t pointer |
| Returns the UTC time given a filled out tm structure and the offset of the
zone it was filled out in from UTC. | |
fd_breakup_time | struct tm *tptr,time_t tick,int tzoff | int |
| a pointer to a tm struct, a time_t value, and an offset | an integral timezone offset |
| Fills the tm struct with the broken down UTC time based on the time_t value.
This is threadsafe, locking the possible shared tptr. | |
fd_timestamp_time | lisp timestamp | time_t |
| a lisp pointer to a timestamp | a time_t value |
| | |
fd_xtime_to_timestamp | struct FD_XTIME *xtp | fd_lisp |
| a string and a pointer to a timestamp structure | -1 on error, the time as a time_t otherwise |
| This takes an iso8601 string and fills out an extended time pointer which
includes possible timezone and precision information. | |
fd_iso8601_to_xtime | char *s,struct FD_XTIME *xtp | time_t |
| a string and a pointer to a timestamp structure | -1 on error, the time as a time_t otherwise |
| This takes an iso8601 string and fills out an extended time pointer which
includes possible timezone and precision information. | |
fd_parse_iso8601 | char *string | time_t |
| a string | a time_t |
| Parses an iso8601 format date/time string into a time_t value. | |
fd_timestamp_to_xtime | fd_lisp timestamp,struct FD_XTIME *xtp | time_t |
| a lisp pointer to a timestamp and a pointer to a timestamp structure | -1 on error, the time as a time_t otherwise |
| This takes a timestamp object and fills out an extended time pointer
structure which includes timezone and precision information. | |
fd_xtime_to_iso8601 | struct FD_XTIME *xtp,fd_string_stream ss | int |
| a timestamp and a pointer to a string stream | -1 on error, the time as a time_t otherwise |
| This takes an iso8601 string and fills out an extended time pointer which
includes possible timezone and precision information. | |
fd_get_now | struct FD_XTIME *xtp | time_t |
| a pointer to an extended time pointer | a time_t or -1 if it fails for some reason |
| This will try and get the finest precision time it can. | |
fd_localtime | struct tm *tptr,time_t tick | int |
| a pointer to a tm struct and a time_t value | the time_t value or -1 if it failed |
| Fills the tm struct with the local time based on the time_t value.
This is threadsafe, since localtime is not. | |
Function | Arguments | Returns |
fd_raise_detailed_exception | fd_exception ex,char *details | void |
| an exception (a string) and details (another string) | no. |
| Raises an exception of a particular kind with particular
details used in generating exception reports
Unhandled crises cause an exit by calling unhandled_exception. | |
fd_raise_lisp_exception | fd_exception ex,char *details,lisp obj | void |
| an exception (a string), details (another string),
and a lisp object | no. |
| Raises an exception of a particular kind with particular
details used in generating exception reports and an associated
lisp object (the irritant)
Unhandled crises cause an exit by calling unhandled_exception. | |
fd_raise_exception | fd_exception ex | void |
| an exception (a string) | no. |
| Raises an exception of a particular kind without providing any
other information.
Unhandled crises cause an exit by calling unhandled_exception. | |
fd_set_exception | fd_exception ex,fd_u8char *details,lisp object | void |
| an exception (a string), a details string, and a lisp object | nothing |
| Set's the current threads exception information. | |
fd_exception_context | int force | struct FD_EXCEPTION_CONTEXT * |
| none | a pointer to a FD_EXCEPTION_CONTEXT struct |
| | |
fd_ctype_error | char *c_context,fd_u8char *details,lisp obj | void |
| details text (a string), and a lisp object | no. |
| Raises a type error with particular details and an object. | |
fd_record_type_error | lisp obj,lisp tag | void |
| details text (a string), and a lisp object | no. |
| Raises a type error with particular details and an object. | |
fd_pigs_fly | fd_u8char *details | void |
| details text (a string) | no. |
| This is used to signal errors which should never happen. | |
_fd_push_jbr | fd_setjmp_rec *jbr | void |
| a setjmp record | void |
| Adds an entry to the exception handling stack for a particular
setmp location | |
fd_type_error | fd_u8char *details,lisp obj | void |
| details text (a string), and a lisp object | no. |
| Raises a type error with particular details and an object. | |
fd_exception_context_push | lisp sym | void |
| a lisp pointer | void |
| Adds a value to the current exception context | |
fd_throw | fd_exception ex,char *details,lisp obj | void |
| an exception (a string), details (another string),
and a lisp object | no. |
| Throws an exception, with particular details and irritant.
This is used when the exception is expected to be caught, as
in the use of exceptions to implement continuation. This is
identical to fd_raise_lisp_exception but that debuggers may often
break on fd_raise_lisp_exception and not on fd_throw. | |
Function | Arguments | Returns |
fd_dtype_eval | lisp expr,fd_server s | lisp |
| a lisp object and a server | a lisp object |
| Asks the server to evaluate the lisp object, returning the result
and trying to restart the connection once if neccessary. | |
fd_sendall | int socket,char *buf,int size,int flags | int |
| a socket, a pointer to a block of data,
the length of the block of data, and
flags to pass to send() | either zero or -1 (indictating an error) |
| This sends all of the bytes in a block of data, repeatedly
calling send(). This will return -1, indicating a failure, if
the attempt to write times out. | |
fd_init_connection | fd_server server,char *dest,int port,char *id | void |
| a pointer to an FD_SERVER struct,
a host (a string), a port (an int),
and an id (a string or NULL) | nothing |
| Initializations a TCP/IP connection structure. | |
fd_dtcall | fd_server s,char *fcn,... | lisp |
| a server, a function name (a string),
and a number of args ending with FD_VOID | a lisp object |
| Asks the server to apply the named function to the args,
returning the result. It calls fd_dtype_eval. The arguments
are quoted before being passed. | |
fd_try_to_connect | char *spec | fd_server |
| a string identifying a server | a server |
| Tries to make a connection to a particular server, returning NULL
if it fails.
The server identification has the form port@host, where
port is either a registered service or is 'touch-tone' encoded to
a port number | |
fd_send_smtp_mail | char *dest,char *text,lisp fields | void |
| a destination (a string), a contents (a string), and
a set of fields (a lisp object) | nothing |
| Uses a local SMTP connection to send mail to a particular individual with
a particular set of fields and a particular contents. | |
fd_open_tcp_socket
| char *hostname,int port,char *id,int signal_error,char **fullname | int |
| a hostname (a string) and a port (an int)
and an id (a string) and an error flag (an int) | an open socket |
| This utility function gets an open TCP socket for a host and port. | |
fd_close_connection | fd_server s | void |
| a server | nothing |
| Closes the connection to server.
This just does a close on the socket and nothing clever to
ensure that pending transactions are completed (though they should
throw out and restart). | |
fd_careful_dtcall | fd_server s,char *fcn,... | lisp |
| a server, a function name (a string),
and a number of args ending with FD_VOID | a lisp object |
| Like fd_dtcall, but signals an error when the remote server
returns an error object. | |
fd_timed_recv | int secs,int socket_id,char *data,int len,int flags | int |
| an interval in seconds (an int), an open socket,
a pointer to a block of data, a number of bytes,
and some flags (an int) for recv() | the number of bytes read or -1 on error |
| Tries to read bytes from a connection, returning -1 if the
connection times out. | |
fd_connect | char *spec | fd_server |
| a string identifying a server | a server |
| Makes a connection to a particular server, signalling an error
if a connection cannot be made.
The server identification has the form port@host, where
port is either a registered service or is 'touch-tone' encoded to
a port number | |
fd_http_get | char *url,int *sizep | char * |
| a string and a pointer to an int | a string (actually a pointer to a byte array) |
| Gets the contents of a remote URL as a character string, storing the
size in the second argument (if non-NULL) | |
fd_open_local_socket | char *filename,char *id,int signal_error | int |
| a filename (a string) and a server id (a string) and an error flag (an int) | an open socket |
| This utility function gets an open socket for a local filenname. | |
fd_http_head | char *url,int *sizep | char * |
| a string and a pointer to an int | a string (actually a pointer to a byte array) |
| Gets the head of a remote URL as a character string | |
fd_open_connection | char *name,int port,char *id | fd_server |
| a name (a string), a port (an int) and an id (a string) | a server (a pointer to a FD_SERVER struct) |
| Looks for a current connection to port@hostname and creates one
if it doesn't exist. | |
fd_read_from_socket | struct FD_DBUF *buf,int socket | void |
| a pointer to an FD_DBUF struct and a socket | nothing (void) |
| This fills the expandable FD_DBUF struct with bytes read from
socket, stopping when recv() return 0 or the call to recv times out. | |
fd_careful_dtype_eval | lisp expr,fd_server s | lisp |
| a lisp object and a server | a lisp object |
| Like fd_dtype_eval but signals an error if the remote server
returns an error or exception object. | |
fd_get_portno | char *string | int |
| a string | an integer |
| Returns the port number identified by a particular string,
starting with the service database and doing touch-tone encoding
if that fails. | |
fd_trace_dteval | int flag | int |
| 1 or 0 | 1 or 0 |
| Turns on tracing of all remote DTYPE evaluation activity. | |
fd_http_string | char *url | char * |
| a string | a string (actually a pointer to a byte array) |
| Gets the contents of a remote URL as a character string, storing the
size in the second argument | |
Function | Arguments | Returns |
fd_file_size | fd_u8char *path | off_t |
| a string | a long |
| Returns the size of a file | |
fd_fclose | FILE *stream | void |
| a filename | a FILE * pointer |
| Closes the stream and cleans up XFILEs associated with it | |
fd_getpath | fd_u8char *name | lisp |
| a string naming an extended environment variable | a lisp pointer to a list of directories |
| Interprets a path variable | |
fd_symbolic_linkp | fd_u8char *path | int |
| a string | 1 or 0 |
| Returns 1 if the file is a symbolic link to another file
(currently always zero under WIN32). | |
fd_get_exec_filename | char *argv0 | char * |
| a string, typicallying argv[0] | a malloc'd absolute filename or NULL |
| Attempts to figure out the absolute pathname of an
executable from the argv[0] parameter. Used to find
the FramerD configuration file. | |
fd_fopen_locked | fd_u8char *filename,char *mode,int allow_readers | FILE * |
| a filename, a mode specifier, and a flag (1 or 0) | a FILE * pointer |
| Normalizes the filename for the OS and locks the returned stream
(using fcntl). If the integer flag is 1, the lock is only a write
lock. If it is 0, neither reads nor writes are permitted. | |
fd_find_file | fd_u8char *filename,lisp search_path | fd_u8char * |
| a string and a lisp pointer | another string |
| The lisp pointer is used as a search path to look for files.
It first checks to see if the string exists as a file as given.
It then searches along the directories in the search path.
The search path can be a string (taken as a directory name)
or a list of strings take as directory names.
It allocates a string for a result (but doesn't count it as fd_mallocd). | |
fd_directoryp | fd_u8char *path | int |
| a string | 1 or 0 |
| Returns 1 if the file is actually a directory. | |
fd_file_writablep | fd_u8char *filename | int |
| a string | 1 or 0 |
| Returns 1 if the file can be written (whether it exists or not),
0 otherwise. Actually opens it to try, rather than doing something
clever with stat. | |
fd_regular_filep | fd_u8char *path | int |
| a string | 1 or 0 |
| Returns 1 if the file is a regular file. | |
fd_file_existsp | fd_u8char *fname | int |
| a string | 1 or 0 |
| Returns 1 if the file exists, 0 otherwise. Uses stat. | |
fd_fopen | fd_u8char *filename,char *mode | FILE * |
| a filename and a mode specifier | a FILE * pointer |
| Normalizes the filename for the OS | |
Function | Arguments | Returns |
fd_foreign_filestring | char *filename,struct FD_TEXT_ENCODING *e | lisp |
| a filename (a localized string) and a text encoding | a utf-8 string |
| Interprets the contents of the file according to the encoding and
returns a UTF-8 encoded unicode string. | |
fd_upcase_string | fd_u8char *string,int len | fd_u8char * |
| a utf8 string | a copy of the argument converted to upper case |
| | |
fd_get_file_encoding | FILE *f | struct FD_TEXT_ENCODING * |
| a FILE pointer | a pointer to an encoding struct or NULL |
| Returns the encoding associated with a particular file stream. | |
fd_valid_utf8p | fd_u8char *s | int |
| a possible utf8 string | 1 if the string is valid, 0 otherwise. |
| | |
fd_fputs_encoded | fd_u8char *s,int len,FILE *f | void |
| a utf8 string and a FILE pointer | nothing |
| Writes the contents of the string to the XFILE, writing
unhandled characters with unicode (\u and \U escapes). | |
fd_fputc | xchar c,FILE *f | void |
| a wide char and a FILE pointer | void |
| Writes the character to the FILE stream | |
fd_set_system_encoding | char *name | void |
| an encoding name | void |
| Sets the encoding used by the operating system
(e.g. for system calls, filenames, etc) | |
fd_ungetc | int c,FILE *f | void |
| a wide character and a FILE pointer | nothing |
| Ungets the character on the stream, using its XFILE
structure if possible. | |
fd_set_default_encoding | char *name | void |
| an encoding name | void |
| Sets the default encoding used for XFILES | |
fd_set_file_encoding | FILE *f,char *name | void |
| a FILE pointer and an ASCII string naming an encoding | void |
| Sets the encoding for a particular FILE pointer to the encoding
with the specified name. | |
fd_fgetc | FILE *f | int |
| a FILE pointer | a wide character |
| Returns a wide character from a stream according to its encoding. | |
fd_get_xfile | FILE *f | struct FD_XFILE * |
| a FILE pointer | an XFILE pointer (or NULL) |
| Gets the XFILE struct associated with a particular file pointer. | |
fd_fputs_raw | fd_u8char *s,int len,FILE *f | void |
| a utf8 string and an XFILE pointer | nothing |
| Writes the contents of the string to the XFILE, signalling
an error if the stream does not accept any of the characters
in the XFILE. | |
fd_localize_utf8 | fd_u8char *string,struct FD_TEXT_ENCODING *e | unsigned char * |
| a utf8 encoded string and a text encoding | a regular string |
| Returns an 8BIT string encoded using the text encoding. | |
fd_xgetc_encoded | struct FD_XFILE *f | int |
| an XFILE pointer | a wide character |
| Returns a wide character from a stream according to its encoding.
This will interpret \u and \U escapes in the file. | |
fd_convert_utf8 | fd_u8char *string,int slen,struct FD_TEXT_ENCODING *e,int *size_loc | unsigned char * |
| a utf8 encoded string and a text encoding | a regular string |
| Returns an 8BIT string encoded using the text encoding. | |
fd_interpret_unicode_escapes | fd_u8char *string | fd_u8char * |
| a utf8 string with (potentially) embedded unicode escapes | a utf8 string where those escapes have been expanded |
| | |
fd_free_xfile | FILE *f | void |
| an FILE pointer | nothing |
| Frees the XFILE entry from the linked list of FILE association pointers. | |
fd_load_encoding | char *name,char *file | void |
| a name and a filename | void |
| Defines a text encoding based on a text file of byte sequence to
unicode mappings. This interprets the standard mappings files provided
by the Unicode consortium at ftp://ftp.unicode.org/Public/MAPPINGS/. | |
fd_get_encoding | char *name | struct FD_TEXT_ENCODING * |
| an ASCII string | a pointer to an FD_TEXT_ENCODING struct |
| This gets the structure describing a particular encoding given
its ASCII name. | |
fd_xputc | xchar c,struct FD_XFILE *f | void |
| a wide char and an XFILE pointer | void |
| Writes the character to XFILE stream, signalling
an error if the stream cannot handle the character. | |
fd_make_utf8 | uchar *start,uchar *end,struct FD_TEXT_ENCODING *e | fd_u8char * |
| a 8BIT string representation and a text encoding | a utf8 encoded string |
| | |
fd_xputc_encoded | xchar c,struct FD_XFILE *f | void |
| a wide char and an XFILE pointer | void |
| Writes the character to XFILE stream, using unicode
escapes if the stream cannot handle the character. | |
fd_downcase_string | fd_u8char *string,int len | fd_u8char * |
| a utf8 string | a copy of the argument converted to lower case |
| | |
fd_xungetc | int c,struct FD_XFILE *e | void |
| a wide character and an XFILE pointer | nothing |
| Ungets the character on an XFILE stream. | |
fd_define_encoding
| char *name,struct FD_MB_MAP *charset,int size,
wc2mb_fn wc2mb,mb2wc_fn mb2wc,int flags | int |
| a name, a pointer to a charset,
a wide-char to multi-byte conversion function,
a multi-byte to wide-char conversion function,
and a set of flags. | 1 if the map was used, zero if it wasn't (mapping was already defined) |
| Defines an encoding with a name and the associated properties. If an
encoding with the give properties already exists, the name is added to
that encoding structure. | |
fd_xgetc | struct FD_XFILE *f | int |
| an XFILE pointer | a wide character |
| Returns a wide character from a stream according to its encoding.
This will *not* interpret \u and \U escapes in the file. | |
Function | Arguments | Returns |
_fd_qmalloc_cons | size_t bytes | void * |
| number of bytes | allocated memory |
| This also initializes the reference count, assuming
that the result will be a struct whose first int field
is the reference count. | |
fd_xrealloc | void *oldptr,size_t bytes | void * |
| a pointer and a size | returns a pointer to a memory chunk with at least size bytes |
| which includes the data of the argument passed in
This signals an exception if malloc fails.
It doesn't count the malloc'd bytes | |
_fd_qmalloc | size_t bytes | void * |
| number of bytes | allocated memory |
| This maintains a free list for certain memory sizes and
allocates them blocks at a time. | |
fd_malloc | size_t bytes | void * |
| number of bytes | allocated memory to at least that many bytes |
| This signals an exception if malloc fails. | |
fd_memdup | const char *data,size_t sz | char * |
| a pointer to a chunk of memory and a size | a string |
| Allocates a new string which is a copy of its argument
and has the corresponding size. This will work with
strings that contain NULLs.
This will count towards global memory counts and use huge_malloc
if neccessary. | |
fd_malloc_init | size_t sz,int chunk_size | void |
| two size_t pointers, struct_size and block_size | void |
| Arranges for malloc tables to keep a free list of structs
with *struct_size* bytes and to allocate these structs
in blocks of *block_size* to reduce malloc overhead.
This will signal an error if any thread has already copied
the malloc data table. This isn't neccessary, but just easy
to code right now. | |
fd_xmalloc | size_t bytes | void * |
| number of bytes | allocated memory to at least that many bytes |
| This signals an exception if malloc fails.
It doesn't count the malloc'd bytes, though... | |
fd_xfree | void *ptr | void |
| a pointer | void |
| Doesn't signal an error of pointer is NULL | |
fd_free_int_array | unsigned int *ptr,size_t size | void |
| a pointer and number of bytes | void |
| This frees the pointer and bumps the malloc pointer down
by a number rounded up to the size to FD_STRING_CHUNK. | |
fd_mallocize | char *data,size_t sz | char * |
| a pointer to a chunk of memory and a size | a pointer |
| Returns a pointer which can be used with the fd_malloc/realloc/free
functions. This does two things: if the size is large enough to for
calling huge_malloc, it is called, the strings contents is copied, and
the original chunk is freed; in addition, in either the case of a copy or a
pass-through fd_malloc_adjust is called to record the memory take up
by the chunk of memory. | |
fd_xmemdup | const char *data,size_t sz | char * |
| a pointer to a chunk of data and a size | a string |
| Allocates a new string which is a copy of its argument
and has the corresponding size. This will work with
strings that contain NULLs.
This does not count towards the global memory counts. | |
fd_realloc | void *ptr,size_t new_size,size_t old_size | void * |
| a pointer and a number of bytes | void |
| Frees the pointer and updates the memory usage count | |
fd_strdup | const char *string | char * |
| a null terminated string | a null terminated string |
| Allocates a new string which is a copy of its argument.
This does not count towards the global memory counts. | |
fd_malloc_adjust | int delta | void |
| an int | void |
| Bumps up the malloc count but doesn't really malloc anything | |
_fd_qfree | void *p,size_t bytes | void |
| a pointer and a number of bytes | void |
| This frees a cons allocated by fd_qmalloc which tries to
do free list maintainance. | |
fd_free | void *ptr,size_t bytes | void |
| a pointer and a number of bytes | void |
| Frees the pointer and updates the memory usage count | |
{}
Function | Arguments | Returns |
fd_slotmap_add | fd_slotmap sm,lisp key,lisp value | void |
| a slotmap, a lisp key, and a lisp value | makes the value be associated with the key |
| in the slotmap, making the value non deterministic if
neccessary.
Refcounts (if it's not a set) or copies (if it is) the value given it. | |
_fd_slotmap_data | lisp x,void **velts | int |
| a lisp pointer (to a slotmap) and
a pointer to a pointer to a vector of lisp pointers | an int (the number of lisp pointers in the vector assigned |
| Returns the data of the slotmap to use in producing a packaged
DTYPE from it. | |
fd_slotmap_test | fd_slotmap sm,lisp key,lisp value | int |
| a slotmap, a lisp key, and a lisp value | 1 or 0 |
| Returns 1 if the value can be found on the *key* slot of
the slotmap. | |
fd_slotmap_get | fd_slotmap sm,lisp key,lisp dflt | lisp |
| a slotmap, a lisp key, and a default value | the value associated with the key in the slotmap |
| or the default value otherwise. | |
fd_make_slotmap | int size | lisp |
| a size (int) | a slotmap with capacity for slots |
_fd_done_with_slotmap_data | fd_lisp *elts,int size | void |
| a pointer to a vector of LISP pointers and a size | nothing |
| Frees a slotmap data vector. | |
fd_slotmap_set | fd_slotmap sm,lisp key,lisp value | void |
| a slotmap, a lisp key, and a lisp value | makes the value be associated with the key |
| in the slotmap
Refcounts (if it's not a set) or copies (if it is) the value given it. | |
fd_slotmap_remove | fd_slotmap sm,lisp key,lisp value | void |
| a slotmap, a lisp key, and a lisp value | removes the value from the values associated with |
| a particular key in the slotmap
The value on the slotmap is freed. | |
fd_slotmap_zap | fd_slotmap sm,lisp key | void |
| a pointer to a slotmap and a key | nothing |
| Removes all values associated with the key in the slotmap. | |
Function | Arguments | Returns |
fd_parse_arg | char *xstring | lisp |
| a localized string | a lisp object |
| Returns the lisp object described by the printed representation
in its argument. | |
fd_print_lisp | lisp x, FILE * stream | void |
| a lisp object and a standard output stream | nothing |
| Outputs an ascii representation of the object to the output stream | |
fd_configure_oid_io
| void ((*print_fcn | void |
| a pointer to two C functions; the first outputs OIDs to
string streams and the second parses utf8 strings into OIDs | nothing |
| Changes the default printer and parser for OIDs. | |
fd_write_dtype_to_file | lisp v,char *filename | void |
| a lisp object, a filename (a string) | nothing |
| Outputs a dtype representation of the object to the
specified file. | |
fd_default_parse_oid | fd_u8char *string | lisp |
| a pointer to a UTF-8 string | a lisp pointer to an FD_OID |
| Outputs the most primitive ASCII representation of the object
to the string stream. | |
_fd_sgetc | fd_u8char **ss | int |
| a pointer to a pointer to a UTF-8 string | an int (representing a unicode character) |
| Reads a single unicode character from a utf-8 string, advancing the
string past the character. | |
fd_read_dtype_from_file | char *filename | lisp |
| a localized string (a filename) | a lisp object |
| Returns the lisp object described by the first DTYPE
in filename. | |
fd_parse_number | fd_u8char *string,int base | lisp |
| a utf8 string and an integral base | a lisp object |
| Parses the number assuming the specified base. | |
fd_default_print_oid | lisp obj,fd_string_stream ss | void |
| a pointer to a LISP OID pointer
and a pointer to a "string stream" | nothing |
| Outputs the most primitive ASCII representation of the object
to the string stream. | |
fd_read_dtypes_from_file | char *filename | lisp |
| a localized string (a filename) | a lisp object |
| Returns the lisp objects described by the DTYPES
in filename. | |
fd_validate_dtype | unsigned char *buf,unsigned char *end | int |
| two pointers into an array of bytes | 1 if the range contains a valid dtype representation |
| | |
fd_set_bignum_parser | lisp (*fcn | void |
| a function for parsing bignums from strings and returning
lisp objects | void |
| Defines the function used for parsing large integers into lisp objects.
The function takes a string and an integral radix and returns a
lisp object representing the number described by the string. | |
fd_dtype_size | lisp x | unsigned int |
| a lis pointer | an integer |
| Returns the number of bytes which will be used by the DType representation
of its argument. | |
fd_parse_lisp_from_stream | FILE *f | lisp |
| a FILE pointer | a lisp object |
| Parses the printed representation of an object from
a stdio file stream | |
fd_object_to_string | lisp object | fd_u8char * |
| a lisp object | a string |
| Returns a string containing a UTF-8 representation of the object. | |
fd_parse_string | fd_u8char *string | lisp |
| a utf8 string | a lisp object |
| Returns the lisp object described by the printed representation
in its argument. | |
fd_set_super_pool_aliasing | FD_OID from,FD_OID to | void |
| two OIDs | nothing |
| Sets up the DType reader to translate OIDs in the super pool of
*from* into OIDs in the super pool for *to*. | |
fd_add_dtype_to_file | lisp v,char *filename | void |
| a lisp object, a filename (a string) | nothing |
| Outputs a dtype representation of the object to the
end of the specified file (creating it if neccessary). | |
fd_print_lisp_to_stdout | lisp dtype | void |
| a lisp object | nothing |
| Outputs an ascii representation of the object to the standard output | |
fd_print_lisp_to_string | lisp x,fd_string_stream s | void |
| a lisp object and a pointer to a "string stream" | nothing |
| Outputs an ASCII representation of the object to the string stream. | |
Function | Arguments | Returns |
fd_init_oid_choice | int n | lisp |
| a size | An empty non-deterministic set with a homogenous type of OID |
| This returns an empty set with reserved space for a certain number
of elements. The set is initialized as a homogenous choice of OIDS. | |
_fd_make_choice_heterogenous | fd_choice ch | void |
| a pointer to a choice | nothing |
| Makes a homogenous choice into a heterogenous one | |
_fd_binary_choice | lisp x,lisp y | lisp |
| two lisp objects | a non-deterministic set containing copies of them |
| This is useful because the transition from simple value to nd-value
usually starts with a set of two elements. | |
fd_sort_choice | fd_lisp arg | int |
| a pointer to a choice | 1/0 |
| Sorts the elements of a heterogenous choice, returns 1 if
the choice was successfully sorted, 0 otherwise | |
fd_list_to_choice | lisp lst | lisp |
| a lisp list | an non-deterministic set whose elements are the elements of |
| the list it is given
This copies (rather than just crefs) the elements it is given | |
fd_init_choice | int n | lisp |
| a size | An empty non-deterministic set |
| This returns an empty set with reserved space for a certain number
of elements. | |
fd_remove_from_choice | lisp x,lisp choice | lisp |
| a lisp object and a lisp non-deterministic set | a non-deterministic set without any occurences of the object |
| | |
_fd_make_choice_homogenous | fd_choice ch | void |
| a pointer to a choice | nothing |
| Makes a heterogenous choice into a homogenous one | |
fd_choice_containsp | lisp sub,lisp super | int |
| two lisp objects | 1 or 0 |
| Returns 1 if the first argument is a subset of the second.
of the choice which is the second argument. | |
_fd_unquote_choice | fd_lisp x | fd_lisp |
| a lisp object (possibly a choice) | a lisp object |
| Returns a lisp object will be a quoted choice if appropriate | |
_fd_merge_choices | lisp x,lisp y | lisp |
| two objects | a non-deterministic set which contains the elements of both |
| This implicitly frees y (its second argument), while adding its elements
to x. | |
fd_merge_choices | lisp x,lisp y | lisp |
| two objects | a non-deterministic set which contains the elements of both |
| Merges two choices, being smart about sorted choices. This may side
effect the first argument. | |
fd_proper_choicep | lisp value | int |
| a lisp pointer | 1 if the argument is a proper choice, 0 otherwise |
| A proper choice has no duplicated elements. Note that
a non-choice lisp pointer is always "proper" since it has
only one element. | |
fd_return_proper_choice | lisp values | lisp |
| a lisp pointer | another lisp pointer |
| If the argument is a non-deterministic set, this returns a "proper set"
which contains no duplicate elements. | |
fd_choice_overlapsp | lisp ch1,lisp ch2 | int |
| two lisp objects | 1 or 0 |
| Returns 1 if any elements of the first argument overlap elements of the second. | |
fd_intersect_choices | lisp *choices,int size | lisp |
| a C array of LISP pointers and a size | a lisp object |
| Returns the intersection of all the choices in the array. This
is optimized to take advantage of sorted choices. | |
_fd_add_to_choice | lisp x,lisp set | void |
| a lisp object and a lisp non-deterministic set | nothing |
| Adds the object (not a copy!) to the non-deterministic set. | |
_fd_quote_choice | fd_lisp x | fd_lisp |
| a lisp object (possibly a choice) | a lisp object |
| Returns a lisp object will be a quoted choice if appropriate | |
Function | Arguments | Returns |
fd_make_rational | lisp num,lisp denom | lisp |
| two lisp numbers | a lisp rational |
fd_lisp_hashset_elts | lisp table | lisp |
| a lisp pointer to a hashset | a lisp pointer |
| Returns all the elements of a hashset as a choice. | |
fd_quote_lisp | lisp x | lisp |
| a lisp object | another object, which when evaluated, returns the first |
| This also copies any structure copied to it. | |
fd_make_complex | lisp real,lisp imag | lisp |
| two numbers | a lisp complex |
fd_cons | char *format,... | fd_lisp |
| a format string and a number of args | a lisp object |
| Geneates a lisp object based on the format string. Codes in
the format string are interpreted as follows:
i integer
f long
q lisp pointer (will be incref'd)
Q lisp pointer (won't be incref'd)
s locally encoded string
S locally encoded symbol
u utf8 encoded string
U utf8 encoded symbol
(xxx) list with elements
{xxx} choice with elements
#(xxx) vector with elements | |
fd_make_short_vector | int len,short *data | lisp |
| a float | a LISP floating point number |
fd_make_hashtable_for_lisp | int size | lisp |
| an integer | a lisp pointer to a hashtable |
| | |
fd_make_double_vector | int len,double *data | lisp |
| a int length and a pointer to an array of doubles | a homongenous double floating point vector |
fd_make_hashset_for_lisp | int size | lisp |
| an integer | a lisp pointer to a hashtable |
| | |
fd_make_float_vector | int len,float *data | lisp |
| a int length and a pointer to an array of floats | a homongenous floating point vector |
fd_make_flonum | double f | lisp |
| a float | a LISP floating point number |
fd_make_int_vector | int len,int *data | lisp |
| an int length and a pointer to an array of ints | a homongenous lisp vector of ints |
fd_compare_cptrs | lisp x,lisp y | unsigned int |
| two cptr objects | an unsigned int |
| Compares the pointers underlying two cptrs.
Returns 1 if they are the same. | |
fd_hashtable_to_alist | lisp table | lisp |
| a lisp pointer to a hashtable | a lisp association list |
| Converts a hashtable to an association list | |
fd_make_timestamp | time_t moment | lisp |
| a time_t value | a lisp record whose tag is the symbol timestamp |
| | |
fd_alist_to_hashtable | lisp alist | lisp |
| a lisp association list | a lisp pointer to a hashtable |
| Converts an association list to a hashtable | |
fd_make_xtimestamp | time_t moment,int nsecs,fd_tmprec prec,int tzoff | lisp |
| a time_t value, a nanoseconds value, a precision, and a timezone string | a lisp record whose tag is the symbol timestamp |
| | |
fd_copy_cptr | lisp x | lisp |
| a cptr object | another cptr object |
| Makes a new reference counting CONS for a wrapped cptr. | |
fd_parse_packet | fd_u8char *string | lisp |
| a utf8 string | a lisp pointer to a packet structure |
| Takes a long hex string and turns it into a packet | |
fd_make_error | lisp data | lisp |
| another lisp object describing some error | an error object whose *details* are the given arguments |
| Note: the details are not copied | |
fd_make_packet | int len,unsigned char *data | lisp |
| an integer and a pointer to an array of bytes | a "packet object" containing the array of bytes |
| Note: the details are not copied | |
fd_make_exception | lisp data | lisp |
| another lisp object describing some exception | an exception object whose *details* are the given arguments |
| Note: the details are not copied | |
Function | Arguments | Returns |
_fd_decref_cons | lisp x | void |
| a lisp object | void |
| Increments the GC count for x and reclaims it if appropriate. | |
_fd_copy_lisp_proc | lisp x | lisp |
| a lisp object | a copy of the object |
| This doesn't bother copying fixnums, symbols, objects, or immediates.
The macro fd_incref is the identify for such objects and calls
_fd_copy_lisp_proc for everything else. | |
fd_lisp_equal | lisp key0, lisp key1 | int |
| two lisp objects | the integer 1 if they're EQUAL, 0 if they're not. |
| | |
_fd_incref_cons | lisp x | lisp |
| a lisp pointer | its argument |
| Increments the reference count associated with a cons | |
fd_make_vector | int size | lisp |
| a C integer | a vector of a fixed size, initialized to FD_EMPTY_CHOICE |
| Makes a vector of the given size. A vector is implemented as a record
with the tag VECTOR_TAG and a pointer to an array of size and elements. | |
fd_make_cptr | fd_lisp_type tp,void *data | fd_lisp |
| a lisp type and a data pointer | a lisp pointer with the type and an allocated refcounter for |
| the cpointer | |
fd_copy_string | fd_u8char *string | lisp |
| a null-terminated utf8 string | a lisp object describing the string |
| This copies the string argument and also determines
if it is UTF-8 or not. | |
fd_make_substring | fd_u8char *start,fd_u8char *end | lisp |
| two pointers into the same utf-8 string | a lisp object describing the substring between them |
| | |
fd_make_pair | lisp x, lisp y | lisp |
| two lisp objects | a cons pair whose CAR and CDR are the arguments |
| the arguments *are* incref'd | |
fd_lower_string | fd_u8char *string | lisp |
| a null-terminated utf-8 C string | a lisp object describing the lower-cased version of the string |
| This is useful for canonicalizing strings to look things up in hashtables,
etc. | |
fd_init_string | fd_u8char *string,int size | lisp |
| a null-terminated utf8 string | a lisp object describing the string |
| This uses the actual string argument (so it shouldn't be
stack consed or subsequently freed by the caller). | |
fd_make_character | unsigned int c | lisp |
| a character | the LISP version of the character |
fd_utf8_string_ref | fd_u8char *str | int |
| a pointer to a UTF-encoded string | returns the first unicode character in the string |
| | |
fd_memberp | lisp x,lisp list | int |
| a lisp object and a list of such objects | 1 if the object is in the list and 0 otherwise |
| | |
fd_make_string | char *string | lisp |
| a null-terminated localized C string | a lisp object describing the string |
| This does UTF-8 conversion and doesn't use the direct
pointer to string. | |
FD_MAKE_LIST | int length,... | lisp |
| an integer followed by several elements | a list of elements in order |
| | |
fd_utf8_strlen | fd_u8char *str,int slen | int |
| a pointer to a UTF-encoded string and a length | an integer indicating the number of unicode characters |
| in the string it represents | |
fd_list_length | lisp x | unsigned int |
| a lisp object | the number of elements in the object, if it is a list, |
| or 1 otherwise. | |
fd_lookup_compound | lisp tag | struct FD_TYPE_REGISTRY * |
| a lisp tag | a pointer to a record entry or NULL |
| Returns the record entry for types with the specified compound tag | |
fd_make_record | lisp type_name, void *data | lisp |
| a type specifier (a lisp object), and a pointer to some data | a lisp record |
| | |
fd_free_proc | lisp x | void |
| a lisp object | nothing |
| If x is reclaimable (e.g. not a symbol, object, integer, etc), reclaim
the storage used by x for future objects.
This is used by the inline fd_decref which doesn't bother invoking
it on non-reclaimable objects. | |
_FD_MAKE_PAIR | lisp x, lisp y | lisp |
| two lisp objects | a cons pair whose CAR and CDR are the arguments |
| the arguments are not incref'd | |
fd_lookup_package_code
| unsigned char package_code,unsigned char subcode | struct FD_TYPE_REGISTRY * |
| a package code and subcode | a pointer to a record entry or NULL |
| Returns the record entry for types with the specified
package code and subcode. Note that this looks up the
subcode for the "short" version of the packaged data. | |
fd_register_typecode | fd_lisp_type tp | struct FD_TYPE_REGISTRY * |
| a lisp typecode | a pointer to a record entry |
| Returns a record entry for types with a particular typecode.
This creates an entry if one does not already exist. Also, if
the tag is FD_VOID, it always creates a new entry. (This is
useful for types which don't have tags but need special methods
like non-deterministic sets. | |
_FD_MAKE_LIST1 | lisp x | lisp |
| a lisp object | a list whose first and only element is the argument |
| | |
fd_for_elts | void (*fcn | void |
| a function which returns void from a lisp object and
a list of lisp objects | nothing |
| This applies the function to all the elements of the list. | |
fd_stream_string | struct FD_STRING_STREAM *s | lisp |
| a pointer to a string stream | a lisp string containing the contents of the stream |
| This sets the string stream's pointer to NULL and size to zero, so that
subsequent modifications signal errors. | |
fd_register_source_file | char *name,char *date,char *details | void |
| three strings -- name, date, and details | void |
| Registers a module. Name is the filename (basename), date is the
compilation date for the file, and details is typically the RCSID tag. | |
fd_init_vector | int size,lisp *elts | lisp |
| a C integer and a pointer to a vector of LISP objects | a vector of a fixed size with the given elements |
| Makes a vector of the given size with particular elements. Called
by dtio.c to make vectors when reading dtypes. | |
fd_make_lrecord | lisp type_name, lisp data | lisp |
| a type specifier (a lisp object), and another lisp object | a lisp record |
| | |
fd_lookup_record | lisp tag | struct FD_TYPE_REGISTRY * |
| a lisp pointer | a pointer to a record entry or NULL |
| Returns the record entry for types whose record tags
are the argument given to the function. | |
fd_utf8_substring | fd_u8char *str,int index | char * |
| a pointer to a UTF-encoded string and an integer | the substring starting at the interger-th character |
| | |
fd_register_record | lisp tag | struct FD_TYPE_REGISTRY * |
| a lisp pointer | a pointer to a record entry |
| Returns a record entry for types with a particular record tag.
This creates an entry if one does not already exist. Also, if
the tag is FD_VOID, it always creates a new entry. (This is
useful for types which don't have tags but need special methods
like non-deterministic sets. | |
fd_get_big_buffer | unsigned int *bufsize | char * |
| a pointer to an int | a pointer to a large char array |
| Allocates a big buffer, with the size determined by
the environment variable FD_BUFFER_SIZE or the runtime
define FD_BIGBUFF_DEFAULT. This value is stored in the int
pointed to by the argument. | |
Function | Arguments | Returns |
fd_reinit_hashtable | fd_hashtable h,int minsize,int locked | void |
| a pointer to a hashtable and an int minsize | nothing |
| Reinitializes the table for use with at least minsize slots.
This leaves the tables mutex untouched, since someone may be
waiting on it. | |
fd_final_hashset_elts | fd_hashset h | lisp |
| a pointer to a hashset | a lisp object (possibly a non-deterministic set) |
| This returns all the values in the hashset and frees the hashset. | |
fd_init_hashtable | fd_hashtable h,int minsize | void |
| a pointer to a hashtable and an int minsize | nothing |
| Initializes the table for use with at least minsize slots.
This can be used for either a malloc'd hashtable or a hashtable
on the stack. | |
fd_make_symbol | const fd_u8char *pname | lisp |
| a string | a lisp pointer to a symbol with that name |
| This is basically the same loop as above with a substitution of
a strcmp for the == test. | |
fd_hashtable_get | fd_hashtable h,lisp key,lisp dflt | lisp |
| a pointer to a hashtable, a lisp key, and a default | a lisp object |
| Returns the value associated with the key in the hashtable or the
given default value if there is no such assocation. Note that
this does *not* copy the value returned from the table. | |
fd_hashtable_skim | fd_hashtable h,int threshold | lisp |
| a hashtable and an integral threshold | a lisp pointer |
| Returns (as a choice) all the keys in the hashtable whose
values are greater than the numeric threshold. | |
fd_free_hashset | struct FD_HASHSET *h | void |
| a pointer to a hashset | nothing |
| Frees the memory taken by a hashset and its elements. Note that
this does not free the hashtable itself, since it might be on the stack. | |
fd_hash_lisp | lisp x | unsigned int |
| a lisp pointer | an unsigned int |
| Returns the hash for a lisp object. This hash is *not*
portable across sessions. | |
fd_make_hashset | int minsize | struct FD_HASHSET * |
| an int minsize | a pointer to a hashtable |
| This mallocs a new hashset and initializes it to have at least minsize
elements. | |
fd_cleanup_locked_hashtable | fd_hashtable h | void |
| a pointer to a hashtable | nothing |
| Removes empty elements from the hashtable. | |
fd_hashtable_increment_existing | fd_hashtable h,lisp key,int increment | void |
| a pointer to a hashtable, a lisp key, and an int | nothing |
| Increments the value associated with the key by a number, doing
nothing if the key does not exist. | |
fd_grow_hashset | fd_hashset h,int minsize | void |
| a pointer to a hashset and an int minsize | nothing |
| Grows the hashset to have at least minsize slots | |
fd_grow_hashtable | struct FD_HASHTABLE *h,int minsize | void |
| a pointer to a hashtable and an int minsize | nothing |
| Grows hashtable to have at least minsize slots | |
fd_reinit_hashset | fd_hashset h,int minsize,int locked | void |
| a pointer to a hashtable and an int minsize | nothing |
| Reinitializes the table for use with at least minsize slots.
This leaves the tables mutex untouched, since someone may be
waiting on it. | |
_fd_set_symbol_value_noref | lisp x,lisp v | void |
| a LISP symbol, another LISP pointer | nothing |
| Threadsafe modifier for the value slot of a symbol
which does not do any refcounting or uncounting. | |
fd_probe_symbol | const fd_u8char *pname | lisp |
| a string | a lisp pointer to a symbol with that name |
| This is like fd_make_symbol but doesn't make the symbol, only
returning it if it exists. | |
fd_make_qstring | fd_u8char *string_data,int len | lisp |
| a string and a length | a lisp pointer to a qstring that is EQUAL to the string |
| If the length is negative, it is computed. | |
_fd_symbol_value_noref | lisp x | lisp |
| a LISP symbol | the symbol's value |
| Threadsafe accessor for the value slot which doesn't incref the value it returns | |
fd_init_hashset | fd_hashset h,int minsize | void |
| a pointer to a hashset and an int minsize | nothing |
| Initializes the table for use with at least minsize slots.
This can be used for either a malloc'd hashtable or a hashtable
on the stack. | |
fd_hashtable_zap | fd_hashtable h,lisp key | void |
| a pointer to a hashtable and a lisp key | nothing |
| Removes all values associated key in the hashtable. | |
fd_set_symbol_value | lisp x,lisp v | void |
| a LISP symbol, another LISP pointer | nothing |
| Threadsafe modifier for the value slot of a symbol. | |
fd_hashtable_increment | fd_hashtable h,lisp key,int increment | void |
| a pointer to a hashtable, a lisp key, and an int | nothing |
| Increments the value associated with the key by a number, simply
storing the number if no value is currently associated. | |
fd_hashtable_test | fd_hashtable h,lisp key,lisp value | int |
| a pointer to a hashtable, a lisp key, and a lisp value | 1 or 0 |
| Returns 1 if the value is one of the values associated with the key | |
fd_hashset_get | fd_hashset h,lisp key | int |
| a pointer to a hashtable and a lisp key | 1 or 0 |
| Returns 1 if the given key is in the hashset. | |
fd_free_hashtable | struct FD_HASHTABLE *h | void |
| a pointer to a hashtable | nothing |
| Frees the memory taken by a hashtable and its elements. Note that
this does not free the hashtable itself, since it might be on the stack. | |
fd_symbol_value | lisp x | lisp |
| a LISP symbol | the symbol's value |
| Threadsafe accessor for the value slot which increfs the value it returns | |
fd_hashtable_drop | fd_hashtable h,lisp key,lisp value | void |
| a pointer to a hashtable, a lisp key, and a value | nothing |
| Removes a value from the values associated with key in the hashtable. | |
fd_hashtable_add | fd_hashtable h,lisp key,lisp value | void |
| a pointer to a hashtable, a lisp key, and a value | nothing |
| Adds a value to the values associated with key in the hashtable. If the
key is already associated with multiple values, a copy of the new value
is added to it. If there is one association, a new non-deterministic
set is created. And if there is not association, this is just the
same as fd_hashtable_set. | |
fd_for_all_symbols | void (*fcn | void |
| a function on lisp pointers which returns void | nothing |
| Applies the function to every symbol in the symbol table. | |
fd_hashtable_probe | fd_hashtable h,lisp key | int |
| a pointer to a hashtable, a lisp key | 1 or 0 |
| Returns 1 if the key is associated with some value in the table. | |
fd_select_table_size | unsigned int min | unsigned int |
| an unsigned int (min) | an unsigned int greater than min |
| Selects a hashtable/index size greater than min. | |
fd_hashset_probe | fd_hashset h,lisp key | lisp |
| a pointer to a hashset and a lisp key | a value EQUAL to the key in the hashset |
| Adds a cref of a key to the hashset (if it doesn't already contain it),
otherwise returns the pointer already there | |
fd_hashtable_set | fd_hashtable h,lisp key,lisp value | void |
| a pointer to a hashtable, a lisp key, and a value | nothing |
| Associates the value with the key in the hashtable. If the key is new
it copies both key and value; if the key already had an association, that
value is freed and a copy of the new value replaces it. | |
fd_hashset_strget | fd_hashset h,fd_u8char *keystring,int len | int |
| a pointer to a hashtable and a string | 1 or 0 |
| Returns 1 if the a LISP copy of string is in the hashset. | |
fd_intern | const fd_u8char *name,int len | fd_lisp |
| a pointer to a string and a int length | a lisp pointer to a symbol whose name is the string capitalized |
| Returns an interned symbol whose name is a capitalized version of name. | |
_fd_hashset_add_nc | fd_hashset h,lisp key | int |
| a pointer to a hashset and a lisp key | 1 if the value wasn't already there |
| Adds a key (not a copy!) to the hashset. | |
fd_hashset_elts | fd_hashset h | lisp |
| a pointer to a hashset | a lisp object (possibly a non-deterministic set) |
| This returns all the values in the hashset. | |
_fd_hashtable_set_nolock | fd_hashtable h,lisp key,lisp value | void |
| a pointer to a hashtable, a lisp key, and a value | nothing |
| Associates the value with the key in the hashtable. If the key is new
it copies both key and value; if the key already had an association, that
value is freed and a copy of the new value replaces it. | |
fd_hashset_add | fd_hashset h,lisp key | int |
| a pointer to a hashset and a lisp key | 1 if the value wasn't already there |
| Adds a cref of a key to the hashset (if it doesn't already contain it). | |
fd_hashset_intern | fd_hashset h,lisp key | lisp |
| a pointer to a hashset and a lisp key | a value EQUAL to the key in the hashset |
| Adds a cref of a key to the hashset (if it doesn't already contain it),
otherwise returns the pointer already there | |
fd_make_hashtable | int minsize | struct FD_HASHTABLE * |
| an int minsize | a pointer to a hashtable |
| This mallocs a new hashtable and initializes it to have at least minsize
elements. | |
fd_hashset_drop | fd_hashset h,lisp key | void |
| a pointer to a hashtable and a lisp key | nothing |
| "Removes" the key from the hashset by replacing it with FD_VOID.
Note that this doesn't save any space, but the search algorithm will
just skip over it rather than returning it. | |
fd_hashtable_max | fd_hashtable h | lisp |
| a hashtable | a lisp pointer |
| Returns the keys in the hashtable whose values are numerically
maximum. | |
fd_choice_to_hashset | lisp values | fd_hashset |
| a pointer to a hashset | a lisp object (possibly a non-deterministic set) |
| This returns all the values in the hashset. | |
{}
Function | Arguments | Returns |
fd_make_file_pool
| char *filename,FD_OID base, unsigned int capacity,
int major_version,fd_lisp metadata | void |
| pointer to an object ID (oid)
capacity (unsigned int)
filename (string pointer) | void |
| Creates an empty file pool on disk which can be subsequently
opened or added. | |
fd_make_super_pool
| char *filename,unsigned int base,unsigned int load | unsigned int |
| a filename, a base id, and a load | the base id |
| Creates a new super pool file. The base id is specifies
the high half of the base of the super pool and the load declares
how many OIDs are already "pre allocated" from the super pool. | |
fd_read_file_pool_metadata
| FILE *f,int *revnum,int *size,time_t *make,time_t *repack,time_t *change | fd_lisp |
| an open file stream to a file pool and pointers to two ints | a lisp object (or the empty choice) |
| Returns metadata and version information for a file pool.
The version information, consisting of a serial repack ID and
a file length, are written into the two integer pointers.
Since modifications always write at the end of the file,
the repack serial number and the length of the file uniquely
identify a moment in time for the file. | |
fd_file_pool_freespace | fd_u8char *filename | unsigned int |
| a pathname (a string) | an unsigned int |
| Returns the number of unallocated OIDs in the specified file pool.
This operates without actually "using the pool". | |
fd_make_pool_snapshot | char *filename,char *snapshot | void |
| two filenames | the base id |
| Creates a "snapshot" of a specified file pool. This is basically
a copy of the pools offset table and load information, which can be used
to reconstitute the state of the pool. This takes advantage of the fact
that pools don't write over values until they are repacked. | |
fd_lock_file_pool | fd_file_pool p | int |
| a pointer to a file pool | 1 on success |
| Attempts to lock the file storing pool. | |
fd_new_file_pool
| char *filename,unsigned int capacity,char *super_pool | void |
| a filename (localized string), a capacity (unsigned int),
and a super pool id (localized string) | void |
| Creates a new, empty, file pool with a particular capacity from a
specified super pool. | |
fd_label_file_pool | char *filename,lisp label | void |
| a string, and a lisp object | void |
| Modifies a file pool to have a given label. | |
fd_make_new_super_pool | char *filename | unsigned int |
| a filename | the base id |
| Creates a new super pool file with a random base id (based
on the time and process id). This will not allocated in the first
thousand super pools. | |
fd_register_file_pool_opener | int magic_no,fd_pool (*opener | void |
| a magic number and an opening function | void |
| This associates an opening function with a number which
is the first word of the file to use this opener. | |
fd_use_file_pool | fd_u8char *fname | fd_pool |
| a string naming a file | a pointer to a file pool structure |
| Errors:
Cannot open pool (signalled by fd_open_file_pool)
Side effects:
Creates a file pool structure for the named file
Adds a pointer to the pool structure to _fd_pool_table | |
fd_file_pool_load | fd_u8char *filename | unsigned int |
| a pathname (a string) | an unsigned int |
| Returns the number of allocated OIDs in the specified file pool.
This operates without actually "using the pool". | |
fd_file_pool_capacity | fd_u8char *filename | unsigned int |
| a pathname (a string) | an unsigned int |
| Returns the total number of possible OIDs in the specified file pool.
This operates without actually "using the pool". | |
fd_cache_file_pool | fd_pool p | void |
| pointer to a file pool structure | void |
| Initializes a cache for the file pool, reducing the
need for disk access and repositioning. | |
Function | Arguments | Returns |
fd_for_slots | void (*fcn | void |
| a function on three lisp objects and a lisp object | void |
| Applies the function to the frame and each of its attributes and values. | |
fd_get_slotmap | lisp arg | lisp |
| a lisp pointer | a lisp pointer |
| If arg is a slotmap, it is cref'd and returned;
if arg is an OID whose value is a slotmap, that slotmap is returned
if arg is an OID whose value is a choice, one of which is a slotmap,
that slotmap is returned | |
fd_inherit_values | lisp root,lisp slotid,lisp through | lisp |
| a frame and two slotids | a lisp pointer |
| Searches for a value for the first slotid through the lattice
defined by the second slotid. | |
fd_frame_set | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| Modifies the given attribute (slotid) of frame so that it has values,
removing and adding values as neccessary. | |
fd_prim_drop | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| Removes the designated value from the designated attribute of a frame
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an object | |
fd_prim_set_consed | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| Just like fd_prim_set, but frees the value it was passed (the
frame still keeps its pointer. This is a convenience function
for passing consed values as arguments. | |
fd_overlay_get | lisp frame,lisp slotid | lisp |
| a frame (slotmap or OID evaluating to one) and a slotid | a lisp pointer |
| Does inheritance through OID values on annotated frames. | |
fd_frame_remove | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| If a frame already possesses the named attribute whose value contains
the given value, it is removed. If that would make the attribute value
empty, it is replaced with FD_EMPTY_CHOICE; if that would make the attribute
value a singleton, it is replaced with just that value.
If the slot is itself an oid and the value removed is actually present,
then the remove-effects demons of the slot are evaluated. | |
fd_frame_add | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| If a frame already possesses the named attribute, the value is added to
its set of values (if it's value isn't a set, it is made one).
If the slot is itself an oid and the value stored is new (not currently
in the attribute's set of values),
then the add-effects demons of the slot are evaluated.
Side effects:
May replace the slot/value vector of a slotmap to add an attribute
Refcounts or copies the value given it (sets are copied)
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an oid | |
fd_use_autoindex | fd_index ix | void |
| a pointer to an index | void |
| Sets up a particular index for automatically recording
changed and new slot values. | |
fd_copy_frame | lisp original,fd_pool x | lisp |
| a frame and a pool | a pointer to a new frame (oid) |
| This creates a new object in the pool and initializes
its value to be a slotmap copying another object's stotmap,
thus making it a frame. | |
fd_prim_add_consed | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| Just like fd_prim_add, but frees the value it was passed (the
frame still keeps its pointer. This is for passing consed values
as arguments. | |
fd_describe_slot | FILE *stream,lisp slotid,lisp value | void |
| an attribute name and a value | void |
| Describes a slot and its value to a stream. | |
fd_frame_test | lisp frame,lisp slotid,lisp value | int |
| a frame, a slotid, and a value | 1 if the value is on the slot, 0 otherwise |
| If the slot is an oid, this may use the TEST-METHODS and
GET-METHODS of the slot. Otherwise, it just checks for membership
in the corresponding value.
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an oid pointer | |
fd_clear_slot_cache | lisp slotid,lisp frame | void |
| slotid, frame | void |
| Clears cached entries for slotid and frame, clearing
all entries if frame is FD_VOID | |
fd_frame_slots | lisp frames | fd_lisp |
| a frame | a set of slot ids |
| Returns the current slot ids with associations on the frame | |
fd_prim_get | lisp frame,lisp slotid | lisp |
| a frame and an attribute name (a lisp pointer) | a lisp pointer |
| Returns either the value associated with the attribute
or FD_EMPTY_CHOICE if no such attribute exists; this value is
computed from the attribute value if the slot is an object identifier.
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an object pointer | |
fd_prim_test | lisp frame,lisp slotid,lisp value | int |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | 1 or 0 |
| Returns 1 if the named attribute of the frame contains a value | |
fd_pathp | lisp root,lisp slotid,lisp to | int |
| a frame, a slotid, and a frame | 1 or 0 |
| Returns 1 if there is a path through slotid between the two frames | |
fd_overlay_test | lisp frame,lisp slotid,lisp value | int |
| a frame (slotmap or OID evaluating to one), a slotid,
and a value | 1 or 0 |
| Does inheritance through OID values on annotated frames, determining
if a slotid is associated with a particular value. | |
fd_enable_slot_cache | lisp slotid | void |
| slotid | void |
| Enables caching on the slot SLOTID | |
fd_prim_add | lisp frame,lisp slotid,lisp value | void |
| a frame, an attribute name (a lisp pointer),
and a value (a lisp pointer) | void |
| If the frame already possess the named attribute, the specified
value is added to the current one; otherwise, the attribute is
added to the frame with the corresponding value.
Side effects:
May replace the slot/value vector of a slotmap to add an attribute
Refcounts or copies the value given it (sets are copied)
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an object | |
fd_overlay_create | fd_pool x,lisp value | lisp |
| a pool and a frame | a pointer to a frame (oid) |
| This creates a new oid in the pool and initializes
its value to be both a slotmap and a pointer to a frame | |
fd_frame_create | fd_pool x | lisp |
| a pool | a pointer to a frame (oid) |
| This creates a new oid in the pool and initializes
its value to be a slotmap, thus making it a frame. | |
fd_frame_get | lisp frame,lisp slotid | lisp |
| a frame and an attribute name (a lisp pointer) | either the value associated with the attribute |
| or FD_EMPTY_CHOICE if no such attribute exists
(The return value is a copy which may need to be freed).
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an oid pointer | |
fd_prim_set | lisp frame,lisp slotid,lisp value | void |
| a frame, a slotid (a lisp pointer),
and a value (a lisp pointer) | void |
| If the frame already possess the named attribute, its value is replaced
with the new one; otherwise, the attribute is added to the frame
with the corresponding value.
Side effects:
May replace the slot/value vector of a slotmap to add an attribute
Frees the previous value of the attribute (if it exists)
Refcounts or copies the value given it (sets are copied)
Note: the attribute name is compared with ==, meaning that
it can be a symbol, fixnum, ascii or unicode character, boolean,
or an object | |
fd_disable_slot_cache | lisp slotid | void |
| slotid | void |
| Disables caching on the slot SLOTID | |
fd_frame_get_star | fd_lisp frames,fd_lisp slotids | fd_lisp |
| a choice of frames and a choice of slotids | the kleene star of the slotids on the frames |
| | |
fd_inherits_valuep | lisp root,lisp slotid,lisp through,lisp value | int |
| a frame, two slotids, and a value | 1 or 0 |
| Returns 1 if the value can be inherited for the first slotid
going through the lattice defined by the second slotid. | |
fd_already_doing_p | slot_op op,lisp frame,lisp slotid,lisp value | int |
| a slot operation, a frame, slot, and value | 1 or 0 |
| Returns 1 if the frame system is already doing a slot operation.
(This causes most slot operations to return the empty choice). | |
Function | Arguments | Returns |
fd_score_from_spec | lisp indices,lisp frames,lisp spec | fd_hashtable |
| an index, a set of frames, and a list of feature sets | a hashtable of frames and scores |
| Computes similarity scores to based on the feature sets
If the set of frames argument is void, all candidates are scored;
otherwise, only the specified frames are scored. | |
fd_find_similar | lisp indices,lisp frames,lisp slots | lisp |
| an index, a set of frames, and a set of slots | a set of frames |
| Finds all frames in that have some in common with | |
fd_get_frame_features | lisp frames | lisp |
| a frame (or set of frames) | a set of features based on those on the slots of FRAMES |
| Gets the features of FRAME based on all of its slots. | |
fd_score_from_samples
| lisp indices,lisp frames,lisp samples,lisp slots | fd_hashtable |
| an index, a set of frames, a set of samples, and a set
of slotids | a hashtable of frames and scores |
| Computes similarity scores to based on slotids and index.
If the set of frames argument is void, all candidates are scored;
otherwise, only the specified frames are scored. | |
fd_find_frames | lisp indices,... | lisp |
| a set of indices and a series of slot and value sets
terminated by a FD_VOID | a set of frames |
| This is a C version of the FDSCRIPT strict searching function
It returns those frames indexed as having each of the slots with
at least of the subsequent values | |
fd_index_frame | fd_index idx,lisp frame | void |
| a frame and an index | nothing |
| Indexes an object based on its slot values. | |
fd_index_slots | fd_index idx,lisp frame,lisp slots | void |
| a frame (or set of frames), an index, and a set of slots | nothing |
| Indexes the frame (or set of frames) based on the specified slots | |
fd_index_notice_slot_values
| fd_index idx,lisp frames,lisp slots,lisp values | void |
| a frame (or set of frames), an index,
a set of slots, and a set of values | nothing |
| Indexes the frame (or set of frames) based on the specified slots
This doesn't force slots to be indexed, so stop-features works. | |
fd_get_slot_features | lisp frames,lisp slots | lisp |
| a frame (or set of frames) and a slot (or set of slots) | a set of features based on those slots of those frames |
| Gets the features of FRAME on SLOTS. | |
fd_index_slot_values
| fd_index idx,lisp frames,lisp slotids,lisp values | void |
| a frame (or set of frames), an index,
a set of slots, and a set of values | nothing |
| Indexes the frame (or set of frames) based on the specified slots | |
fd_strict_search | lisp indices,lisp spec | lisp |
| an index (or set/choice of indices) and
a list of sets/choices of features | a set of objects |
| Returns all objects recorded in indices which have
one of each set of features in the provided list | |
Function | Arguments | Returns |
fd_find_index | fd_u8char *id | fd_index |
| a string | a pointer to an index or NULL |
| Returns the index whose id matches the given string. | |
fd_index_drop | fd_index x,lisp key,lisp value | void |
| an index pointer, a lisp key, a lisp value | an index |
| Removes the values from the values associated with the key in the index. | |
fd_index_get_size | fd_index x,lisp key | unsigned int |
| an index pointer, a lisp key | the number of values associated with the key in the index |
| Returns the number of values associated with the key in the index | |
fd_revert_index | fd_index x | void |
| a pointer to an index | nothing |
| Erases all of the changes made to the specified index. | |
fd_set_index_zipf_threshold | fd_index ix,int threshold | void |
| an index, an integer | nothing |
| Sets the save threshold for an index, so that keys with fewer
than threshold values will not be written to disk or server | |
fd_intern_index_values | fd_index x | void |
| an index pointer | void |
| Arranges for an index to intern the values it stores | |
fd_index_prefetch | fd_index x,lisp keys | void |
| an index pointer, and a choice of keys | an index |
| Prefetches the values for particular keys. | |
fd_commit_index | fd_index x | void |
| a pointer to an index | nothing |
| Saves the changes made to the specified index. | |
fd_interpret_index | lisp spec | fd_index |
| an expression and an environment | a pointer to an index |
| Evaluates the expression in the environment and tries to produce an
index object from the result. | |
fd_index_set_sizes
| fd_index x,int cache_size,int adds_size,int drops_size,int sizes_size | void |
| a pointer to an index | nothing |
| Grows the internal tables for an index to accomodate n keys and n mods | |
fd_index_keys | fd_index idx | lisp |
| a pointer to an index | nothing |
| Non-deterministically returns all the keys in an index. | |
fd_for_indices | void (*fcn | void |
| a function on pointers to indices | nothing |
| Calls the function on all registered indices. | |
fd_use_index | fd_u8char *spec | fd_index |
| a string | an index |
| Returns an index object based on the string argument. If the string
has the form "port@host" it is taken to be a network index; otherwise,
it is taken to be a file index which is opened. | |
fd_index_add | fd_index x,lisp key,lisp value | void |
| an index pointer, a lisp key, a lisp value | an index |
| Adds the value to the values associated with the key in the index. | |
fd_close_index | fd_index idx | void |
| a pointer to an index | nothing |
| Closes an index | |
fd_index_get | fd_index x,lisp key,lisp dflt | lisp |
| an index pointer, a lisp key, and a default value | the values associated with the key in the index |
| Returns the values associated with the key in the index or the default
value if there are none. | |
fd_swap_out_index | fd_index x | void |
| a pointer to an index | nothing |
| Frees most of the space used by the cached values of an index. | |
fd_index_set | fd_index x,lisp key,lisp value | void |
| an index pointer, a lisp key, a lisp value | an index |
| Sets the values associated with the key in the index. | |
Function | Arguments | Returns |
fd_close_pool | fd_pool p | void |
| a pointer to a pool | void |
| Closes open file pointers or network connections underlying
the pool. | |
fd_control_frame_printing | int level | void |
| an integral print level | void |
| Controls the printing of oids
If print level is 0, names are never printed
If print level is 1, names are printed for loaded oids
If print level is 2, names are always printed and
oids are loaded when printed | |
fd_get_oid_value | lisp oid | lisp |
| a lisp pointer to an oid | a lisp pointer |
| Gets the value of an OID, doing fetching from files or network as
neccessary. | |
fd_set_oid_value | lisp oid,lisp value | void |
| a lisp pointer to an oid and a lisp pointer to a value | none |
| This sets the value of an oid (its first argument)
to a new value (its second argument).
fd_set_oid_value refcounts or copies the second argument (if it's a choice)
Errors:
Cannot modify oid
Side effects:
Frees the old value of the oid
Changes the value field of the oid
Adds the oid to its pools "modified objects" | |
fd_mark_modified | lisp oid | void |
| a lisp pointer to an oid | void |
| Marks the designated OID as modified and signals an error if it cannot
be modified. | |
fd_show_poolids | int use_ids | void |
| 1 or 0 | void |
| Determines if pool ids are used to print OIDs. | |
fd_swap_out_pool | fd_pool p | void |
| a pointer to a pool | void |
| Frees any space being used for the values of unmodified OIDs
in pool. It doesn't do anything about committing changes. | |
fd_try_oid_value | lisp oid | lisp |
| a lisp pointer to an oid | a lisp pointer |
| Gets the value of an OID, doing fetching from files or network as
neccessary. If an error occurs, this will return FD_VOID rather
than signalling the error. | |
fd_commit_oid | lisp oid | int |
| a lisp pointer to an oid | 1 if successful, 0 otherwise |
| Commits any changes to an oid using pool specific methods, as appropriate. | |
fd_print_oid | lisp frame,fd_string_stream ss | void |
| a lisp pointer (to an `oid') and a string stream | nothing |
| Outputs an external representation of the oid, consisting of
its ID followed by its OBJ-NAME slot (if it exists). | |
fd_swap_out | lisp oid | void |
| a lisp pointer to an oid | none |
| If this oid's value has not been modified, it is freed
and the oid declared "non present", allowing it to be
reloaded later if its value is needed. | |
fd_oid_modifiedp | lisp oid | int |
| a lisp pointer to an oid | 1 or 0 |
| Returns 1 if the oid has usaved modifications. | |
fd_revert_oid | lisp oid | int |
| a lisp pointer to an oid | 1 if successful, 0 otherwise |
| Erases any uncommited changes to the designated oid. | |
fd_new_oid | fd_pool p | lisp |
| a pointer to a pool structure | a new oid in the pool |
| Errors:
Pool is used up
Side effects:
Increments the load of a file pool
or
Updates the load on a remote server | |
fd_revert_pool | fd_pool p | void |
| a pointer to a pool | void |
| Erases any uncommited changes to the oids in the pool. | |
fd_get_modified | fd_pool p,int *n_oids,int reset | fd_lisp * |
| a pointer to a pool, a result pointer to an int, and a flag | a pointer to an array of lisp pointers |
| Returns an array of all the modified OIDs
Marks the designated OID as modified and signals an error if it cannot
be modified. | |
Function | Arguments | Returns |
fd_set_value | lisp sym,lisp val,lispenv env | void |
| a symbol, a value, and an environment | void |
| Sets the binding for symbol in an environment chain, setting
it in the innermost module or the global environment if the variable
is not directly bound. | |
fd_free_env | fd_lispenv env | void |
| an environment | void |
| Frees a dynamically allocated environment | |
fd_mallocd_env | fd_lispenv env | fd_lispenv |
| an environment | a dynamically allocated environment |
| Returns the existing dynamic copy of an environment or
makes one if one doesn't exist. | |
fd_registered_module | fd_u8char *name,int risky | fd_lispenv |
| a string | a lisp environment |
| Returns a module environment, register | |
fd_required_symeval | fd_lisp sym,lispenv env | fd_lisp |
| a lisp symbol and an environment (possibly NULL) | a lisp object (cref'd) |
| Does an environment lookup (using fd_symeval) but signals
an error if it fails | |
fd_module_uses | fd_lispenv env,fd_lispenv use | void |
| two pointers to modules | void |
| Adds the second argument to the uses for the first argument,
if it is not already included. | |
fd_make_gproc | lisp lambda,lispenv env | lisp |
| a lisp lambda expression and an environment | a procedure object closing the expression in the environment |
| | |
fd_make_sproc | lisp lambda,lispenv env | lisp |
| a lisp lambda expression and an environment | a procedure object closing the expression in the environment |
| | |
fd_register_module | fd_u8char *name,fd_lispenv menv | void |
| a string and an environment | void |
| Binds the named symbol to the environment in the global environment.
This will signal an error if the global binding is not VOID. | |
fd_safe_set_value | lisp sym,lisp val,lispenv env | void |
| a symbol, a value, and an environment | void |
| Sets the value for a variable, but never effecting the
global environment. | |
fd_make_env | fd_lispenv env | fd_lispenv |
| a parent environment | a new environment |
| This dynamically allocates a new environment
with a specified parent. | |
fd_symeval | fd_lisp sym,lispenv env | fd_lisp |
| a lisp symbol and an environment (possibly NULL) | a lisp object (not cref'd) |
| This looks up a symbol, handling both lexical references, module references,
and global references. | |
fd_make_ssproc | lisp lambda,lispenv env | lisp |
| a lisp lambda expression and an environment | a procedure object closing the expression in the environment |
| with a lock for synchronizing application. | |
fd_bind_value | lisp sym,lisp val,lispenv env | void |
| a symbol, a value, and an environment | 1 on success, 0 on failure |
| Sets the binding for symbol in the first frame of environment
or creates a new one if one does not exist. Returns 1 if a new
binding had to be created. | |
fd_register_restricted_module | fd_u8char *name,fd_lispenv menv | void |
| a string and an environment | void |
| Binds the named symbol to the environment in the restricted environment.
This will signal an error if the global binding is not VOID. | |
fd_module_export | fd_lispenv modenv,lisp symbol | void |
| a pointer to a module and a lisp symbol | void |
| Arranges for the module to export the specified symbol. | |
Function | Arguments | Returns |
fd_make_rproc | fd_server s,lisp op | lisp |
| a server id and a remote op name, both lisp pointers | an rproc to invoke the op name on the named server |
| | |
fd_do_application | lisp fcn,lisp argvalues | lisp |
| two lisp values, a procedure and a list of arguments | a value or a tail call resulting from applying the |
| procedure to the arguments. | |
fd_eval_elts | lisp lst,lispenv env | lisp |
| a list of expressions | a list of objects |
| Returns the result of evaluating each element of a list in an
environment. Actual implementation is above. | |
fd_mv_return | lisp *x,int len | fd_lisp |
| a pointer to an array of lisp pointers and a int length | a multiple value object whose elements are the elements |
| of the array (copied into a new array) | |
fd_eval | lisp expr | lisp |
| an expression | a lisp pointer |
| Evaluates an expression in the top level environment.
It's argument is not gc'd. | |
fd_add_alias | fd_lispenv env,char *alias,char *name | void |
| a null terminated string, an argument count,
and a pointer to a C function | nothing (void) |
| Defines a new FDScript primitive which is the same as another
existing primitive. This saves a little consing in that it simply
keeps a pointer to the primitive struct rather than making a new one.
It inherits the safety information of the procedure it is aliasing. | |
fd_add_lexpr
| fd_lispenv env,char *name,int argcode,lisp (*proc | void |
| a null terminated string and a pointer to a C function | nothing (void) |
| Defines a new FDScript primitive which accepts any number of arguments.
The C function is called on a single lisp object, pointing to a list of
arguments. Note that any non-deterministic arguments are represented as
sets.
fd_add_lexpr also declares the symbol to be "safe" for
evaluation. | |
fd_streval | char *input | char * |
| a string | a string |
| Evaluates an expression in the top level environment. | |
fd_evalstring | char *input,lispenv env | char * |
| a string | a string |
| Evaluates an expression in the top level environment. | |
fd_add_cproc | fd_lispenv env,char *name,int n_args,lisp (*proc | void |
| a null terminated string, an argument count,
and a pointer to a C function | nothing (void) |
| Defines a new FDScript primitive with a name, a number of
arguments and a C implementation. Note that if the number
of arguments is negative, it is taken to be a lexpr or special form,
thought fd_add_special_form is the preferred way to declare such
primitives. A special form's implementation function is
called on the expression being evaluated and its environment,
without any further processing of the expression.
fd_add_cproc also declares the symbol to be "safe" for
evaluation. | |
fd_record_typep | lisp x,lisp tag | int |
| a lisp record and a tag | 1 or 0 |
| Returns 1 if the record's tag is the specified
pointer or one of its `supertypes'. Returns 0 otherwise
or if the record is not really a record | |
fd_start_eval | lisp expr,lispenv env | lisp |
| a lisp expression and a lisp environment | a lisp value, possibly a tail call |
| This starts the evaluation process which can be finished
with fd_finish_value | |
_fd_finalize_static_tail_call | lisp tc,fd_lispenv env | lisp |
| a tail call object and an environment | the results of evaluating the tail call until it no |
| longer depends on the given environment | |
fd_finish_value | lisp value | lisp |
| a lisp pointer | a lisp pointer which isn't a tail call |
| This will force any tail call to evaluate to a real value. | |
fd_eval_in_env | lisp expr,lispenv env | lisp |
| a lisp expression and a lisp environment | a lisp value, never a tail call |
| This starts and finishes the evaluation process.
It returns a value which may need to be freed but does
not use up the value it is passed. | |
fd_mv_ref | lisp x,unsigned int i | fd_lisp |
| a lisp pointer and an int | the ith value represented by the pointer or FD_VOID otherwise |
| | |
fd_add_special_form
| fd_lispenv env,char *name,lisp (*proc | void |
| a null terminated string and a pointer to a C function | nothing (void) |
| Defines a new FDScript special form. Whenever a form whose head is
the specified symbol is evaluated, the declared function is called
on the form and the environment of evaluation.
fd_add_special_form also declares the symbol to be "safe" for
evaluation. | |
fd_set_supertype | lisp tag,lisp super_tag | void |
| two lisp tags | nothing (void) |
| Records a super type relationship between two tags | |
fd_mv_arity | lisp x | int |
| a lisp pointer | the number of values represented by the pointer |
| | |
{}