Contents

pdlib
    COPYING
    kfunc
    ObjType
    Image
    FEI
    NetVal
    vfile
        vfile.h
            VADDR
            VFILE
    Vars
    Parse
        SX
        XML
    Print
        SX
        XML
    Compress
        Bitstream
        Huffman
    Function Index
pdscript
    COPYING
    PDScript Lang
        Statements
        Expressions
        Builtins
    BGGL2
        Interp
        Parse
        Util
    PDScript
        Interp
        Compile
        Reference
            Statements
    Function Index
pdnet
    Parse
    NET
        Sock
            TCP
            UDP
    RPC
        XML-RPC
            Decode
            Encode
                Ext-1
            Service
        Jabber-RPC
    ObjLst
    Protocols
        Meta0
        HTTP
        XMPP/Jabber
            Util
            JEP-0030
            JEP-0045(MultiUserChat)
            TMP
        Multiplex
            MUX0
    Function Index
pdvfs
    VDIR
    VFS
    VFSNS
    VPath
    Function Index
pdglue
    Function Index

pdlib

pdlib is a library primarily intended to provide:
a simplistic persistence feature;
a dynamic typesystem (ObjType);
an application extensible file interface (VFILE).

it is primarily used by including "pdlib.h", and linking with -lpdlib (assuming it is installed correctly).

COPYING

PDLIB: A collection of utility functions and other stuff.
Copyright (C) 2005 Brendan G Bohannon (aka: cr88192)

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA

Email: cr88192@hotmail.com

kfunc

Form
    int panic(char *s, ...);
DocPos
    pd_base/kfunc.c:27
Description
    panic and exit.

Form
    int kprint(char *s, ...);
DocPos
    pd_base/kfunc.c:51
Description
    primary print function for pdlib.

Form
    int kprintd(char *s, ...);
DocPos
    pd_base/kfunc.c:77
Description
    print to debug log.

Form
    void *kalloc(int sz);
DocPos
    pd_base/kfunc.c:102
Description
    primary alloc function for pdlib.

Form
    int kfree(void *p);
DocPos
    pd_base/kfunc.c:124
Description
    primary free function for pdlib.

Form
    int kincref(void *p);
DocPos
    pd_base/kfunc.c:139
Description
    increment reference count for p.

Form
    int kdecref(void *p);
DocPos
    pd_base/kfunc.c:152
Description
    deincrement reference count for p.

Form
    void *kralloc(int sz);
DocPos
    pd_base/kfunc.c:165
Description
    allocates in a rotating buffer, only safe for temporary data.
    one does not need to free allocations.

Form
    char *kstrdup(char *s);
DocPos
    pd_base/kfunc.c:188
Description
    copies a string using kalloc.

Form
    char *krstrdup(char *s);
DocPos
    pd_base/kfunc.c:204
Description
    copies a string using kralloc.

Form
    char *kdstrdup(char *s);
DocPos
    pd_base/kfunc.c:220
Description
    copies a string with dynamic typing.

Form
    char *kdallocstr(int sz);
DocPos
    pd_base/kfunc.c:236
Description
    creates a dynamicly types string buffer.

Form
    char *kvprints(char *d, char *s, va_list lst);
DocPos
    pd_base/kfunc.c:250
Description
    prints into string buffer d.
    returns the new end of the string.

Form
    char *kprints(char *d, char *s, ...);
DocPos
    pd_base/kfunc.c:266
Description
    prints into string buffer d.
    returns the new end of the string.

Form
    char *ksprint(char *s, ...);
DocPos
    pd_base/kfunc.c:285
Description
    prints into a new string.
    the string is allocated via kralloc, and thus will need to be copied for the value to be retained.
    returns the new string.

Form
    int kprintvf(VFILE *fd, char *s, ...);
DocPos
    pd_base/kfunc.c:307
Description
    prints into the vfile fd.

Form
    void *kmemdup(void *p, int sz);
DocPos
    pd_base/kfunc.c:330
Description
    makes a copy of p in a buffer that is sz bytes.

Form
    char *ksgets(char *buf, int l, char *s);
DocPos
    pd_base/kfunc.c:346
Description
    extracts a line from s.
    l is the maximal number of characters (excluding nul) that can fit in buf.
    the newline is not included.
    returns s if there is not a complete line in the buffer.
    otherwise it returns the start of the next line.

ObjType

ObjType is the dynamic typing system used within pdlib.
Its basic mechanism is a pointer to a typed struct or array, where the basic type can be determined just from the pointer.
The purpose includes being easily and dynamically extensible for new app types.

Type Strings:    
DEF = TYPE [':' NAME] ';' | TYPE '+' [':' NAME ';']
TYPE = TypeName | SHAPE TypeName | '*' TypeName | SHAPE '*' TypeName
SHAPE = Int | Int ',' SHAPE

TypeName:
single words will flag inlined types.
'*type' will indicate a pointer to the type (within ObjType).
'type+' will indicate a terminal array of that type.
'*type+' will be a terminal array of pointers to type.

'sbyte': 8 bit signed int;
'byte': 8 bit unsigned int;
'short': 16 bit signed int;
'ushort': 16 bit unsigned int;
'int': 32 bit signed int;
'uint': 32 bit unsigned int;
'long': 32/64 bit signed int;
'ulong': 32/64 bit unsigned int;

'float': 32 bit float;
'double': 64 bit double;

'string': string, pointer to an externally defined string;
'*struct': reference to a struct.
'cptr': a c pointer, points to unknown data.
'cfunc': a c function pointer.

at present including defined types within type strings will be disallowed (this does not count for pointer types).

Form
    int ObjType_FormSize(char *form);
DocPos
    pd_base/objtype.c:43
Description
    Given a string form description, it will figure the needed size.
    This size does not include any terminal arrays or such.

Form
    unsigned int ObjType_StrAdler32(byte *s);
DocPos
    pd_base/objtype.c:125
Description
    Compute the Adler-32 checksum for a string.

Form
    unsigned int ObjType_DataAdler32(void *buf, int sz, unsigned int lcrc);
DocPos
    pd_base/objtype.c:146
Description
    Compute the Adler-32 checksum for a glob of data.
    lcrc is the crc of the last fragment (eg: multiple fragments with a common crc, parts of a stream, ...).
    lcrc should initially be 1.

Form
    unsigned int ObjType_StringCRC(char *s);
DocPos
    pd_base/objtype.c:171
Description
    Compute the checksum for a string.
    This will be usable for match the type crc's for the same names.

Form
    PDLIB_ObjType *ObjType_NewType(char *name, char *form);
DocPos
    pd_base/objtype.c:184
Description
    Creates a new type with the given name and form.

Form
    PDLIB_ObjType *ObjType_FindType(char *type);
DocPos
    pd_base/objtype.c:234
Description
    Finds the type associated with a given name.

Form
    PDLIB_ObjType *ObjType_FindTypeCRC(unsigned int crc);
DocPos
    pd_base/objtype.c:254
Description
    Finds the type associated with a given crc.

Form
    void *ObjType_New(char *type, int size);
DocPos
    pd_base/objtype.c:274
Description
    Creates a new object of a given type and size.
    Size is either 0 or the size of the requested structure

Form
    PDLIB_ObjType *ObjType_GetType(void *p);
DocPos
    pd_base/objtype.c:324
Description
    Gets the type associated with a given object.

Form
    char *ObjType_GetTypeName(void *p);
DocPos
    pd_base/objtype.c:341
Description
    Gets the type name associated with a given object.

Form
    unsigned int ObjType_GetTypeCRC(void *p);
DocPos
    pd_base/objtype.c:374
Description
    Gets the type name checksum associated with a given object.

Form
    int ObjType_GetSize(void *p);
DocPos
    pd_base/objtype.c:407
Description
    Gets the size of a particular object.

Form
    void *ObjType_GetBase(void *p);
DocPos
    pd_base/objtype.c:427
Description
    Gets the base of a particular object.

Form
    long ObjType_GetOffset(void *p);
DocPos
    pd_base/objtype.c:444
Description
    Gets the offset relative to the base of a particular object.

Form
    long ObjType_GetRelSize(void *p);
DocPos
    pd_base/objtype.c:458
Description
    Gets the relative size of a particular object.

Form
    int ObjType_TypeP(void *p, char *type);
DocPos
    pd_base/objtype.c:470
Description
    Returns non-zero if p is type.

Form
    int ObjType_IncRef(void *p);
DocPos
    pd_base/objtype.c:505
Description
    Increments the ref count for an object.

Form
    int ObjType_DecRef(void *p);
DocPos
    pd_base/objtype.c:517
Description
    Decrements the ref count for an object.

Form
    int ObjType_Init();
DocPos
    pd_base/objtype.c:529
Description
    Inits the ObjType system.

Image

Form
    int PDLIB_Image_NameObj(char *name, void *ptr);
DocPos
    pd_base/image.c:277
Description
    Associates a name with an object.
    The name will be used as a root for the store.

Form
    void *PDLIB_Image_FetchName(char *name);
DocPos
    pd_base/image.c:304
Description
    Fetches the object associated with a given name.

Form
    int PDLIB_StoreImage(char *name);
DocPos
    pd_base/image.c:337
Description
    Store an image containing reachable objects to the given filename.

Form
    int PDLIB_LoadImage(char *name);
DocPos
    pd_base/load.c:217
Description
    Load a store image from the given file.

FEI

FEI is a feature for exporting/importing features from a pool.
The intended use is for persistence and otherwise sharing functions.
No information is preserved about args or such.

Form
    int PDLIB_FEI_ExportFunc(char *name, void *f);
DocPos
    pd_base/fei.c:33
Description
    Exports a function (represented as void pointer to the function).
    It will first try to replace any exports with the same name, otherwise it will add a new export with the given name.
    All functions need to be exported before loading/storing images using them.

Form
    void *PDLIB_FEI_ImportFunc(char *name);
DocPos
    pd_base/fei.c:69
Description
    Import a function with a given name.
    Returns a pointer to the function (though in the form of 'void *').
    Returns NULL if name was not previously exported.

Form
    char *PDLIB_FEI_FuncName(void *f);
DocPos
    pd_base/fei.c:94
Description
    Find the name for a given exported function.
    Returns NULL if not found.

NetVal

objective:
create code for managing builtin dynamic types.
make use of pdlib type system as base.

Form
    void *NetVal_WrapInt(int i);
DocPos
    pd_base/netval.c:133
Description
    Wraps an integer.

Form
    void *NetVal_WrapInt64(sint64 i);
DocPos
    pd_base/netval.c:153
Description
    Wraps a long long.

Form
    void *NetVal_WrapChar(int i);
DocPos
    pd_base/netval.c:176
Description
    Wraps a character literal.

Form
    void *NetVal_WrapBool(int i);
DocPos
    pd_base/netval.c:193
Description
    Wraps a boolean.

Form
    void *NetVal_WrapStr(char *);
    void *NetVal_WrapString(char *);
DocPos
    pd_base/netval.c:215
Description
    Wraps a string.

Form
    void *NetVal_WrapSymbol(char *s);
DocPos
    pd_base/netval.c:243
Description
    Wraps a symbol.

Form
    void *NetVal_WrapKeyword(char *s);
DocPos
    pd_base/netval.c:264
Description
    Wraps a keyword.

Form
    void *NetVal_WrapLink(char *s);
DocPos
    pd_base/netval.c:285
Description
    Wraps a link.

Form
    void *NetVal_WrapFloat(double f);
DocPos
    pd_base/netval.c:302
Description
    Wraps a double.

Form
    void *NetVal_WrapNumber(double f);
DocPos
    pd_base/netval.c:327
Description
    Wraps a number, picking either a double or int.

Form
    void *NetVal_MakeNull();
DocPos
    pd_base/netval.c:345
Description
    Wraps a null value.

Form
    void *NetVal_WrapArray(void *a);
DocPos
    pd_base/netval.c:361
Description
    Wraps an array.

Form
    void *NetVal_WrapDArray(void *a);
DocPos
    pd_base/netval.c:383
Description
    Wraps a dynamic array.

Form
    void *NetVal_WrapNDArray(void *a, int n);
DocPos
    pd_base/netval.c:402
Description
    Wraps a dynamic array with a given args count.

Form
    void *NetVal_WrapDVector(void *a);
DocPos
    pd_base/netval.c:426
Description
    Wraps a dynamic vector.

Form
    int NetVal_UnwrapInt(void *a);
DocPos
    pd_base/netval.c:445
Description
    Unwraps an integer.

Form
    sint64 NetVal_UnwrapInt64(void *a);
DocPos
    pd_base/netval.c:475
Description
    Unwraps a long long.

Form
    int NetVal_UnwrapChar(void *a);
DocPos
    pd_base/netval.c:505
Description
    Unwraps a character.

Form
    int NetVal_UnwrapBool(void *a);
DocPos
    pd_base/netval.c:517
Description
    Unwraps a boolean.

Form
    char *NetVal_UnwrapString(void *a);
DocPos
    pd_base/netval.c:539
Description
    Unwraps a string.

Form
    char *NetVal_UnwrapSymbol(void *a);
DocPos
    pd_base/netval.c:551
Description
    Unwraps a symbol.

Form
    char *NetVal_UnwrapKeyword(void *a);
DocPos
    pd_base/netval.c:563
Description
    Unwraps a keyword.

Form
    char *NetVal_UnwrapLink(void *a);
DocPos
    pd_base/netval.c:575
Description
    Unwraps a link.

Form
    double NetVal_UnwrapFloat(void *a);
DocPos
    pd_base/netval.c:587
Description
    Unwraps a double.

Form
    void **NetVal_UnwrapArray(void *a);
DocPos
    pd_base/netval.c:618
Description
    Unwraps an array.

Form
    void **NetVal_UnwrapDArray(void *a);
DocPos
    pd_base/netval.c:630
Description
    Unwraps a dynamic array.

Form
    int NetVal_UnwrapDVector(void *a);
DocPos
    pd_base/netval.c:642
Description
    Unwraps a dynamic vector.

Form
    void *NetVal_UnwrapIntArray(void *a, int ar);
DocPos
    pd_base/netval.c:654
Description
    Unwraps an integer array.
    a is the array and ar is the rank of the array.
    If ar=1, this returns an allocation containing an array of integers (can be safely cast to 'int *').
    If ar>1, this returns ar-1 levels of indirection arrays (null terminated), with the leaf arrays being integer arrays.

Form
    void *NetVal_UnwrapStringArray(void *a, int ar);
DocPos
    pd_base/netval.c:694
Description
    Unwraps a string array.
    a is the array and ar is the rank of the array.
    If ar=1, this returns an allocation containing an array of strings (can be safely cast to 'char **').
    If ar>1, this returns ar-1 levels of indirection arrays (null terminated), with the leaf arrays being string arrays.

Form
    void *NetVal_UnwrapFloatArray(void *a, int ar);
DocPos
    pd_base/netval.c:734
Description
    Unwraps a float array.
    a is the array and ar is the rank of the array.
    If ar=1, this returns an allocation containing an array of floats (can be safely cast to 'float *').
    If ar>1, this returns ar-1 levels of indirection arrays (null terminated), with the leaf arrays being float arrays.

Form
    void *NetVal_UnwrapDoubleArray(void *a, int ar);
DocPos
    pd_base/netval.c:774
Description
    Unwraps a double array.
    a is the array and ar is the rank of the array.
    If ar=1, this returns an allocation containing an array of doubles (can be safely cast to 'double *').
    If ar>1, this returns ar-1 levels of indirection arrays (null terminated), with the leaf arrays being double arrays.

Form
    int NetVal_IsTypeNumber(char *ty);
DocPos
    pd_base/netval.c:814
Description
    Returns a non-zero value if ty is the name of a numeric type.

Form
    int NetVal_IsNumber(void *p);
DocPos
    pd_base/netval.c:829
Description
    Returns a non-zero value if p is of a numeric type.

vfile

VFILE is a subsystem intended for the creation of file like objects.
VFILE is actually one of the oldest pieces of code in pdlib, stretching back as far as sometime in the late 90's.
It is ugly and monolithic, but worth noting was that much of it was written incrementally.
I had kept it as largely a mirror of the stdio file stuff to make conversion between them as effortless as was reasonable.

Form
    int vfread(void *buf, int s1, int s2, VFILE *fd);
DocPos
    pd_base/vfile.c:21
Description
    read from a vfile, s1 and s2 are multiplied to get the number of bytes.

Form
    int vfwrite(void *buf, int s1, int s2, VFILE *fd);
DocPos
    pd_base/vfile.c:58
Description
    write to a vfile, s1 and s2 are multiplied to get the number of bytes.

Form
    int vfseek(VFILE *fd, int pos, int rel);
DocPos
    pd_base/vfile.c:94
Description
    seek within a vfile, like fseek.

Form
    int vftell(VFILE *fd);
DocPos
    pd_base/vfile.c:341
Description
    return current vfile offset.

Form
    int vfgetc(VFILE *fd);
DocPos
    pd_base/vfile.c:357
Description
    read one character, returns -1 on eof or error.

Form
    int vfputc(int c, VFILE *fd);
DocPos
    pd_base/vfile.c:371
Description
    write 1 character to fd.

Form
    int vfclose(VFILE *fd);
DocPos
    pd_base/vfile.c:385
Description
    close fd.

Form
    int vfeof(VFILE *fd);
DocPos
    pd_base/vfile.c:398
Description
    returns whether fd is at the end of file mark.

Form
    int vfflush(VFILE *fd);
DocPos
    pd_base/vfile.c:411
Description
    flush the contents of fd.

Form
    int vfinready(VFILE *fd);
DocPos
    pd_base/vfile.c:424
Description
    tells if input is ready.
    a value >1 means at least that many bytes can be read without blocking.

Form
    int vfioctl(VFILE *fd, int req, char *argp);
DocPos
    pd_base/vfile.c:445
Description
    does an ioctl on fd.

Form
    int vfioctls(VFILE *fd, ...);
DocPos
    pd_base/vfile.c:458
Description
    (deprecated) does a variation of ioctl on fd, var arg.
    the first argument was typically a string telling what to do.

Form
    void *vfmmap(void *addr, int length, int prot, int flags, VFILE *fd, int offs);
DocPos
    pd_base/vfile.c:476
Description
    tries to mmap fd.

Form
    int vfsend(VFILE *sock, VADDR *target, void *msg, int len, int flags);
DocPos
    pd_base/vfile.c:503
Description
    tries to send a message over sock.

Form
    int vfget(void *buf, int sz, VADDR *from, VFILE *sock);
DocPos
    pd_base/vfile.c:516
Description
    tries to get a message from sock.
    sz is the maximal size of the buffer.
    from (if applicable) is filled with the address if the sender.
    returns -1 if no messages are available.

Form
    VFILE *vfnew();
DocPos
    pd_base/vfile.c:635
Description
    creates a new, empty vfile.

Form
    int vfdestroy(VFILE *fd);
DocPos
    pd_base/vfile.c:661
Description
    destroys a vfile, typically called from the close function of the associated vfile.

Form
    char *vfgets(char *s, int n, VFILE *fd);
DocPos
    pd_base/vfile.c:674
Description
    reads a line from fd.
    returns the initial value of s.

Form
    byte *vfbufferin(VFILE *fd);
DocPos
    pd_base/vfile.c:703
Description
    reads in an entire vfile and returns a pointer to it.
    the buffer is allocated with kalloc.

Form
    int vf_clip(VFILE *fd, u8 start, u8 len);
DocPos
    pd_base/vfile.c:927
Description
    creates a "clipping" of fd.
    a clipping behaves like the parent except that it refers only to part of the parent.

Form
    VFILE *vf_wrap_fd(FILE *fd);
DocPos
    pd_base/vf_us.c:99
Description
    wrap fd in a vfile.

Form
    VFILE *vffopen_us(char *name, char *access);
DocPos
    pd_base/vf_us.c:131
Description
    Open a file with vfile, access is roughly the same syntax as fopen.
    Opens relative to the current os directory.

Form
    VFILE *vffopen(char *name, char *access);
DocPos
    pd_base/vf_us.c:158
Description
    open a file with vfile, access is roughly the same syntax as fopen.

vfile.h

VADDR

Form
    PROTO_IPV4
    PROTO_IPV6
    PROTO_TCP
    PROTO_UDP
    PROTO_UNDEFINED
    PROTO_IPV4UDP
    PROTO_IPV4TCP
    PROTO_IPV6UDP
    PROTO_IPV6TCP
DocPos
    include/pdbase/vfile.h:15
Description
    constants defined within VADDR.

Form
    typedef union VADDR_u VADDR;
    
    union VADDR_u {
        int proto;
    
        struct {
        int proto;
        int flags;
        unsigned short port;
        unsigned long addr;
        }ipv4;
    
        struct {
        int proto;
        int flags;
        unsigned short port;
        byte addr[16];
        }ipv6;
    };
DocPos
    include/pdbase/vfile.h:65
Description
    VADDR structure.

VFILE

struct VFILE_T {
int (*read_proc)(void *buf, int len, VFILE *fd);
int (*write_proc)(void *buf, int len, VFILE *fd);
int (*seek_proc)(VFILE *fd, int adr, int rel);
int (*lseek_proc)(VFILE *fd, s8 adr, s8 ret, int rel);
int (*tell_proc)(VFILE *fd);
int (*ltell_proc)(VFILE *fd, s8 ret);
int (*close_proc)(VFILE *fd);
int (*eof_proc)(VFILE *fd);
int (*flush_proc)(VFILE *fd);
int (*inready_proc)(VFILE *fd);
int (*ioctl_proc)(VFILE *fd, int req, char *argp);
int (*ioctls_proc)(VFILE *fd, void **arg);
void *(*mmap_proc)(void *addr, int length, int prot, int flags, VFILE *fd, int offs);
//int (*munmap_proc)(void *start, int length, VFILE *fd);
//int (*msync_proc)(void *start, int length, int flags, VFILE *fd);

int (*sread_proc)(void *buf, s8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
int (*swrite_proc)(void *buf, s8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);

int (*send_proc)(VFILE *sock, VADDR *target, void *msg, int len, int flags);
	// used in the same bent way as read/write
int (*get_proc)(void *buf, int sz, VADDR *from, VFILE *sock);

u8 s_pos;	//for seeking read/write, allow emulation of normal read/write on async devs

void *buffer;	//data used by creator to allow storing other data.
void *userdata;	//user data, can be attached to files possibly to
	//ease open file management

//void *mapdata; // for use by mmap in cases it is external
VFILE *chain, *ch_prev;
	// used by things that recieve this vfile,
	// ch_prev used for putting in lists
VFILE *c_next, *c_prev;
	// used by the creator

VFNOTIFY *notify;
};

Vars

Vars is a system for getting and setting simple string variables.

Form
    int Var_Init();
DocPos
    pd_base/vars.c:12
Description
    Init function for vars system.

Form
    PDLIB_Var *Var_Lookup(char *name);
DocPos
    pd_base/vars.c:30
Description
    Lookup a variable with a specific name.

Form
    PDLIB_Var *Var_Create(char *name);
DocPos
    pd_base/vars.c:45
Description
    Create a new variable with a specific name.

Form
    PDLIB_Var *Var_SetString(char *name, char *value);
DocPos
    pd_base/vars.c:67
Description
    Assign a variable, creating it if not allready defined.

Form
    char *Var_GetString(char *name);
DocPos
    pd_base/vars.c:104
Description
    Get a string containing the value of the variable.

Form
    float Var_GetValue(char *name);
DocPos
    pd_base/vars.c:120
Description
    Get the numeric representation of the value of a variable.

Form
    int Var_ParseConfig(VFILE *fd);
DocPos
    pd_base/vars.c:138
Description
    Parse some configuration from a vfile.
    Lines starting with '#' or ';' are comments.
    Blank lines are ignored.
    Other lines have the form '<var> <value>'.

Form
    int Var_LoadConfig(char *name);
DocPos
    pd_base/vars.c:196
Description
    Load the configuration from a file.

Parse

Form
    int NetParse_Init();
DocPos
    pd_base/parse/parse_tree.c:4
Description
    Init function for NetParse, called implicitly by node/attr creation.

Form
    NetParse_Attr *NetParse_NewAttr();
DocPos
    pd_base/parse/parse_tree.c:24
Description
    Creates a new attribute.

Form
    NetParse_Attr *NetParse_AddAttr(NetParse_Node *node, char *key, char *value);
DocPos
    pd_base/parse/parse_tree.c:47
Description
    Adds an attribute to a node (or sets the attribute if present).

Form
    NetParse_Attr *NetParse_AddAttrList(NetParse_Attr *lst, char *key, char *value);
DocPos
    pd_base/parse/parse_tree.c:88
Description
    Adds an attribute to a list of attributes (or assigns the attribure if allready present).
    Returns the start of the list, or the new attribute if lst is NULL.

Form
    char *NetParse_GetNodeAttr(NetParse_Node *node, char *key);
DocPos
    pd_base/parse/parse_tree.c:127
Description
    Gets an attribute associated with a node.
    Returns NULL if not found.

Form
    int NetParse_GetNodeAttrIsP(NetParse_Node *node, char *key, char *value);
DocPos
    pd_base/parse/parse_tree.c:148
Description
    Check if a given node has a certain attribute as a certain value.

Form
    char *NetParse_GetAttrList(NetParse_Attr *lst, char *key);
DocPos
    pd_base/parse/parse_tree.c:173
Description
    Gets an attribute in a list.
    Returns NULL if not found.

Form
    NetParse_Node *NetParse_NewNode();
DocPos
    pd_base/parse/parse_tree.c:194
Description
    Creates a new node.

Form
    NetParse_Node *NetParse_AddNodeEnd(NetParse_Node *first, NetParse_Node *node);
DocPos
    pd_base/parse/parse_tree.c:219
Description
    Adds a new node at the end of a list of nodes.

Form
    int NetParse_AddChildNode(NetParse_Node *parent, NetParse_Node *node);
DocPos
    pd_base/parse/parse_tree.c:239
Description
    Add a new child node to a parent.

Form
    int NetParse_FreeAttr(NetParse_Attr *attr);
DocPos
    pd_base/parse/parse_tree.c:264
Description
    Frees an attribute.
    Also frees any following attributes.

Form
    int NetParse_FreeNode(NetParse_Node *node);
DocPos
    pd_base/parse/parse_tree.c:283
Description
    Frees a node and any associated attributes.
    Also frees any child nodes.

Form
    NetParse_Attr *NetParse_CopyAttr(NetParse_Attr *attr);
DocPos
    pd_base/parse/parse_tree.c:318
Description
    Copies an attribute along with any following attributes.

Form
    NetParse_Node *NetParse_CopyNode(NetParse_Node *node);
DocPos
    pd_base/parse/parse_tree.c:343
Description
    Makes a copy of a node tree, copies any attributes or children.

Form
    NetParse_Node *NetParse_FindKey(NetParse_Node *first, char *key);
DocPos
    pd_base/parse/parse_tree.c:382
Description
    Finds a node in a list with a given key.
    Returns NULL if not found.

Form
    NetParse_Node *NetParse_NewNodeKey(char *ns, char *key);
DocPos
    pd_base/parse/parse_tree.c:407
Description
    Creates a new node with a given namespace prefix and key.
    ns may be NULL in most cases (the tag does not have a namespace prefix).

Form
    NetParse_Node *NetParse_NewNodeText(char *text);
DocPos
    pd_base/parse/parse_tree.c:425
Description
    Creates a new text node with the contents given.

Form
    char *NetParse_GetNodeNS(NetParse_Node *node);
    char *NetParse_GetNodeKey(NetParse_Node *node);
    char *NetParse_GetNodeText(NetParse_Node *node);
    NetParse_Node *NetParse_GetNodeFirst(NetParse_Node *node);
    NetParse_Node *NetParse_GetNodeNext(NetParse_Node *node);
DocPos
    pd_base/parse/parse_tree.c:442
Description
    Get a property of a node, each will return NULL in the case that the given property is not present.

Form
    int NetParse_SetNodeNS(NetParse_Node *node, char *value);
    int NetParse_SetNodeKey(NetParse_Node *node, char *value);
    int NetParse_SetNodeText(NetParse_Node *node, char *value);
    int NetParse_SetNodeFirst(NetParse_Node *node, NetParse_Node *node2);
    int NetParse_SetNodeNext(NetParse_Node *node, NetParse_Node *node2);
DocPos
    pd_base/parse/parse_tree.c:478
Description
    Set a property of a node, the return value will be 0 if no errors occure.

SX

SX is a simplistic s-expression like syntax.
Unlike XML there is no support for attributes.
The encoding is also much more terse than XML.

Unlike s-expressions, the notation has a typesystem equivalent to that of XML...

Form
    char *NetParse_SX_EatWhite(char *s);
DocPos
    pd_base/parse/parse_sx.c:20
Description
    Skips over whitespace.
Status
    Internal

Form
    int NetParse_SX_SpecialP(char *s);
DocPos
    pd_base/parse/parse_sx.c:77
Description
    Returns a nonzero value if *s is special.
Status
    Internal

Form
    char *NetParse_SX_Token(char *s, char *b, int *t);
DocPos
    pd_base/parse/parse_sx.c:133
Description
    Reads a token from the SX stream.
    This includes:
        Individual symbols;
        Globs of text/tags;
        Strings.
    b is the buffer.
    t is an integer to hold the token type
        TOKEN_NULL, a null terminator was reached;
        TOKEN_SPECIAL, a special character.
        TOKEN_STRING, a quoted string literal (escapes processed).
        TOKEN_SYMBOL, an unquoted bit of text (eg: a tag).
    Returns the next character after the token.
Status
    Internal

Form
    NetParse_Node *NetParse_SX_ParseExpr(char **s);
DocPos
    pd_base/parse/parse_sx.c:215
Description
    Parses an SX expression.
    s is updated to reflect the change.

XML

Form
    char *NetParse_XML_EatWhite(char *s);
DocPos
    pd_base/parse/parse_xml.c:11
Description
    Skips over whitespace.
Status
    Internal

Form
    int NetParse_XML_SpecialP(char *s);
DocPos
    pd_base/parse/parse_xml.c:40
Description
    Returns a nonzero value if *s is special.
Status
    Internal

Form
    int NetParse_XML_ContSpecialP(char *s);
DocPos
    pd_base/parse/parse_xml.c:77
Description
    Returns nonzero if this will get the parsers attention when reading as text.
    This includes '<' and '&'.
Status
    Internal

Form
    char *NetParse_XML_Token(char *s, char *b, int *t);
DocPos
    pd_base/parse/parse_xml.c:103
Description
    Reads a token from the XML stream.
    This includes:
        Individual symbols;
        Globs of text/tags;
        Strings.
    b is the buffer.
    t is an integer to hold the token type
        TOKEN_NULL, a null terminator was reached;
        TOKEN_SPECIAL, a special character.
        TOKEN_STRING, a quoted string literal (escapes processed).
        TOKEN_SYMBOL, an unquoted bit of text (eg: a tag).
    Returns the next character after the token.
Status
    Internal

Form
    char *NetParse_XML_ParseText(char *s, char *b);
DocPos
    pd_base/parse/parse_xml.c:217
Description
    Parse a glob of text from the stream.
    Handles escapes and such.
Status
    Internal

Form
    NetParse_Attr *NetParse_XML_ParseOpts(char **s);
DocPos
    pd_base/parse/parse_xml.c:318
Description
    Parse the list of attributes within a tag.
Status
    Internal

Form
    NetParse_Node *NetParse_XML_ParseTag(char **s);
DocPos
    pd_base/parse/parse_xml.c:451
Description
    Parses an individual tag (used in cases, eg, where there may not be a closing tag or such).
    s is updated to reflect the change.

Form
    NetParse_Node *NetParse_XML_ParseExpr(char **s);
DocPos
    pd_base/parse/parse_xml.c:623
Description
    Parses an XML expression.
    s is updated to reflect the change.

Form
    NetParse_Node *NetParse_XML_LoadFile(char *name);
DocPos
    pd_base/parse/parse_xml.c:988
Description
    loads XML from a file.
    returns NULL on failure.

Print

SX

Form
    char *NetParse_SX_PrintExpr(char *s, NetParse_Node *exp);
DocPos
    pd_base/parse/parse_sx.c:300
Description
    Prints an SX expression to s.
    Returns the space after the printed expression.

XML

Form
    char *NetParse_XML_PrintText(char *s, char *t);
DocPos
    pd_base/parse/parse_xml.c:1019
Description
    Prints a glob of XML text, generates escapes and such.
Status
    Internal

Form
    char *NetParse_XML_PrintExpr(char *s, NetParse_Node *exp);
DocPos
    pd_base/parse/parse_xml.c:1078
Description
    Prints an XML expression to s.
    Returns the space after the printed expression.

Form
    char *NetParse_XML_PrintFormattedExpr(char *s, NetParse_Node *exp, int ind);
DocPos
    pd_base/parse/parse_xml.c:1144
Description
    Prints a formatted XML expression to s.
    Returns the space after the printed expression.
    The idea is for a more editable, yet still parsable, fragment.

Form
    int NetParse_XML_FormatExpr(NetParse_Node *exp, int ind);
DocPos
    pd_base/parse/parse_xml.c:1220
Description
    Prints a formatted XML expression to the screen.
    Will not escape characters in text.
    ind is the indentation.

Form
    int NetParse_XML_FormatExprVF(VFILE *fd, NetParse_Node *exp, int ind);
DocPos
    pd_base/parse/parse_xml.c:1292
Description
    Prints a formatted XML expression to fd.
    ind is the indentation.
    The idea is for formatted output for files.

Form
    NetParse_Node *NetParse_XML_SaveFile(char *name, NetParse_Node *list);
DocPos
    pd_base/parse/parse_xml.c:1381
Description
    saves XML to a file.
    returns -1 on error.

Compress

Bitstream

Form
    int PDBSIO_PeekBits(PDBSIO *ctx, int n);
DocPos
    compress/bitstream.c:3
Description
    Get n bits from the bitstream, but do not remove the bits from the stream.
    Unsafe for operations >24 bits.

Form
    int PDBSIO_ReadBits(PDBSIO *ctx);
DocPos
    compress/bitstream.c:21
Description
    Read a single bit from the bitstream.

Form
    int PDBSIO_ReadBits(PDBSIO *ctx, int n);
DocPos
    compress/bitstream.c:59
Description
    Read n bits from the bitstream.

Form
    int PDBSIO_WriteBit(PDBSIO *ctx, int v);
DocPos
    compress/bitstream.c:97
Description
    Write a single bit to the bitstream.

Form
    int PDBSIO_WriteBits(PDBSIO *ctx, int v, int n);
DocPos
    compress/bitstream.c:136
Description
    Write n bits to the bitstream.

Form
    int PDBSIO_WriteCBits(PDBSIO *ctx, int v, int n);
DocPos
    compress/bitstream.c:175
Description
    Write n constant bits to the bitstream.
    If v is 0, n 0's are written, otherwise n 1's are written.
    There is not a specific limit set on the number of bits that can be written here.

Form
    int PDBSIO_FlushBits(PDBSIO *ctx);
DocPos
    compress/bitstream.c:222
Description
    Flush any bits in the bitstream and reposition it on the next byte boundary.

Form
    PDBSIO *PDBSIO_NewBitstream();
DocPos
    compress/bitstream.c:268
Description
    Create a new bitstream context.

Form
    PDBSIO *PDBSIO_CreateBuffer(byte *buf, int sz, int hl);
DocPos
    compress/bitstream.c:283
Description
    Create a new bitstream which performs bit io on a buffer.
    hl is a flag indicating the bit order. 0 means low-high ordering, 1 means high-low ordering.
    
    In low-high ordering, conceptually the least signifigant bit (0) is on the left hand side of the byte, and the most signifigant bit (7) is on the right. Multi-bit values spanning byte boundaries will have their low bits located in the high end of previous bytes, and their higher bits on the low end of later bytes.
    
    In high-low order, this is the reverse. The MSB(7) is on the left and the LSB(0) is on the right, with multi-bit values having their high bits on the low end of previous bytes and their low bits on the high end of later bytes.

Form
    int PDBSIO_GetBytePos(PDBSIO *ctx);
DocPos
    compress/bitstream.c:322
Description
    Get the byte position in a bitstream.
    This position is located within the byte currently to be read/written.

Form
    int PDBSIO_GetBitPos(PDBSIO *ctx);
DocPos
    compress/bitstream.c:335
Description
    Get the bit position in a bitstream.
    This position is located after the last bits written, or before the first bits to be read.

Huffman

A basic huffman style encoder.
Internally works in terms of a 12 bit codespace.
Supports multiple huffman tables.

Form
    void PDHuff_StatBuffer(int *stat, int *num, byte *buf, int sz);
DocPos
    compress/huffman.c:24
Description
    Gather statistics for a buffer.
    Works with a buffer containing 4096 values.
    num is filled with the index (0..4095).
    stat is filled with the counts of various lone bytes (0..255), along with the count of pairs of a byte (256..512).

Form
    int PDHuff_StatBuffer2(int *stat, int *num, ushort *buf, int sz, int tn);
DocPos
    compress/huffman.c:53
Description
    Gather statistics for a buffer.
    Works with a buffer containing 4096 values.
    num is filled with the index (0..4095).
    tn is used as a kind of "page id".
    stat is filled with the counts of any particular value, so long as ((v>>12)==tn).
    Returns the total number of bytes in the desired page.

Form
    int PDHuff_QuickSortStats(int *a, int *an, int *b, int *bn, int cnt);
DocPos
    compress/huffman.c:85
Description
    Internal part of the quicksort function for the stats.

Form
    void PDHuff_SortStats(int *stat, int *num);
DocPos
    compress/huffman.c:155
Description
    Sort a stats buffer from highest to lowest counts.

Form
    int PDHuff_PeekBits(PDHuff_CTX *ctx, int n);
DocPos
    compress/huffman.c:248
Description
    Get n bits from the bitstream, but do not remove the bits from the stream.
    Unsafe for operations >24 bits.

Form
    int PDHuff_ReadBits(PDHuff_CTX *ctx, int n);
DocPos
    compress/huffman.c:264
Description
    Read n bits from the bitstream.
    Bits are viewed as occuring in low-high ordering, such that bit 0 (the LSB) is placed on the left hand side and bit 7 (the MSB) on the right, followed by bit 0 of the next byte, and so forth. Values are represented such that the least signifigant bits end up comming before more signifigant bits, and higher bits may be placed in subsequent bytes if they cross a byte boundary (that is, values are conceptually backwards).
    Limit to operations <=24 bits.

Form
    int PDHuff_WriteBits(PDHuff_CTX *ctx, int v, int n);
DocPos
    compress/huffman.c:289
Description
    Write n bits to the bitstream.

Form
    int PDHuff_FlushRBits(PDHuff_CTX *ctx);
DocPos
    compress/huffman.c:310
Description
    Flush the read bits, eg, position the input stream on the byte boundary following the last bits read.

Form
    int PDHuff_FlushWBits(PDHuff_CTX *ctx);
DocPos
    compress/huffman.c:338
Description
    Write any pending bits to the bitstream and position on the byte boundary following the last bits written.

Form
    int PDHuff_BuildNodes(int *stat, int *num, PDHuff_CTX *ctx, int sz, int tn);
DocPos
    compress/huffman.c:362
Description
    Build a set of huffman nodes for a given set of pre-sorted statistics.
    ctx is the context used to hold the table.
    sz is the cumulative value for the statistics (the total number of values represented).
    
    tn gives the index number of the huffman tree to build, allowing a context to have multiple huffman trees.
    Each tree consists of a number of "levels", each with a particular bit depth and ((1<<b)-1) leaves (the value 0 in each level refers to the next level).
    The bit depth is chosen by looking at the first value (ceil(log2((sz-nt)/stat[i]))), where nt is the cumulative value of all previous statistics.
    All leaves are then sorted within the given level into ascending value-order.

Form
    int PDHuff_ReadNodes(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:475
Description
    Reads a set of nodes from the bitstream.
    tn gives the index of the table to be read.
    
    The nodes are represented by a zero terminated list of bit-depths (each 4 bits), followed by a group of 4096 huffman and rle coded entries representing the level number for each value (to be packed on the end of each node).
    
    0xFFF indicates a given entry is unused, 0xFFE a run of 16 unused entries, 0xFFD a run of 64 unused entries, and 0xFFC a run of 256 unused entries.
    The counts for these are estimated:
    r=4096-k;    //0xFFF count
    r1=r>>4;    //0xFFE count
    r-=(r1*15);
    r2=r1>>2;    //0xFFD count
    r1-=(r2*3);
    r3=r2>>2;    //0xFFC count
    r2-=(r3*3);
    where k is the cumulative leaf statistic for each level.
    
    Each level value has a statistic ((1<<b)-1), where b is the bit-depth.
    Afterwards the stream is byte-aligned.

Form
    int PDHuff_WriteNodes(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:592
Description
    Write a set of nodes, as described for read nodes.

Form
    int PDHuff_ReadNodesBasic(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:687
Description
    Reads a set of "basic" nodes.
    tn is the index of the table to be read.
    
    The nodes have a simpler representation, but may require more bytes.
    Each level is represented by a 4 bit code giving the bit-depth, followed by a number of 12 bit leaf values for the node ((1<<b)-1).
    A bit depth of 0 is used to terminate the list.

Form
    int PDHuff_WriteNodesBasic(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:735
Description
    Write nodes as described previously.

Form
    int PDHuff_DestroyNodes(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:763
Description
    Destroy a given set of nodes.
    tn gives the index of the table to be destroyed.

Form
    int PDHuff_EncodeValue(PDHuff_CTX *ctx, int v, int tn);
DocPos
    compress/huffman.c:788
Description
    Huffman encodes a given value into the bitstream.
    v gives the value to be encoded, and tn gives the index of the table to use.

Form
    int PDHuff_DecodeValue(PDHuff_CTX *ctx, int tn);
DocPos
    compress/huffman.c:812
Description
    Huffman decodes a value from the bitstream.
    tn gives the index of the table to use for decoding.

Form
    void PDHuff_EncodeLWord(PDHuff_CTX *ctx, int v);
DocPos
    compress/huffman.c:837
Description
    Encode an "LWord" into the bitstream.
    An lword is an integer value consisting of a 6 bit bit-count, followed by that many bits giving the value.

Form
    int PDHuff_DecodeLWord(PDHuff_CTX *ctx);
DocPos
    compress/huffman.c:854
Description
    Decodes an lword from the bitstream.

Form
    int PDHuff_EncodeCore(ushort *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:870
Description
    Encode a glob of 12 bit values into the buffer given by obuf.
    sz indicates the number of values given in ibuf.
    Returns the number of bytes in obuf filled.
    
    Layout:
    An lword giving the value of sz;
    The set of nodes;
    A glob of sz huffman encoded values.
    
    Uses the more complex for of huffman tables.

Form
    int PDHuff_DecodeCore(byte *ibuf, ushort *obuf, int sz);
DocPos
    compress/huffman.c:941
Description
    Decodes a glob of 12 bit values into obuf.
    sz is the size of the encoded input.
    
    Returns the count for the decoded values.

Form
    int PDHuff_StatSizeCore(byte *ibuf);
DocPos
    compress/huffman.c:980
Description
    Returns the number of encoded values for a buffer.

Form
    int PDHuff_RLECompress(byte *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1007
Description
    Perform a simple form of RLE compression.
    sz is the size of the input.
    Returns the number of bytes in obuf filled.
    
    The encoded data is a set of runs given by a prefix byte.
    1..111 give rle runs, followed by a byte giving the value.
    -1..-111 give runs of data, followed by the inverse of that value bytes of data.
    112 gives a longer rle run, followed by a 16 bit length in low-hi order and a byte giving the value.
    0 serves as a terminator value.

Form
    int PDHuff_RLECompress2(byte *ibuf, ushort *obuf, int sz);
DocPos
    compress/huffman.c:1269
Description
    RLE encodes the data into a 12 bit buffer.
    sz is the size of the input.
    Returns the number of values placed in obuf.
    
    (the generation of shorts is justified by saying that it is intended to be run through the huffman coder, standalone this will just inflate the data...).
    
    Several values are used as "marks":
    PDHUFF_RLE_RLEMARK=513: Gives an rle compressed run. This is defined as a byte (0..255) giving the length, followed by a byte giving the value.
    PDHUFF_RLE_EOFMARK=514: Marks the end of the encoded data.
    PDHUFF_RLE_IDXMARK=515: (not generated by this encoder) Gives a reference into the previously generated output. This is defined as: A relative offset in the range 0..4095, and a length in the range 0..255. The offset tells how far back to get to the string to be used.
    
    Values in the range of 256..512 give a pair of bytes (unused as it tends to hurt compression).
    Any other byte values are just represented exactly.

Form
    int PDHuff_RLECompress3(byte *ibuf, ushort *obuf, int sz);
DocPos
    compress/huffman.c:1338
Description
    RLE+LZ77 encodes the data into a 12 bit buffer.
    sz is the size of the input.
    Returns the number of values placed in obuf.
    
    This is like the previous, but implements the LZ77 algo and makes use of the IDXMARK feature.

Form
    int PDHuff_RLECompress4(ushort *ibuf, ushort *obuf, int sz);
DocPos
    compress/huffman.c:1465
Description
    RLE encodes 16 bit data into a 12 bit buffer.
    sz is the size of the input in shorts.
    Returns the number of values placed in obuf.

Form
    int PDHuff_RLEDecompress2(ushort *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1509
Description
    Decode data generated by RLECompress2 or 3.

Form
    int PDHuff_Encode2(byte *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1579
Description
    Encodes the Data using RLECompress2, and huffman encodes the results into obuf.
    sz gives the size of the input.
    Returns the size of the huffman encoded results.

Form
    int PDHuff_Decode2(byte *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1611
Description
    Decode data encoded with Encode2.

Form
    int PDHuff_EncodeLZ(byte *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1632
Description
    Like Encode2, but uses RLECompress3, thus having additional lz77 encoding.
    For some kinds of data lz encoding may hurt compression (this would be data with a low occurance of repeating strings, or a fair degree of skew).

Form
    int PDHuff_DecodeLZ(byte *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1663
Description
    Decode data generated by EncodeLZ.

Form
    int PDHuff_Encode12(ushort *ibuf, byte *obuf, int sz);
DocPos
    compress/huffman.c:1684
Description
    Encodes the Data using RLECompress4, and huffman encodes the results into obuf.
    sz gives the size of the input in shorts.
    Returns the size of the huffman encoded results.

Function Index

int kprint_openlog();
pd_base/kfunc.c:9

int kprint_logstr(char *s);
pd_base/kfunc.c:21

int panic(char *s, ...);
pd_base/kfunc.c:35

int kprint(char *s, ...);
pd_base/kfunc.c:59

int kprintd(char *s, ...);
pd_base/kfunc.c:85

void *kalloc(int sz);
pd_base/kfunc.c:109

int kfree(void *p);
pd_base/kfunc.c:131

int kincref(void *p);
pd_base/kfunc.c:146

int kdecref(void *p);
pd_base/kfunc.c:159

void *kralloc(int size);
pd_base/kfunc.c:173

char *kstrdup(char *s);
pd_base/kfunc.c:195

char *krstrdup(char *s);
pd_base/kfunc.c:211

char *kdstrdup(char *s);
pd_base/kfunc.c:227

char *kdallocstr(int sz);
pd_base/kfunc.c:243

char *kvprints(char *d, char *s, va_list lst);
pd_base/kfunc.c:259

char *kprints(char *d, char *s, ...);
pd_base/kfunc.c:274

char *ksprint(char *s, ...);
pd_base/kfunc.c:295

int kprintvf(VFILE *fd, char *s, ...);
pd_base/kfunc.c:315

void *kmemdup(void *p, int sz);
pd_base/kfunc.c:338

char *ksgets(char *buf, int l, char *s);
pd_base/kfunc.c:358

int kstricmp(char *s1, char *s2);
pd_base/kfunc.c:399

int katoi(char *s);
pd_base/kfunc.c:410

char *kitoa(int i);
pd_base/kfunc.c:438

int kusleep(int us);
pd_base/kfunc.c:447

int ObjType_FormSize(char *form);
pd_base/objtype.c:51

PDLIB_ObjType *ObjType_NewType(char *name, char *form);
pd_base/objtype.c:193

PDLIB_ObjType *ObjType_FindType(char *type);
pd_base/objtype.c:243

PDLIB_ObjType *ObjType_FindTypeCRC(unsigned int crc);
pd_base/objtype.c:263

void *ObjType_New(char *type, int size);
pd_base/objtype.c:284

PDLIB_ObjType *ObjType_GetType(void *p);
pd_base/objtype.c:333

char *ObjType_GetTypeName(void *p);
pd_base/objtype.c:350

int ObjType_GetSize(void *p);
pd_base/objtype.c:416

void *ObjType_GetBase(void *p);
pd_base/objtype.c:436

long ObjType_GetOffset(void *p);
pd_base/objtype.c:453

long ObjType_GetRelSize(void *p);
pd_base/objtype.c:467

int ObjType_TypeP(void *p, char *type);
pd_base/objtype.c:479

int ObjType_IncRef(void *p);
pd_base/objtype.c:514

int ObjType_DecRef(void *p);
pd_base/objtype.c:526

int ObjType_Init();
pd_base/objtype.c:538

int PDLIB_Image_StoreTypes();
pd_base/image.c:20

int PDLIB_Image_GetType(char *ty);
pd_base/image.c:41

int PDLIB_Image_WriteShort(short v);
pd_base/image.c:52

int PDLIB_Image_WriteInt(int v);
pd_base/image.c:60

int PDLIB_Image_WriteLong(long v);
pd_base/image.c:70

int PDLIB_Image_WriteString(char *str);
pd_base/image.c:87

int PDLIB_Image_GetObj(void *p);
pd_base/image.c:100

int PDLIB_Image_GetString(char *s);
pd_base/image.c:112

void *PDLIB_Image_WriteType(char *ty, void *obj, int count);
pd_base/image.c:124

void *PDLIB_Image_WriteObj(PDLIB_ObjType *ty, void *obj, int size);
pd_base/image.c:185

int PDLIB_Image_StoreStrings();
pd_base/image.c:231

int PDLIB_Image_StoreObjs();
pd_base/image.c:246

int PDLIB_Image_NameObj(char *name, void *ptr);
pd_base/image.c:285

void *PDLIB_Image_FetchName(char *name);
pd_base/image.c:311

int PDLIB_Image_StoreNames();
pd_base/image.c:321

int PDLIB_StoreImage(char *name);
pd_base/image.c:344

int PDLIB_SwapShort(int v);
pd_base/load.c:20

int PDLIB_SwapInt(int v);
pd_base/load.c:26

long PDLIB_SwapLong(long v);
pd_base/load.c:41

char *PDLIB_ReadString(FILE *fd);
pd_base/load.c:62

int PDLIB_ReadShort(FILE *fd);
pd_base/load.c:76

int PDLIB_ReadLong(FILE *fd);
pd_base/load.c:86

void *PDLIB_Load_DecodeType(char *ty, void *obj, int count);
pd_base/load.c:98

void *PDLIB_Load_DecodeObj(PDLIB_ObjType *ty, void *obj, int size);
pd_base/load.c:154

int PDLIB_Load_DecodeObjs();
pd_base/load.c:200

int PDLIB_LoadImage(char *name);
pd_base/load.c:224

int PDLIB_FEI_ExportFunc(char *name, void *f);
pd_base/fei.c:44

void *PDLIB_FEI_ImportFunc(char *name);
pd_base/fei.c:80

char *PDLIB_FEI_FuncName(void *f);
pd_base/fei.c:104

int MM22_InitLow();
pd_base/memory2_2.c:40

void *MM22_Alloc(int size);
pd_base/memory2_2.c:199

int MM22_Free(void *p);
pd_base/memory2_2.c:288

void *MM22_GetBase(void *p);
pd_base/memory2_2.c:302

int MM22_Init();
pd_base/memory2_2.c:341

int GC22_Mark(void *p);
pd_base/memory2_2.c:358

int GC22_ScanRange(void **p, int cnt);
pd_base/memory2_2.c:395

int GC22_Sweep();
pd_base/memory2_2.c:442

int GC22_StackBase(void *p);
pd_base/memory2_2.c:456

int GC22_ScanStack();
pd_base/memory2_2.c:463

int GC22_Collect();
pd_base/memory2_2.c:475

int GC22_GetUsedCells();
pd_base/memory2_2.c:527

int GC22_GetFreeCells();
pd_base/memory2_2.c:532

int GC22_Init();
pd_base/memory2_2.c:537

double Sys_Time();
pd_base/misc_unx.c:14

int Sys_TimeMS();
pd_base/misc_unx.c:28

int Sys_Sleep(int us);
pd_base/misc_unx.c:42

int Sys_OpenShell();
pd_base/misc_unx.c:48

int Sys_CloseShell();
pd_base/misc_unx.c:60

int Sys_ReadChar();
pd_base/misc_unx.c:65

int Sys_WriteChar(int ch);
pd_base/misc_unx.c:74

int Sys_WriteStr(char *str);
pd_base/misc_unx.c:82

char *Sys_SingleLineInput(char *prompt);
pd_base/misc_unx.c:88

char *Sys_ReadLine();
pd_base/misc_unx.c:184

int Sys_ProcExited(unsigned long pid);
pd_base/misc_unx.c:225

int Sys_NewPipe(int hnd[2]);
pd_base/misc_unx.c:234

int Sys_ClosePipe(int hnd);
pd_base/misc_unx.c:239

VFILE *SysVF_OpenPipe(int hnd, int w);
pd_base/misc_unx.c:270

int fd_read_proc(void *buf, int len, VFILE *fd);
pd_base/misc_unx.c:284

int fd_write_proc(void *buf, int len, VFILE *fd);
pd_base/misc_unx.c:289

int fd_seek_proc(VFILE *fd, int adr, int rel);
pd_base/misc_unx.c:294

VFILE *vf_wrap_fhnd(int hnd);
pd_base/misc_unx.c:332

int Sys_Printf(char *s);
pd_base/misc_unx.c:352

int Sys_Init();
pd_base/misc_unx.c:357

int NetVal_IsPRange(void *p, void *b, int r);
pd_base/netval.c:35

char *NetVal_GetVType(byte *p);
pd_base/netval.c:44

int NetVal_HashName(char *s);
pd_base/netval.c:60

char *NetVal_HashSymbol(void **tab, char *ty, char *s);
pd_base/netval.c:70

int NetVal_DumpHash();
pd_base/netval.c:110

void *NetVal_WrapInt(int i);
pd_base/netval.c:140

void *NetVal_WrapInt64(sint64 i);
pd_base/netval.c:160

void *NetVal_WrapChar(int i);
pd_base/netval.c:183

void *NetVal_WrapBool(int i);
pd_base/netval.c:200

void *NetVal_WrapStr(char *s);
pd_base/netval.c:223

void *NetVal_WrapString(char *s);
pd_base/netval.c:233

void *NetVal_WrapSymbol(char *s);
pd_base/netval.c:250

void *NetVal_WrapKeyword(char *s);
pd_base/netval.c:271

void *NetVal_WrapLink(char *s);
pd_base/netval.c:292

void *NetVal_WrapFloat(double f);
pd_base/netval.c:309

void *NetVal_WrapNumber(double f);
pd_base/netval.c:334

void *NetVal_MakeNull();
pd_base/netval.c:352

void *NetVal_WrapArray(void *a);
pd_base/netval.c:368

void *NetVal_WrapDArray(void *a);
pd_base/netval.c:390

void *NetVal_WrapNDArray(void *a, int n);
pd_base/netval.c:409

void *NetVal_WrapDVector(void *a);
pd_base/netval.c:433

int NetVal_UnwrapInt(void *a);
pd_base/netval.c:452

sint64 NetVal_UnwrapInt64(void *a);
pd_base/netval.c:482

char NetVal_UnwrapChar(void *a);
pd_base/netval.c:512

int NetVal_UnwrapBool(void *a);
pd_base/netval.c:524

char *NetVal_UnwrapString(void *a);
pd_base/netval.c:546

char *NetVal_UnwrapSymbol(void *a);
pd_base/netval.c:558

char *NetVal_UnwrapKeyword(void *a);
pd_base/netval.c:570

char *NetVal_UnwrapLink(void *a);
pd_base/netval.c:582

double NetVal_UnwrapFloat(void *a);
pd_base/netval.c:594

void **NetVal_UnwrapArray(void *a);
pd_base/netval.c:625

void **NetVal_UnwrapDArray(void *a);
pd_base/netval.c:637

void **NetVal_UnwrapDVector(void *a);
pd_base/netval.c:649

void *NetVal_UnwrapIntArray(void *a, int ar);
pd_base/netval.c:666

void *NetVal_UnwrapStringArray(void *a, int ar);
pd_base/netval.c:708

void *NetVal_UnwrapFloatArray(void *a, int ar);
pd_base/netval.c:750

void *NetVal_UnwrapDoubleArray(void *a, int ar);
pd_base/netval.c:792

int NetVal_IsTypeNumber(char *ty);
pd_base/netval.c:829

int NetVal_IsNumber(void *p);
pd_base/netval.c:844

int NetVal_Init();
pd_base/netval.c:855

int add_u8(u8 c, u8 a, u8 b);
pd_base/long64.c:4

int sub_u8(u8 c, u8 a, u8 b);
pd_base/long64.c:34

int mul_u8(u8 c, u8 a, u8 b);
pd_base/long64.c:64

int cmp_u8(u8 a, u8 b);
pd_base/long64.c:109

int div_u8(u8 c, u8 a, u8 b);
pd_base/long64.c:120

int shr_u8(u8 c, u8 a, int b);
pd_base/long64.c:138

int shl_u8(u8 c, u8 a, int b);
pd_base/long64.c:169

int add_s8(s8 c, s8 a, s8 b);
pd_base/long64.c:201

int sub_s8(s8 c, s8 a, s8 b);
pd_base/long64.c:206

int neg_s8(s8 c, s8 a);
pd_base/long64.c:211

int abs_s8(u8 c, s8 a);
pd_base/long64.c:218

int mul_s8(s8 c, s8 a, s8 b);
pd_base/long64.c:232

int div_s8(s8 c, s8 a, s8 b);
pd_base/long64.c:247

int cmp_s8(s8 a, s8 b);
pd_base/long64.c:262

int shr_s8(s8 c, s8 a, int b);
pd_base/long64.c:273

int shl_s8(s8 c, s8 a, int b);
pd_base/long64.c:308

int copy_u8(u8 c, u8 a);
pd_base/long64.c:313

int copy_s8(s8 c, s8 a);
pd_base/long64.c:320

int vfread(void *buf, int s1, int s2, VFILE *fd);
pd_base/vfile.c:31

int vfwrite(void *buf, int s1, int s2, VFILE *fd);
pd_base/vfile.c:68

int vfseek(VFILE *fd, int pos, int rel);
pd_base/vfile.c:104

int vflseek(VFILE *fd, s8 pos, s8 ret, int rel);
pd_base/vfile.c:149

int vfsread(void *buf, u4 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:199

int vfswrite(void *buf, u4 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:233

int vfreads(void *buf, u4 pos, int len, VFILE *fd);
pd_base/vfile.c:267

int vfwrites(void *buf, u4 pos, int len, VFILE *fd);
pd_base/vfile.c:278

int vflread(void *buf, u8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:289

int vflwrite(void *buf, u8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:317

int vftell(VFILE *fd);
pd_base/vfile.c:351

int vfgetc(VFILE *fd);
pd_base/vfile.c:367

int vfputc(int val, VFILE *fd);
pd_base/vfile.c:381

int vfclose(VFILE *fd);
pd_base/vfile.c:395

int vfeof(VFILE *fd);
pd_base/vfile.c:408

int vfflush(VFILE *fd);
pd_base/vfile.c:421

int vfinready(VFILE *fd);
pd_base/vfile.c:435

int vfioctl(VFILE *fd, int req, char *argp);
pd_base/vfile.c:455

int vfioctls(VFILE *fd, ...);
pd_base/vfile.c:469

void *vfmmap(void *addr, int length, int prot, int flags, VFILE *fd, int offs);
pd_base/vfile.c:486

int vfmunmap(void *start, int length, VFILE *fd);
pd_base/vfile.c:493

int vfmsync(void *start, int length, int flags, VFILE *fd);
pd_base/vfile.c:499

int vfsend(VFILE *sock, VADDR *target, void *msg, int len, int flags);
pd_base/vfile.c:513

int vfget(void *buf, int sz, VADDR *from, VFILE *sock);
pd_base/vfile.c:529

int vfaread(void *buf, int s1, int s2, VFILE *fd);
pd_base/vfile.c:537

int vfawrite(void *buf, int s1, int s2, VFILE *fd);
pd_base/vfile.c:543

int vfaseek(VFILE *fd, int pos, int rel);
pd_base/vfile.c:549

int vfatell(VFILE *fd);
pd_base/vfile.c:555

int vfagetc(VFILE *fd);
pd_base/vfile.c:561

int vfaputc(int v, VFILE *fd);
pd_base/vfile.c:567

int vfaclose(VFILE *fd);
pd_base/vfile.c:573

int vfaeof(VFILE *fd);
pd_base/vfile.c:579

int vfaflush(VFILE *fd);
pd_base/vfile.c:585

int vfainready(VFILE *fd);
pd_base/vfile.c:591

char *vfagets(char *s, int n, VFILE *fd);
pd_base/vfile.c:597

VFNOTIFY *vfaddnotify(VFILE *fd, int (*func)(VFILE *fd), int flags);
pd_base/vfile.c:605

int vfnotify(VFILE *fd, int cond);
pd_base/vfile.c:621

VFILE *vfnew();
pd_base/vfile.c:645

int vfdestroy(VFILE *fd);
pd_base/vfile.c:671

char *vfgets(char *s, int n, VFILE *fd);
pd_base/vfile.c:685

byte *vf_bufferin(VFILE *fd);
pd_base/vfile.c:714

int clip_sread(void *buf, s8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:738

int clip_swrite(void *buf, s8 pos, int len, VFILE *fd, vf_int_cb *cb, void *data);
pd_base/vfile.c:750

int clip_read(void *buf, int l, VFILE *fd);
pd_base/vfile.c:762

int clip_write(void *buf, int l, VFILE *fd);
pd_base/vfile.c:784

int clip_lseek(VFILE *fd, s8 pos, s8 ret, int rel);
pd_base/vfile.c:806

int clip_tell(VFILE *fd);
pd_base/vfile.c:846

int clip_close(VFILE *fd);
pd_base/vfile.c:862

int clip_eof(VFILE *fd);
pd_base/vfile.c:869

int clip_flush(VFILE *fd);
pd_base/vfile.c:880

int clip_inready(VFILE *fd);
pd_base/vfile.c:888

int clip_ioctl(VFILE *fd, int req, void *argp);
pd_base/vfile.c:896

int clip_ioctls(VFILE *fd, void **argp);
pd_base/vfile.c:904

void *clip_mmap(void *addr, int length, int prot, int flags, VFILE *fd, int offs);
pd_base/vfile.c:912

VFILE *vf_clip(VFILE *fd, u8 start, u8 length);
pd_base/vfile.c:938

VFILE *vf_wrap_file(FILE *fd);
pd_base/vfile.c:1010

VFILE *vffopen(char *name, char *access);
pd_base/vfile.c:1026

VFILE *vf_wrap_fd(FILE *fd);
pd_base/vf_us.c:107

VFILE *vffopen_us(char *name, char *access);
pd_base/vf_us.c:139

VFILE *vffopen(char *s, char *a);
pd_base/vf_us.c:165

int Var_Init();
pd_base/vars.c:19

PDLIB_Var *Var_Lookup(char *name);
pd_base/vars.c:37

PDLIB_Var *Var_Create(char *name);
pd_base/vars.c:52

PDLIB_Var *Var_SetString(char *name, char *value);
pd_base/vars.c:74

char *Var_GetString(char *name);
pd_base/vars.c:111

float Var_GetValue(char *name);
pd_base/vars.c:127

int Var_ParseConfig(VFILE *fd);
pd_base/vars.c:148

int Var_LoadConfig(char *name);
pd_base/vars.c:203

void IFF_WriteInt16LE(VFILE *fd, iff_uint16 i);
pd_base/format/fmt_iff.c:3

void IFF_WriteInt16BE(VFILE *fd, iff_uint16 i);
pd_base/format/fmt_iff.c:9

iff_uint16 IFF_ReadInt16LE(VFILE *fd);
pd_base/format/fmt_iff.c:15

iff_uint16 IFF_ReadInt16BE(VFILE *fd);
pd_base/format/fmt_iff.c:23

void IFF_WriteInt16(VFILE *fd, iff_uint16 i, int be);
pd_base/format/fmt_iff.c:31

iff_uint16 IFF_ReadInt16(VFILE *fd, int be);
pd_base/format/fmt_iff.c:37

void IFF_WriteInt32LE(VFILE *fd, iff_uint32 i);
pd_base/format/fmt_iff.c:43

void IFF_WriteInt32BE(VFILE *fd, iff_uint32 i);
pd_base/format/fmt_iff.c:51

void IFF_WriteFourcc(VFILE *fd, iff_fourcc i);
pd_base/format/fmt_iff.c:59

iff_uint32 IFF_ReadInt32LE(VFILE *fd);
pd_base/format/fmt_iff.c:67

iff_uint32 IFF_ReadInt32BE(VFILE *fd);
pd_base/format/fmt_iff.c:77

iff_fourcc IFF_ReadFourcc(VFILE *fd);
pd_base/format/fmt_iff.c:87

void IFF_WriteInt32(VFILE *fd, iff_uint32 i, int be);
pd_base/format/fmt_iff.c:97

iff_uint32 IFF_ReadInt32(VFILE *fd, int be);
pd_base/format/fmt_iff.c:103

void IFF_WriteInt64LE(VFILE *fd, iff_uint64 i);
pd_base/format/fmt_iff.c:110

void IFF_WriteInt64BE(VFILE *fd, iff_uint64 i);
pd_base/format/fmt_iff.c:122

void IFF_WriteEightcc(VFILE *fd, iff_eightcc i);
pd_base/format/fmt_iff.c:134

iff_uint64 IFF_ReadInt64LE(VFILE *fd);
pd_base/format/fmt_iff.c:146

iff_uint64 IFF_ReadInt64BE(VFILE *fd);
pd_base/format/fmt_iff.c:160

iff_eightcc IFF_ReadEightcc(VFILE *fd);
pd_base/format/fmt_iff.c:174

void IFF_WriteInt64(VFILE *fd, iff_uint64 i, int be);
pd_base/format/fmt_iff.c:188

iff_uint64 IFF_ReadInt64(VFILE *fd, int be);
pd_base/format/fmt_iff.c:194

void IFF_WriteIntTsz(VFILE *fd, iff_uint64 i, int tsz);
pd_base/format/fmt_iff.c:200

iff_uint64 IFF_ReadIntTsz(VFILE *fd, int tsz);
pd_base/format/fmt_iff.c:221

int IFF_FloodFillFD(VFILE *fd, iff_uint64 offs, iff_uint64 size);
pd_base/format/fmt_iff.c:245

char *IFF_Fourcc2String(iff_fourcc fcc);
pd_base/format/fmt_iff.c:281

IFF_Context *IFF_OpenFileWrite(char *name, iff_fourcc fcc, iff_fourcc ty);
pd_base/format/fmt_iff.c:301

void IFF_CloseFileWrite(IFF_Context *ctx);
pd_base/format/fmt_iff.c:316

void IFF_BeginChunk(IFF_Context *ctx, iff_fourcc fcc);
pd_base/format/fmt_iff.c:324

void IFF_BeginListChunk(IFF_Context *ctx, iff_fourcc fcc, iff_fourcc ty);
pd_base/format/fmt_iff.c:334

void IFF_EndChunk(IFF_Context *ctx);
pd_base/format/fmt_iff.c:345

IFF_Context *IFF_OpenFileRead(char *name, iff_fourcc *fccp, iff_offset *szp,iff_fourcc *typ);
pd_base/format/fmt_iff.c:361

void IFF_CloseFileRead(IFF_Context *ctx);
pd_base/format/fmt_iff.c:395

void IFF_ReadChunkInfo(IFF_Context *ctx, iff_fourcc *fcc, iff_offset *size,iff_fourcc *ty);
pd_base/format/fmt_iff.c:402

void IFF_EnterChunk(IFF_Context *ctx);
pd_base/format/fmt_iff.c:419

void IFF_ExitChunk(IFF_Context *ctx);
pd_base/format/fmt_iff.c:427

LIFF_Context *LIFF_OpenFileWrite(char *name, iff_eightcc fcc, iff_eightcc ty);
pd_base/format/fmt_liff.c:3

void LIFF_CloseFileWrite(LIFF_Context *ctx);
pd_base/format/fmt_liff.c:19

int LIFF_GetTsz(LIFF_Context *ctx);
pd_base/format/fmt_liff.c:27

void LIFF_BeginChunk(LIFF_Context *ctx, iff_eightcc fcc, int tsz);
pd_base/format/fmt_liff.c:34

void LIFF_BeginListChunk(LIFF_Context *ctx, iff_eightcc fcc, iff_eightcc ty,int tsz);
pd_base/format/fmt_liff.c:50

void LIFF_EndChunk(LIFF_Context *ctx);
pd_base/format/fmt_liff.c:66

LIFF_Context *LIFF_OpenFileRead(char *name, iff_eightcc *fccp, iff_offset *szp,iff_eightcc *typ);
pd_base/format/fmt_liff.c:88

void LIFF_CloseFileRead(IFF_Context *ctx);
pd_base/format/fmt_liff.c:122

void LIFF_ReadChunkInfo(LIFF_Context *ctx, iff_eightcc *fcc, iff_offset *size,iff_eightcc *ty);
pd_base/format/fmt_liff.c:129

void LIFF_EnterChunk(LIFF_Context *ctx, int tsz);
pd_base/format/fmt_liff.c:149

void LIFF_ExitChunk(LIFF_Context *ctx);
pd_base/format/fmt_liff.c:162

int NetParse_Init();
pd_base/parse/parse_tree.c:11

NetParse_Attr *NetParse_NewAttr();
pd_base/parse/parse_tree.c:31

NetParse_Attr *NetParse_AddAttr(NetParse_Node *node, char *key, char *value);
pd_base/parse/parse_tree.c:54

NetParse_Attr *NetParse_AddAttrList(NetParse_Attr *lst, char *key, char *value);
pd_base/parse/parse_tree.c:97

char *NetParse_GetNodeAttr(NetParse_Node *node, char *key);
pd_base/parse/parse_tree.c:136

int NetParse_GetNodeAttrIsP(NetParse_Node *node, char *key, char *value);
pd_base/parse/parse_tree.c:156

char *NetParse_GetAttrList(NetParse_Attr *lst, char *key);
pd_base/parse/parse_tree.c:182

NetParse_Node *NetParse_NewNode();
pd_base/parse/parse_tree.c:202

NetParse_Node *NetParse_AddNodeEnd(NetParse_Node *first, NetParse_Node *node);
pd_base/parse/parse_tree.c:227

int NetParse_AddChildNode(NetParse_Node *parent,NetParse_Node *node);
pd_base/parse/parse_tree.c:248

int NetParse_FreeAttr(NetParse_Attr *attr);
pd_base/parse/parse_tree.c:273

int NetParse_FreeNode(NetParse_Node *node);
pd_base/parse/parse_tree.c:292

NetParse_Attr *NetParse_CopyAttr(NetParse_Attr *attr);
pd_base/parse/parse_tree.c:326

NetParse_Node *NetParse_CopyNode(NetParse_Node *node);
pd_base/parse/parse_tree.c:351

NetParse_Node *NetParse_FindKey(NetParse_Node *first, char *key);
pd_base/parse/parse_tree.c:391

NetParse_Node *NetParse_NewNodeKey(char *ns, char *key);
pd_base/parse/parse_tree.c:417

NetParse_Node *NetParse_NewNodeText(char *text);
pd_base/parse/parse_tree.c:434

char *NetParse_GetNodeNS(NetParse_Node *node);
pd_base/parse/parse_tree.c:456

char *NetParse_GetNodeKey(NetParse_Node *node);
pd_base/parse/parse_tree.c:461

char *NetParse_GetNodeText(NetParse_Node *node);
pd_base/parse/parse_tree.c:466

NetParse_Node *NetParse_GetNodeFirst(NetParse_Node *node);
pd_base/parse/parse_tree.c:471

NetParse_Node *NetParse_GetNodeNext(NetParse_Node *node);
pd_base/parse/parse_tree.c:476

int NetParse_SetNodeNS(NetParse_Node *node, char *value);
pd_base/parse/parse_tree.c:493

int NetParse_SetNodeKey(NetParse_Node *node, char *value);
pd_base/parse/parse_tree.c:499

int NetParse_SetNodeText(NetParse_Node *node, char *value);
pd_base/parse/parse_tree.c:505

int NetParse_SetNodeFirst(NetParse_Node *node, NetParse_Node *node2);
pd_base/parse/parse_tree.c:511

int NetParse_SetNodeNext(NetParse_Node *node, NetParse_Node *node2);
pd_base/parse/parse_tree.c:517

char *NetParse_SX_EatWhite(char *s);
pd_base/parse/parse_sx.c:28

int NetParse_SX_SpecialP(char *s);
pd_base/parse/parse_sx.c:85

char *NetParse_SX_Token(char *s, char *b, int *t);
pd_base/parse/parse_sx.c:152

NetParse_Node *NetParse_SX_ParseExpr(char **s);
pd_base/parse/parse_sx.c:226

char *NetParse_SX_PrintExpr(char *s, NetParse_Node *exp);
pd_base/parse/parse_sx.c:308

char *NetParse_XML_EatWhite(char *s);
pd_base/parse/parse_xml.c:19

int NetParse_XML_SpecialP(char *s);
pd_base/parse/parse_xml.c:48

int NetParse_XML_ContSpecialP(char *s);
pd_base/parse/parse_xml.c:86

char *NetParse_XML_Token(char *s, char *b, int *t);
pd_base/parse/parse_xml.c:122

char *NetParse_XML_ParseText(char *s, char *b);
pd_base/parse/parse_xml.c:226

NetParse_Attr *NetParse_XML_ParseOpts(char **s);
pd_base/parse/parse_xml.c:326

NetParse_Node *NetParse_XML_ParseTag(char **s);
pd_base/parse/parse_xml.c:459

NetParse_Node *NetParse_XML_ParseExpr(char **s);
pd_base/parse/parse_xml.c:634

NetParse_Node *NetParse_XML_LoadFile(char *name);
pd_base/parse/parse_xml.c:996

char *NetParse_XML_PrintText(char *s, char *t);
pd_base/parse/parse_xml.c:1027

char *NetParse_XML_PrintExpr(char *s, NetParse_Node *exp);
pd_base/parse/parse_xml.c:1086

char *NetParse_XML_PrintFormattedExpr(char *s, NetParse_Node *exp, int ind);
pd_base/parse/parse_xml.c:1154

int NetParse_XML_FormatExpr(NetParse_Node *exp, int ind);
pd_base/parse/parse_xml.c:1230

int NetParse_XML_FormatExprVF(VFILE *fd, NetParse_Node *exp, int ind);
pd_base/parse/parse_xml.c:1302

int NetParse_XML_SaveFile(char *name, NetParse_Node *list);
pd_base/parse/parse_xml.c:1390

BIMG_TypeContext *BIMG_TypeCtx_LookupType(char *name);
pd_base/img2/context.c:5

BIMG_TypeContext *BIMG_TypeCtx_GetType(char *name);
pd_base/img2/context.c:18

int BIMG_ReadInt16(VFILE *fd);
pd_base/img2/load.c:3

int BIMG_ReadInt32(VFILE *fd);
pd_base/img2/load.c:13

sint64 BIMG_ReadInt64(VFILE *fd);
pd_base/img2/load.c:25

int BIMG_ReadChunkInfo(VFILE *fd, int ofs, int *id, int *sz);
pd_base/img2/load.c:41

int BIMG_NextChunk(VFILE *fd, int ofs);
pd_base/img2/load.c:51

int BIMG_Load_IndexChunks(BIMG_Context *ctx);
pd_base/img2/load.c:61

int BIMG_Load_FindChunk(BIMG_Context *ctx, int fst, int tag);
pd_base/img2/load.c:87

void *BIMG_Load_PreLoadObject(BIMG_Context *ctx, int index);
pd_base/img2/load.c:96

int BIMG_Load_PreLoadAll(BIMG_Context *ctx);
pd_base/img2/load.c:130

int BIMG_Load_PostLoadAll(BIMG_Context *ctx);
pd_base/img2/load.c:160

void *BIMG_Load_GetObject(BIMG_Context *ctx, int i);
pd_base/img2/load.c:185

void *BIMG_Load_Image(char *name);
pd_base/img2/load.c:190

int BIMG_Save_WriteInt32(VFILE *fd, int v);
pd_base/img2/save.c:3

int BIMG_Save_IndexString(BIMG_Context *ctx, char *str);
pd_base/img2/save.c:10

int BIMG_Save_WriteNewChunk(BIMG_Context *ctx, unsigned int tag, int sz,void *buf);
pd_base/img2/save.c:29

int BIMG_Save_BeginChunk(BIMG_Context *ctx, unsigned int tag, int size);
pd_base/img2/save.c:54

int BIMG_Save_EndChunk(BIMG_Context *ctx, int num);
pd_base/img2/save.c:75

int BIMG_Save_IndexObject(BIMG_Context *ctx, void *obj);
pd_base/img2/save.c:97

int BIMG_Save_Image(char *name, void *root);
pd_base/img2/save.c:126

int bimg_types_save(BIMG_Context *ctx, void *obj);
pd_base/img2/types.c:7

void *bimg_types_preload(BIMG_Context *ctx, char *tyn, int size);
pd_base/img2/types.c:134

int bimg_types_postload(BIMG_Context *ctx, void *obj, char *tyn, int size);
pd_base/img2/types.c:213

int BIMG_Types_Init();
pd_base/img2/types.c:251

int PDBSIO_PeekBits(PDBSIO *ctx, int n);
compress/bitstream.c:11

int PDBSIO_ReadBit(PDBSIO *ctx);
compress/bitstream.c:28

int PDBSIO_ReadBits(PDBSIO *ctx, int n);
compress/bitstream.c:66

int PDBSIO_WriteBit(PDBSIO *ctx, int v);
compress/bitstream.c:104

int PDBSIO_WriteBits(PDBSIO *ctx, int v, int n);
compress/bitstream.c:143

int PDBSIO_FlushBits(PDBSIO *ctx);
compress/bitstream.c:230

PDBSIO *PDBSIO_NewBitstream();
compress/bitstream.c:276

PDBSIO *PDBSIO_CreateBuffer(byte *buf, int sz, int hl);
compress/bitstream.c:303

int PDBSIO_GetBytePos(PDBSIO *ctx);
compress/bitstream.c:338

int PDBSIO_GetBitPos(PDBSIO *ctx);
compress/bitstream.c:352

void PDHuff_StatBuffer(int *stat, int *num, byte *buf, int sz);
compress/huffman.c:35

int PDHuff_StatBuffer2(int *stat, int *num, ushort *buf, int sz, int tn);
compress/huffman.c:67

int PDHuff_QuickSortStats(int *a, int *an, int *b, int *bn, int cnt);
compress/huffman.c:94

void PDHuff_SortStats(int *stat, int *num);
compress/huffman.c:164

int PDHuff_PeekBits(PDHuff_CTX *ctx, int n);
compress/huffman.c:258

int PDHuff_ReadBits(PDHuff_CTX *ctx, int n);
compress/huffman.c:280

int PDHuff_WriteBits(PDHuff_CTX *ctx, int v, int n);
compress/huffman.c:303

int PDHuff_FlushRBits(PDHuff_CTX *ctx);
compress/huffman.c:325

int PDHuff_FlushWBits(PDHuff_CTX *ctx);
compress/huffman.c:354

int PDHuff_BuildNodes(int *stat, int *num,PDHuff_CTX *ctx, int sz, int tn);
compress/huffman.c:394

int PDHuff_ReadNodes(PDHuff_CTX *ctx, int tn);
compress/huffman.c:521

int PDHuff_WriteNodes(PDHuff_CTX *ctx, int tn);
compress/huffman.c:621

int PDHuff_ReadNodesBasic(PDHuff_CTX *ctx, int tn);
compress/huffman.c:722

int PDHuff_WriteNodesBasic(PDHuff_CTX *ctx, int tn);
compress/huffman.c:765

int PDHuff_DestroyNodes(PDHuff_CTX *ctx, int tn);
compress/huffman.c:794

int PDHuff_EncodeValue(PDHuff_CTX *ctx, int v, int tn);
compress/huffman.c:819

int PDHuff_DecodeValue(PDHuff_CTX *ctx, int tn);
compress/huffman.c:843

void PDHuff_EncodeLWord(PDHuff_CTX *ctx, int v);
compress/huffman.c:869

int PDHuff_DecodeLWord(PDHuff_CTX *ctx);
compress/huffman.c:885

int PDHuff_EncodeCore(ushort *ibuf, byte *obuf, int sz);
compress/huffman.c:910

int PDHuff_DecodeCore(byte *ibuf, ushort *obuf, int sz);
compress/huffman.c:975

int PDHuff_StatSizeCore(byte *ibuf);
compress/huffman.c:1011

int PDHuff_RLECompress(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1048

int PDHuff_Encode(byte *ibuf, byte *obuf, int isz);
compress/huffman.c:1102

int PDHuff_Decode(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1209

int PDHuff_RLECompress2(byte *ibuf, ushort *obuf, int sz);
compress/huffman.c:1323

int PDHuff_RLECompress3(byte *ibuf, ushort *obuf, int sz);
compress/huffman.c:1385

int PDHuff_RLECompress4(short *ibuf, ushort *obuf, int sz);
compress/huffman.c:1510

int PDHuff_RLEDecompress2(ushort *ibuf, byte *obuf, int sz);
compress/huffman.c:1552

int PDHuff_Encode2(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1625

int PDHuff_Decode2(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1655

int PDHuff_EncodeLZ(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1678

int PDHuff_DecodeLZ(byte *ibuf, byte *obuf, int sz);
compress/huffman.c:1708

int PDHuff_Encode12(short *ibuf, byte *obuf, int sz);
compress/huffman.c:1732

PDHuff2_Table *PDHuff2_NewInitialTable();
compress/dhuff.c:4

int PDHuff2_DestroyTable(PDHuff2_Table *tbl);
compress/dhuff.c:30

void PDHuff2_RecalcTable(PDHuff2_Table *tbl, int base);
compress/dhuff.c:57

void PDHuff2_AddCharTable(PDHuff2_Table *tbl, int v);
compress/dhuff.c:110

int PDHuff2_EncodeIdx(PDBSIO *bs, PDHuff2_Table *tbl, int v);
compress/dhuff.c:138

int PDHuff2_DecodeIdx(PDBSIO *bs, PDHuff2_Table *tbl);
compress/dhuff.c:159

int PDHuff2_EncodeValue(PDBSIO *bs, PDHuff2_Table *tbl, int v);
compress/dhuff.c:173

int PDHuff2_DecodeValue(PDBSIO *bs, PDHuff2_Table *tbl);
compress/dhuff.c:178

int PDHuff2_Encode12(ushort *ibuf, byte *obuf, int sz);
compress/dhuff.c:183

int PDHuff2_Decode12(byte *ibuf, ushort *obuf, int sz);
compress/dhuff.c:209

int PDHuff2_Encode8(byte *ibuf, byte *obuf, int sz);
compress/dhuff.c:230

int PDHuff2_HashPos(int **hash, byte *ibuf, byte *in);
compress/dhuff.c:282

int PDHuff2_FindString2(int **hash, int *pos, int *len,byte *ibuf, byte *in, byte *ine);
compress/dhuff.c:305

int PDHuff2_FindString(int **hash, int *pos, int *len,byte *ibuf, byte *in, byte *ine);
compress/dhuff.c:372

int PDHuff2_EncodeLZ8(byte *ibuf, byte *obuf, int sz);
compress/dhuff.c:393

int PDHuff2_Decode8(byte *ibuf, byte *obuf, int sz);
compress/dhuff.c:481

int PDHuff2_EncodeRLE12(short *ibuf, byte *obuf, int sz);
compress/dhuff.c:521

BTEC_CTX *BTEC_CreateContext(int bd, PDBSIO *bs);
compress/btec0.c:7

int BTEC_UpdateModel(BTEC_CTX *ctx, int tsp, int tn, int fn);
compress/btec0.c:62

int BTEC_EncodeValue(BTEC_CTX *ctx, int v);
compress/btec0.c:167

int BTEC_DecodeValue(BTEC_CTX *ctx);
compress/btec0.c:249

int BTEC_EncodeShort(ushort *ibuf, byte *obuf, int bd, int sz);
compress/btec0.c:336

int BTEC_DecodeShort(byte *ibuf, ushort *obuf, int bd, int sz);
compress/btec0.c:359

int BTEC_Encode8(byte *ibuf, byte *obuf, int sz);
compress/btec0.c:383

int BTEC_Decode8(byte *ibuf, byte *obuf, int bd, int sz);
compress/btec0.c:404

int PDComp_Arith4_Encode(byte *ibuf, byte *obuf, int sz);
compress/arith4.c:381

int PDComp_Arith4_Decode(byte *ibuf, byte *obuf, int sz);
compress/arith4.c:463

int PDBS0_FilterEncode(byte *ibuf, byte *obuf, int sz, int ord);
compress/bs0.c:99

int PDComp_BS1_Filter(byte *ibuf, byte *obuf, int sz);
compress/bs1.c:3

pdscript

COPYING

PDLIB: A collection of utility functions and other stuff.
Copyright (C) 2005 Brendan G Bohannon (aka: cr88192)

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA

Email: cr88192@hotmail.com

PDScript Lang

Statements

Statements:

break [<number>]
	break. number will optionally give a number of break levels to skip over.
continue [<number>]
	continue. number will optionally give a number of break levels to skip over.

goto <name>
	goto a label given by name.

throw <name>
	throw an exception given by name.

return;
return <EXPR>
	return from a function with a given value. the form absent a value by defualt returns NULL.

bind <EXPR>=<EXPR>
set <EXPR>=<EXPR>
	bind or set values in the first expression to those in the second form.
	this is deprecated in favor of <EXPR>=<EXPR>.

<name>++
<name>--


Block Statements:

<name>:	label.

object <name> [clones <EXPR>] [extends <ARGS>] [toplevel <expr>] <BLOCK>
	creates a new object (an alternative to dictionary notation).

begin_object <EXPR> <BLOCK>
	execute block within the context of the object given by expr.


function <name>(<VARS>) <BLOCK>
	defines a new function in the object scope.

lfunction <name>(<VARS>) <BLOCK>
	defines a new function in the lexical scope.


macro_statement <name>(<VARS>) <BLOCK>
	defines a new statement macro.

macro_expression <name>(<VARS>) <BLOCK>
	defines a new expression macro.


if(<EXPR>)<BLOCK> [else <BLOCK>]

begin <BLOCK>
	naturally execute block once, however break and continue may be used to exit or loop within block.

while(<EXPR>)<BLOCK>
	a while loop.

for(<STMT>; <EXPR>; <STMT>)<BLOCK>
	a for loop.

let <name>(VARS) <BLOCK>
	let, non-working

switch(<EXPR>) {<branches>}
	switch statement.

try <BLOCK> [catch <name> <BLOCK>]*
	executes a block and catch an exception of a given name, in which case the handler block will be executed.


var <VARS>
	define vars in the object scope.

dynvar <VARS>
	define vars in the dynamic scope.

local <VARS>
	define vars in the lexical scope.


Expressions

Lit:		Literal values/builtin expressions
PE:		(<expr>) <expr>[<expr>] <expr>.<name>
IncDec:	++<name> --<name> + - ! ~ ... <name>++ <name>-- <expr>(<args>)[<BLOCK>]      
E:		<expr>**<expr>
MD:		* / % \ &
AS:		+ - | ^
SHLR:		<< >>
RCmp:		< > <= >= == != <=> <<== >>==
Lop:		&&
Lop2:		|| ^^
TCond:	<expr>?<expr>:<expr>
Attr:		:= :!= :< :> :<= :>= :<< :>> :<<= :>>=
Equals:	= += -= *= /= \= %= &= |= ^= >>= <<=

Literals:


$<name>

#<name>	symbol
#:<name>	keyword
#{<ARGS>}	matrix
#[<ARGS>]	vector
#(<ARGS>)	complex

{<ARGS>}	array
[<ARGS>]	dictionary
[:<ARGS>:]	list
-<NUMBER>	negative number

lambda [<name>](<VARS>) <BLOCK>
fun [<name>](<VARS>) <BLOCK>
	define a first-class function. name may be used to allow recursive forms, and will be visible only within the lexical scope of the block.

let <name>(VARS) <BLOCK>
	[dropped]
	let, non-working

withcc(<name>) <BLOCK>
	new continuation. BLOCK is executed with the continuation bound to name.

object <name> [clones <EXPR>] [extends <ARGS>] <BLOCK>
	creates a new object (an alternative to dictionary notation).
begin_object <EXPR> <BLOCK>
	execute block within the context of the object given by expr.

quote_xml <XML>
	treats a chunk of xml as if it were a parse tree.
xml <XML>
	creates a glob of xml to be used as a value.

statement <BLOCK>
	represents a statement in expresion position (intended primarily for macros).

quote(<EXPR>)
quote <BLOCK>
	quote a statement or expression, generating a value that can be used in working with syntax.

clone <EXPR>
	clone an object.
new <EXPR>(<ARGS>)
	create a new object and call the constructor with args.

<name>	var reference.
<number>	numeric literal.
<string>	string literal.
<charstr>	character literal.


Builtins

true: boolean true value
false: boolean false value
null: null value

system.io.print(...)
	print items

system.io.println(...)
	print items with trailing linebreak

system.interp.eval_block(block, self)
	evaluates a block of statements

system.interp.eval_expr(expr)
	evaluates an expression and returns result

system.interp.load(name[, toplevel])
	load and run a script

system.math.vector(<number+>)
	creates a numeric vector

system.math.normalize(vector)
	normalize a vector

system.basic.tostring(obj, ...)
	convert an object to a string

system.basic.copy(obj)
	copy an object

system.basic.builtin_join(obj)
	try to fetch a value from an object, otherwise returns NULL.

system.basic.gettypename(obj)
	fetch type name for obj

system.basic.apply(fun, args[, self])
	apply a function to an array containing args. self is optionally the toplevel to use during the apply.

system.basic.buildxml(...)
	build a chunk of xml


system.system.usedheap()
	gets number of used cells on heap

system.system.freeheap()
	gets number of free cells on heap

system.system.deltaheap()
	heap size delta since last call


system.math.PI: Constant PI
system.math.E: Constant Epsilon
system.math.CI: Constant Complex I, #(0, 1)
system.math.CJ: Constant Complex J, #(0, 0, 1)
system.math.CK: Constant Complex K, #(0, 0, 0, 1)

system.math.sqrt(x): square root

system.math.floor(x): round down
system.math.ceil(x): round up
system.math.round(x): round nearest
system.math.truncate(x): fractional part

system.math.pow(x, y): raise x to y
system.math.degrees(x): radians to degrees
system.math.radians(x): degrees to radians

system.math.cos(x): cosine
system.math.sin(x): sine
system.math.tan(x): tangent

system.math.cos_d(x): cosine degrees
system.math.sin_d(x): sine degrees
system.math.tan_d(x): tangent degrees

system.math.acos(x): arc cosine
system.math.asin(x): arc sine
system.math.atan(f[, g]): arc tangent

system.math.ln(x): natural log
system.math.log(x[, b]):logarithm
system.math.log10(x): log 10

Operators

a===b		a IS b

a<b		Less
a>b		Greater

a<=b		LessEqual
a>=b		GreaterEqual
a==b		Equal
a!=b		NotEqual
a<=>b		Match

a&&b		Logical And
a||b		Logical Or
a^^b		Logical Xor

!a		Logical Not

a+b		Add Array Array => Array of combined contents
a+b		Add Array Integer => Array with b added to the base
a-b		Sub Array Integer => Array with b subtracted from the base

a+b		Add Functions, creates a linked function which will evaluate the first (leftmost) matching function first.

Number
a+b	Add
a-b	Subtract
a*b	Multiply
a/b	Divide
a\b	Integer Division
a%b	Modulus
a**b	Exponent

a<<b	Shift Left
a>>b	Shift Right

a&b	Bitwise And
a|b	Bitwise Or
a^b	Bitwise Xor

~a	Bitwise Not
-a	Negatation

Vector
a+b	Add Vector
a-b	Subtract Vector
a*b	Scale Vector
a/b	Divide Vector by scalar
a%b	Cross Product
a^b	Cross Product

-a	Negate Vector
|a	Vector Length
\a	Normalize Vector

Complex
+ Add Complex
- Subtract Complex
* Multiply Complex
/ Divide Complex

Matrix
a+b	Add Matrix
a-b	Subtract Matrix
a*b	Multiply Matrix
a/b	Multiply Matrix by iverse of B (a*(/b))

/a	Invert Matrix


String
a+b		Add String String	=> New string with combined contents
a+b		Add String Integer => String with b added to the base
a-b		Sub String Integer => String with b subtracted from the base

a&b		Concatenate Strings/Concatenate a string with the textual representation of an object.

a<<b		Relative String Less Than
a>>b		Realtive String Greater Than
a<<==b	Relative String Less Than or Equal
a>>==b	Relative String Greater Than or Equal
	These compare strings by relative base, and are undefined for the case when a and b are different strings.

|a		String Length


BGGL2

Interp

Main interpreter for BGGL2.

Form
    void *BGGL2_Lookup(char *name);
DocPos
    pd_script/bggl2/interp.c:14
Description
    Lookup a given name in the user and system dictionaries.

Form
    int BGGL2_Bind(char *name, void *val);
DocPos
    pd_script/bggl2/interp.c:55
Description
    Bind a name in the dictionary.

Form
    int BGGL2_BindUser(char *name, void *val);
DocPos
    pd_script/bggl2/interp.c:76
Description
    Bind a name in the user dictionary.

Form
    int BGGL2_BindCurrent(BGGL2_Context *ctx, char *name, void *val);
DocPos
    pd_script/bggl2/interp.c:97
Description
    Bind a name in the current dictionary.

Form
    int BGGL2_SetCurrent(BGGL2_Context *ctx, char *name, void *val);
DocPos
    pd_script/bggl2/interp.c:118
Description
    Assigns a variable, first searching the current dict and any parents.

Form
    int BGGL2_AddBuiltin(char *name, void (*func)(BGGL2_Context *ctx));
DocPos
    pd_script/bggl2/interp.c:159
Description
    Add a new builtin function.

Form
    int BGGL2_Execute(void *val);
DocPos
    pd_script/bggl2/interp.c:182
Description
    Execute one object.
    Tokens are invalid here.
    Blocks will have their contents evaluated.
    Builtins will be called.
    Most other objects will be pushed.

Form
    int BGGL2_Eval(void *val);
DocPos
    pd_script/bggl2/interp.c:235
Description
    Evaluate one object.
    Tokens will be looked up from the dictionary and executed.
    Any other objects will be pushed.

Form
    int BGGL2_EvalString(char *str);
DocPos
    pd_script/bggl2/interp.c:300
Description
    Evaluate a string.

Form
    int BGGL2_Load(char *script);
DocPos
    pd_script/bggl2/interp.c:323
Description
    Load and evaluate a script.

Form
    int BGGL2_Reset();
DocPos
    pd_script/bggl2/interp.c:365
Description
    Reset the interpreter back to initial state (user dict and stacks cleared, system dict untouched).

Form
    BGGL2_Context *BGGL2_DefaultContext();
DocPos
    pd_script/bggl2/interp.c:383
Description
    Gets the default context.

Form
    int BGGL2_Init();
DocPos
    pd_script/bggl2/interp.c:395
Description
    Init function for BGGL2.

Parse

Parser for BGGL2.

Form
    char *BGGL2_EatWhite(char *s);
DocPos
    pd_script/bggl2/parse.c:11
Description
    Skip over any whitespace or comments.

Form
    int BGGL2_CharSpecial(int c);
DocPos
    pd_script/bggl2/parse.c:57
Description
    Returns 1 if the character is "special" (eg: not allowed as part of a longer token).
    Includes: ()[]{}/

Form
    char *BGGL2_Token(char *s, char *t);
DocPos
    pd_script/bggl2/parse.c:115
Description
    Parses out a single token.
    A token is either a single character (in the case of "special" characters), or a longer glob of multiple characters.

Form
    char *BGGL2_ParseString(char *s, char *t);
DocPos
    pd_script/bggl2/parse.c:143
Description
    Parses a string (deliminated by ')') from the stream.
    s is the input string, t is the string buffer.

Form
    char *BGGL2_ParseXString(char *s, char **b);
DocPos
    pd_script/bggl2/parse.c:203
Description
    Parses an 'extension' string from the stream. There is no implicit limit on the string length.
    s is the input string, b is the string buffer (filled in with an allocated buffer).
    <| and |> may be included directly if they follow proper nesting.
    &<| and &|> allow escaped forms of the marks.
    &; allows including '&' where it would normally mess up the pattern:
        '&;|>' allows a string to end in an ampersand;
        '&;&<|' allows escaping '&<|';
        ...

Form
    char *BGGL2_ParseHexString(char *s, byte **buf, int *len);
DocPos
    pd_script/bggl2/parse.c:322
Description
    Parses a hex string (deliminated by '>') from the stream.
    s is the input string, b is a filled with the buffer.
    len is filled with the length of the data.

Form
    void *BGGL2_ParseBlock(char **buf);
DocPos
    pd_script/bggl2/parse.c:386
Description
    Parses a block of objects (deliminated by '}') from the string pointer given in 'buf'.

Form
    void *BGGL2_Parse(char **buf);
DocPos
    pd_script/bggl2/parse.c:429
Description
    Parses an object from the string given in 'buf'.

Util

Form
    int BGGL2_Push(BGGL2_Context *ctx, void *val);
DocPos
    pd_script/bggl2/util.c:7
Description
    Pushes a single value on the stack.

Form
    void *BGGL2_Pop(BGGL2_Context *ctx);
DocPos
    pd_script/bggl2/util.c:25
Description
    Pops a single value off the stack and returns it.

Form
    void **BGGL2_PopMulti(BGGL2_Context *ctx, int num);
DocPos
    pd_script/bggl2/util.c:46
Description
    Pops multiple values off the stack and returns them.
    These values will be overwritten by subsequent calls to Push.

Form
    void **BGGL2_PopMark(BGGL2_Context *ctx, int *num);
DocPos
    pd_script/bggl2/util.c:68
Description
    PopMark is similar to PopMulti, except that it pops all values since the last mark, and num (in not NULL) is filled with the number of args.
    These values will be overwritten by subsequent calls to Push.

Form
    int BGGL2_PushDouble(double f);
DocPos
    pd_script/bggl2/util.c:95
Description
    Pushes a single numeric value on the stack.

Form
    void *BGGL2_PopDouble(BGGL2_Context *ctx);
DocPos
    pd_script/bggl2/util.c:116
Description
    Pops a single numeric value off the stack and returns it.

Form
    double *BGGL2_PopMultiDouble(BGGL2_Context *ctx, int num);
DocPos
    pd_script/bggl2/util.c:141
Description
    Pops multiple double values off the stack and returns them.
    These values will be stored in a temporary buffer.

Form
    double *BGGL2_PopMarkDouble(BGGL2_Context *ctx, int *num);
DocPos
    pd_script/bggl2/util.c:172
Description
    PopMarkDouble is similar to PopMultiDouble, except that it pops all values since the last mark, and num (in not NULL) is filled with the number of args.
    These values will be stored in a temporary buffer.

PDScript

Interp

Form
    PDSCR0_Object *PDSCR_Interp_GetSelf(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:7
Description
    Gets the self associated with the context.

Form
    void *PDSCR0_Interp_Lookup(PDSCR0_Context *ctx, char *name);
DocPos
    pd_script/pdscr0/interp/interp.c:19
Description
    Looks up a given name within the current scope of the context.

Form
    int PDSCR0_Interp_Assign(PDSCR0_Context *ctx, char *name, void *p);
DocPos
    pd_script/pdscr0/interp/interp.c:74
Description
    Assigns a name within the current scope within the context.

Form
    int PDSCR0_Interp_ClearEnv(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:130
Description
    Destroys lexical bindings to ienv mark.

Form
    int PDSCR0_Interp_BindCurrent(PDSCR0_Context *ctx, char *name, void *val);
DocPos
    pd_script/pdscr0/interp/interp.c:154
Description
    Binds a name within the current lexical scope within the context.

Form
    int PDSCR0_Interp_DynBindCurrent(PDSCR0_Context *ctx, char *name,
    void *val);
DocPos
    pd_script/pdscr0/interp/interp.c:180
Description
    Binds a name within the current dynamic scope within the context.

Form
    int PDSCR0_Interp_BindArgs(PDSCR0_Context *ctx, PDSCR0_FunArg *args);
DocPos
    pd_script/pdscr0/interp/interp.c:202
Description
    Binds function arguments within the current lexical scope within the context.

Form
    int PDSCR0_Interp_BindPattern(PDSCR0_Context *ctx, void *pat, void *val);
DocPos
    pd_script/pdscr0/interp/interp.c:245
Description
    Binds a pattern within the lexical env.

Form
    int PDSCR0_Interp_Call(PDSCR0_Context *ctx, void *self, void *func);
DocPos
    pd_script/pdscr0/interp/interp.c:293
Description
    Calls a function within the context.
    Self gives the self for the function call.
    Args are given on the stack: mark <arg[0]> ... <arg[n]>

Form
    int PDSCR0_Interp_TailCall(PDSCR0_Context *ctx, void *self, void *func);
DocPos
    pd_script/pdscr0/interp/interp.c:503
Description
    Tail-calls a function within the context.
    Self gives the self for the function call.
    Args are given on the stack: mark <arg[0]> ... <arg[n]>

Form
    void *PDSCR0_Interp_LoadIndex(PDSCR0_Context *ctx, void *obj, void *index);
DocPos
    pd_script/pdscr0/interp/interp.c:579
Description
    Loads the value from a given slot in an object.

Form
    int PDSCR0_Interp_StoreIndex(PDSCR0_Context *ctx, void *obj, void *index, void *value);
DocPos
    pd_script/pdscr0/interp/interp.c:643
Description
    Stores a value to a given slot in an object.

Form
    int PDSCR0_Interp_MethodCall(PDSCR0_Context *ctx, void *obj, void *index);
DocPos
    pd_script/pdscr0/interp/interp.c:723
Description
    Calls a method within the object and context.
    Index gives the method name.
    Args are given on the stack: mark <arg[0]> ... <arg[n]>

Form
    int PDSCR0_Interp_MethodTailCall(PDSCR0_Context *ctx, void *obj, void *index);
DocPos
    pd_script/pdscr0/interp/interp.c:769
Description
    Tail-calls a method within the object and context.
    Index gives the method name.
    Args are given on the stack: mark <arg[0]> ... <arg[n]>

Form
    void *PDSCR0_Interp_FLink(PDSCR0_Context *ctx, void *p, void *q);
DocPos
    pd_script/pdscr0/interp/interp.c:821
Description
    Links the functions p and q into a single function.

Form
    void *PDSCR0_Interp_MakeCLambda(PDSCR0_Context *ctx, void *p);
DocPos
    pd_script/pdscr0/interp/interp.c:847
Description
    Creates a compiled lambda.

Form
    int PDSCR_Interp_Throw(PDSCR0_Context *ctx, char *name);
    int PDSCR0_Interp_DoThrow(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:864
Description
    Related to throwing exceptions.
    Throw invokes throwing an exception.
    DoThrow is called from the interpreter to deal with an exception.

Form
    int PDSCR0_Interp_Catch(PDSCR0_Context *ctx, char *name, int ip);
DocPos
    pd_script/pdscr0/interp/interp.c:915
Description
    Adds an exception handler.

Form
    int PDSCR0_Interp_BeginTry(PDSCR0_Context *ctx);
    int PDSCR0_Interp_EndTry(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:931
Description
    Begin and end a block related to exception handling.
    Handlers are defined after calling BeginTry.

Form
    int PDSCR0_Interp_List(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:986
Description
    Generates a list from the values on the stack.
    mark <value[n]*> <tail>

Form
    int PDSCR0_Interp_Array(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:1018
Description
    Generates an array from the values on the stack.
    mark <value[n]*>

Form
    int PDSCR0_Interp_Dict(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:1040
Description
    Generates a dict from the attributes on the stack.
    mark <attr[n]*>

Form
    int PDSCR0_Interp_Vector(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:1070
Description
    Generates a numeric vector from the values on the stack.
    mark <value[n]*>

Form
    int PDSCR0_Interp_Complex(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:1094
Description
    Generates a complex number from the values on the stack.
    mark <value[n]*>

Form
    int PDSCR0_Interp_Matrix(PDSCR0_Context *ctx);
DocPos
    pd_script/pdscr0/interp/interp.c:1118
Description
    Generates a matrix from the values on the stack.
    mark <value[n]*>

Form
    int PDSCR0_Interp_PushCC(PDSCR0_Context *ctx, int exit_ip);
DocPos
    pd_script/pdscr0/interp/interp.c:1162
Description
    Pushes the current continuation onto the stack.
    exit_ip is the ip to jump to when exiting the continuation.

Form
    int PDSCR0_Interp_Run(PDSCR0_Context *ctx, int limit);
DocPos
    pd_script/pdscr0/interp/interp.c:1190
Description
    Main bytecode interpreter for PDScript.
    Executes the bytecode for the current state of ctx.
    If limit is >0, then it refers to the max number of instructions before the interpreter loop breaks.
    If limit is -1, then there is no limit but blocking is possible.
    Returns:
        1=interpreter terminated;
        2=limit expired;
        3=blocked;
        4=unhandled exception.

Form
    PDSCR0_Context *PDSCR_Interp_NewContext();
DocPos
    pd_script/pdscr0/interp/interp.c:1696
Description
    Creates a new interpreter context.

Form
    int PDSCR_Interp_FreeContext(PDSCR0_Context *tmp);
DocPos
    pd_script/pdscr0/interp/interp.c:1751
Description
    Destroys an interpreter context.

Form
    void *PDSCR_Interp_CallFunction(void *obj, void *func, void **args);
DocPos
    pd_script/pdscr0/interp/interp.c:1775
Description
    Calls a function with a self and args, and returns the result.

Form
    void *PDSCR_Interp_CallMethod(void *obj, char *slot, void **args);
DocPos
    pd_script/pdscr0/interp/interp.c:1804
Description
    Calls an object method with args, and returns the result.

Form
    int PDSCR_Interp_ExecuteBlock(PDSCR0_Block *blk);
DocPos
    pd_script/pdscr0/interp/interp.c:1833
Description
    Execute the instructions found in the block within a new context.
    By default the toplevel is used as self.

Form
    int PDSCR_Interp_ExecuteBlockSelf(PDSCR0_Block *blk, PDSCR0_Object *self);
DocPos
    pd_script/pdscr0/interp/interp.c:1861
Description
    Execute a block with a given self.

Form
    void *PDSCR_Interp_ExecuteBlockExpr(PDSCR0_Block *blk);
DocPos
    pd_script/pdscr0/interp/interp.c:1888
Description
    Execute a block representing an expression and return the result.

Form
    int PDSCR_Interp_String(char *str);
DocPos
    pd_script/pdscr0/interp/interp.c:1917
Description
    Parse and interpret a string representing one or more statements.

Form
    void *PDSCR_Interp_StringExpr(char *str);
DocPos
    pd_script/pdscr0/interp/interp.c:1974
Description
    Parse and interpret a string representing an expression.

Form
    int PDSCR_Interp_Load(char *file, void *self);
DocPos
    pd_script/pdscr0/interp/interp.c:2014
Description
    Load and interpret a file.
    If not-null self comprises the toplevel to be used during loading.

Form
    int PDSCR_Interp_Init();
DocPos
    pd_script/pdscr0/interp/interp.c:2078
Description
    Main init function for the interpreter.

Compile

Form
    PDSCR0_Block *PDSCR_Compile_FoldBlock(ushort *ops, ushort *ip, PDSCR0_CompileContext *ctx);
DocPos
    pd_script/pdscr0/compile/compile.c:153
Description
    

Form
    PDSCR0_Block *PDSCR_Compile_Block(NetParse_Node *first);
DocPos
    pd_script/pdscr0/compile/compile.c:191
Description
    

Form
    PDSCR0_Block *PDSCR_Compile_Function(NetParse_Node *first, NetParse_Node *args, char *fname);
DocPos
    pd_script/pdscr0/compile/compile.c:247
Description
    

Form
    int PDSCR_Compile_Init();
DocPos
    pd_script/pdscr0/compile/compile.c:410
Description
    

Form
    int PDSCR_Compile_PushLMark();
DocPos
    pd_script/pdscr0/compile/compile_goto.c:21
Description
    Push a mark on the label and goto stacks.

Form
    int PDSCR_Compile_PopLMark();
DocPos
    pd_script/pdscr0/compile/compile_goto.c:40
Description
    Pop to the mark on the label and goto stacks.

Form
    int PDSCR_Compile_PushLabel(char *name, ushort *ip);
DocPos
    pd_script/pdscr0/compile/compile_goto.c:58
Description
    Push a new label on the label stack.

Form
    int PDSCR_Compile_PushGoto(char *name, ushort *ip);
DocPos
    pd_script/pdscr0/compile/compile_goto.c:73
Description
    Push a new goto on the goto stack.

Form
    int PDSCR_Compile_ResolveGotos();
DocPos
    pd_script/pdscr0/compile/compile_goto.c:88
Description
    Resolve any gotos since the last mark to any labels since the mark.

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:126
Description
    

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:142
Description
    

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:158
Description
    

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:172
Description
    

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:186
Description
    

Form
    
DocPos
    pd_script/pdscr0/compile/compile_goto.c:197
Description
    

Form
    int PDSCR_Compile_IndexUnary(char *op);
DocPos
    pd_script/pdscr0/compile/compile_index.c:15
Description
    

Form
    int PDSCR_Compile_IndexBinary(char *op);
DocPos
    pd_script/pdscr0/compile/compile_index.c:35
Description
    

Form
    char *PDSCR_Compile_NameUnary(int op);
DocPos
    pd_script/pdscr0/compile/compile_index.c:55
Description
    

Form
    char *PDSCR_Compile_NameBinary(int op);
DocPos
    pd_script/pdscr0/compile/compile_index.c:66
Description
    

Form
    int PDSCR_Compile_IndexName(PDSCR0_CompileContext *ctx, char *name);
DocPos
    pd_script/pdscr0/compile/compile_index.c:77
Description
    

Form
    int PDSCR_Compile_IndexKeyword(PDSCR0_CompileContext *ctx, char *name);
DocPos
    pd_script/pdscr0/compile/compile_index.c:99
Description
    

Form
    int PDSCR_Compile_IndexString(PDSCR0_CompileContext *ctx, char *str);
DocPos
    pd_script/pdscr0/compile/compile_index.c:121
Description
    

Form
    int PDSCR_Compile_IndexNumber(PDSCR0_CompileContext *ctx, double f);
DocPos
    pd_script/pdscr0/compile/compile_index.c:143
Description
    

Form
    int PDSCR_Compile_IndexValue(PDSCR0_CompileContext *ctx, void *p);
DocPos
    pd_script/pdscr0/compile/compile_index.c:165
Description
    

Form
    ushort *PDSCR_Compile_Statement(ushort *ip, PDSCR0_CompileContext *ctx,
    NetParse_Node *expr);
DocPos
    pd_script/pdscr0/compile/compile_stmt.c:11
Description
    

Form
    ushort *PDSCR_Compile_Statements(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *first);
DocPos
    pd_script/pdscr0/compile/compile_stmt.c:889
Description
    

Form
    ushort *PDSCR_Compile_TailStatement(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *node);
DocPos
    pd_script/pdscr0/compile/compile_stmt.c:910
Description
    

Form
    ushort *PDSCR_Compile_TailStatements(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *first);
DocPos
    pd_script/pdscr0/compile/compile_stmt.c:1045
Description
    Compile a glob of statements with the last one as a tail statement.

Form
    ushort *PDSCR_Compile_Unary(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:6
Description
    

Form
    ushort *PDSCR_Compile_Binary(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:54
Description
    

Form
    ushort *PDSCR_Compile_UnaryOp(ushort *ip, char *op);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:104
Description
    

Form
    ushort *PDSCR_Compile_BinaryOp(ushort *ip, char *op);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:121
Description
    

Form
    ushort *PDSCR_Compile_Expression(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:243
Description
    

Form
    ushort *PDSCR_Compile_Expressions(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *first);
DocPos
    pd_script/pdscr0/compile/compile_expr.c:1031
Description
    

Reference

Statements

<name>:
Label

object <name> [clones <expr>] [extends <expr>] [toplevel <expr>] <body>
Create a new object

begin_object <object> <body>
Execute body within the scope of object.

function <name>(<args>) <body>
Define a function.

lfunction <name>(<args>) <body>
Define a lexical function.

macro_statement <name>(<args>) <body>
Define a function.

macro_expression <name>(<args>) <body>
Define a function.

if(<cond>)<then> [else <else>]
If statement

begin <body>
Evaluate body. break and continue are usable as if this were a loop.

while(<cond>)<body>
While Loop.

for(<init>; <cond>; <step>) <body>
For loop.

switch(<expr>) {...}
Switch statement.

try {...} [catch <name> {...}]*
Try/Catch statement.

var <name>[=<expr>][, <name>[=<expr>] [, ...]];
Define vars in object scope.

dynvar <name>[=<expr>][, <name>[=<expr>] [, ...]];
Define vars in dynamic scope.

local <name>[=<expr>][, <name>[=<expr>] [, ...]];
Define vars in lexical scope.

sum(name, init, final[, step])expr
add all values for expr from min to max with a optional step

sum(name, init, final[, step])expr
add all values for expr from min to max with a optional step

Function Index

void *BGGL2_Lookup(char *name);
pd_script/bggl2/interp.c:21

int BGGL2_Bind(char *name, void *val);
pd_script/bggl2/interp.c:62

int BGGL2_BindUser(char *name, void *val);
pd_script/bggl2/interp.c:83

int BGGL2_BindCurrent(BGGL2_Context *ctx, char *name, void *val);
pd_script/bggl2/interp.c:104

int BGGL2_SetCurrent(BGGL2_Context *ctx, char *name, void *val);
pd_script/bggl2/interp.c:125

int BGGL2_AddBuiltin(char *name, void (*func)(BGGL2_Context *ctx));
pd_script/bggl2/interp.c:166

int BGGL2_Execute(void *obj);
pd_script/bggl2/interp.c:193

int BGGL2_Eval(void *val);
pd_script/bggl2/interp.c:244

int BGGL2_EvalString(char *str);
pd_script/bggl2/interp.c:307

int BGGL2_Load(char *script);
pd_script/bggl2/interp.c:330

int BGGL2_Reset();
pd_script/bggl2/interp.c:373

BGGL2_Context *BGGL2_DefaultContext();
pd_script/bggl2/interp.c:391

int BGGL2_Init();
pd_script/bggl2/interp.c:403

char *BGGL2_EatWhite(char *s);
pd_script/bggl2/parse.c:18

int BGGL2_CharSpecial(int c);
pd_script/bggl2/parse.c:66

char *BGGL2_Token(char *s, char *t);
pd_script/bggl2/parse.c:127

char *BGGL2_ParseString(char *s, char *t);
pd_script/bggl2/parse.c:153

char *BGGL2_ParseXString(char *s, char **b);
pd_script/bggl2/parse.c:221

char *BGGL2_ParseHexString(char *s, byte **buf, int *len);
pd_script/bggl2/parse.c:335

void *BGGL2_ParseBlock(char **buf);
pd_script/bggl2/parse.c:398

void *BGGL2_Parse(char **buf);
pd_script/bggl2/parse.c:441

int BGGL2_Push(BGGL2_Context *ctx, void *obj);
pd_script/bggl2/util.c:14

void *BGGL2_Pop(BGGL2_Context *ctx);
pd_script/bggl2/util.c:32

void **BGGL2_PopMulti(BGGL2_Context *ctx, int num);
pd_script/bggl2/util.c:54

void **BGGL2_PopMark(BGGL2_Context *ctx, int *num);
pd_script/bggl2/util.c:78

int BGGL2_PushDouble(BGGL2_Context *ctx, double f);
pd_script/bggl2/util.c:104

double BGGL2_PopDouble(BGGL2_Context *ctx);
pd_script/bggl2/util.c:125

double *BGGL2_PopMultiDouble(BGGL2_Context *ctx, int num);
pd_script/bggl2/util.c:151

double *BGGL2_PopMarkDouble(BGGL2_Context *ctx, int *num);
pd_script/bggl2/util.c:184

BGGL2_InfoCat *BGGL2_Info_GetCat(BGGL2_InfoCat *parent, char *cat);
pd_script/bggl2/info.c:9

BGGL2_InfoCat *BGGL2_Info_FindCat(BGGL2_InfoCat *parent, char *cat);
pd_script/bggl2/info.c:52

BGGL2_InfoCat *BGGL2_Info_FindCatName(BGGL2_InfoCat *parent, char *name);
pd_script/bggl2/info.c:79

BGGL2_InfoLeaf *BGGL2_Info_AddInfo(char *cat, char *name,char *form, char *desc);
pd_script/bggl2/info.c:95

BGGL2_InfoLeaf *BGGL2_Info_QueryName(char *name);
pd_script/bggl2/info.c:128

BGGL2_InfoLeaf *BGGL2_Info_QueryCatagory(char *cat);
pd_script/bggl2/info.c:149

BGGL2_InfoCat *BGGL2_Info_QueryCatagoryInfo(char *cat);
pd_script/bggl2/info.c:174

int BGGL2_AddInfo(BGGL2_Context *ctx);
pd_script/bggl2/info.c:199

int BGGL2_Init_Info();
pd_script/bggl2/info.c:213

int BGGL2_Builtin_Exec(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:8

int BGGL2_Builtin_Def(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:18

int BGGL2_Builtin_Bound(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:30

int BGGL2_Builtin_Unbound(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:42

int BGGL2_Builtin_If(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:54

int BGGL2_Builtin_Ifelse(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:66

int BGGL2_Builtin_For(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:80

int BGGL2_Builtin_Repeat(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:114

int BGGL2_Builtin_Loop(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:127

int BGGL2_Builtin_Print(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:138

int BGGL2_Builtin_PDScript(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:170

int BGGL2_Builtin_PDScriptExpr(BGGL2_Context *ctx);
pd_script/bggl2/builtins/base.c:179

int BGGL2_Init_Builtins();
pd_script/bggl2/builtins/base.c:189

int BGGL2_Builtin_Add(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:7

int BGGL2_Builtin_Sub(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:18

int BGGL2_Builtin_Mul(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:29

int BGGL2_Builtin_Div(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:40

int BGGL2_Builtin_IDiv(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:51

int BGGL2_Builtin_Mod(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:62

int BGGL2_Builtin_FMod(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:73

int BGGL2_Builtin_Abs(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:83

int BGGL2_Builtin_Neg(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:93

int BGGL2_Builtin_Floor(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:103

int BGGL2_Builtin_Ceiling(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:113

int BGGL2_Builtin_Round(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:123

int BGGL2_Builtin_Truncate(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:133

int BGGL2_Builtin_Sqrt(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:143

int BGGL2_Builtin_Atan(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:153

int BGGL2_Builtin_Exp(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:165

int BGGL2_Builtin_Cos(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:176

int BGGL2_Builtin_Sin(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:187

int BGGL2_Builtin_Ln(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:198

int BGGL2_Builtin_Log(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:208

int BGGL2_Builtin_Rand(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math.c:218

int BGGL2_Init_Builtins_Math();
pd_script/bggl2/builtins/math.c:234

int BGGL2_Builtin_Pop(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:5

int BGGL2_Builtin_Exch(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:15

int BGGL2_Builtin_Dup(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:27

int BGGL2_Builtin_Copy(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:40

int BGGL2_Builtin_Index(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:59

int BGGL2_Builtin_Clear(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:74

int BGGL2_Builtin_Count(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:80

int BGGL2_Builtin_Mark(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:86

int BGGL2_Builtin_ClearToMark(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:92

int BGGL2_Builtin_CountToMark(BGGL2_Context *ctx);
pd_script/bggl2/builtins/stack.c:104

int BGGL2_Init_Builtins_Stack();
pd_script/bggl2/builtins/stack.c:113

int BGGL2_Builtin_Eq(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:71

int BGGL2_Builtin_Ne(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:82

int BGGL2_Builtin_Ge(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:93

int BGGL2_Builtin_Gt(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:106

int BGGL2_Builtin_Le(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:117

int BGGL2_Builtin_Lt(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:130

int BGGL2_Builtin_And(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:141

int BGGL2_Builtin_Or(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:175

int BGGL2_Builtin_Xor(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:209

int BGGL2_Builtin_Not(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:243

int BGGL2_Builtin_BitShift(BGGL2_Context *ctx);
pd_script/bggl2/builtins/logic.c:267

int BGGL2_Init_Builtins_Logic();
pd_script/bggl2/builtins/logic.c:285

int BGGL2_Builtin_PackVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:5

int BGGL2_Builtin_UnpackVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:19

int BGGL2_Builtin_PackVec3(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:36

int BGGL2_Builtin_UnpackVec3(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:49

int BGGL2_Builtin_PackVec16(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:64

int BGGL2_Builtin_UnpackVec16(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:77

int BGGL2_Builtin_DupVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:92

double *BGGL2_Math3D_DupVector(double *fa);
pd_script/bggl2/builtins/math3d.c:110

int BGGL2_Builtin_AddVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:124

int BGGL2_Builtin_SubVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:143

int BGGL2_Builtin_ScaleVector(BGGL2_Context *ctx);
pd_script/bggl2/builtins/math3d.c:162

int BGGL2_Init_Builtins_Math3D();
pd_script/bggl2/builtins/math3d.c:180

NetParse_Node *PDSCR_Parse_FunArgs(char **str);
pd_script/pdscr0/parse/parse.c:15

NetParse_Node *PDSCR_Parse_VarsList(char **str);
pd_script/pdscr0/parse/parse.c:87

NetParse_Node *PDSCR_Parse_MetafunExpr(char **str);
pd_script/pdscr0/parse/parse.c:214

NetParse_Node *PDSCR_Parse_MetafunBlock(char **str);
pd_script/pdscr0/parse/parse.c:244

int PDSCR_Parse_Init();
pd_script/pdscr0/parse/parse.c:274

int PDSCR_Parse_GetLinenum();
pd_script/pdscr0/parse/parse_token.c:14

char *PDSCR_Parse_GetFilename();
pd_script/pdscr0/parse/parse_token.c:19

int PDSCR_Parse_CalcLinenum(char *se);
pd_script/pdscr0/parse/parse_token.c:24

int PDSCR_Parse_SetLinenum(char *fname, char *base, int num);
pd_script/pdscr0/parse/parse_token.c:41

int PDSCR_Parse_PushLinenum();
pd_script/pdscr0/parse/parse_token.c:49

int PDSCR_Parse_PopLinenum();
pd_script/pdscr0/parse/parse_token.c:61

int PDSCR_MSG_Print(char *se, char *ty, char *s, va_list lst);
pd_script/pdscr0/parse/parse_token.c:73

int PDSCR_MSG_Note(char *se, char *s, ...);
pd_script/pdscr0/parse/parse_token.c:89

int PDSCR_MSG_Warning(char *se, char *s, ...);
pd_script/pdscr0/parse/parse_token.c:99

int PDSCR_MSG_Error(char *se, char *s, ...);
pd_script/pdscr0/parse/parse_token.c:109

char *PDSCR_Parse_EatWhiteOnly(char *s);
pd_script/pdscr0/parse/parse_token.c:122

char *PDSCR_Parse_EatWhite(char *s);
pd_script/pdscr0/parse/parse_token.c:132

int PDSCR_Parse_OpChar(int c);
pd_script/pdscr0/parse/parse_token.c:178

char *PDSCR_Parse_Token(char *s, char *b, int *ty);
pd_script/pdscr0/parse/parse_token.c:217

int PDSCR_Parse_AddExpression(char *name, NetParse_Node *(*func)(char **s));
pd_script/pdscr0/parse/parse_expr.c:9

NetParse_Node *PDSCR_Parse_ParseExpressionName(char *name, char **s);
pd_script/pdscr0/parse/parse_expr.c:23

NetParse_Node *PDSCR_Parse_DotRef(char **str);
pd_script/pdscr0/parse/parse_expr.c:39

NetParse_Node *PDSCR_Parse_XML(char **str);
pd_script/pdscr0/parse/parse_expr.c:194

NetParse_Node *PDSCR_Parse_SubExpression(char **str);
pd_script/pdscr0/parse/parse_expr.c:228

NetParse_Node *PDSCR_Parse_Expression(char **str);
pd_script/pdscr0/parse/parse_expr.c:698

NetParse_Node *PDSCR_Parse_Lambda(char **str);
pd_script/pdscr0/parse/parse_expr.c:1093

NetParse_Node *PDSCR_Parse_WithCC(char **str);
pd_script/pdscr0/parse/parse_expr.c:1150

NetParse_Node *PDSCR_Parse_Object(char **str);
pd_script/pdscr0/parse/parse_expr.c:1181

NetParse_Node *PDSCR_Parse_ObjectStmt(char **str);
pd_script/pdscr0/parse/parse_expr.c:1251

NetParse_Node *PDSCR_Parse_BeginObject(char **str);
pd_script/pdscr0/parse/parse_expr.c:1271

NetParse_Node *PDSCR_Parse_ExpressionLit(char **str);
pd_script/pdscr0/parse/parse_expr2.c:18

NetParse_Node *PDSCR_Parse_ExpressionPE(char **str);
pd_script/pdscr0/parse/parse_expr2.c:353

NetParse_Node *PDSCR_Parse_ExpressionIncDec(char **str);
pd_script/pdscr0/parse/parse_expr2.c:505

NetParse_Node *PDSCR_Parse_ExpressionE(char **str);
pd_script/pdscr0/parse/parse_expr2.c:726

NetParse_Node *PDSCR_Parse_ExpressionMD(char **str);
pd_script/pdscr0/parse/parse_expr2.c:785

NetParse_Node *PDSCR_Parse_ExpressionAS(char **str);
pd_script/pdscr0/parse/parse_expr2.c:845

NetParse_Node *PDSCR_Parse_ExpressionSHLR(char **str);
pd_script/pdscr0/parse/parse_expr2.c:905

NetParse_Node *PDSCR_Parse_ExpressionRCmp(char **str);
pd_script/pdscr0/parse/parse_expr2.c:964

NetParse_Node *PDSCR_Parse_ExpressionLop(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1027

NetParse_Node *PDSCR_Parse_ExpressionLop2(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1088

NetParse_Node *PDSCR_Parse_ExpressionTCond(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1147

NetParse_Node *PDSCR_Parse_ExpressionAttr(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1194

NetParse_Node *PDSCR_Parse_ExpressionEquals(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1256

NetParse_Node *PDSCR_Parse_Expression(char **str);
pd_script/pdscr0/parse/parse_expr2.c:1384

int PDSCR_Parse_AddStatement(char *name, NetParse_Node *(*func)(char **s));
pd_script/pdscr0/parse/parse_stmt.c:12

NetParse_Node *PDSCR_Parse_ParseStatementName(char *name, char **s);
pd_script/pdscr0/parse/parse_stmt.c:26

int PDSCR_Parse_AddBlockStatement(char *name,NetParse_Node *(*func)(char **s));
pd_script/pdscr0/parse/parse_stmt.c:43

NetParse_Node *PDSCR_Parse_ParseBlockStatementName(char *name, char **s);
pd_script/pdscr0/parse/parse_stmt.c:57

char *PDSCR_Parse_EatSemicolon(char *s);
pd_script/pdscr0/parse/parse_stmt.c:73

NetParse_Node *PDSCR_Parse_Comments(char **str, int pf);
pd_script/pdscr0/parse/parse_stmt.c:80

NetParse_Node *PDSCR_Parse_Statement(char **str);
pd_script/pdscr0/parse/parse_stmt.c:163

NetParse_Node *PDSCR_Parse_Block(char **str);
pd_script/pdscr0/parse/parse_stmt.c:460

int PDSCR_Parse_TerminalComment(NetParse_Node *n, char **str);
pd_script/pdscr0/parse/parse_stmt.c:487

NetParse_Node *PDSCR_Parse_BlockStatementInner(char **str);
pd_script/pdscr0/parse/parse_stmt.c:497

NetParse_Node *PDSCR_Parse_BlockStatement(char **str);
pd_script/pdscr0/parse/parse_stmt.c:745

NetParse_Node *PDSCR_Parse_BlockStatement2(char **str);
pd_script/pdscr0/parse/parse_stmt.c:765

NetParse_Node *PDSCR_Parse_Function(char **str);
pd_script/pdscr0/parse/parse_stmt.c:789

NetParse_Node *PDSCR_Parse_If(char **str);
pd_script/pdscr0/parse/parse_stmt.c:848

NetParse_Node *PDSCR_Parse_While(char **str);
pd_script/pdscr0/parse/parse_stmt.c:919

NetParse_Node *PDSCR_Parse_Begin(char **str);
pd_script/pdscr0/parse/parse_stmt.c:959

NetParse_Node *PDSCR_Parse_For(char **str);
pd_script/pdscr0/parse/parse_stmt.c:983

NetParse_Node *PDSCR_Parse_Let(char **str);
pd_script/pdscr0/parse/parse_stmt.c:1044

NetParse_Node *PDSCR_Parse_Switch(char **str);
pd_script/pdscr0/parse/parse_stmt.c:1090

NetParse_Node *PDSCR_Parse_TryCatch(char **str);
pd_script/pdscr0/parse/parse_stmt.c:1192

NetParse_Node *PDSCR_Parse_Class(char **str);
pd_script/pdscr0/parse/parse_stmt.c:1233

char *PDSCR_UnParse_PrintExpression(char *s, NetParse_Node *expr, int ind);
pd_script/pdscr0/parse/unparse.c:5

char *PDSCR_UnParse_PrintStatement(char *s, NetParse_Node *expr, int ind);
pd_script/pdscr0/parse/unparse.c:293

char *PDSCR_UnParse_PrintBlockStatement(char *s, NetParse_Node *expr, int ind);
pd_script/pdscr0/parse/unparse.c:433

char *PDSCR_UnParse_PrintStatements(char *s, NetParse_Node *first, int ind);
pd_script/pdscr0/parse/unparse.c:665

char *PDSCR_UnParse_PrintBlockStatements(char *s, NetParse_Node *first, int ind);
pd_script/pdscr0/parse/unparse.c:679

char *PDSCR_UnParse_PrintBlock(char *s, NetParse_Node *first, int ind);
pd_script/pdscr0/parse/unparse.c:692

char *PDSCR_UnParse_PrintBlock2(char *s, NetParse_Node *first, int ind);
pd_script/pdscr0/parse/unparse.c:703

int PDSCR_UnParse_FormatBlockStatements(NetParse_Node *first, int ind);
pd_script/pdscr0/parse/unparse.c:724

PDSCR0_Object *PDSCR_Interp_GetSelf(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:14

void *PDSCR0_Interp_Lookup(PDSCR0_Context *ctx, char *name);
pd_script/pdscr0/interp/interp.c:26

int PDSCR0_Interp_Assign(PDSCR0_Context *ctx, char *name, void *p);
pd_script/pdscr0/interp/interp.c:81

int PDSCR_Interp_ClearEnv(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:137

int PDSCR0_Interp_BindCurrent(PDSCR0_Context *ctx, char *name, void *val);
pd_script/pdscr0/interp/interp.c:162

int PDSCR0_Interp_DynBindCurrent(PDSCR0_Context *ctx, char *name, void *val);
pd_script/pdscr0/interp/interp.c:189

int PDSCR0_Interp_BindArgs(PDSCR0_Context *ctx, PDSCR0_FunArg *args);
pd_script/pdscr0/interp/interp.c:211

int PDSCR_Interp_BindPattern(PDSCR0_Context *ctx, void *pat, void *val);
pd_script/pdscr0/interp/interp.c:255

int PDSCR0_Interp_Call(PDSCR0_Context *ctx, void *self, void *func);
pd_script/pdscr0/interp/interp.c:305

int PDSCR0_Interp_TailCall(PDSCR0_Context *ctx, void *self, void *func);
pd_script/pdscr0/interp/interp.c:515

void *PDSCR0_Interp_LoadIndex(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/interp/interp.c:590

int PDSCR0_Interp_StoreIndex(PDSCR0_Context *ctx, void *obj,void *index, void *value);
pd_script/pdscr0/interp/interp.c:656

int PDSCR0_Interp_MethodCall(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/interp/interp.c:738

int PDSCR0_Interp_MethodTailCall(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/interp/interp.c:785

void *PDSCR0_Interp_FLink(PDSCR0_Context *ctx, void *p, void *q);
pd_script/pdscr0/interp/interp.c:835

void *PDSCR0_Interp_MakeCLambda(PDSCR0_Context *ctx, void *p);
pd_script/pdscr0/interp/interp.c:861

int PDSCR_Interp_Throw(PDSCR0_Context *ctx, char *name);
pd_script/pdscr0/interp/interp.c:881

int PDSCR0_Interp_DoThrow(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:888

int PDSCR0_Interp_Catch(PDSCR0_Context *ctx, char *name, int ip);
pd_script/pdscr0/interp/interp.c:929

int PDSCR0_Interp_BeginTry(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:947

int PDSCR0_Interp_EndTry(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:962

int PDSCR0_Interp_List(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1001

int PDSCR0_Interp_Array(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1033

int PDSCR0_Interp_Dict(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1055

int PDSCR0_Interp_Vector(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1085

int PDSCR0_Interp_Complex(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1109

int PDSCR0_Interp_Matrix(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/interp.c:1133

int PDSCR0_Interp_PushCC(PDSCR0_Context *ctx, int exit_ip);
pd_script/pdscr0/interp/interp.c:1177

int PDSCR0_Interp_Run(PDSCR0_Context *ctx, int limit);
pd_script/pdscr0/interp/interp.c:1213

PDSCR0_Context *PDSCR_Interp_NewContext();
pd_script/pdscr0/interp/interp.c:1711

int PDSCR_Interp_FreeContext(PDSCR0_Context *tmp);
pd_script/pdscr0/interp/interp.c:1766

void *PDSCR_Interp_CallFunction(void *obj, void *func, void **args);
pd_script/pdscr0/interp/interp.c:1790

void *PDSCR_Interp_CallMethod(void *obj, char *slot, void **args);
pd_script/pdscr0/interp/interp.c:1819

int PDSCR_Interp_ExecuteBlock(PDSCR0_Block *blk);
pd_script/pdscr0/interp/interp.c:1849

int PDSCR_Interp_ExecuteBlockSelf(PDSCR0_Block *blk, PDSCR0_Object *self);
pd_script/pdscr0/interp/interp.c:1877

void *PDSCR_Interp_ExecuteBlockExpr(PDSCR0_Block *blk);
pd_script/pdscr0/interp/interp.c:1904

int PDSCR_Interp_String(char *str);
pd_script/pdscr0/interp/interp.c:1933

void *PDSCR_Interp_StringExpr(char *str);
pd_script/pdscr0/interp/interp.c:1990

int PDSCR_Interp_Load(char *file, void *self);
pd_script/pdscr0/interp/interp.c:2031

int PDSCR_Interp_Init();
pd_script/pdscr0/interp/interp.c:2094

int PDSCR0_Interp_AddUnary(char *name,void *(*func)(char *type, void *arg));
pd_script/pdscr0/interp/interp_opr.c:12

int PDSCR0_Interp_AddUnary2(char *name, char *type, char *rtype, int flags,void *(*func)(char *type, void *arg));
pd_script/pdscr0/interp/interp_opr.c:40

int PDSCR0_Interp_AddBinary(char *name,void *(*func)(char *ltype, void *larg, char *rtype, void *rarg));
pd_script/pdscr0/interp/interp_opr.c:83

int PDSCR0_Interp_AddBinary2(char *name, char *ltype, char *rtype, char *lrtype,int flags, void *(*func)(char *ltype, void *larg, char *rtype, void *rarg));
pd_script/pdscr0/interp/interp_opr.c:112

void *PDSCR0_Interp_UnaryOperation(void *arg, int op);
pd_script/pdscr0/interp/interp_opr.c:176

void *PDSCR0_Interp_BinaryOperation(void *left, void *right, int op);
pd_script/pdscr0/interp/interp_opr.c:209

void *PDSCR_UnaryOp(char *name, void *arg);
pd_script/pdscr0/interp/interp_opr.c:257

void *PDSCR_BinaryOp(void *larg, char *name, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:272

int PDSCR0_Interp_Equal(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:287

int PDSCR0_Interp_Less(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:371

int PDSCR0_Interp_MatchArgs(void **a, void **values, PDSCR0_FunArg *args);
pd_script/pdscr0/interp/interp_opr.c:431

int PDSCR0_Interp_Match(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:474

int PDSCR0_Interp_Greater(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:557

int PDSCR0_Interp_LessEqual(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:562

int PDSCR0_Interp_GreaterEqual(void *p, void *q);
pd_script/pdscr0/interp/interp_opr.c:567

void *PDSCR_Operator_Identity(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:574

void *PDSCR_Operator_Less(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:580

void *PDSCR_Operator_Greater(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:591

void *PDSCR_Operator_LessEqual(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:601

void *PDSCR_Operator_GreaterEqual(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:610

void *PDSCR_Operator_Equal(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:619

void *PDSCR_Operator_NotEqual(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:628

void *PDSCR_Operator_Match(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:637

void *PDSCR_Operator_LAnd(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:646

void *PDSCR_Operator_LOr(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:658

void *PDSCR_Operator_LXor(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:670

void *PDSCR_Operator_LNot(char *type, void *arg);
pd_script/pdscr0/interp/interp_opr.c:682

void *PDSCR_Operator_AddArray(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:691

void *PDSCR_Operator_SubArray(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:729

void *PDSCR_Operator_AddFuns(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/interp/interp_opr.c:749

int PDSCR_Operators_Init();
pd_script/pdscr0/interp/interp_opr.c:761

int PDSCR_Interp_Push(PDSCR0_Context *ctx, void *p);
pd_script/pdscr0/interp/util.c:4

int PDSCR_Interp_PushMulti(PDSCR0_Context *ctx, void **a, int n);
pd_script/pdscr0/interp/util.c:16

void *PDSCR_Interp_Pop(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:24

void **PDSCR_Interp_PopMulti(PDSCR0_Context *ctx, int num);
pd_script/pdscr0/interp/util.c:37

void **PDSCR_Interp_PopMark(PDSCR0_Context *ctx, int *num);
pd_script/pdscr0/interp/util.c:51

int PDSCR_Interp_PushDouble(PDSCR0_Context *ctx, double f);
pd_script/pdscr0/interp/util.c:71

int PDSCR_Interp_PushMultiDouble(PDSCR0_Context *ctx, double *a, int n);
pd_script/pdscr0/interp/util.c:85

double PDSCR_Interp_PopDouble(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:93

double *PDSCR_Interp_PopMultiDouble(PDSCR0_Context *ctx, int num);
pd_script/pdscr0/interp/util.c:111

double *PDSCR_Interp_PopMarkDouble(PDSCR0_Context *ctx, int *num);
pd_script/pdscr0/interp/util.c:134

int PDSCR_Interp_PushBool(PDSCR0_Context *ctx, int b);
pd_script/pdscr0/interp/util.c:162

int PDSCR_Interp_PopBool(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:176

int PDSCR_Interp_PushMark(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:193

int PDSCR_Interp_ClearToMark(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:200

int PDSCR_Interp_PushIP(PDSCR0_Context *ctx, PDSCR0_Block *blk,unsigned short *ip);
pd_script/pdscr0/interp/util.c:208

int PDSCR_Interp_PopIP(PDSCR0_Context *ctx, PDSCR0_Block **blk,unsigned short **ip);
pd_script/pdscr0/interp/util.c:232

void PDSCR_Interp_LookupPush(PDSCR0_Context *ctx, char *name);
pd_script/pdscr0/interp/util.c:242

void PDSCR_Interp_PopAssign(PDSCR0_Context *ctx, char *name);
pd_script/pdscr0/interp/util.c:249

void PDSCR_Interp_DoLoadIndex(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:256

void PDSCR_Interp_DoStoreIndex(PDSCR0_Context *ctx);
pd_script/pdscr0/interp/util.c:266

void PDSCR_Interp_DoUnary(PDSCR0_Context *ctx, int idx);
pd_script/pdscr0/interp/util.c:276

void PDSCR_Interp_DoBinary(PDSCR0_Context *ctx, int idx);
pd_script/pdscr0/interp/util.c:285

int PDSCR_Object_CheckStack(void *obj);
pd_script/pdscr0/interp/object.c:14

int PDSCR_Object_PushStack(void *obj);
pd_script/pdscr0/interp/object.c:22

void *PDSCR_Object_PopStack();
pd_script/pdscr0/interp/object.c:28

PDSCR0_Object *PDSCR_Object_NewEmpty();
pd_script/pdscr0/interp/object.c:35

int PDSCR_Object_HashSlotname(char *s);
pd_script/pdscr0/interp/object.c:43

int PDSCR_Object_DumpMetahash();
pd_script/pdscr0/interp/object.c:55

BGGL2_Binding *PDSCR_Object_GetSlotList(BGGL2_Binding *lst, char *slot);
pd_script/pdscr0/interp/object.c:62

void *PDSCR_Object_GetValueList(BGGL2_Binding *lst, char *slot);
pd_script/pdscr0/interp/object.c:86

BGGL2_Binding *PDSCR_Object_GetSlotObj(PDSCR0_Object *obj, char *slot);
pd_script/pdscr0/interp/object.c:94

BGGL2_Binding *PDSCR_Object_BindSlotList(BGGL2_Binding *lst,char *slot, void *value);
pd_script/pdscr0/interp/object.c:113

int PDSCR_Object_BindSlotObj(PDSCR0_Object *obj,char *slot, void *value);
pd_script/pdscr0/interp/object.c:138

void *PDSCR_Object_GetSlot2(PDSCR0_Object *obj, char *slot);
pd_script/pdscr0/interp/object.c:184

void *PDSCR_Object_GetSlot(PDSCR0_Object *obj, char *slot);
pd_script/pdscr0/interp/object.c:243

int PDSCR_Object_BindSlot(PDSCR0_Object *obj, char *slot, void *value);
pd_script/pdscr0/interp/object.c:251

int PDSCR_Object_SetSlot(PDSCR0_Object *obj, char *slot, void *value);
pd_script/pdscr0/interp/object.c:299

BGGL2_Binding *PDSCR_Object_CopySlotList(BGGL2_Binding *lst);
pd_script/pdscr0/interp/object.c:360

PDSCR0_Object *PDSCR_Object_Clone(PDSCR0_Object *obj);
pd_script/pdscr0/interp/object.c:386

PDSCR0_Class *PDSCR_Object_LookupClass(char *name);
pd_script/pdscr0/interp/object.c:407

PDSCR0_Class *PDSCR_Object_NewClass(char *name, char *parent);
pd_script/pdscr0/interp/object.c:421

BGGL2_Binding *PDSCR_Object_GetClassSlot(PDSCR0_Class *class, char *slot);
pd_script/pdscr0/interp/object.c:438

int PDSCR_Object_BindClassSlot(PDSCR0_Class *class, char *slot, void *val);
pd_script/pdscr0/interp/object.c:459

PDSCR0_Object *PDSCR_Object_InstanceClass(PDSCR0_Class *class);
pd_script/pdscr0/interp/object.c:469

void *pdscr_object_clone(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/interp/object.c:517

char *pdscr_object_printvars(PDSCR0_Context *ctx, char *s, int *fst, int ind,BGGL2_Binding *args);
pd_script/pdscr0/interp/object.c:529

char *pdscr_object_tostring(PDSCR0_Context *ctx, void *pobj,BGGL2_Binding *args);
pd_script/pdscr0/interp/object.c:563

int PDSCR_Object_Init();
pd_script/pdscr0/interp/object.c:608

PDSCR0_TypeContext *PDSCR_TypeCtx_LookupType(char *name);
pd_script/pdscr0/interp/typectx.c:7

PDSCR0_TypeContext *PDSCR_TypeCtx_GetType(char *name);
pd_script/pdscr0/interp/typectx.c:21

char *PDSCR_TypeCtx_GetTypeName(char *name);
pd_script/pdscr0/interp/typectx.c:37

char *PDSCR_TypeCtx_GetObjTypeName(void *obj);
pd_script/pdscr0/interp/typectx.c:47

PDSCR0_TypeMethod *PDSCR_TypeCtx_LookupMethod(PDSCR0_TypeContext *ctx, char *name);
pd_script/pdscr0/interp/typectx.c:67

PDSCR0_TypeMethod *PDSCR_TypeCtx_GetMethod(PDSCR0_TypeContext *ctx, char *name);
pd_script/pdscr0/interp/typectx.c:81

int PDSCR_TypeCtx_AddMethod(char *type, char *name, char *desc,void *(*func)(PDSCR0_Context *ctx, void *obj, void **args, int n), int n);
pd_script/pdscr0/interp/typectx.c:100

void *PDSCR_TypeCtx_Call(PDSCR0_Context *ctx, void *self, void *func);
pd_script/pdscr0/interp/typectx.c:124

void *PDSCR_TypeCtx_LoadIndex(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/interp/typectx.c:167

int PDSCR_TypeCtx_StoreIndex(PDSCR0_Context *ctx, void *obj,void *index, void *value);
pd_script/pdscr0/interp/typectx.c:189

void *PDSCR_TypeCtx_LoadMIndex(PDSCR0_Context *ctx, void *obj, void **index, int n);
pd_script/pdscr0/interp/typectx.c:212

int PDSCR_TypeCtx_StoreMIndex(PDSCR0_Context *ctx, void *obj,void **index, int n, void *value);
pd_script/pdscr0/interp/typectx.c:234

void *PDSCR_TypeCtx_MethodCall(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/interp/typectx.c:257

NetParse_Node *PDSCR_TypeCtx_FlattenXML(PDSCR0_Context *ctx, void *obj);
pd_script/pdscr0/interp/typectx.c:319

void *PDSCR_TypeCtx_UnFlattenXML(PDSCR0_Context *ctx, char *type,NetParse_Node *node);
pd_script/pdscr0/interp/typectx.c:335

char *PDSCR_TypeCtx_ToString(PDSCR0_Context *ctx, void *obj,BGGL2_Binding *args);
pd_script/pdscr0/interp/typectx.c:349

void *PDSCR_TypeCtx_Copy(PDSCR0_Context *ctx, void *obj);
pd_script/pdscr0/interp/typectx.c:366

void *PDSCR_TypeCtx_Join(PDSCR0_Context *ctx, void *obj);
pd_script/pdscr0/interp/typectx.c:380

PDSCR0_CompileItem *PDSCR_Compile_AddCompileItem(PDSCR0_CompileItem *lst, char *name, ushort *(*func)(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr));
pd_script/pdscr0/compile/compile.c:13

int PDSCR_Compile_AddStatement(char *name,ushort *(*func)(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr));
pd_script/pdscr0/compile/compile.c:28

int PDSCR_Compile_AddExpression(char *name,ushort *(*func)(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr));
pd_script/pdscr0/compile/compile.c:36

int PDSCR_Compile_AddMetaFunction(char *name,ushort *(*func)(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr));
pd_script/pdscr0/compile/compile.c:44

int PDSCR_Compile_AddStatementMetaFunction(char *name,ushort *(*func)(ushort *ip, PDSCR0_CompileContext *ctx, NetParse_Node *expr));
pd_script/pdscr0/compile/compile.c:58

ushort *PDSCR_Compile_CompileListName(PDSCR0_CompileItem *lst,ushort *ip, PDSCR0_CompileContext *ctx, char *name, NetParse_Node *expr);
pd_script/pdscr0/compile/compile.c:73

ushort *PDSCR_Compile_CompileStatementName(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile.c:89

ushort *PDSCR_Compile_CompileExpressionName(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile.c:97

ushort *PDSCR_Compile_CompileMetafunName(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile.c:105

ushort *PDSCR_Compile_CompileStatementMetafunName(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile.c:118

NetParse_Node *PDSCR_Compile_GetMetafunArg(NetParse_Node *expr, int num);
pd_script/pdscr0/compile/compile.c:136

PDSCR0_Block *PDSCR_Compile_FoldBlock(ushort *ops, ushort *ip,PDSCR0_CompileContext *ctx);
pd_script/pdscr0/compile/compile.c:161

PDSCR0_Block *PDSCR_Compile_Block(NetParse_Node *first);
pd_script/pdscr0/compile/compile.c:198

PDSCR0_Block *PDSCR_Compile_Function(NetParse_Node *first,NetParse_Node *args, char *fname);
pd_script/pdscr0/compile/compile.c:256

int PDSCR_Compile_Init();
pd_script/pdscr0/compile/compile.c:418

int PDSCR_Compile_PushLMark();
pd_script/pdscr0/compile/compile_goto.c:28

int PDSCR_Compile_PopLMark();
pd_script/pdscr0/compile/compile_goto.c:47

int PDSCR_Compile_PushLabel(char *name, ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:65

int PDSCR_Compile_PushGoto(char *name, ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:80

int PDSCR_Compile_ResolveGotos();
pd_script/pdscr0/compile/compile_goto.c:95

int PDSCR_Compile_BeginBreak(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:131

int PDSCR_Compile_BeginContinue(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:147

int PDSCR_Compile_SetBreak(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:163

int PDSCR_Compile_SetContinue(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:177

int PDSCR_Compile_EndBreak(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:191

int PDSCR_Compile_EndContinue(ushort *ip);
pd_script/pdscr0/compile/compile_goto.c:202

int PDSCR_Compile_IndexUnary(char *op);
pd_script/pdscr0/compile/compile_index.c:21

int PDSCR_Compile_IndexBinary(char *op);
pd_script/pdscr0/compile/compile_index.c:41

char *PDSCR_Compile_NameUnary(int op);
pd_script/pdscr0/compile/compile_index.c:61

char *PDSCR_Compile_NameBinary(int op);
pd_script/pdscr0/compile/compile_index.c:72

int PDSCR_Compile_IndexName(PDSCR0_CompileContext *ctx, char *name);
pd_script/pdscr0/compile/compile_index.c:83

int PDSCR_Compile_IndexKeyword(PDSCR0_CompileContext *ctx, char *name);
pd_script/pdscr0/compile/compile_index.c:105

int PDSCR_Compile_IndexString(PDSCR0_CompileContext *ctx, char *str);
pd_script/pdscr0/compile/compile_index.c:127

int PDSCR_Compile_IndexNumber(PDSCR0_CompileContext *ctx, double f);
pd_script/pdscr0/compile/compile_index.c:149

int PDSCR_Compile_IndexValue(PDSCR0_CompileContext *ctx, void *p);
pd_script/pdscr0/compile/compile_index.c:171

ushort *PDSCR_Compile_Statement(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_stmt.c:19

ushort *PDSCR_Compile_Statements(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *first);
pd_script/pdscr0/compile/compile_stmt.c:897

ushort *PDSCR_Compile_TailStatement(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_stmt.c:919

ushort *PDSCR_Compile_TailStatements(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *first);
pd_script/pdscr0/compile/compile_stmt.c:1056

ushort *PDSCR_Compile_Unary(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_expr.c:14

ushort *PDSCR_Compile_Binary(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_expr.c:63

ushort *PDSCR_Compile_UnaryOp(ushort *ip, char *op);
pd_script/pdscr0/compile/compile_expr.c:112

ushort *PDSCR_Compile_BinaryOp(ushort *ip, char *op);
pd_script/pdscr0/compile/compile_expr.c:129

NetParse_Node *PDSCR_Compile_ReduceExpression(NetParse_Node *expr);
pd_script/pdscr0/compile/compile_expr.c:140

ushort *PDSCR_Compile_Expression(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_expr.c:254

ushort *PDSCR_Compile_Expressions(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *first);
pd_script/pdscr0/compile/compile_expr.c:1042

int PDSCR_Compile_MakeMacro(PDSCR0_CompileContext *ctx, NetParse_Node *expr,char *base);
pd_script/pdscr0/compile/compile_macro.c:8

int PDSCR_Compile_MacroStatement(PDSCR0_CompileContext *ctx, NetParse_Node *expr);
pd_script/pdscr0/compile/compile_macro.c:29

int PDSCR_Compile_MacroExpression(PDSCR0_CompileContext *ctx, NetParse_Node *expr);
pd_script/pdscr0/compile/compile_macro.c:35

NetParse_Node *PDSCR_Compile_ExpandMacroStatement(PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_macro.c:42

NetParse_Node *PDSCR_Compile_ExpandMacroExpression(PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/compile_macro.c:88

NetParse_Node *PDSCR_Compile_MergeExpArray(void *p);
pd_script/pdscr0/compile/compile_macro.c:120

NetParse_Node *PDSCR_Compile_BuildSubVars(void *p);
pd_script/pdscr0/compile/compile_macro.c:156

void *pdscr_builtin_subvars(PDSCR0_Context *ctx, void **args, int cnt);
pd_script/pdscr0/compile/compile_macro.c:193

int PDSCR_Compile_InitMacros();
pd_script/pdscr0/compile/compile_macro.c:226

int PDSCR_DisAsm_LookupInstr(char *name);
pd_script/pdscr0/compile/disasm.c:37

int PDSCR_DisAsm_Instr(unsigned short *ip, PDSCR0_CompileContext *ctx);
pd_script/pdscr0/compile/disasm.c:45

int PDSCR_DisAsm_Block(PDSCR0_Block *blk);
pd_script/pdscr0/compile/disasm.c:60

ushort *PDSCR_DisAsm_Assemble(ushort *ip, char *s);
pd_script/pdscr0/compile/disasm.c:81

ushort *pdscr_disasm_asm(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/disasm.c:109

ushort *pdscr_disasm_asm_expr(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/disasm.c:138

ushort *pdscr_disasm_value(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/compile/disasm.c:146

int PDSCR_DisAsm_Init();
pd_script/pdscr0/compile/disasm.c:151

int PDSCR0_Threads_AddRunning(PDSCR0_Context *ctx);
pd_script/pdscr0/features/threads.c:15

int PDSCR0_Threads_StopRunning(PDSCR0_Context *ctx);
pd_script/pdscr0/features/threads.c:57

int PDSCR0_Threads_Run(int time);
pd_script/pdscr0/features/threads.c:81

PDSCR0_Context *PDSCR_Threads_MakeThread(void *self, void *func,void **args, int n);
pd_script/pdscr0/features/threads.c:144

void *pdscr_threads_makethread(PDSCR0_Context *octx, void **args, int n);
pd_script/pdscr0/features/threads.c:166

void *pdscr_threads_sleep(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/threads.c:187

NetParse_Node *pdscr_threads_parsethread(char **str);
pd_script/pdscr0/features/threads.c:206

ushort *pdscr_threads_compilethread(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/features/threads.c:231

ushort *pdscr_threads_compilesleep(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/features/threads.c:260

int PDSCR_Threads_Init();
pd_script/pdscr0/features/threads.c:287

PDSCR0_Pool *PDSCR_Pool_New();
pd_script/pdscr0/features/pool.c:4

int PDSCR_Pool_AddMessage(PDSCR0_Pool *pool, void *msg);
pd_script/pdscr0/features/pool.c:16

void *PDSCR_Pool_GetMessage(PDSCR0_Pool *pool);
pd_script/pdscr0/features/pool.c:37

void *pdscr_pool_pool(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/pool.c:50

void *pdscr_pool_apply(PDSCR0_Context *ctx, void *self, void *func);
pd_script/pdscr0/features/pool.c:55

void *pdscr_pool_join(PDSCR0_Context *ctx, void *obj);
pd_script/pdscr0/features/pool.c:90

int PDSCR_Pool_Init();
pd_script/pdscr0/features/pool.c:105

void *pdscr_async_makeasync(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/async.c:7

NetParse_Node *pdscr_async_parseasync(char **str);
pd_script/pdscr0/features/async.c:19

ushort *pdscr_async_compileasync(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/features/async.c:35

ushort *pdscr_async_compileasync_stmt(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/features/async.c:67

void *pdscr_async_apply(PDSCR0_Context *ctx, void *self, void *func);
pd_script/pdscr0/features/async.c:83

int PDSCR_ASync_Init();
pd_script/pdscr0/features/async.c:97

BGGL2_Binding *PDSCR_Types_NewAttr(char *name, void *value);
pd_script/pdscr0/features/types.c:5

char *pdscr_tylambda_tostring(PDSCR0_Context *ctx, void *pobj,BGGL2_Binding *args);
pd_script/pdscr0/features/types.c:16

void *pdscr_tydata_loadindex(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/features/types.c:55

void *pdscr_tydata_storeindex(PDSCR0_Context *ctx, void *obj,void *index, void *value);
pd_script/pdscr0/features/types.c:66

void *PDSCR_Operator_AbsData(char *type, void *arg);
pd_script/pdscr0/features/types.c:78

void *pdscr_tyxml_loadindex(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/features/types.c:87

void *pdscr_tyxml_storeindex(PDSCR0_Context *ctx, void *obj,void *index, void *value);
pd_script/pdscr0/features/types.c:101

void *pdscr_tyxml_methodcall(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/features/types.c:114

void *pdscr_tyxml_copy(PDSCR0_Context *ctx, void *obj);
pd_script/pdscr0/features/types.c:148

void *pdscr_tycons_loadindex(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/features/types.c:153

void *pdscr_tycons_storeindex(PDSCR0_Context *ctx, void *obj,void *index, void *value);
pd_script/pdscr0/features/types.c:193

int PDSCR_Types_Init();
pd_script/pdscr0/features/types.c:232

NetParse_Node *PDSCR_Flatten_EncodeArray(PDSCR0_Context *ctx, void *val);
pd_script/pdscr0/features/flatten.c:5

NetParse_Node *PDSCR_Flatten_EncodeArray2(void **val, PDSCR0_Context *ctx);
pd_script/pdscr0/features/flatten.c:35

NetParse_Node *PDSCR_Flatten_EncodeStruct(PDSCR0_Context *ctx, void *val);
pd_script/pdscr0/features/flatten.c:62

NetParse_Node *PDSCR_Flatten_EncodeValue(PDSCR0_Context *ctx, void *val);
pd_script/pdscr0/features/flatten.c:101

int PDSCR_Flatten_Init();
pd_script/pdscr0/features/flatten.c:249

char *PDSCR_ToString_PrintItem(PDSCR0_Context *ctx, void *p,BGGL2_Binding *args);
pd_script/pdscr0/features/tostring.c:9

int PDSCR_ToString_Init();
pd_script/pdscr0/features/tostring.c:193

void *pdscr_fileio_readvalue(VFILE *fd, char *s);
pd_script/pdscr0/features/fileio.c:4

void *pdscr_fileio_writevalue(VFILE *fd, char *s, void *val);
pd_script/pdscr0/features/fileio.c:103

void *pdscr_fileio_methodcall(PDSCR0_Context *ctx, void *obj, void *index);
pd_script/pdscr0/features/fileio.c:194

void *pdscr_fileio_openfile(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/fileio.c:402

int PDSCR_FileIO_Init();
pd_script/pdscr0/features/fileio.c:410

NetParse_Node *PDSCR_Maths_ParseSum(char **str);
pd_script/pdscr0/features/maths.c:4

NetParse_Node *pdscr_maths_parsesum(char **str);
pd_script/pdscr0/features/maths.c:79

NetParse_Node *pdscr_maths_parseproduct(char **str);
pd_script/pdscr0/features/maths.c:94

ushort *pdscr_maths_compilesum(ushort *ip, void **values,NetParse_Node *expr);
pd_script/pdscr0/features/maths.c:108

int PDSCR_Maths_TypeIsInt(char *type);
pd_script/pdscr0/features/maths.c:230

int PDSCR_Maths_TypeIsNum(char *type);
pd_script/pdscr0/features/maths.c:237

void *PDSCR_Operator_Add(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:246

void *PDSCR_Operator_Sub(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:273

void *PDSCR_Operator_Mul(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:299

void *PDSCR_Operator_Div(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:325

void *PDSCR_Operator_IDiv(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:351

void *PDSCR_Operator_Mod(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:368

void *PDSCR_Operator_Exp(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:394

void *PDSCR_Operator_And(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:426

void *PDSCR_Operator_Or(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:442

void *PDSCR_Operator_Xor(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:458

void *PDSCR_Operator_Shl(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:474

void *PDSCR_Operator_Shr(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:490

void *PDSCR_Operator_BNot(char *type, void *arg);
pd_script/pdscr0/features/maths.c:506

void *PDSCR_Operator_Neg(char *type, void *arg);
pd_script/pdscr0/features/maths.c:518

void *PDSCR_Operator_AddVector(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:535

void *PDSCR_Operator_SubVector(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:557

void *PDSCR_Operator_NegVector(char *type, void *arg);
pd_script/pdscr0/features/maths.c:579

void *PDSCR_Operator_MulVector(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:593

void *PDSCR_Operator_DivVector(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:627

void *PDSCR_Operator_ModVector(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:648

void *PDSCR_Operator_AbsVector(char *type, void *arg);
pd_script/pdscr0/features/maths.c:674

void *PDSCR_Operator_BaseVector(char *type, void *arg);
pd_script/pdscr0/features/maths.c:693

void *PDSCR_Maths_ConvComplex(void *arg, int l);
pd_script/pdscr0/features/maths.c:713

void *PDSCR_Maths_ExpandComplex(void *arg, void *to);
pd_script/pdscr0/features/maths.c:721

void *PDSCR_Maths_MakeComplex(double r, double i);
pd_script/pdscr0/features/maths.c:737

void *PDSCR_Maths_MakeComplex2(double r, double i, double j);
pd_script/pdscr0/features/maths.c:746

void *PDSCR_Maths_MakeComplex3(double r, double i, double j, double k);
pd_script/pdscr0/features/maths.c:756

void *PDSCR_Operator_AddComplex(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:768

void *PDSCR_Operator_SubComplex(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:801

void *PDSCR_Operator_MulComplex(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:834

void *PDSCR_Operator_DivComplex(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths.c:892

int PDSCR_Maths_Init();
pd_script/pdscr0/features/maths.c:965

void *pdscr_mathsmatrix_loadmindex(PDSCR0_Context *ctx, void *obj,void **index, int n);
pd_script/pdscr0/features/maths_matrix.c:5

int pdscr_mathsmatrix_storemindex(PDSCR0_Context *ctx, void *obj,void **index, int n, void *value);
pd_script/pdscr0/features/maths_matrix.c:17

void *PDSCR_Operator_AddMatrix(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths_matrix.c:30

void *PDSCR_Operator_SubMatrix(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths_matrix.c:75

void *PDSCR_Operator_MulMatrix(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths_matrix.c:120

void PDSCR_MathsMatrix_Inverse(double *a, double *b, int n);
pd_script/pdscr0/features/maths_matrix.c:178

void *PDSCR_Operator_DivMatrix(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/maths_matrix.c:223

void *PDSCR_Operator_InvMatrix(char *type, void *arg);
pd_script/pdscr0/features/maths_matrix.c:286

int PDSCR_MathsMatrix_Init();
pd_script/pdscr0/features/maths_matrix.c:303

void *PDSCR_Operator_AddString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:5

void *PDSCR_Operator_SubString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:28

void *PDSCR_Operator_AndString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:43

void *PDSCR_Operator_AbsString(char *type, void *arg);
pd_script/pdscr0/features/strings.c:89

void *PDSCR_Operator_ShlString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:96

void *PDSCR_Operator_ShrString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:107

void *PDSCR_Operator_ShleString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:118

void *PDSCR_Operator_ShreString(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/strings.c:129

void *pdscr_tystring_methodcall(PDSCR0_Context *ctx, void *obj, void *index,void **args, int nargs);
pd_script/pdscr0/features/strings.c:147

int PDSCR_Strings_Init();
pd_script/pdscr0/features/strings.c:208

PDSCR0_Cons *PDSCR_Lists_Copy(PDSCR0_Cons *l);
pd_script/pdscr0/features/lists.c:4

PDSCR0_Cons *PDSCR_Lists_NAppend(PDSCR0_Cons *l1, PDSCR0_Cons *l2);
pd_script/pdscr0/features/lists.c:33

void *PDSCR_Operator_AddList(char *ltype, void *larg, char *rtype, void *rarg);
pd_script/pdscr0/features/lists.c:47

void *pdscr_lists_copy(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_script/pdscr0/features/lists.c:83

void *pdscr_lists_append(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_script/pdscr0/features/lists.c:119

void *pdscr_lists_nappend(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_script/pdscr0/features/lists.c:154

void *pdscr_lists_reverse(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_script/pdscr0/features/lists.c:178

void *pdscr_lists_nreverse(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_script/pdscr0/features/lists.c:197

int PDSCR_Lists_Init();
pd_script/pdscr0/features/lists.c:214

int PDSCR_BigNum_Cmp(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:4

int PDSCR_BigNum_CmpInt(ushort *a, int b);
pd_script/pdscr0/features/bignum.c:30

int PDSCR_BigNum_CmpInd(ushort *a, ushort *b, int ao, int bo);
pd_script/pdscr0/features/bignum.c:56

int PDSCR_BigNum_CmpIndB(ushort *a, ushort *b, int ao, int bo);
pd_script/pdscr0/features/bignum.c:81

int PDSCR_BigNum_Not(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:110

int PDSCR_BigNum_Neg(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:123

int PDSCR_BigNum_Copy(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:146

int PDSCR_BigNum_Crop(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:156

int PDSCR_BigNum_Shl(ushort *a, ushort *b, int c);
pd_script/pdscr0/features/bignum.c:173

int PDSCR_BigNum_Shr(ushort *a, ushort *b, int c);
pd_script/pdscr0/features/bignum.c:198

int PDSCR_BigNum_Inc(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:222

int PDSCR_BigNum_Dec(ushort *a, ushort *b);
pd_script/pdscr0/features/bignum.c:247

int PDSCR_BigNum_Add(ushort *a, ushort *b, ushort *c);
pd_script/pdscr0/features/bignum.c:272

int PDSCR_BigNum_Sub(ushort *a, ushort *b, ushort *c);
pd_script/pdscr0/features/bignum.c:302

int PDSCR_BigNum_SubInd(ushort *a, int ao, ushort *b, int bo, ushort *c, int co);
pd_script/pdscr0/features/bignum.c:328

int PDSCR_BigNum_SubIndB(ushort *a, int ao, ushort *b, int bo, ushort *c, int co);
pd_script/pdscr0/features/bignum.c:354

int PDSCR_BigNum_Mul(ushort *a, ushort *b, ushort *c);
pd_script/pdscr0/features/bignum.c:383

int PDSCR_BigNum_Div(ushort *a, ushort *b, ushort *c, ushort *d);
pd_script/pdscr0/features/bignum.c:409

char *PDSCR_BigNum_ToString(ushort *a);
pd_script/pdscr0/features/bignum.c:458

int PDSCR_BigNum_Init();
pd_script/pdscr0/features/bignum.c:518

int pdscr_store_object_indexvars(BIMG_Context *ctx, BGGL2_Binding *args);
pd_script/pdscr0/features/store.c:6

int pdscr_store_object_writevars(BIMG_Context *ctx, BGGL2_Binding *args);
pd_script/pdscr0/features/store.c:23

int pdscr_store_object_index(BIMG_Context *ctx, void *pobj);
pd_script/pdscr0/features/store.c:41

int pdscr_store_object_write(BIMG_Context *ctx, void *pobj);
pd_script/pdscr0/features/store.c:60

int pdscr_store_save(BIMG_Context *ctx, void *obj);
pd_script/pdscr0/features/store.c:78

void *pdscr_store_preload(BIMG_Context *ctx, char *tyn, int size);
pd_script/pdscr0/features/store.c:146

int pdscr_store_postload(BIMG_Context *ctx, void *obj, char *tyn, int size);
pd_script/pdscr0/features/store.c:180

void *pdscr_store_loadimage(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/store.c:229

void *pdscr_store_saveimage(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/features/store.c:238

int PDSCR_Store_Init();
pd_script/pdscr0/features/store.c:246

int PDSCR_Builtin_Bind(char *name, void *value);
pd_script/pdscr0/builtin/builtin.c:7

PDSCR0_Builtin *PDSCR_Builtin_NewBuiltin(char *name, char *desc,void *(*func)(PDSCR0_Context *ctx, void **args, int n), int min);
pd_script/pdscr0/builtin/builtin.c:55

int PDSCR_Builtin_AddBuiltin(char *name, char *desc,void *(*func)(PDSCR0_Context *ctx, void **args, int n), int min);
pd_script/pdscr0/builtin/builtin.c:69

char *pdscr_tybuiltin_tostring(PDSCR0_Context *ctx, void *pobj,BGGL2_Binding *args);
pd_script/pdscr0/builtin/builtin.c:84

int PDSCR_Builtin_PrintItem(PDSCR0_Context *ctx, void *p);
pd_script/pdscr0/builtin/builtin.c:96

void *pdscr_builtin_print(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:188

void *pdscr_builtin_println(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:198

void *pdscr_builtin_evalblock(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:209

void *pdscr_builtin_evalexpr(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:242

void *pdscr_builtin_load(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:275

void *pdscr_builtin_vector(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:287

void *pdscr_builtin_normalize(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:303

void *pdscr_builtin_tostring(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:323

void *pdscr_builtin_copy(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:328

void *pdscr_builtin_join(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:333

void *pdscr_builtin_gettypename(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:338

void *pdscr_builtin_apply(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:347

void *pdscr_builtin_usedheap(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:374

void *pdscr_builtin_freeheap(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:379

void *pdscr_builtin_deltaheap(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:384

void *pdscr_builtin_buildxml(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin.c:395

int PDSCR_Builtin_Init();
pd_script/pdscr0/builtin/builtin.c:424

void *pdscr_builtin_sqrt(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:6

void *pdscr_builtin_floor(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:11

void *pdscr_builtin_ceil(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:16

void *pdscr_builtin_round(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:21

void *pdscr_builtin_truncate(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:26

void *pdscr_builtin_pow(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:34

void *pdscr_builtin_degrees(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:43

void *pdscr_builtin_radians(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:51

void *pdscr_builtin_cos(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:59

void *pdscr_builtin_sin(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:67

void *pdscr_builtin_tan(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:75

void *pdscr_builtin_cosd(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:83

void *pdscr_builtin_sind(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:90

void *pdscr_builtin_tand(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:97

void *pdscr_builtin_acos(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:104

void *pdscr_builtin_asin(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:113

void *pdscr_builtin_atan(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:122

void *pdscr_builtin_ln(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:138

void *pdscr_builtin_log(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:146

void *pdscr_builtin_log10(PDSCR0_Context *ctx, void **args, int n);
pd_script/pdscr0/builtin/builtin_math.c:158

int PDSCR_BuiltinMath_Init();
pd_script/pdscr0/builtin/builtin_math.c:166

char *PDSCR0_CGen_BuildBuiltin(PDSCR0_CgenCtx *ctx, PDSCR0_Block *blk);
pd_script/pdscr0/cgen/cgen.c:28

int PDSCR0_CGen_CompileBlock(PDSCR0_CgenCtx *ctx, PDSCR0_Block *blk);
pd_script/pdscr0/cgen/cgen.c:126

PDSCR0_TextFrag *PDSCR0_CGen_WriteFrags(PDSCR0_TextFrag *lst, char *text);
pd_script/pdscr0/cgen/cgen.c:623

PDSCR0_CgenCtx *PDSCR0_CGen_Begin(char *name);
pd_script/pdscr0/cgen/cgen.c:640

int PDSCR0_CGen_End(PDSCR0_CgenCtx *ctx);
pd_script/pdscr0/cgen/cgen.c:684

int PDSCR0_CGen_BuildInit(PDSCR0_CgenCtx *ctx, PDSCR0_Block *blk);
pd_script/pdscr0/cgen/cgen.c:693

int PDSCR0_CGen_WriteFragsFd(VFILE *fd, PDSCR0_TextFrag *lst);
pd_script/pdscr0/cgen/cgen.c:729

int PDSCR0_CGen_WriteFile(char *name, PDSCR0_CgenCtx *ctx);
pd_script/pdscr0/cgen/cgen.c:742

NetParse_Node *pdscr_cgen_parse_cfunc(char **str);
pd_script/pdscr0/cgen/cgen_features.c:4

ushort *pdscr_cgen_compile_cgenast_expr(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/cgen/cgen_features.c:37

ushort *pdscr_cgen_compile_cgenast_stmt(ushort *ip, PDSCR0_CompileContext *ctx,NetParse_Node *expr);
pd_script/pdscr0/cgen/cgen_features.c:51

int PDSCR_CGen_Init();
pd_script/pdscr0/cgen/cgen_features.c:63

pdnet

Parse

parse trees for sx and xml, intended to allow faster parsers for such data than vm based parsers.

#define TOKEN_NULL    0
#define TOKEN_SPECIAL    1
#define TOKEN_STRING    2
#define TOKEN_SYMBOL    3

typedef struct NetParse_Attr_s NetParse_Attr;
typedef struct NetParse_Node_s NetParse_Node;

struct NetParse_Attr_s {
NetParse_Attr *next;
char *key;
char *value;
};

struct NetParse_Node_s {
NetParse_Node *next;
char *key;
char *text;
NetParse_Attr *attr;
NetParse_Node *first;
};

NET

Form
    int NET_AddrEqual(VADDR *a, VADDR *b);
DocPos
    pd_net/net.c:4
Description
    Compares 2 addresses, returning a nonzero value if they are equal.
    If both addresses have the same type, address, and port then they are viewed as equal.
    An exception is in the case of addresses with ports of 0, which will match with any other address of the same protocol and address.

Form
    int NET_Poll();
DocPos
    pd_net/net.c:39
Description
    Polls for any activity over the network, calls handlers, ...

Form
    int NET_Init();
DocPos
    pd_net/net.c:63
Description
    Initializes pdnet core network stuff.
    Does not start any specific protocols or services.

Sock

Form
    char *NET_Addr2Str(VADDR *addr);
DocPos
    pd_net/sock_us/w32_net.c:83
Description
    Converts addr to a string (allocated with kralloc).
    IPv4: a.b.c.d:port
    IPv6: [...]:port, where ... is the typical convention.

Form
    VADDR *NET_Str2Addr(char *str, int proto);
DocPos
    pd_net/sock_us/w32_net.c:223
Description
    Parses the address from a string.
    proto identifies the expected protocol.

Form
    int NET_InitLow ();
DocPos
    pd_net/sock_us/w32_net.c:262
Description
    Init the low-level portion of the net stuff (namely, sockets).

Form
    VADDR *NET_LookupHost(char *name);
DocPos
    pd_net/sock_us/w32_net.c:325
Description
    Lookup the host address for name.

Form
    VADDR *NET_LookupHost2(char *name, char *serv, int proto);
DocPos
    pd_net/sock_us/w32_net.c:379
Description
    Also looks up the address for name, but also includes "serve" and proto.

Form
    VADDR *NET_DecodeHostname(char *name);
DocPos
    pd_net/sock_us/w32_net.c:433
Description
    Identifies the protocol and decodes the address if possible, otherwise assuming it is a hostname and performing a lookup.

Form
    int NET_CreateGuid(VGUID *buf);
DocPos
    pd_net/sock_us/w32_guid.c:5
Description
    Create a new guid and put it into buf.

Form
    int NET_GuidEqualP(VGUID *a, VGUID *b);
DocPos
    pd_net/sock_us/w32_guid.c:23
Description
    Returns nonzero if the GUID's are equal.

Form
    char *NET_Guid2String(VGUID *guid);
DocPos
    pd_net/sock_us/w32_guid.c:66
Description
    Returns a string containing a textual representation of the guid.
    It is formatted as: {AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}
    Allocated using 'kalloc'.

Form
    char *NET_String2Guid(VGUID *guid, char *s);
DocPos
    pd_net/sock_us/w32_guid.c:108
Description
    Converts a string to a GUID, filling in guid.
    It is formatted as: {AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP}
    Returns a pointer to the end of the GUID.

Name
    VGUID
Description
    typedef struct {
    byte data1[4];
    byte data2[2];
    byte data3[2];
    byte data4[8];
    }VGUID;

TCP

Form
    int TCP_GetSocketAddr(int socket, VADDR *addrbuf);
DocPos
    pd_net/sock_us/w32_tcpip.c:76
Description
    Retrieves the address of a given socket.
Status
    Internal

Form
    VFILE *TCP_WrapSocket(int sock);
DocPos
    pd_net/sock_us/w32_tcpip.c:353
Description
    Wraps a TCP socket in a VFILE.

Form
    VFILE *TCP_OpenSocket(int port);
DocPos
    pd_net/sock_us/w32_tcpip.c:392
Description
    Opens a socket on a given port.

Form
    VFILE *TCP_OpenListen(int port);
DocPos
    pd_net/sock_us/w32_tcpip.c:440
Description
    Opens a listening socket on a given port.

Form
    VFILE *TCP_OpenConnect(VADDR *targ);
DocPos
    pd_net/sock_us/w32_tcpip.c:511
Description
    Tries to connect to targ, returning the new connection.

UDP

Form
    int UDP_GetSocketAddr(int socket, VADDR *addrbuf);
DocPos
    pd_net/sock_us/w32_udpip.c:128
Description
    Gets the address of a UDP socket.
Status
    Internal

Form
    VFILE *UDP_OpenSocket(int port);
DocPos
    pd_net/sock_us/w32_udpip.c:280
Description
    Creates a new socket.
    Returns a VFILE representing the socket.

RPC

create a number of primitive types 'type_t' that are structs containing a single elememt of the given primitive type:
"int_t": "int;";
"float_t": "float;";
...

and some specials:
"string_t": "char+" (strings need to be correctly dynamic, and a cast of "*(char **)p" is an annoyance);
"array_t": "*struct+".

structs can be associative, ie: pairs of pointers with the first being the name and the second the value (they will be represented as normal arrays).

annoyingly neither arrays nor structs would be dynamically sizeable. involving an extra indirection step could fix this but I am unsure if it is worth it.
additionally, both static and dynamic structs/arrays could exist:
"d_array_t": "*array_t;";
"d_struct_t": "*array_t;*array_t;".
these would be dynamically resized if too small...

Form
    int NET_ExportFunc(char *name, void *(*func)());
DocPos
    pd_net/rpc1.c:83
Description
    Export a function to the rpc subsystem.
    The function is called with a variable number of arguments coresponding to those recieved on the call.
    Each arg is a NetVal.

Form
    int NET_ExportFunc2(char *name, int args, void *(*func)(void *data), void *data);
DocPos
    pd_net/rpc1.c:111
Description
    Exports a function to RPC.
    name is the name used to call the function;
    args is the number of arguments func accepts:
        >=0, function accepts at least args arguments;
        <0, function accepts |args|-1 basic arguments, and the rest as a null terminated array.
    func is called with the first argument being a pointer to data.
    data is the pointer passed as the first arg on call.

Form
    NET_Interface *NET_CreateInterface(char *name);
DocPos
    pd_net/rpc1.c:146
Description
    Creates an "interface".
    Interfaces are used within the protocol code to handle tasks such as:
        Enoding URL's;
        Decoding URL's;
        Executing RPC calls;
        ...
    name is used to identify urls related to this interface.
    name may be null, in which case the interface does not have urls (this may be useful, eg, if the interface just needs to poll or such).

Form
    NET_Interface *NET_FindInterface(char *name);
DocPos
    pd_net/rpc1.c:175
Description
    Find the interface associated with a given name.
    Returns NULL if the interface is not found.

Form
    NET_Export *NET_FindExport(char *name);
DocPos
    pd_net/rpc1.c:197
Description
    Finds an exported function.

Form
    NET_Reference *NET_DecodeURL(char *url);
DocPos
    pd_net/rpc1.c:217
Description
    Decodes a URL.
    URL's have the form <scheme>:<protocol-specific>.
        scheme refers to the specific interface.

Form
    char *NET_EncodeURL(NET_Reference *ref);
DocPos
    pd_net/rpc1.c:250
Description
    Encodes a URL.

Form
    void *NET_CallReference(NET_Reference *ref, void **args);
DocPos
    pd_net/rpc1.c:263
Description
    Calls a reference (gained via decoding a url or such).

Form
    void *NET_CallReferenceFunc(NET_Reference *ref, char *func, void **args);
DocPos
    pd_net/rpc1.c:279
Description
    Calls a function. The reference only identifies the host.

Form
    void *NET_FetchReference(NET_Reference *ref);
DocPos
    pd_net/rpc1.c:295
Description
    Retrieves the data associated with a given reference.

Form
    void *NET_GenLink(char *scheme, char *export);
DocPos
    pd_net/rpc1.c:311
Description
    Generate a link to self for a given scheme and export.

Form
    void *NET_ConvLink(void *link);
DocPos
    pd_net/rpc1.c:332
Description
    Generate a link to self for a given scheme and export.

Form
    void *NET_CallExport(char *name, void **args);
DocPos
    pd_net/rpc1.c:416
Description
    Calls an exported function.
    This is intended primarily to be used within protocols to handle RPC requests.

XML-RPC

Like Jabber-RPC, XML-RPC lacks all that much directly usable interface...

Form
    int XmlRpc_Init();
DocPos
    pd_net/xml_rpc2/xmlrpc_base.c:320
Description
    Init function for XML-RPC.

Decode

Form
    void *XmlRpc_DecodeMember(NetParse_Node *exp, char **name, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:4
Description
    Decode an XML-RPC Struct Member.
Status
    Internal

Form
    void *XmlRpc_DecodeStruct(NetParse_Node *exp, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:26
Description
    Decode an XML-RPC Struct.
Status
    Internal

Form
    void *XmlRpc_DecodeArray2(NetParse_Node *exp, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:74
Description
    Decodes the internal portion of an XML-RPC Array.
Status
    Internal

Form
    void *XmlRpc_DecodeArray(NetParse_Node *exp, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:112
Description
    Decode an XML-RPC Array.
Status
    Internal

Form
    void *XmlRpc_DecodeVector(NetParse_Node *exp, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:136
Description
    Decode a BGB-RPC Vector.
Status
    Internal

Form
    void *XmlRpc_DecodeValue(NetParse_Node *exp, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_decode.c:160
Description
    Decode an XML-RPC Value.
Status
    Internal

Encode

Form
    NetParse_Node *XmlRpc_EncodeArray(void *val, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_encode.c:4
Description
    Encode an XML-RPC Array.
    val is of the NET_Array type.
Status
    Internal

Form
    NetParse_Node *XmlRpc_EncodeArray2(void **val, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_encode.c:43
Description
    Encode an XML-RPC Array.
    val is an array of pointers.
Status
    Internal

Form
    NetParse_Node *XmlRpc_EncodeStruct(void *val, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_encode.c:79
Description
    Encode an XML-RPC Struct.
Status
    Internal

Form
    NetParse_Node *XmlRpc_EncodeValue(void *val, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/xmlrpc_encode.c:127
Description
    Encode an XML-RPC Value.
Status
    Internal

Ext-1

Form
    NetParse_Node *XmlRpc_EncodeVector(void *val, XMLRPC_Context *ctx);
DocPos
    pd_net/xml_rpc2/bgb-ext-1.c:4
Description
    Encode a BGB-RPC Vector.
    val is an array of pointers.
Status
    Internal

Service

Basic services related to the protocol.
Also handles extensions and such.

Form
    XMLRPC_Extension *XmlRpc_LookupExtension(char *ns);
DocPos
    pd_net/xml_rpc2/service.c:13
Description
    Looks up a specific extension namespace.

Form
    XMLRPC_Extension *XmlRpc_CreateExtension(char *ns);
DocPos
    pd_net/xml_rpc2/service.c:34
Description
    Creates a new extension.
    ns specifies the namespace to be used for the extension.
    NULL is used for anonymous extensions...

Form
    void *XmlRpc_Service_ListExtensionNamespaces();
DocPos
    pd_net/xml_rpc2/service.c:112
Description
    

Form
    int XmlRpc_Service_Init();
DocPos
    pd_net/xml_rpc2/service.c:142
Description
    

Jabber-RPC

Jabber-RPC is XML-RPC over XMPP.
As such it will share much interface with XML-RPC.
This will be primarily accessed through the RPC subsystem.
The URL scheme is 'jabber-rpc', thus:
    jabber-rpc:<jid>[#<func>] represents a function.
    jid has the form <node>@<host>/<resource>.
an example may then be:
    jabber-rpc:myself@localhost/pdlib#validator1.simpleStructReturnTest

Form
    int JabberRPC_Init();
DocPos
    pd_net/xml_rpc2/jabber-rpc_base.c:618
Description
    Init function for Jabber-RPC.

ObjLst

objective:
    allow exporting objects;
    allow referring to exported objects;
    handle wrapping of objects;
    ...

Form
    ObjLst_ObjExport *ObjLst_LookupExport(char *name);
DocPos
    pd_net/objlst.c:16
Description
    Looks up an exported obj and returns export info.
Status
    Internal

Form
    int ObjLst_ExportObj(char *name, void *obj);
DocPos
    pd_net/objlst.c:38
Description
    Export an object to the objlst system.
    obj is expected to be an object within the ObjType system.
    If there is another export with the same name it will be replaced.

Form
    void *ObjLst_FetchObj(char *name);
DocPos
    pd_net/objlst.c:69
Description
    Fetch an exported obj.

Form
    void *ObjLst_WrapObj(long o, char *type);
DocPos
    pd_net/objlst.c:86
Description
    Wraps a misc object so that it can be exported or otherwise passed through the objtype system.
    o is an object id (no assumptions are made about meaning, thus, pointers could also be used here).
    type is a string intended to be used to help determine what o is. It has no implicit meaning withing pdlib/pdnet.

Form
    long ObjLst_WrapObjID(void *obj);
DocPos
    pd_net/objlst.c:109
Description
    Fetch the object id associated with a wrapped object.

Form
    char *ObjLst_WrapObjType(void *obj);
DocPos
    pd_net/objlst.c:127
Description
    Fetch the type name associated with a wrapped object.

Protocols

Meta0

meta 0 will attempt to be a "metaprotocol".
basically it will allow sockets to be created and dispatch to handlers defined for that port.

Form
    Meta0_Con *Meta0_NewCon();
DocPos
    pd_net/meta0/meta0_base.c:14
Description
    Creates a connection structure.

Form
    Meta0_PortInfo *Meta0_NewPortInfo();
DocPos
    pd_net/meta0/meta0_base.c:36
Description
    Creates a PortInfo structure.

Form
    Meta0_Con *Meta0_Connect(Meta0_PortInfo *inf, VADDR *addr);
DocPos
    pd_net/meta0/meta0_base.c:58
Description
    Connect to a server using inf for handlers and such.

Form
    int Meta0_CloseConnection(Meta0_Con *con);
DocPos
    pd_net/meta0/meta0_base.c:82
Description
    Close a connection.

Form
    Meta0_Con *Meta0_FindCon(VADDR *addr);
DocPos
    pd_net/meta0/meta0_base.c:108
Description
    Find the connection associated with a given address.

Form
    int Meta0_HandleConnection(Meta0_Con *con);
DocPos
    pd_net/meta0/meta0_base.c:126
Description
    Polls a connection for activity.
Status
    Internal

Form
    int Meta0_PollPort(Meta0_PortInfo *inf);
DocPos
    pd_net/meta0/meta0_base.c:197
Description
    Polls a PortInfo structure for new connections.
Status
    Internal

Form
    int Meta0_Poll();
DocPos
    pd_net/meta0/meta0_base.c:234
Description
    Polls all open ports and connections for activity.
Status
    Internal

Form
    Meta0_PortInfo *Meta0_CreatePort(int port, char *name);
DocPos
    pd_net/meta0/meta0_base.c:255
Description
    Creates a new server socket.

Form
    Meta0_PortInfo *Meta0_CreateClientPort(char *name);
DocPos
    pd_net/meta0/meta0_base.c:277
Description
    Creates a client socket.

Form
    int Meta0_Init();
DocPos
    pd_net/meta0/meta0_base.c:297
Description
    Init Meta0 subsystem.
Status
    Internal

HTTP

Form
    HTTP_Con *HttpNode_NewCon();
DocPos
    pd_net/http/http_sv.c:13
Description
    Creates a new HTTP connection structure.
Status
    Internal

Form
    int HttpNode_SendContents(HTTP_Con *con, byte *type, byte *msg, int len);
DocPos
    pd_net/http/http_sv.c:36
Description
    Sends contents as the result of a HTTP request.
Status
    Internal

Form
    char *HttpNode_CodeName(int code);
DocPos
    pd_net/http/http_sv.c:74
Description
    Retrieves the string name of a given HTTP error code.

Form
    int HttpNode_SendContentsCode(HTTP_Con *con, int code, byte *type, byte *msg, int len);
DocPos
    pd_net/http/http_sv.c:209
Description
    Sends contents for the response to a HTTP request with an error code.
Status
    Internal

Form
    int HttpNode_SendPage(HTTP_Con *con);
DocPos
    pd_net/http/http_sv.c:317
Description
    Handles an HTTP GET request.
Status
    Internal

Form
    int HttpNode_SendPageHead(HTTP_Con *con);
DocPos
    pd_net/http/http_sv.c:400
Description
    Handles an HTTP HEAD request.
Status
    Internal

Form
    int HttpNode_Send404(HTTP_Con *con, byte *type, byte *msg, int len);
DocPos
    pd_net/http/http_sv.c:481
Description
    Sends a 404 error.
Status
    Internal

Form
    int HttpNode_HandleLine(HTTP_Con *con, char *lb);
DocPos
    pd_net/http/http_sv.c:522
Description
    Handles a line located in the header of an HTTP request.
Status
    Internal

Form
    int HttpNode_HandleMessage(HTTP_Con *con, char *msg, int len);
DocPos
    pd_net/http/http_sv.c:634
Description
    Handles the data recieved from an HTTP POST request.
Status
    Internal

Form
    int HttpNode_HandleConnection(HTTP_Con *con);
DocPos
    pd_net/http/http_sv.c:713
Description
    Polls an HTTP connection to see if anything has changed.
Status
    Internal

Form
    HTTP_Resource *HttpNode_NewResource(char *base);
DocPos
    pd_net/http/http_sv.c:792
Description
    Creates a new HTTP Resource.
    A Resourse is used for making some service available to clients.

Form
    int HttpNode_Poll();
DocPos
    pd_net/http/http_sv.c:816
Description
    Polls for any activity over connections or any new connections.
Status
    Internal

Form
    int HttpNode_GetPort();
DocPos
    pd_net/http/http_sv.c:857
Description
    Returns the port the HTTP server is running on.

Form
    int HttpNode_Init();
DocPos
    pd_net/http/http_sv.c:869
Description
    Initialize HTTP support.

Form
    NET_Reference *HttpNode_DecodeURL(char *s);
DocPos
    pd_net/http/http_cl.c:264
Description
    Manually decodes an HTTP URL.

Form
    void *HttpNode_Post(NET_Reference *ref, char *type, void *msg, int len);
DocPos
    pd_net/http/http_cl.c:281
Description
    Executes an HTTP POST request and returns the response data.

Form
    int HttpNode_EncodeMime(byte *out, byte *iin, int sz);
DocPos
    pd_net/http/mime.c:25
Description
    Encodes some data as mime.

Form
    int HttpNode_DecodeMime(byte *out, byte *in, int sz);
DocPos
    pd_net/http/mime.c:68
Description
    Decodes some mime data.

Form
    char *HttpNode_MimeFromExt(char *ext);
DocPos
    pd_net/http/mime.c:103
Description
    Fecthes the mime type associated with a given file extension.

Form
    char *HttpNode_MimeFromName(char *name);
DocPos
    pd_net/http/mime.c:124
Description
    Fetches the mime time for a given filename.

Form
    int HttpNode_MimeInit();
DocPos
    pd_net/http/mime.c:148
Description
    Initialize the mime tables.
Status
    Internal

XMPP/Jabber

This is the XMPP (aka: Jabber) protocol.

Form
    XMPP_Interface *XMPP_CreateInterface(char *xmlns);
DocPos
    pd_net/xmpp/xmpp.c:33
Description
    Create an interface to the XMPP subsystem.
    If not null xmlns identifies the namespace used for incomming iq requests.

Form
    int XMPP_DispatchMessage(Meta0_Con *con, NetParse_Node *node);
DocPos
    pd_net/xmpp/xmpp.c:56
Description
    Dispatch a message to all interfaces that can recieve messages.
Status
    Internal

Form
    int XMPP_DispatchPresence(Meta0_Con *con, NetParse_Node *node);
DocPos
    pd_net/xmpp/xmpp.c:77
Description
    Dispatch a presence stanza to all interfaces that can recieve them.
Status
    Internal

Form
    int XMPP_DispatchTextMessage(char *from, char *subj, char *body);
DocPos
    pd_net/xmpp/xmpp.c:98
Description
    Dispatch a text message to all interfaces that can recieve text messages.
Status
    Internal

Form
    int XMPP_DispatchIQ(Meta0_Con *con, NetParse_Node *node);
DocPos
    pd_net/xmpp/xmpp.c:120
Description
    Dispatch an incomming IQ request to all interfaces with a matching namespace.
Status
    Internal

Form
    VADDR *XMPP_GetHostAddr(char *host, int defport);
DocPos
    pd_net/xmpp/xmpp.c:440
Description
    Performs a hostname lookup.
    It also fills in a defualt port value if none is present.

Form
    int XMPP_Connect(char *server);
DocPos
    pd_net/xmpp/xmpp.c:481
Description
    Connect to a specified XMPP server.

Form
    int XMPP_Disconnect();
DocPos
    pd_net/xmpp/xmpp.c:556
Description
    Disconnect from XMPP server.

Form
    int XMPP_Login(char *user, char *passwd, char *rsrc);
DocPos
    pd_net/xmpp/xmpp.c:584
Description
    Log into the server.

Form
    int XMPP_Message(char *to, char *from, char *subj, char *body);
DocPos
    pd_net/xmpp/xmpp.c:643
Description
    Sends a message with the from specified.

Form
    int XMPP_SendIQ(char *to, char *type, char *tag, NetParse_Node *body);
DocPos
    pd_net/xmpp/xmpp.c:685
Description
    Sends an IQ request to 'to'.

Form
    int XMPP_SendMessage(char *to, char *subj, char *body);
DocPos
    pd_net/xmpp/xmpp.c:732
Description
    Sends a message to 'to'.
    This time 'from' is generated from locally known info.

Form
    int XMPP_SendMessageChat(char *to, char *body);
DocPos
    pd_net/xmpp/xmpp.c:774
Description
    Sends a chat message to 'to'.
    This time 'from' is generated from locally known info.

Form
    int XMPP_SendStanza(NetParse_Node *body);
DocPos
    pd_net/xmpp/xmpp.c:813
Description
    Sends a raw stanza.

Form
    int XMPP_SendPresence(char *to, char *type, NetParse_Node *body);
DocPos
    pd_net/xmpp/xmpp.c:864
Description
    Sends a presence stanza to 'to'.

Form
    int XMPP_SendMessageStanza(char *to, char *type, NetParse_Node *body);
DocPos
    pd_net/xmpp/xmpp.c:892
Description
    Sends a presence stanza to 'to'.

Form
    int XMPP_Init();
DocPos
    pd_net/xmpp/xmpp.c:920
Description
    Initializes XMPP.

Name
    XMPP_Interface Struct
Description
    typedef struct XMPP_Interface_s XMPP_Interface;
    
    struct XMPP_Interface_s {
    XMPP_Interface *next;
    
    char *xmlns;
    int (*message)(Meta0_Con *con, NetParse_Node *node);
    int (*iq)(Meta0_Con *con, NetParse_Node *node);
    int (*text_message)(char *from, char *subj, char *body);
    int (*presence)(Meta0_Con *con, NetParse_Node *node);
    };

Util

Utility functions for the XMPP (aka: Jabber) protocol.

Form
    NetParse_Node *XMPP_CheckResults(char *tag);
DocPos
    pd_net/xmpp/xmpp_util.c:17
Description
    Poll if a given tag is in the results pool.
    Returns NULL if the node could not be found.

Form
    int XMPP_AddResults(NetParse_Node *node);
DocPos
    pd_net/xmpp/xmpp_util.c:47
Description
    Tries to add node to the results pool.
    Does nothing if the node does not contain a "type='result'" or "type='error'" attribute.

JEP-0030

I will try to implement JEP-0030 (Service Discovery).

Form
    NetParse_Node *XMPP_JEP30_QueryItems(char *to, char *node);
DocPos
    pd_net/xmpp/jep30.c:49
Description
    Queries items from a given jid and node.

Form
    NetParse_Node *XMPP_JEP30_QueryInfo(char *to, char *node);
DocPos
    pd_net/xmpp/jep30.c:137
Description
    Queries info from a given jid and node.

Form
    int XMPP_JEP30_Init();
DocPos
    pd_net/xmpp/jep30.c:171
Description
    Init function for JEP-0030.
Status
    Internal

JEP-0045(MultiUserChat)

JEP-0045 (Multi User Chat).

Form
    XMPP_MucRoom *XMPP_MucRoom_NewRoom(char *room, char *host, char *nick);
DocPos
    pd_net/xmpp/jep45.c:34
Description
    Creates a new room context for a given room, host, and nick.

Form
    XMPP_MucRoom *XMPP_MucRoom_FindJid(char *jid);
DocPos
    pd_net/xmpp/jep45.c:61
Description
    Find the room for which a given jid is associated (room@host/nick).

Form
    int XMPP_MucRoom_SetPresence(XMPP_MucRoom *room, char *user, char *status);
DocPos
    pd_net/xmpp/jep45.c:94
Description
    Sets the presence (in the room context) for a given user.

Form
    XMPP_MucRoom *XMPP_MucRoom_Join(char *room, char *host, char *nick);
DocPos
    pd_net/xmpp/jep45.c:140
Description
    Joins a room.

Form
    int XMPP_MucRoom_Leave(XMPP_MucRoom *room);
DocPos
    pd_net/xmpp/jep45.c:172
Description
    Leaves a room.

Form
    char *XMPP_MucRoom_UserJid(XMPP_MucRoom *room, char *nick);
DocPos
    pd_net/xmpp/jep45.c:188
Description
    Generates a jid for a given nick within the room.

Form
    int XMPP_MucRoom_SendMessage(XMPP_MucRoom *room, NetParse_Node *body);
DocPos
    pd_net/xmpp/jep45.c:203
Description
    Sends a message to the room.
    Body is the contents of the message stanza.

Form
    int XMPP_MucRoom_SendMessageText(XMPP_MucRoom *room, char *str);
DocPos
    pd_net/xmpp/jep45.c:220
Description
    Sends a textual message to a room.

Form
    int XMPP_MucRoom_Init();
DocPos
    pd_net/xmpp/jep45.c:286
Description
    Init function for JEP-0045.
Status
    Internal

TMP

XMPP: Tupple Message Passing

Form
    int XMPP_TMP_Export(char *name, void *data, int (*func)(char *name, void *data, void **msg));
DocPos
    pd_net/xmpp/bgb_mp.c:19
Description
    Exports a given pool (data), with an associated callback for handling messages.

Form
    XMPP_PoolReference *XMPP_TMP_NewPoolRef(char *jid, char *name);
DocPos
    pd_net/xmpp/bgb_mp.c:43
Description
    Construct a pool reference from a jid and name.

Form
    XMPP_PoolReference *XMPP_TMP_NewLocalPoolRef(char *name);
DocPos
    pd_net/xmpp/bgb_mp.c:61
Description
    Construct a pool reference to a pool on the current node.

Form
    void *XMPP_TMP_DecodeValue(NetParse_Node *node);
DocPos
    pd_net/xmpp/bgb_mp.c:79
Description
    Decodes a value.
Status
    Internal

Form
    NetParse_Node *XMPP_TMP_EncodeValue(void *obj);
DocPos
    pd_net/xmpp/bgb_mp.c:210
Description
    Encodes a value.
Status
    Internal

Form
    int XMPP_TMP_SendMessageTo(char *jid, char *pool, void **msg);
DocPos
    pd_net/xmpp/bgb_mp.c:306
Description
    Sends a message to a given jid and pool.

Form
    int XMPP_TMP_SendMessage(XMPP_PoolReference *ref, void **msg);
DocPos
    pd_net/xmpp/bgb_mp.c:347
Description
    Sends a message to a given reference.

Form
    int XMPP_TMP_Init();
DocPos
    pd_net/xmpp/bgb_mp.c:360
Description
    Init function.
Status
    Internal

Multiplex

MUX0

BGB-MUX Protocol.

Form
    MUX_Link *MUX0_LinkCon(Meta0_Con *con);
DocPos
    pd_net/mux0/mux0_base.c:17
Description
    Takes a connection and creates a link context for it.
Status
    Internal

Form
    int mux0_new_con(Meta0_Con *con);
DocPos
    pd_net/mux0/mux0_base.c:41
Description
    Handles a new incomming connection.
Status
    Internal

Form
    int mux0_input(Meta0_Con *con);
DocPos
    pd_net/mux0/mux0_base.c:68
Description
    Handles some input over the connection.
Status
    Internal

Form
    int mux0_closed(Meta0_Con *con);
DocPos
    pd_net/mux0/mux0_base.c:178
Description
    The connection has closed.
Status
    Internal

Form
    int mux0_poll();
DocPos
    pd_net/mux0/mux0_base.c:191
Description
    Takes newly arrived messages and dispatches them to various handlers.
Status
    Internal

Form
    int MUX0_SendMessageLink(MUX_Link *link, MUX_Message *msg);
DocPos
    pd_net/mux0/mux0_base.c:217
Description
    Sends a message over a given link.

Form
    int MUX0_Init();
DocPos
    pd_net/mux0/mux0_base.c:282
Description
    Init function for MUX0.

Form
    MUX_Interface *MUX0_FindInterface(char *ns);
DocPos
    pd_net/mux0/mux0_if.c:8
Description
    Finds an interface for a given namespace.

Form
    MUX_Interface *MUX0_CreateInterface(char *ns);
DocPos
    pd_net/mux0/mux0_if.c:29
Description
    Creates a new interface for a given namespace.

Form
    MUX_Link *MUX0_FindLinkName(char *name);
DocPos
    pd_net/mux0/mux0_if.c:52
Description
    Finds a link with a certain name.

Form
    MUX_Link *MUX0_FindLinkAddr(VADDR *addr);
DocPos
    pd_net/mux0/mux0_if.c:73
Description
    Finds a link with a certain address.

Form
    int MUX0_DispatchMessage(MUX_Link *link, MUX_Message *msg);
DocPos
    pd_net/mux0/mux0_if.c:94
Description
    Dispatches a message to various handlers.
    Returns -1 if no handlers were found.

Form
    MUX_Message *MUX0_CreateBasicMessage(char *ns, char *rsrc, char *id,
        char *type, int len, byte *content);
DocPos
    pd_net/mux0/mux0_if.c:125
Description
    Creates a basic message.
    ns is the namespace of the message.
    rsrc is the resource of the message (optional);
    id is an id string for the message (optional).

Form
    int MUX0_DestroyMessage(MUX_Message *msg);
DocPos
    pd_net/mux0/mux0_if.c:169
Description
    Destroys a message.

Form
    int MUX0_MessageAddProperty(MUX_Message *msg, char *var, char *val);
DocPos
    pd_net/mux0/mux0_if.c:184
Description
    Adds a property to a message.

Form
    char *MUX0_MessageGetProperty(MUX_Message *msg, char *var);
DocPos
    pd_net/mux0/mux0_if.c:197
Description
    Gets a property from a message.
    Returns the text of the property or NULL if not found.

Function Index

char *NET_Addr2Str(VADDR *addr);
pd_net/sock_us/w32_net.c:92

VADDR *NET_Str2Addr(char *str, int proto);
pd_net/sock_us/w32_net.c:231

VADDR *NET_LookupHost(char *name);
pd_net/sock_us/w32_net.c:332

VADDR *NET_LookupHost2(char *name, char *serv, int proto);
pd_net/sock_us/w32_net.c:386

VADDR *NET_DecodeHostname(char *name);
pd_net/sock_us/w32_net.c:440

int NET_CreateGuid(VGUID *buf);
pd_net/sock_us/w32_guid.c:12

int NET_GuidEqualP(VGUID *a, VGUID *b);
pd_net/sock_us/w32_guid.c:30

char *NET_Guid2String(VGUID *guid);
pd_net/sock_us/w32_guid.c:75

char *NET_String2Guid(VGUID *guid, char *s);
pd_net/sock_us/w32_guid.c:117

int TCP_GetSocketAddr(int socket, VADDR *addrbuf);
pd_net/sock_us/w32_tcpip.c:84

VFILE *TCP_WrapSocket(int sock);
pd_net/sock_us/w32_tcpip.c:123

int tcpsock_read(void *buf, int sz, VFILE *sock);
pd_net/sock_us/w32_tcpip.c:125

int tcpsock_write(void *msg, int len, VFILE *sock);
pd_net/sock_us/w32_tcpip.c:157

int tcpsock_flush(VFILE *sock);
pd_net/sock_us/w32_tcpip.c:207

int tcpsock_ioctls(VFILE *fd, void **arg);
pd_net/sock_us/w32_tcpip.c:245

int tcpsock_close(VFILE *sock);
pd_net/sock_us/w32_tcpip.c:323

VADDR *tcpsock_getaddr(VFILE *sock);
pd_net/sock_us/w32_tcpip.c:338

VFILE *TCP_WrapSocket(int sock);
pd_net/sock_us/w32_tcpip.c:360

VFILE *TCP_OpenSocket(int port);
pd_net/sock_us/w32_tcpip.c:399

VFILE *TCP_OpenListen(int port);
pd_net/sock_us/w32_tcpip.c:447

VFILE *TCP_OpenListen_IPv6(int port);
pd_net/sock_us/w32_tcpip.c:490

VFILE *TCP_OpenConnect(VADDR *targ);
pd_net/sock_us/w32_tcpip.c:518

char *ipv4tostr(unsigned long addr);
pd_net/sock_us/w32_udpip.c:28

char *ipv6tostr(byte addr[16]);
pd_net/sock_us/w32_udpip.c:39

int UDP_GetSocketAddr(int socket, VADDR *addrbuf);
pd_net/sock_us/w32_udpip.c:136

int udpsock_get(void *buf, int lim, VADDR *from, VFILE *sock);
pd_net/sock_us/w32_udpip.c:175

int udpsock_send(VFILE *sock, VADDR *targ, void *msg, int len, int flags);
pd_net/sock_us/w32_udpip.c:229

VADDR *udpsock_getaddr(VFILE *sock);
pd_net/sock_us/w32_udpip.c:268

VFILE *UDP_OpenSocket(int socknum);
pd_net/sock_us/w32_udpip.c:288

VADDR *NET_LookupHost(char *name);
pd_net/sock_us/w32_udpip.c:317

int NET_AddrEqual(VADDR *a, VADDR *b);
pd_net/net.c:14

int NET_Poll();
pd_net/net.c:46

int NET_Init();
pd_net/net.c:71

int NET_ExportFunc(char *name, void *(*func)());
pd_net/rpc1.c:98

int NET_ExportFunc2(char *name, int args, void *(*func)(void *data), void *data);
pd_net/rpc1.c:130

NET_Interface *NET_CreateInterface(char *name);
pd_net/rpc1.c:167

NET_Interface *NET_FindInterface(char *name);
pd_net/rpc1.c:190

NET_Export *NET_FindExport(char *name);
pd_net/rpc1.c:211

NET_Reference *NET_DecodeURL(char *url);
pd_net/rpc1.c:233

char *NET_EncodeURL(NET_Reference *ref);
pd_net/rpc1.c:264

void *NET_CallReference(NET_Reference *ref, void **args);
pd_net/rpc1.c:277

void *NET_CallReferenceFunc(NET_Reference *ref, char *func, void **args);
pd_net/rpc1.c:293

void *NET_FetchReference(NET_Reference *ref);
pd_net/rpc1.c:309

void *NET_GenLink(char *scheme, char *export);
pd_net/rpc1.c:325

void *NET_ConvLink(void *link);
pd_net/rpc1.c:346

void *NET_ApplyFunc1(void *(*f)(void *x0, ...), int i, void **args);
pd_net/rpc1.c:367

void *NET_ApplyFunc2(void *(*f)(void *data, ...), int i, void *data, void **args);
pd_net/rpc1.c:395

void *NET_CallExport(char *name, void **args);
pd_net/rpc1.c:431

int NETAPI_Poll();
pd_net/rpc1.c:474

int NETAPI_Init();
pd_net/rpc1.c:487

ObjLst_ObjExport *ObjLst_LookupExport(char *name);
pd_net/objlst.c:24

int ObjLst_ExportObj(char *name, void *obj);
pd_net/objlst.c:47

void *ObjLst_FetchObj(char *name);
pd_net/objlst.c:76

void *ObjLst_WrapObj(long o, char *type);
pd_net/objlst.c:98

long ObjLst_WrapObjID(void *obj);
pd_net/objlst.c:119

char *ObjLst_WrapObjType(void *obj);
pd_net/objlst.c:137

Meta0_Con *Meta0_NewCon();
pd_net/meta0/meta0_base.c:21

Meta0_PortInfo *Meta0_NewPortInfo();
pd_net/meta0/meta0_base.c:43

Meta0_Con *Meta0_Connect(Meta0_PortInfo *inf, VADDR *addr);
pd_net/meta0/meta0_base.c:65

int Meta0_CloseConnection(Meta0_Con *con);
pd_net/meta0/meta0_base.c:89

Meta0_Con *Meta0_FindCon(VADDR *addr);
pd_net/meta0/meta0_base.c:115

int Meta0_HandleConnection(Meta0_Con *con);
pd_net/meta0/meta0_base.c:134

int Meta0_PollPort(Meta0_PortInfo *inf);
pd_net/meta0/meta0_base.c:205

int Meta0_Poll();
pd_net/meta0/meta0_base.c:242

Meta0_PortInfo *Meta0_CreatePort(int port, char *name);
pd_net/meta0/meta0_base.c:262

Meta0_PortInfo *Meta0_CreateClientPort(char *name);
pd_net/meta0/meta0_base.c:284

int Meta0_Init();
pd_net/meta0/meta0_base.c:305

HTTP_Con *HttpNode_NewCon();
pd_net/http/http_sv.c:21

int HttpNode_SendContents(HTTP_Con *con, byte *type, byte *msg, int len);
pd_net/http/http_sv.c:44

int HttpNode_SendResponse(HTTP_Con *con, byte *msg, int len);
pd_net/http/http_sv.c:67

char *HttpNode_CodeName(int code);
pd_net/http/http_sv.c:81

int HttpNode_SendContentsCode(HTTP_Con *con, int code, byte *type, byte *msg, int len);
pd_net/http/http_sv.c:217

int HttpNode_SendDir(HTTP_Con *con, char *name);
pd_net/http/http_sv.c:241

int HttpNode_SendPage(HTTP_Con *con);
pd_net/http/http_sv.c:325

int HttpNode_SendPageHead(HTTP_Con *con);
pd_net/http/http_sv.c:408

int HttpNode_Send404(HTTP_Con *con, byte *type, byte *msg, int len);
pd_net/http/http_sv.c:489

int HttpNode_HandleLine(HTTP_Con *con, char *lb);
pd_net/http/http_sv.c:530

int HttpNode_HandleMessage(HTTP_Con *con, char *msg, int len);
pd_net/http/http_sv.c:642

int HttpNode_HandleConnection(HTTP_Con *con);
pd_net/http/http_sv.c:721

HTTP_Resource *HttpNode_NewResource(char *base);
pd_net/http/http_sv.c:800

int HttpNode_Poll();
pd_net/http/http_sv.c:824

int HttpNode_GetPort();
pd_net/http/http_sv.c:864

int HttpNode_Init();
pd_net/http/http_sv.c:876

NET_Reference *httpnode_decode_url(char *s);
pd_net/http/http_cl.c:7

char *httpnode_encode_url(NET_Reference *ref);
pd_net/http/http_cl.c:64

void *httpnode_rpc_call(NET_Reference *ref, void **args);
pd_net/http/http_cl.c:79

void *httpnode_fetch(NET_Reference *ref);
pd_net/http/http_cl.c:84

int httpnode_input_stat(Meta0_Con *con, char *buf);
pd_net/http/http_cl.c:130

int httpnode_input_line(Meta0_Con *con, char *buf);
pd_net/http/http_cl.c:166

int httpnode_input(Meta0_Con *con);
pd_net/http/http_cl.c:193

NET_Reference *HttpNode_DecodeURL(char *s);
pd_net/http/http_cl.c:271

void *HttpNode_Post(NET_Reference *ref, char *type, void *msg, int len);
pd_net/http/http_cl.c:288

int HttpNode_InitCl();
pd_net/http/http_cl.c:341

int HttpNode_EncodeMime(byte *o, byte *i, int sz);
pd_net/http/mime.c:32

int HttpNode_DecodeMime(byte *o, byte *i, int sz);
pd_net/http/mime.c:75

char *HttpNode_MimeFromExt(char *ext);
pd_net/http/mime.c:110

char *HttpNode_MimeFromName(char *name);
pd_net/http/mime.c:131

int HttpNode_MimeInit();
pd_net/http/mime.c:156

XMPP_Interface *XMPP_CreateInterface(char *xmlns);
pd_net/xmpp/xmpp.c:42

int XMPP_DispatchMessage(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:65

int XMPP_DispatchPresence(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:86

int XMPP_DispatchTextMessage(char *from, char *subj, char *body);
pd_net/xmpp/xmpp.c:108

int XMPP_DispatchIQ(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:130

int xmpp_handle_auth(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:149

int xmpp_handle_message(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:230

int xmpp_handle_form(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/xmpp.c:270

int xmpp_poll();
pd_net/xmpp/xmpp.c:334

int xmpp_input(Meta0_Con *con);
pd_net/xmpp/xmpp.c:349

int xmpp_closed(Meta0_Con *con);
pd_net/xmpp/xmpp.c:434

VADDR *XMPP_GetHostAddr(char *host, int defport);
pd_net/xmpp/xmpp.c:450

int XMPP_Connect(char *server);
pd_net/xmpp/xmpp.c:490

int XMPP_Disconnect();
pd_net/xmpp/xmpp.c:565

int XMPP_Login(char *user, char *passwd, char *rsrc);
pd_net/xmpp/xmpp.c:593

int XMPP_Message(char *to, char *from, char *subj, char *body);
pd_net/xmpp/xmpp.c:652

int XMPP_SendIQ(char *to, char *type, char *tag, NetParse_Node *body);
pd_net/xmpp/xmpp.c:694

int XMPP_SendMessage(char *to, char *subj, char *body);
pd_net/xmpp/xmpp.c:742

int XMPP_SendMessageChat(char *to, char *body);
pd_net/xmpp/xmpp.c:784

int XMPP_SendStanza(NetParse_Node *body);
pd_net/xmpp/xmpp.c:822

int XMPP_SendPresence(char *to, char *type, NetParse_Node *body);
pd_net/xmpp/xmpp.c:873

int XMPP_SendMessageStanza(char *to, char *type, NetParse_Node *body);
pd_net/xmpp/xmpp.c:901

int XMPP_Init();
pd_net/xmpp/xmpp.c:929

NetParse_Node *XMPP_CheckResults(char *tag);
pd_net/xmpp/xmpp_util.c:28

int XMPP_AddResults(NetParse_Node *node);
pd_net/xmpp/xmpp_util.c:60

char *XMPP_GenLocal();
pd_net/xmpp/xmpp_util.c:73

int xmpp_jep30_items_iq(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/jep30.c:13

NetParse_Node *XMPP_JEP30_QueryItems(char *to, char *node);
pd_net/xmpp/jep30.c:56

int xmpp_jep30_info_iq(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/jep30.c:83

NetParse_Node *XMPP_JEP30_QueryInfo(char *to, char *node);
pd_net/xmpp/jep30.c:144

int XMPP_JEP30_Init();
pd_net/xmpp/jep30.c:179

XMPP_MucRoom *XMPP_MucRoom_NewRoom(char *room, char *host, char *nick);
pd_net/xmpp/jep45.c:41

XMPP_MucRoom *XMPP_MucRoom_FindJid(char *jid);
pd_net/xmpp/jep45.c:68

int XMPP_MucRoom_SetPresence(XMPP_MucRoom *room, char *user, char *status);
pd_net/xmpp/jep45.c:102

XMPP_MucRoom *XMPP_MucRoom_Join(char *room, char *host, char *nick);
pd_net/xmpp/jep45.c:148

int XMPP_MucRoom_Leave(XMPP_MucRoom *room);
pd_net/xmpp/jep45.c:180

char *XMPP_MucRoom_UserJid(XMPP_MucRoom *room, char *nick);
pd_net/xmpp/jep45.c:196

int XMPP_MucRoom_SendMessage(XMPP_MucRoom *room, NetParse_Node *body);
pd_net/xmpp/jep45.c:212

int XMPP_MucRoom_SendMessageText(XMPP_MucRoom *room, char *str);
pd_net/xmpp/jep45.c:228

int xmpp_jep45_message(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/jep45.c:244

int xmpp_jep45_presence(Meta0_Con *con, NetParse_Node *node);
pd_net/xmpp/jep45.c:267

int XMPP_MucRoom_Init();
pd_net/xmpp/jep45.c:295

int XMPP_TMP_Export(char *name, void *data,int (*func)(char *name, void *data, void **msg));
pd_net/xmpp/bgb_mp.c:31

XMPP_PoolReference *XMPP_TMP_NewPoolRef(char *jid, char *name);
pd_net/xmpp/bgb_mp.c:54

XMPP_PoolReference *XMPP_TMP_NewLocalPoolRef(char *name);
pd_net/xmpp/bgb_mp.c:72

void *XMPP_TMP_DecodeValue(NetParse_Node *node);
pd_net/xmpp/bgb_mp.c:91

NetParse_Node *XMPP_TMP_EncodeValue(void *obj);
pd_net/xmpp/bgb_mp.c:222

int XMPP_TMP_SendMessageTo(char *jid, char *pool, void **msg);
pd_net/xmpp/bgb_mp.c:317

int XMPP_TMP_SendMessage(XMPP_PoolReference *ref, void **msg);
pd_net/xmpp/bgb_mp.c:358

int XMPP_TMP_Init();
pd_net/xmpp/bgb_mp.c:372

MUX_Link *MUX0_LinkCon(Meta0_Con *con);
pd_net/mux0/mux0_base.c:25

int mux0_new_con(Meta0_Con *con);
pd_net/mux0/mux0_base.c:49

int mux0_input(Meta0_Con *con);
pd_net/mux0/mux0_base.c:76

int mux0_closed(Meta0_Con *con);
pd_net/mux0/mux0_base.c:186

int mux0_poll();
pd_net/mux0/mux0_base.c:199

int MUX0_SendMessageLink(MUX_Link *link, MUX_Message *msg);
pd_net/mux0/mux0_base.c:224

MUX_Link *MUX0_Connect(char *server, char *name);
pd_net/mux0/mux0_base.c:255

int MUX0_Init();
pd_net/mux0/mux0_base.c:289

MUX_Interface *MUX0_FindInterface(char *ns);
pd_net/mux0/mux0_if.c:15

MUX_Interface *MUX0_CreateInterface(char *ns);
pd_net/mux0/mux0_if.c:36

MUX_Link *MUX0_FindLinkName(char *name);
pd_net/mux0/mux0_if.c:59

MUX_Link *MUX0_FindLinkAddr(VADDR *addr);
pd_net/mux0/mux0_if.c:80

int MUX0_DispatchMessage(MUX_Link *link, MUX_Message *msg);
pd_net/mux0/mux0_if.c:102

MUX_Message *MUX0_CreateBasicMessage(char *ns, char *rsrc, char *id,char *type, int len, byte *content);
pd_net/mux0/mux0_if.c:146

int MUX0_DestroyMessage(MUX_Message *msg);
pd_net/mux0/mux0_if.c:179

int MUX0_MessageAddProperty(MUX_Message *msg, char *var, char *val);
pd_net/mux0/mux0_if.c:194

char *MUX0_MessageGetProperty(MUX_Message *msg, char *var);
pd_net/mux0/mux0_if.c:208

int xmlrpc_get(HTTP_Resource *rsrc, HTTP_Con *con, char **type, char **data, int *len);
pd_net/xml_rpc2/xmlrpc_base.c:10

int xmlrpc_post(HTTP_Resource *rsrc, HTTP_Con *con, char **type, char **data, int *len);
pd_net/xml_rpc2/xmlrpc_base.c:18

int xmlrpc_head(HTTP_Resource *rsrc, HTTP_Con *con, char **type, int *len);
pd_net/xml_rpc2/xmlrpc_base.c:141

NET_Reference *xmlrpc_decode_url(char *s);
pd_net/xml_rpc2/xmlrpc_base.c:151

char *xmlrpc_encode_url(NET_Reference *ref);
pd_net/xml_rpc2/xmlrpc_base.c:213

void *xmlrpc_rpc_call(NET_Reference *ref, void **args);
pd_net/xml_rpc2/xmlrpc_base.c:226

int XmlRpc_Init();
pd_net/xml_rpc2/xmlrpc_base.c:327

void *XmlRpc_DecodeMember(NetParse_Node *exp, char **name, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:12

void *XmlRpc_DecodeStruct(NetParse_Node *exp, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:34

void *XmlRpc_DecodeArray2(NetParse_Node *exp, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:82

void *XmlRpc_DecodeArray(NetParse_Node *exp, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:120

void *XmlRpc_DecodeVector(NetParse_Node *exp, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:144

void *XmlRpc_DecodeValue(NetParse_Node *exp, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_decode.c:168

NetParse_Node *XmlRpc_EncodeArray(void *val, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_encode.c:13

NetParse_Node *XmlRpc_EncodeArray2(void **val, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_encode.c:52

NetParse_Node *XmlRpc_EncodeStruct(void *val, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_encode.c:87

NetParse_Node *XmlRpc_EncodeValue(void *val, XMLRPC_Context *ctx);
pd_net/xml_rpc2/xmlrpc_encode.c:135

NetParse_Node *xmlrpc_fault_make_name(char *name);
pd_net/xml_rpc2/jabber-rpc_base.c:25

NetParse_Node *xmlrpc_fault_make_ival(int val);
pd_net/xml_rpc2/jabber-rpc_base.c:41

NetParse_Node *xmlrpc_fault_make_sval(char *s);
pd_net/xml_rpc2/jabber-rpc_base.c:64

NetParse_Node *xmlrpc_fault_make_top(int num, char *str);
pd_net/xml_rpc2/jabber-rpc_base.c:85

int jabberrpc_send_fault(char *to, char *tag, int num, char *str);
pd_net/xml_rpc2/jabber-rpc_base.c:135

XMLRPC_PeerInfo *JabberRPC_FindPeer(char *name);
pd_net/xml_rpc2/jabber-rpc_base.c:153

XMLRPC_PeerInfo *JabberRPC_NewPeer(char *name);
pd_net/xml_rpc2/jabber-rpc_base.c:166

int JabberRPC_CachePeerName(char *name);
pd_net/xml_rpc2/jabber-rpc_base.c:179

int JabberRPC_CachePeer(NET_Reference *ref);
pd_net/xml_rpc2/jabber-rpc_base.c:227

int jabberrpc_handle_call(Meta0_Con *con, NetParse_Node *node);
pd_net/xml_rpc2/jabber-rpc_base.c:239

int jabberrpc_iq(Meta0_Con *con, NetParse_Node *node);
pd_net/xml_rpc2/jabber-rpc_base.c:351

NetParse_Node *JabberRPC_CheckResults(char *tag);
pd_net/xml_rpc2/jabber-rpc_base.c:381

NET_Reference *jabberrpc_decode_url(char *s);
pd_net/xml_rpc2/jabber-rpc_base.c:401

char *jabberrpc_encode_url(NET_Reference *ref);
pd_net/xml_rpc2/jabber-rpc_base.c:448

char *jabberrpc_encode_jid(XMPP_RefInfo *ri);
pd_net/xml_rpc2/jabber-rpc_base.c:465

void *jabberrpc_rpc_call_func(NET_Reference *ref, char *func, void **args);
pd_net/xml_rpc2/jabber-rpc_base.c:478

void *jabberrpc_rpc_call(NET_Reference *ref, void **args);
pd_net/xml_rpc2/jabber-rpc_base.c:601

int JabberRPC_Init();
pd_net/xml_rpc2/jabber-rpc_base.c:626

XMLRPC_Extension *XmlRpc_LookupExtension(char *ns);
pd_net/xml_rpc2/service.c:20

XMLRPC_Extension *XmlRpc_CreateExtension(char *ns);
pd_net/xml_rpc2/service.c:43

void *XmlRpc_DecodeExtension(XMLRPC_Context *ctx, char *ns, NetParse_Node *node);
pd_net/xml_rpc2/service.c:59

NetParse_Node *XmlRpc_EncodeValueExtension(XMLRPC_Context *ctx, void *val);
pd_net/xml_rpc2/service.c:80

void *XmlRpc_Service_ListExtensionNamespaces();
pd_net/xml_rpc2/service.c:118

int XmlRpc_Service_Init();
pd_net/xml_rpc2/service.c:148

void *Verify_FetchStructSlot(NET_Struct *ns, char *name);
pd_net/xml_rpc2/verify.c:4

NET_Struct *Verify_NewNetStruct(int max);
pd_net/xml_rpc2/verify.c:15

int Verify_SetStructSlot(NET_Struct *ns, char *name, void *val);
pd_net/xml_rpc2/verify.c:28

void *Verify_ArrayOfStructsTest(long arr);
pd_net/xml_rpc2/verify.c:48

void *Verify_CountTheEntities(char *str);
pd_net/xml_rpc2/verify.c:70

void *Verify_EasyStructTest(void *val);
pd_net/xml_rpc2/verify.c:118

void *Verify_EchoStructTest(void *val);
pd_net/xml_rpc2/verify.c:137

void *Verify_ManyTypesTest(void *v1, void *v2, void *v3, void *v4, void *v5, void *v6);
pd_net/xml_rpc2/verify.c:142

void *Verify_ModerateSizeArrayCheck(void *val);
pd_net/xml_rpc2/verify.c:159

void *Verify_NestedStructTest(void *st);
pd_net/xml_rpc2/verify.c:177

void *Verify_SimpleStructReturnTest(void *num);
pd_net/xml_rpc2/verify.c:199

int Verify_Init();
pd_net/xml_rpc2/verify.c:217

NetParse_Node *XmlRpc_EncodeVector(void *val, XMLRPC_Context *ctx);
pd_net/xml_rpc2/bgb-ext-1.c:13

NetParse_Node *xmlrpc_ext1_encode(XMLRPC_Context *ctx, void *val);
pd_net/xml_rpc2/bgb-ext-1.c:41

void *xmlrpc_ext1_decode(XMLRPC_Context *ctx, NetParse_Node *exp);
pd_net/xml_rpc2/bgb-ext-1.c:95

int XMLRPC_EXT1_Init();
pd_net/xml_rpc2/bgb-ext-1.c:129

pdvfs

A lib which offers filesystem abstraction features and such to pdlib.
Vpath will be the primary interface to pdvfs.
pdvfs is included within the pdlib library.

VDIR

Form
    int VDir_ReadDir(char **names, void **values, long *key, VDIR *dir);
DocPos
    pd_vfs/vdir.c:4
Description
    Reads an entry from a directory.
    names is an array to be filled in with field names.
    values is an array to be filled in with field values (ObjType).
    key is a pointer to a long holding the current key.
    dir is the dir.

Form
    int VDir_MkDir(char *name, VDIR *dir);
DocPos
    pd_vfs/vdir.c:22
Description
    Creates a new sub-dir under dir.

Form
    int VDir_CloseDir(VDIR *dir);
DocPos
    pd_vfs/vdir.c:35
Description
    Close an open directory.

Form
    VFILE *VDir_Open(char *name, char *fl, VDIR *dir);
DocPos
    pd_vfs/vdir.c:48
Description
    Open a file within a directory.

Form
    VDIR *VDir_OpenDir(char *name, VDIR *dir);
DocPos
    pd_vfs/vdir.c:61
Description
    Open a directory within a directory.

Form
    long VDir_DupKey(VDIR *dir, long key);
DocPos
    pd_vfs/vdir.c:75
Description
    Make a copy of a directory key.

Form
    int VDir_DropKey(VDIR *dir, long key);
DocPos
    pd_vfs/vdir.c:88
Description
    Drop a directory key.

Form
    int VDir_DeleteKey(VDIR *dir, long key);
DocPos
    pd_vfs/vdir.c:101
Description
    Delete a file with a specific key.

Form
    long VDir_Insert(char **names, void **values, VDIR *dir);
DocPos
    pd_vfs/vdir.c:114
Description
    Insert a new entry into a directory with the given fields.
    Returns the key of the new entry.

Form
    VFILE *VDir_OpenKey(long key, char *fl, VDIR *dir);
DocPos
    pd_vfs/vdir.c:128
Description
    Open the file in a directory with a specific key.

Form
    VDIR *VDir_OpenDirKey(long key, VDIR *dir);
DocPos
    pd_vfs/vdir.c:141
Description
    Open the sub directory with a specific key.

VFS

Form
    int Vfs_Init();
DocPos
    pd_vfs/vfs.c:6
Description
    Init function for vfs subststem.

Form
    VFSTYPE *Vfs_RegisterType(char *name, VMOUNT *(*mount)(char **options));
DocPos
    pd_vfs/vfs.c:24
Description
    Register a new fs type.

Form
    VFSTYPE *Vfs_LookupType(char *type);
DocPos
    pd_vfs/vfs.c:46
Description
    Find the type info for a given type name.

Form
    int Vfs_Mount(char *path, char *type, char **options);
DocPos
    pd_vfs/vfs.c:65
Description
    Mount a volume.
    path is the desired mount point.
    type is the fs type.
    options depends on the fs type, but often options[0] will be the device or file, if used by this type...

VFSNS

VFSNS is a system for multiple "namespaces" within the filesystem.
Each namespace will follow URL style conventions, eg:
    <scheme>:<namespace-specific>
scheme will be used to select between namespaces.

'file' will be a builtin namespace referring to the vpath root.
'cwd' will refer to the (external) current working directory.

Form
    VFSNAMESPACE *VFSNS_New(char *name);
DocPos
    pd_vfs/vfs_ns.c:18
Description
    Create a new namespace.

Form
    char *VFSNS_GetScheme(char *name);
DocPos
    pd_vfs/vfs_ns.c:40
Description
    Extract the scheme portion from a name.

Form
    VFSNAMESPACE *VFSNS_LookupScheme(char *scheme);
DocPos
    pd_vfs/vfs_ns.c:70
Description
    Lookup the namespace associated with the given scheme.

Form
    VFILE *VFSNS_OpenFile(char *name, char *fl);
DocPos
    pd_vfs/vfs_ns.c:90
Description
    Open a file within a specific namespace.

Form
    VDIR *VFSNS_OpenDir(char *name);
DocPos
    pd_vfs/vfs_ns.c:112
Description
    Open a directory within a given namespace.

Form
    int VFSNS_Init();
DocPos
    pd_vfs/vfs_ns.c:144
Description
    Init function for VFSNS.
    Called by VPath_Init().

VPath

Primary interface for the pdvfs system.

Form
    int VPath_Init();
DocPos
    pd_vfs/vpath.c:14
Description
    Init function for VPath.
    
    Initial Mounts
    /sysroot    /    dirfs
    /cwdroot    ./    dirfs

Form
    VFILE *VPath_OpenFile(char *name, char *fl);
DocPos
    pd_vfs/vpath.c:87
Description
    Open a file relative to the root.
    Tries VFSNS if name appears to have a namespace.

Form
    VDIR *VPath_OpenDir(char *name);
DocPos
    pd_vfs/vpath.c:131
Description
    Open a directory relative to the root.
    Tries VFSNS if name appears to have a namespace.

Form
    int VPath_MkDir(char *name);
DocPos
    pd_vfs/vpath.c:173
Description
    Create a directory.

Form
    int VPath_Mount(char *dir, char *type, char **opts);
DocPos
    pd_vfs/vpath.c:218
Description
    Mount something to a specific directory.
    Tries to create mount point if it does not exist.

Form
    int VPath_Unmount(char *name);
DocPos
    pd_vfs/vpath.c:245
Description
    Unmount whatever is mounted to a directory.

Function Index

int VDir_ReadDir(char **names, void **values, long *key, VDIR *dir);
pd_vfs/vdir.c:15

int VDir_MkDir(char *name, VDIR *dir);
pd_vfs/vdir.c:29

int VDir_CloseDir(VDIR *dir);
pd_vfs/vdir.c:42

VFILE *VDir_Open(char *name, char *fl, VDIR *dir);
pd_vfs/vdir.c:55

VDIR *VDir_OpenDir(char *name, VDIR *dir);
pd_vfs/vdir.c:68

long VDir_DupKey(VDIR *dir, long key);
pd_vfs/vdir.c:82

int VDir_DropKey(VDIR *dir, long key);
pd_vfs/vdir.c:95

int VDir_DeleteKey(VDIR *dir, long key);
pd_vfs/vdir.c:108

long VDir_Insert(char **names, void **values, VDIR *dir);
pd_vfs/vdir.c:122

VFILE *VDir_OpenKey(long key, char *fl, VDIR *dir);
pd_vfs/vdir.c:135

VDIR *VDir_OpenDirKey(long key, VDIR *dir);
pd_vfs/vdir.c:148

int Vfs_Init();
pd_vfs/vfs.c:13

VFSTYPE *Vfs_RegisterType(char *name, VMOUNT *(*mount)(char **options));
pd_vfs/vfs.c:31

VFSTYPE *Vfs_LookupType(char *type);
pd_vfs/vfs.c:53

int Vfs_Mount(char *path, char *type, char **options);
pd_vfs/vfs.c:75

VFSNAMESPACE *VFSNS_New(char *name);
pd_vfs/vfs_ns.c:25

char *VFSNS_GetScheme(char *name);
pd_vfs/vfs_ns.c:47

VFSNAMESPACE *VFSNS_LookupScheme(char *s);
pd_vfs/vfs_ns.c:77

VFILE *VFSNS_OpenFile(char *name, char *fl);
pd_vfs/vfs_ns.c:97

VDIR *VFSNS_OpenDir(char *name);
pd_vfs/vfs_ns.c:119

VFILE *vfsns_file_openf(char *name, char *fl, VFSNAMESPACE *ns);
pd_vfs/vfs_ns.c:134

VDIR *vfsns_file_opend(char *name, VFSNAMESPACE *ns);
pd_vfs/vfs_ns.c:139

int VFSNS_Init();
pd_vfs/vfs_ns.c:152

int VMount_Init();
pd_vfs/vmount.c:6

VMOUNT *VMount_ChooseBest(char *path, int w);
pd_vfs/vmount.c:19

int VMount_ClearMarks();
pd_vfs/vmount.c:54

VFILE *VMount_Open(VMOUNT *vd, char *name, char *fl);
pd_vfs/vmount.c:65

VDIR *VMount_OpenDir(VMOUNT *vd, char *name);
pd_vfs/vmount.c:71

VFILE *VMount_OpenSL(VMOUNT *vd, int idx, char *fl);
pd_vfs/vmount.c:77

int VMount_CreateSL(VMOUNT *vd, char *type);
pd_vfs/vmount.c:83

int VMount_LoadMounts(char *name);
pd_vfs/vmount.c:90

int VMount_RegisterMount(VMOUNT *vd, char *path);
pd_vfs/vmount.c:136

int VMount_PrintMounts();
pd_vfs/vmount.c:146

VMOUNT *VMount_LookupMount(char *name);
pd_vfs/vmount.c:157

int VMount_Unmount(VMOUNT *mount);
pd_vfs/vmount.c:170

int VPath_Init();
pd_vfs/vpath.c:26

VFILE *VPath_OpenFile(char *name, char *fl);
pd_vfs/vpath.c:95

VDIR *VPath_OpenDir(char *name);
pd_vfs/vpath.c:139

int VPath_MkDir(char *name);
pd_vfs/vpath.c:180

int VPath_Mount(char *dir, char *type, char **opts);
pd_vfs/vpath.c:226

int VPath_Unmount(char *name);
pd_vfs/vpath.c:252

VFSDI_Dir *VFSDI_LookupDir(char *name);
pd_vfs/vfsdi.c:6

int VFSDI_InheritDir(VFSDI_Dir *dir, char *name);
pd_vfs/vfsdi.c:20

VFSDI_Dir *VFSDI_FetchDir(char *name);
pd_vfs/vfsdi.c:40

VFILE *VFSDI_OpenDirFile(VFSDI_Dir *dir, char *name, char *fl);
pd_vfs/vfsdi.c:98

VFILE *vfsdi_file_openf(char *name, char *fl, VFSNAMESPACE *ns);
pd_vfs/vfsdi.c:115

VDIR *vfsdi_file_opend(char *name, VFSNAMESPACE *ns);
pd_vfs/vfsdi.c:165

int VFSDI_Init();
pd_vfs/vfsdi.c:170

VFILE *vf_wrap_file(FILE *fd);
pd_vfs/dirfs/dirfs.c:49

VFILE *vffopen(char *name, char *access);
pd_vfs/dirfs/dirfs.c:69

VFILE *vdd_open(char *name, char *fl, VMOUNT *dir);
pd_vfs/dirfs/dirfs.c:83

int vdd_d_readdir(char **names, void **values, long *key, VDIR *dir);
pd_vfs/dirfs/dirfs.c:111

int vdd_d_close(VDIR *dir);
pd_vfs/dirfs/dirfs.c:128

VDIR *vdd_opendir(char *name, VMOUNT *dir);
pd_vfs/dirfs/dirfs.c:134

VMOUNT *vdd_open_dir(char *name);
pd_vfs/dirfs/dirfs.c:166

VMOUNT *dirfs_mount(char **options);
pd_vfs/dirfs/dirfs.c:178

int dirfs_init();
pd_vfs/dirfs/dirfs.c:192

pdglue

Function Index

PDGLUE_Callback *PDGLUE_WrapCallback(void *self, void *func);
pd_glue/glue.c:6

void *PDGLUE_InvokeCallback(void *obj, void **args);
pd_glue/glue.c:21

int PDGLUE_Init();
pd_glue/glue.c:44

char *pdcgi_parse_str(char **sb);
pd_glue/cgi/cgi.c:15

int pdcgi_parse_args(char *s, char **names, char **vals);
pd_glue/cgi/cgi.c:48

int pdcgi_get(HTTP_Resource *rsrc, HTTP_Con *con, char **type, char **data, int *len);
pd_glue/cgi/cgi.c:69

int pdcgi_post(HTTP_Resource *rsrc, HTTP_Con *con, char **type, char **data, int *len);
pd_glue/cgi/cgi.c:102

int pdcgi_head(HTTP_Resource *rsrc, HTTP_Con *con, char **type, int *len);
pd_glue/cgi/cgi.c:106

int PDCGI_BGGL2_PrintCGI(BGGL2_Context *ctx);
pd_glue/cgi/cgi.c:116

int PDCGI_Init();
pd_glue/cgi/cgi.c:146

void *PDSCR_Interp_CallFunction(void *obj, void *func, void **args);
pd_glue/pdscr_net/tmp_if.c:6

void *PDSCR_Interp_CallMethod(void *obj, char *slot, void **args);
pd_glue/pdscr_net/tmp_if.c:7

int pdglue_tmp_handler(char *name, void *data, void **msg);
pd_glue/pdscr_net/tmp_if.c:9

int PDGLUE_TMP_ExportObject(char *name, void *obj);
pd_glue/pdscr_net/tmp_if.c:38

void *pdglue_tmp_export(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/tmp_if.c:44

void *pdglue_tmp_apply(PDSCR0_Context *ctx, void *self, void *func);
pd_glue/pdscr_net/tmp_if.c:54

char *pdglue_tmp_tostring(PDSCR0_Context *ctx, void *obj, BGGL2_Binding *args);
pd_glue/pdscr_net/tmp_if.c:74

void *pdglue_tmp_poolref(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/tmp_if.c:84

void *pdglue_tmp_localpoolref(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/tmp_if.c:91

int PDGLUE_TMP_Init();
pd_glue/pdscr_net/tmp_if.c:98

void *pdglue_sock_makeaddr(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/sock_if.c:6

void *pdglue_sock_string2addr(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/sock_if.c:22

void *pdglue_sock_listentcp(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/sock_if.c:35

void *pdglue_sock_connecttcp(PDSCR0_Context *ctx, void **args, int n);
pd_glue/pdscr_net/sock_if.c:43

void *pdglue_sock_accept(PDSCR0_Context *ctx, void *obj, void **args, int n);
pd_glue/pdscr_net/sock_if.c:57

int PDGLUE_Sock_Init();
pd_glue/pdscr_net/sock_if.c:77