Proposed Interfaces.

INTERFACE: Low-level File I/O

    Open/Seek/Read/Write/Close/Move/Delete.

The value of this seems really low. These interfaces are already typically in
a shared library.  Perhaps the gloss for VS2005 is becoming substantial enough
that this begins to make sense, but other interfaces should be tackled first.


INTERFACE: Low-level Attribute Access.

This is roughly at the level of CHashFile.  A low-level cache of CHashPages
is included here.


INTERFACE: Attribute Cache.

This is roughly at the attrcache.cpp level.  A higher-level LRU attribute
list is included here, but otherwise the upper and lower interfaces of this
layer is the same.


INTERFACE: High-Level Attribute Access.

This is roughly at the db.cpp level and is also where memory-based access
interjects itself.


INTERFACE: Compression.

Self-evident.


INTERFACE: Managing (add/remove/query) softcode function table.


INTERFACE: Managing (add/remove/query) softcode command table.


INTERFACE: Managing (add/remove/query) softcode powers table.


INTERFACE: Managing (add/remove/query) softcode flags table.


INTERFACE: Managing (add/remove/query) INFO.


INTERFACE: FUNCTION interface.


INTERFACE: Various CMD_ interfaces.


INTERFACE: Interface to query, schedule, and cancel lower-level tasks.


INTERFACE: Task callback interface used by the lower-level queue routines.



INTERFACE: Access to logging routines, the log file, and control of the log file (Done).

const MUX_CID CID_Log        = 0x000000020CE18E7Aull;
const MUX_IID IID_ILog       = 0x000000028B9DC13Aull;

interface ILog : public mux_IUnknown
{
public:
    virtual bool start_log(int key, const UTF8 *primary, const UTF8 *secondary) = 0;

    virtual void log_perror(const UTF8 *primary, const UTF8 *secondary, const UTF8 *extra, const UTF8 *failing_object) = 0;
    virtual void log_text(const UTF8 *text) = 0;
    virtual void log_number(int num) = 0;
    virtual void DCL_CDECL log_printf(const char *fmt, ...) = 0;
    virtual void log_name(dbref target) = 0;
    virtual void log_name_and_loc(dbref player) = 0;
    virtual void log_type_and_name(dbref thing) = 0;

    virtual void end_log(void) = 0;
};



INTERFACE: Access to basic conversions and utility functions.


INTERFACE: Access to time handling.


INTERFACE: Access to floating point.


INTERFACE: Access to PCRE and string matching.


INTERFACE: Access to alloc_lbuf/free_lbuf and friends.


INTERFACE: Access to the parsers.


INTERFACE: Access to the object array and attribute tables.
