summaryrefslogtreecommitdiff
path: root/source4/lib/appweb/ejs-2.0/mpr/mpr.h
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/appweb/ejs-2.0/mpr/mpr.h')
-rw-r--r--source4/lib/appweb/ejs-2.0/mpr/mpr.h1027
1 files changed, 0 insertions, 1027 deletions
diff --git a/source4/lib/appweb/ejs-2.0/mpr/mpr.h b/source4/lib/appweb/ejs-2.0/mpr/mpr.h
deleted file mode 100644
index 67505a6e01..0000000000
--- a/source4/lib/appweb/ejs-2.0/mpr/mpr.h
+++ /dev/null
@@ -1,1027 +0,0 @@
-/*
- * @file mpr.h
- * @brief Header for the Mbedthis Portable Runtime (MPR) Base.
- * @copy default
- *
- * Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved.
- *
- * This software is distributed under commercial and open source licenses.
- * You may use the GPL open source license described below or you may acquire
- * a commercial license from Mbedthis Software. You agree to be fully bound
- * by the terms of either license. Consult the LICENSE.TXT distributed with
- * this software for full details.
- *
- * This software is open source; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version. See the GNU General Public License for more
- * details at: http://www.mbedthis.com/downloads/gplLicense.html
- *
- * This program is distributed WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * This GPL license does NOT permit incorporating this software into
- * proprietary programs. If you are unable to comply with the GPL, you must
- * acquire a commercial license to use this software. Commercial licenses
- * for this software and support services are available from Mbedthis
- * Software at http://www.mbedthis.com
- *
- * @end
- */
-/******************************* Documentation ********************************/
-/*
- * See mpr.dox for additional documentation.
- */
-
-/******************************************************************************/
-
-#ifndef _h_MPR
-#define _h_MPR 1
-
-/***********************************Includes **********************************/
-
-#include "mprOs.h"
-
-/******************************************************************************/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/********************************** Constants *********************************/
-
-#if BLD_FEATURE_SQUEEZE
-#if BREW || DOXYGEN
-/*
- * Maximum length of a file path name. Reduced from the system maximum to
- * save memory space.
- */
-#define MPR_MAX_FNAME 64 /**< Reasonable filename size */
-#define MPR_MAX_PATH 64 /**< Reasonable path name size */
-#define MPR_DEFAULT_STACK (16 * 1024) /**< Default stack size */
-#else
-#define MPR_MAX_FNAME 128 /**< Reasonable filename size */
-#define MPR_MAX_PATH 256 /**< Reasonable path name size */
-#define MPR_DEFAULT_STACK (32 * 1024) /**< Default stack size */
-#endif
-/*
- * Reasonable length of a file name used by the product. Use where you know
- * the expected file name and it is certain to be less than this limit.
- */
-#define MPR_DEFAULT_ALLOC 64 /**< Default small alloc size */
-#define MPR_DEFAULT_HASH_SIZE 23 /**< Default size of hash table */
-#define MPR_MAX_ARGC 32 /**< Reasonable max of args */
-#define MPR_MAX_STRING 512 /**< Maximum (stack) string size */
-#define MPR_MAX_LOG_STRING 512 /**< Maximum log message */
-#define MPR_MAX_URL 256 /**< Reasonable size of a URL */
-#define MPR_BUFSIZE 512 /**< Reasonable size for buffers */
-#define MPR_SLAB_STR_MAX 32 /**< Size of string slab blocks */
-#define MPR_SLAB_STR_INC 32 /**< Pre-allocate increment */
-#define MPR_SLAB_DEFAULT_INC 8 /**< Default pre-allocate inc */
-#define MPR_ARRAY_INCR 8 /**< Default array growth inc */
-#define MPR_BUF_INCR 1024 /**< Default array growth inc */
-#define MPR_MAX_BUF (1024*4096) /**< Default array growth inc */
-
-#define MPR_BLK_HDR_SIZE ((sizeof(struct MprBlk) + 3) & ~3)
-
-#else
-#define MPR_MAX_FNAME 256
-#define MPR_MAX_PATH 1024
-#define MPR_DEFAULT_ALLOC 256
-#define MPR_DEFAULT_HASH_SIZE 43
-#define MPR_DEFAULT_STACK (64 * 1024)
-#define MPR_MAX_ARGC 128
-#define MPR_MAX_STRING 4096
-#define MPR_MAX_LOG_STRING 8192
-#define MPR_MAX_URL 1024
-#define MPR_BUFSIZE 1024
-#define MPR_SLAB_STR_MAX 32
-#define MPR_SLAB_STR_INC 64
-#define MPR_SLAB_DEFAULT_INC 16
-#define MPR_ARRAY_INCR 16
-#define MPR_BUF_INCR 1024
-#define MPR_MAX_BUF (1024*4096)
-
-#define MPR_BLK_HDR_SIZE ((sizeof(struct MprBlk) + 15) & ~15)
-#endif
-
-/**
- * Maximum size of a host name string
- */
-#define MPR_MAX_IP_NAME 64
-
-/**
- * Maximum size of an IP address
- */
-#define MPR_MAX_IP_ADDR 16
-
-/**
- * Maximum size of an IP address including port number
- */
-#define MPR_MAX_IP_ADDR_PORT 32
-
-#define MPR_MAX_SLAB 16 /* Slabs from 32-512 bytes */
-
-#define MPR_MAX_TIME_SYNC (10 * 1000) /* Time sync adjustments */
-
-/**
- * @overview Memory context type
- * @description Blocks of memory are allocated using a memory context
- * as the parent with the \ref MprApp structure being the root of the
- * tree. Any allocated memory block may serve as the memory context for
- * subsequent memory allocations. Freeing a block via \ref mprFree will
- * release the allocated block and all child blocks.
- * @stability Prototype.
- * @library libmpr.
- * @see mprInit, mprAlloc, mprFree
- */
-typedef const void *MprCtx;
-
-/*
- * Allocated memory destructor type
- */
-typedef int (*MprDestructor)(void *);
-
-/******************************** Error Codes *********************************/
-
-/*
- * Standard MPR return and error codes
- */
-
-#define MPR_ERR_OK (0)
-/**< Success */
-
-#define MPR_ERR_BASE (-200)
-/**< Base error code */
-
-#define MPR_ERR_GENERAL (MPR_ERR_BASE - 1)
-/**< General error */
-#define MPR_ERR_ABORTED (MPR_ERR_BASE - 2)
-/**< Action aborted */
-#define MPR_ERR_ALREADY_EXISTS (MPR_ERR_BASE - 3)
-/**< Item already exists */
-#define MPR_ERR_BAD_ARGS (MPR_ERR_BASE - 4)
-/**< Bad arguments or paramaeters */
-#define MPR_ERR_BAD_FORMAT (MPR_ERR_BASE - 5)
-/**< Bad input format */
-#define MPR_ERR_BAD_HANDLE (MPR_ERR_BASE - 6)
-#define MPR_ERR_BAD_STATE (MPR_ERR_BASE - 7)
-/**< Module is in a bad state */
-#define MPR_ERR_BAD_SYNTAX (MPR_ERR_BASE - 8)
-/**< Input has bad syntax */
-#define MPR_ERR_BAD_TYPE (MPR_ERR_BASE - 9)
-#define MPR_ERR_BAD_VALUE (MPR_ERR_BASE - 10)
-#define MPR_ERR_BUSY (MPR_ERR_BASE - 11)
-#define MPR_ERR_CANT_ACCESS (MPR_ERR_BASE - 12)
-/**< Can't access the file or resource */
-#define MPR_ERR_CANT_COMPLETE (MPR_ERR_BASE - 13)
-#define MPR_ERR_CANT_CREATE (MPR_ERR_BASE - 14)
-/**< Can't create the file or resource */
-#define MPR_ERR_CANT_INITIALIZE (MPR_ERR_BASE - 15)
-#define MPR_ERR_CANT_OPEN (MPR_ERR_BASE - 16)
-/**< Can't open the file or resource */
-#define MPR_ERR_CANT_READ (MPR_ERR_BASE - 17)
-/**< Can't read from the file or resource */
-#define MPR_ERR_CANT_WRITE (MPR_ERR_BASE - 18)
-/**< Can't write to the file or resource */
-#define MPR_ERR_DELETED (MPR_ERR_BASE - 19)
-#define MPR_ERR_NETWORK (MPR_ERR_BASE - 20)
-#define MPR_ERR_NOT_FOUND (MPR_ERR_BASE - 21)
-#define MPR_ERR_NOT_INITIALIZED (MPR_ERR_BASE - 22)
-/**< Module or resource is not initialized */
-#define MPR_ERR_NOT_READY (MPR_ERR_BASE - 23)
-#define MPR_ERR_READ_ONLY (MPR_ERR_BASE - 24)
-/**< The operation timed out */
-#define MPR_ERR_TIMEOUT (MPR_ERR_BASE - 25)
-#define MPR_ERR_TOO_MANY (MPR_ERR_BASE - 26)
-#define MPR_ERR_WONT_FIT (MPR_ERR_BASE - 27)
-#define MPR_ERR_WOULD_BLOCK (MPR_ERR_BASE - 28)
-#define MPR_ERR_CANT_ALLOCATE (MPR_ERR_BASE - 29)
-// MOB -- rename NO_MEMORY
-#define MPR_ERR_MEMORY (MPR_ERR_BASE - 30)
-#define MPR_ERR_CANT_DELETE (MPR_ERR_BASE - 31)
-#define MPR_ERR_MAX (MPR_ERR_BASE - 32)
-
-/*
- * Standard logging trace levels are 0 to 9 with 0 being the most verbose.
- * the These are ored with the error source and type flags. The MPR_LOG_MASK
- * is used to extract the trace level from a flags word. We expect most apps
- * to run with level 2 trace enabled.
- */
-#define MPR_ERROR 1 /**< Hard error trace level */
-#define MPR_WARN 2 /**< Soft warning trace level */
-#define MPR_CONFIG 2 /**< Configuration settings trace level. */
-#define MPR_INFO 3 /**< Informational trace only */
-#define MPR_DEBUG 4 /**< Debug information trace level */
-#define MPR_VERBOSE 9 /**< Highest level of trace */
-#define MPR_LEVEL_MASK 0xf /**< Level mask */
-
-/*
- * Error source flags
- */
-#define MPR_ERROR_SRC 0x10 /**< Originated from mprError */
-#define MPR_LOG_SRC 0x20 /**< Originated from mprLog */
-#define MPR_ASSERT_SRC 0x40 /**< Originated from mprAssert */
-#define MPR_FATAL_SRC 0x80 /**< Fatal error. Log and exit */
-
-/*
- * Log message type flags. Specify what kind of log / error message it is.
- * Listener handlers examine this flag to determine if they should process
- * the message.Assert messages are trapped when in DEV mode. Otherwise ignored.
- */
-#define MPR_LOG_MSG 0x100 /**< Log trace message - not an error */
-#define MPR_ERROR_MSG 0x200 /**< General error */
-#define MPR_ASSERT_MSG 0x400 /**< Assert flags -- trap in debugger */
-#define MPR_USER_MSG 0x800 /**< User message */
-
-/*
- * Log output modifiers
- */
-#define MPR_RAW 0x1000 /**< Raw trace output */
-
-/*
- * Error line number information.
- */
-#define MPR_LINE(s) #s
-#define MPR_LINE2(s) MPR_LINE(s)
-#define MPR_LINE3 MPR_LINE2(__LINE__)
-#define MPR_LOC __FILE__ ":" MPR_LINE3
-
-/*
- * Macros to pass file and line number information
- * Use MPR_LOC_ARGS in normal user code.
- * Use MPR_LOC_DEC in declarations.
- * Use MPR_LOC_PASS in layered APIs to pass original line info down.
- */
-#if BLD_FEATURE_ALLOC_LEAK_TRACK
-#define MPR_LOC_ARGS(ctx) ctx, MPR_LOC
-#define MPR_LOC_DEC(ctx, loc) MprCtx ctx, const char *loc
-#define MPR_LOC_PASS(ctx, loc) ctx, loc
-#else
-#define MPR_LOC_ARGS(ctx) ctx
-#define MPR_LOC_DEC(ctx, loc) MprCtx ctx
-#define MPR_LOC_PASS(ctx, loc) ctx
-#endif
-
-/******************************* Debug and Assert *****************************/
-
-extern void mprBreakpoint(const char *loc, const char *msg);
-
-#if BLD_FEATURE_ASSERT
- #define mprAssert(C) if (C) ; else mprStaticAssert(MPR_LOC, #C)
-#else
- #define mprAssert(C) if (1) ; else
-#endif
-
-/********************************* Safe Strings *******************************/
-/*
- * Unsafe functions that should not be used. Define UNSAFE_STRINGS_OK before
- * including mpr.h if you really want to use these functions. A better approach
- * is to undefine them just prior to using them in your C/C++ source file.
- */
-#if BLD_FEATURE_SAFE_STRINGS
-
-#if BLD_FEATURE_PHP4_MODULE || BLD_FEATURE_PHP5_MODULE
- #ifndef UNSAFE_FUNCTIONS_OK
- #define UNSAFE_FUNCTIONS_OK 1
- #endif
-#endif
-
-#ifndef UNSAFE_FUNCTIONS_OK
- #define sprintf UseMprSprintfInstead
- #define fprintf UseMprFprintfInstead
- #define vsprintf UseMprVsprintfInstead
- #define strtok UseMprStrTokInstead
- #define gethostbyname UseMprGetHostByNameInstead
- #define ctime UseMprCtimeInstead
- #define asctime UseMprAsctimeInstead
- #define localtime UseMprLocaltimeInstead
- #define gmtime UseMprGmtimeInstead
- #define malloc UseMprMallocInstead
- #define free UseMprFreeInstead
- #define realloc UseMprReallocInstead
- #define strncpy UseMprStrcpyInstead
- #define inet_ntoa UseMprInetToStrInstead
-
-#if !BREW
- #define printf UseMprPrintfInstead
-#endif
-
- #if FUTURE
- #define strlen UseMprStrlenInstead
- #define strcpy UseMprStrcpyInstead
- #endif
-
-#endif /* UNSAFE_FUNCTIONS_OK */
-#endif /* BLD_FEATURE_SAFE_STRINGS */
-
-/******************************************************************************/
-
-struct MprBuf;
-typedef int (*MprBufProc)(struct MprBuf* bp, void *arg);
-
-/**
- * @overview Dynamic buffer structure
- * @description MprBuf is a flexible, dynamic growable buffer structure. It
- * utilizes a ring buffer mechanism and is suitable for high performance
- * buffering in a variety of situations.
- * @stability Prototype.
- * @library libmpr.
- * @see mprCreateBuf, mprFree, MprArray
- */
-typedef struct MprBuf {
- uchar *buf; /* Actual buffer for data */
- uchar *endbuf; /* Pointer one past the end of buffer */
- uchar *start; /* Pointer to next data char */
- uchar *end; /* Pointer one past the last data chr */
- int buflen; /* Current size of buffer */
- int maxsize; /* Max size the buffer can ever grow */
- int growBy; /* Next growth increment to use */
- MprBufProc refillProc; /* Auto-refill procedure */
- void *refillArg; /* Refill arg */
-} MprBuf;
-
-/**
- * @overview File structure
- * @description MprFile is the cross platform File I/O abstraction control
- * structure.
- * @stability Prototype.
- * @library libmpr.
- * @see mprOpen, mprClose, mprRead, mprWrite
- */
-typedef struct MprFile
-{
- MprBuf *buf; /* Buffer for I/O */
-#if BREW
- IFile *fd; /* File handle */
-#else
- int fd;
-#endif
-} MprFile;
-
-/**
- * File information structure
- * @overview File information structure
- * @description MprFileInfo is the cross platform File information structure.
- * @stability Prototype.
- * @see mprGetFileInfo, mprOpen, mprClose, mprRead, mprWrite
- */
-typedef struct MprFileInfo
-{
- uint size; /* File length */
- uint ctime; /* Create time */
- uint mtime; /* Modified time */
- uint inode; /* Inode number */
- int isDir; /* Set if directory */
- int isReg; /* Set if a regular file */
-} MprFileInfo;
-
-/**
- * @overview Mpr time structure.
- * @description MprTime is the cross platform time abstraction structure.
- * @stability Prototype.
- * @library libmpr.
- * @see mprGetTime
- */
-typedef struct MprTime
-{
- uint sec; /* Seconds */
- uint msec; /* Milliseconds */
-} MprTime;
-
-
-/**
- * @overview Generic array type
- * @description The MprArray is a dynamic growable array suitable for storing
- * pointers to arbitrary objects.
- * @stability Prototype.
- * @library libmpr.
- * @see mprCreateItemArray, mprFree, MprBuf
- */
-typedef struct MprArray
-{
- int capacity; /* Current capacity of the array */
- int length; /* Count of used items */
- int incr; /* Growth increment */
- int maxSize; /* Maximum capacity */
- void **items;
-} MprArray;
-
-
-#if BLD_FEATURE_MULTITHREAD
-/**
- * @overview Multithreading lock control structure
- * @description MprLock is used for multithread locking in multithreaded
- * applications.
- * @library libmpr.
- * @see mprCreateLock, mprDestroyLock, mprLock, mprUnlock
- */
-typedef struct
-{
- #if WIN
- CRITICAL_SECTION cs; /* O/S critical section */
- #endif
- #if LINUX || MACOSX || SOLARIS
- pthread_mutex_t cs; /* O/S critical section */
- #endif
- #if VXWORKS
- SEM_ID cs; /* Semaphore */
- #endif
-} MprLock;
-#endif
-
-/*
- * Error and Logging callback
- */
-typedef void (*MprLogHandler)(MPR_LOC_DEC(ctx, loc), int flags,
- int level, const char *msg);
-
-/*
- * Symbol table
- * MOB -- rename hash
- */
-typedef struct MprSymbol
-{
- struct MprSymbol *next; /* Next symbol in hash chain */
- char *key; /* Symbol key */
- void *data; /* Pointer to symbol data */
- int bucket; /* Hash bucket index */
-} MprSymbol;
-
-typedef struct MprSymbolTable
-{
- MprSymbol **buckets;
- int hashSize; /* Size of the buckets array */
- int count; /* Number of symbols in the table */
-} MprSymbolTable;
-
-
-/*
- * Memory allocation error callback
- */
-struct MprApp;
-typedef int (*MprAllocCback)(struct MprApp *app, uint size, uint total,
- bool granted);
-
-
-/*
- * Slab block pointer links
- */
-typedef struct MprSlabBlock {
- struct MprSlabBlock *next;
-} MprSlabBlock;
-
-
-#if BLD_FEATURE_ALLOC_STATS
-/*
- * Memory Slab Statistics
- */
-typedef struct MprSlabStats {
- uint allocCount; /* Number of allocated blocks */
- uint freeCount; /* Number of blocks on the slab freelist */
- uint peakAllocCount; /* Peak allocated */
- uint totalAllocCount; /* Total count of allocation calls */
- uint peakFreeCount; /* Peak on the free list */
- MprSlabBlock *next;
-} MprSlabStats;
-#endif
-
-
-/*
- * Slab control structure
- */
-typedef struct MprSlab {
- MprSlabBlock *next;
- uint preAllocateIncr; /* Pre-allocation increment */
-#if BLD_FEATURE_ALLOC_STATS
- MprSlabStats stats;
-#endif
-} MprSlab;
-
-/*
- * Allocation stats (kept even in production code so we can detect memory
- * allocation failures)
- */
-typedef struct MprAllocStats
-{
- uint bytesAllocated; /* Bytes currently allocated */
- uint peakAllocated; /* Peak bytes allocated */
- uint allocCount; /* Number of allocated blocks */
- uint redLine; /* Warn above this level */
- uint maxMemory; /* Max memory to allocate */
- uint errors; /* Allocation errors */
-} MprAllocStats;
-
-/*
- * Memory allocation control
- */
-
-typedef struct MprAlloc {
- MprSlab *slabs; /* Array[MPR_MAX_SLAB] of MprSlab */
- MprAllocCback cback; /* Memory allocation callback */
- MprAllocStats stats; /* Keep stats even in release */
- int inAllocException; /* Recursive protect */
-} MprAlloc;
-
-
-/*
- * MprApp State Flags
- */
-#define MPR_APP_EXITING 0x1 /* App is exiting */
-#define MPR_APP_ALLOC_ERROR 0x2 /* App has allocation error */
-
-/* MOB -- temporary */
-#define MPR_APP_NEED_GC 0x4 /* App needs GC */
-
-/**
- * @overview Primary MPR application control structure
- * @description The MprApp structure stores critical application state
- * information and is the root memory allocation context block. It is
- * used as the MprCtx context for other memory allocations and is thus
- * the ultimate parent of all allocated memory.
- * \n\n
- * The MprApp structure is allocated by the mprInit API.
- */
-typedef struct MprApp
-{
- uint magic; /* Corruption protection */
- MprFile *console; /* Stdout file */
- bool debugMode; /* Run in debug mode (no timers) */
- MprFile *error; /* Stderr file */
- int logLevel; /* Log trace level */
- MprFile *logFile; /* Log file */
- MprLogHandler logHandler; /* Current log handler callback */
- MprSymbolTable *table;
- char *name; /* Product name */
- char *title; /* Product title */
- char *version; /* Product version */
-
-#if BREW
- uint classId; /* Brew class ID */
- IShell *shell; /* Brew shell object */
- IDisplay *display; /* Brew display object */
- IFileMgr *fileMgr; /* File manager */
- ITAPI *tapi; /* TAPI object */
- int displayHeight; /* Display height */
- int displayWidth; /* Display width */
- char *args; /* Command line args */
-#endif
-
- void *stackStart; /* Start of app stack */
- uint maxStack; /* Max stack size recorded */
-
- MprAlloc alloc; /* Memory allocation data */
- int flags; /* App state flags */
-
-#if BLD_FEATURE_MULTITHREAD
- MprLock *globalLock;
- MprLock *allocLock;
-#endif
-} MprApp;
-
-
-/*
- * String type. Minimum size is 8 words (32 bytes).
- */
-#define MPR_MAX_INLINE_STR 24
-
-
-/*
- * The block header structure for all allocated memory blocks (32 bytes)
- * WARNING: Don't increase the size of this structure. It just fits into
- * 32 bytes currently. Alignment requirements will double this size if you
- * add one byte!
- */
-typedef struct MprBlk
-{
- MprApp *app; /* app is the top level alloc context */
- struct MprBlk *parent; /* Parent block */
- struct MprBlk *children; /* First child block */
- struct MprBlk *next; /* Next sibling */
- struct MprBlk *prev; /* Previous sibling */
- MprDestructor destructor; /* Destructor function (optional) */
- uint size; /* Size of block sans HDR_SIZE */
- uint flags; /* Allocation flags and magic number */
-#if BLD_FEATURE_ALLOC_LEAK_TRACK
- const char *location; /* Allocating code (file + line) */
-#endif
-} MprBlk;
-
-/******************************************************************************/
-/****************************** Internal Prototypes ***************************/
-/******************************************************************************/
-
-extern void mprSignalAllocError(MprCtx ctx);
-
-/******************************************************************************/
-/********************************** Prototypes ********************************/
-/******************************************************************************/
-
-extern MprApp *mprInit(MprAllocCback cback);
-extern MprApp *mprInitEx(MprAllocCback cback, void *shell);
-extern void mprTerm(MprApp *app, bool doStats);
-extern void mprSignalExit(MprCtx ctx);
-extern bool mprIsExiting(MprCtx ctx);
-extern bool mprHasAllocError(MprCtx ctx);
-
-#if BLD_DEBUG && UNUSED
-extern MprApp *mprGetApp(MprCtx ctx);
-#else
-#define mprGetApp(ctx) \
- (((MprBlk*) ((char*) ctx - MPR_BLK_HDR_SIZE))->app)
-#endif
-
-/******************************************************************************/
-
-extern int mprSetKeyValue(MprCtx ctx, const char *key, void *ptr);
-/* MOB -- should this be delete or remove or unset */
-extern int mprRemoveKeyValue(MprCtx ctx, const char *key);
-extern void *mprGetKeyValue(MprCtx ctx, const char *key);
-/* MOB -- should be setAppName, getAppName */
-extern int mprSetAppName(MprCtx ctx, const char *name, const char *title,
- const char *version);
-extern const char *mprGetAppName(MprCtx ctx);
-extern const char *mprGetAppTitle(MprCtx ctx);
-extern const char *mprGetAppVersion(MprCtx ctx);
-
-/*
- * File services
- */
-extern void mprStopFileServices(MprCtx ctx);
-extern int mprStartFileServices(MprCtx ctx);
-
-/*
- * Item Array
- */
-#define mprCreateItemArray(ctx, initialSize, maxSize) \
- mprCreateItemArrayInternal(MPR_LOC_ARGS(ctx), initialSize, \
- maxSize)
-
-extern MprArray *mprCreateItemArrayInternal(MPR_LOC_DEC(ctx, loc),
- int initialSize, int maxSize);
-/* MOB -- should be insert not add/delete or insert / remove */
-extern int mprAddItem(MprArray *array, void *item);
-extern void mprClearItems(MprArray *array);
-extern void mprClearAndFreeItems(MprArray *array);
-extern int mprFindItem(MprArray *array, void *item);
-extern void *mprGetFirstItem(MprArray *array, int *lastIndex);
-extern void *mprGetItem(MprArray *array, int index);
-extern int mprGetItemCapacity(MprArray *array);
-extern int mprGetItemCount(MprArray *array);
-extern void *mprGetNextItem(MprArray *array, int *lastIndex);
-extern void *mprGetPrevItem(MprArray *array, int *lastIndex);
-extern int mprRemoveItem(MprArray *array, void *item);
-extern int mprRemoveItemByIndex(MprArray *array, int index);
-extern int mprRemoveRangeOfItems(MprArray *array, int start, int end);
-
-
-/*
- * Printf replacements
- */
-extern int mprSprintf(char *buf, int maxSize, const char *fmt, ...)
- PRINTF_ATTRIBUTE(3,4);
-extern int mprVsprintf(char *buf, int maxSize, const char *fmt,
- va_list arg) PRINTF_ATTRIBUTE(3,0);
-extern char *mprItoa(char *buf, int size, int value);
-extern int mprAtoi(const char *str, int radix);
-
-extern int mprPrintf(MprCtx ctx, const char *fmt, ...)
- PRINTF_ATTRIBUTE(2,3);
-/* MOB -- NEED DOC */
-extern int mprErrorPrintf(MprCtx ctx, const char *fmt, ...)
- PRINTF_ATTRIBUTE(2,3);
-extern int mprStaticPrintf(MprCtx ctx, const char *fmt, ...)
- PRINTF_ATTRIBUTE(2,3);
-extern int mprPrintfError(MprCtx ctx, const char *fmt, ...)
- PRINTF_ATTRIBUTE(2,3);
-extern int mprFprintf(MprFile *file, const char *fmt, ...)
- PRINTF_ATTRIBUTE(2,3);
-
-/*
- * Safe string routines
- */
-extern char *mprGetWordTok(char *buf, int bufsize, const char *str,
- const char *delim, const char **tok);
-extern int mprMemcpy(char *dest, int destMax, const char *src,
- int nbytes);
-extern int mprStrcat(char *dest, int max, const char *delim,
- const char *src, ...);
-extern int mprStrcpy(char *dest, int destMax, const char *src);
-
-extern int mprStrcmpAnyCase(const char *str1, const char *str2);
-extern int mprStrcmpAnyCaseCount(const char *str1, const char *str2,
- int len);
-extern int mprStrlen(const char *src, int max);
-
-extern char *mprStrLower(char *str);
-extern char *mprStrUpper(char *str);
-extern char *mprStrTrim(char *str, const char *set);
-extern char *mprStrTok(char *str, const char *delim, char **last);
-
-/*
- * Symbol table
- */
-extern MprSymbolTable *mprCreateSymbolTable(MprCtx ctx, int hashSize);
-extern MprSymbol *mprGetFirstSymbol(MprSymbolTable *table);
-extern MprSymbol *mprGetNextSymbol(MprSymbolTable *table, MprSymbol *last);
-extern int mprGetSymbolCount(MprSymbolTable *table);
-extern MprSymbol *mprInsertSymbol(MprSymbolTable *table, const char *key,
- void *ptr);
-extern void *mprLookupSymbol(MprSymbolTable *table, const char *key);
-extern int mprRemoveSymbol(MprSymbolTable *table, const char *key);
-
-/*
- * File I/O support
- */
-extern void mprClose(MprFile *file);
-extern int mprDelete(MprCtx ctx, const char *path);
-extern int mprDeleteDir(MprCtx ctx, const char *path);
-extern int mprGetFileInfo(MprCtx ctx, const char *path, MprFileInfo *info);
-extern char *mprGets(MprFile *file, char *buf, uint size);
-extern int mprMakeDir(MprCtx ctx, const char *path, int perms);
-extern MprFile *mprOpen(MprCtx ctx, const char *path, int omode, int perms);
-extern int mprPuts(MprFile *file, const char *buf, uint size);
-extern int mprRead(MprFile *file, void *buf, uint size);
-extern int mprSeek(MprFile *file, int seekType, long distance);
-extern int mprWrite(MprFile *file, const void *buf, uint count);
-
-extern int mprMakeTempFileName(MprCtx ctx, char *buf, int bufsize,
- const char *tmpDir);
-
-
-/*
- * Error handling and logging
- */
-extern void mprSetLogHandler(MprCtx ctx, MprLogHandler handler);
-extern MprLogHandler mprGetLogHandler(MprCtx ctx);
-
-extern void mprAssertError(MPR_LOC_DEC(ctx, loc), const char *msg);
-extern void mprError(MPR_LOC_DEC(ctx, loc),
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-extern void mprFatalError(MPR_LOC_DEC(ctx, loc),
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-extern void mprLog(MprCtx ctx, int level,
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-extern void mprRawLog(MprCtx ctx, const char *fmt, ...);
-extern void mprStaticAssert(const char *loc, const char *msg);
-extern void mprStaticError(MPR_LOC_DEC(ctx, loc),
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-extern void mprUserError(MPR_LOC_DEC(ctx, loc),
- const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);
-
-/*
- * Dynamic Buffering routines
- */
-extern MprBuf *mprCreateBuf(MprCtx ctx, int initialSize, int maxSize);
-extern char *mprStealBuf(MprCtx ctx, MprBuf *bp);
-extern void mprAddNullToBuf(MprBuf *bp);
-extern void mprAdjustBufStart(MprBuf *bp, int size);
-extern void mprAdjustBufEnd(MprBuf *bp, int size);
-extern void mprCopyBufDown(MprBuf *bp);
-extern void mprFlushBuf(MprBuf *bp);
-extern int mprGetCharFromBuf(MprBuf *bp);
-extern int mprGetBlockFromBuf(MprBuf *bp, uchar *buf, int len);
-extern int mprGetBufLength(MprBuf *bp);
-extern int mprGetBufLinearSpace(MprBuf *bp);
-extern int mprGetBufLinearData(MprBuf *bp);
-extern char *mprGetBufOrigin(MprBuf *bp);
-extern int mprGetBufSize(MprBuf *bp);
-extern int mprGetBufSpace(MprBuf *bp);
-extern char *mprGetBufStart(MprBuf *bp);
-extern char *mprGetBufEnd(MprBuf *bp);
-extern int mprInsertCharToBuf(MprBuf *bp, int c);
-extern int mprLookAtNextCharInBuf(MprBuf *bp);
-extern int mprLookAtLastCharInBuf(MprBuf *bp);
-extern int mprPutCharToBuf(MprBuf *bp, int c);
-extern int mprPutBlockToBuf(MprBuf *bp, const char *str, int size);
-extern int mprPutIntToBuf(MprBuf *bp, int i);
-extern int mprPutStringToBuf(MprBuf *bp, const char *str);
-extern int mprPutFmtStringToBuf(MprBuf *bp, const char *fmt, ...);
-extern int mprRefillBuf(MprBuf *bp);
-extern void mprResetBufIfEmpty(MprBuf *bp);
-extern void mprSetBufSize(MprBuf *bp, int initialSize, int maxSize);
-extern MprBufProc mprGetBufRefillProc(MprBuf *bp);
-extern void mprSetBufRefillProc(MprBuf *bp, MprBufProc fn, void *arg);
-
-/*
- * General other xPlatform routines
- */
-extern const char *mprGetBaseName(const char *name);
-extern bool mprGetDebugMode(MprCtx ctx);
-extern char *mprGetDirName(char *buf, int bufsize, const char *path);
-extern char *mprGetFullPathName(char *buf, int buflen, const char *path);
-extern int mprGetLogLevel(MprCtx ctx);
-extern int mprGetOsError();
-
-
-extern int mprMakeArgv(MprCtx ctx, const char *prog, const char *cmd,
- char ***argv, int *argc);
-extern int mprMakeDirPath(MprCtx ctx, const char *path);
-extern void mprSetDebugMode(MprCtx ctx, bool on);
-extern void mprSetLogLevel(MprCtx ctx, int level);
-extern void mprSleep(MprCtx ctx, int msec);
-extern void mprSetShell(MprCtx ctx, void *shell);
-extern void *mprGetShell(MprCtx ctx);
-extern void mprSetClassId(MprCtx ctx, uint classId);
-extern uint mprGetClassId(MprCtx ctx);
-
-#if BREW
-extern void mprSetDisplay(MprCtx ctx, void *display);
-extern void *mprGetDisplay(MprCtx ctx);
-extern void mprSetFileMgr(MprCtx ctx, void *fileMgr);
-extern void *mprGetFileMgr(MprCtx ctx);
-#else
-extern char *mprInetToStr(char *buf, int size, const struct in_addr in);
-#endif
-
-/*
- * Memory allocation
- */
-extern MprApp *mprAllocInit(MprAllocCback cback);
-extern void mprAllocTerm(MprApp *app);
-extern void mprAllocAbort();
-
-extern void *mprAllocBlock(MPR_LOC_DEC(ctx, loc), uint size);
-extern void *mprAllocZeroedBlock(MPR_LOC_DEC(ctx, loc), uint size);
-extern void *mprReallocBlock(MPR_LOC_DEC(ctx, loc), void *ptr, uint size);
-extern int mprFree(void *ptr);
-extern int mprStealAllocBlock(MPR_LOC_DEC(ctx, loc), const void *ptr);
-extern void *mprMemdupInternal(MPR_LOC_DEC(ctx, loc), const void *ptr,
- uint size);
-extern char *mprStrndupInternal(MPR_LOC_DEC(ctx, loc), const char *str,
- uint size);
-extern char *mprStrdupInternal(MPR_LOC_DEC(ctx, loc), const char *str);
-
-extern void *mprSlabAllocBlock(MPR_LOC_DEC(ctx, loc), uint size, uint inc);
-extern void *mprSlabAllocZeroedBlock(MPR_LOC_DEC(ctx, loc), uint size,
- uint inc);
-
-extern uint mprGetAllocBlockSize(MprCtx ctx);
-extern uint mprGetAllocBlockCount(MprCtx ctx);
-extern uint mprGetAllocBlockMemory(MprCtx ctx);
-extern void *mprGetAllocParent(MprCtx ctx);
-extern uint mprGetAllocatedMemory(MprCtx ctx);
-extern uint mprGetPeakAllocatedMemory(MprCtx ctx);
-extern uint mprGetAllocatedSlabMemory(MprCtx ctx);
-extern int mprIsAllocBlockValid(MprCtx ctx);
-extern int mprStackCheck(MprCtx ctx);
-extern int mprStackSize(MprCtx ctx);
-extern int mprGetAllocErrors(MprCtx ctx);
-extern void mprClearAllocErrors(MprCtx ctx);
-
-extern MprDestructor mprSetDestructor(MprCtx ctx, MprDestructor destructor);
-extern MprAllocCback mprSetAllocCallback(MprApp *app, MprAllocCback cback);
-extern void mprSetAllocLimits(MprApp *app, uint redLine, uint maxMemory);
-
-#if BLD_FEATURE_ALLOC_STATS
-extern MprSlabStats *mprGetSlabAllocStats(MprApp *app, int slabIndex);
-extern MprAllocStats *mprGetAllocStats(MprApp *app);
-extern void mprPrintAllocReport(MprApp *app, bool doBlocks,
- const char *msg);
-#endif
-
-#if BLD_DEBUG
-extern int mprPrintAllocBlocks(MprCtx ctx, int indent);
-extern const char *mprGetAllocLocation(MprCtx ptr);
-#endif
-
-extern int mprValidateBlock(MprCtx ctx);
-extern int mprValidateAllocTree(MprCtx ptr);
-extern void mprSetRequiredAlloc(MprCtx ptr, bool recurse);
-
-/*
- * Sprintf style allocators
- */
-extern int mprAllocSprintf(MPR_LOC_DEC(ctx, loc), char **buf, int maxSize,
- const char *fmt, ...) PRINTF_ATTRIBUTE(5,6);
-extern int mprAllocVsprintf(MPR_LOC_DEC(ctx, loc), char **buf, int maxSize,
- const char *fmt, va_list arg) PRINTF_ATTRIBUTE(5,0);
-extern int mprAllocMemcpy(MPR_LOC_DEC(ctx, loc), char **dest, int destMax,
- const void *src, int nbytes);
-extern int mprAllocStrcat(MPR_LOC_DEC(ctx, loc), char **dest, int max,
- const char *delim, const char *src, ...);
-extern int mprAllocStrcpy(MPR_LOC_DEC(ctx, loc), char **dest, int max,
- const char *src);
-extern int mprReallocStrcat(MPR_LOC_DEC(ctx, loc), char **dest, int max,
- int existingLen, const char *delim, const char *src, ...);
-
-/*
- * MACROS: These are the convenience macros to automatically supply file
- * names and line numbers when debugging.
- */
-#define mprNew(ctx) new(MPR_LOC_ARGS(ctx))
-
-#define mprAlloc(ctx, size) mprAllocBlock(MPR_LOC_ARGS(ctx), size)
-
-#define mprAllocZeroed(ctx, size) mprAllocZeroedBlock(MPR_LOC_ARGS(ctx), size)
-
-#define mprSlabAlloc(ctx, size, inc) \
- ((type*) mprSlabAllocBlock(MPR_LOC_ARGS(ctx), size, inc))
-
-#define mprSlabAllocZeroed(ctx, size, inc) \
- ((type*) mprSlabAllocBlock(MPR_LOC_ARGS(ctx), size, inc))
-
-#define mprRealloc(ctx, ptr, size) mprReallocBlock(MPR_LOC_ARGS(ctx), ptr, size)
-
-#define mprMemdup(ctx, ptr, size) \
- mprMemdupInternal(MPR_LOC_ARGS(ctx), ptr, size)
-
-#define mprStrdup(ctx, str) mprStrdupInternal(MPR_LOC_ARGS(ctx), str)
-
-#define mprStrndup(ctx, str, size) mprStrndupDebug(MPR_LOC_ARGS(ctx), str, size)
-
-/*
- * Allocate type macros
- */
-#define mprAllocType(ctx, type) \
- ((type*) mprAllocBlock(MPR_LOC_ARGS(ctx), sizeof(type)))
-
-#define mprAllocTypeZeroed(ctx, type) \
- ((type*) mprAllocZeroedBlock(MPR_LOC_ARGS(ctx), sizeof(type)))
-
-#define mprSlabAllocType(ctx, type, inc) \
- ((type*) mprSlabAllocBlock(MPR_LOC_ARGS(ctx), sizeof(type), inc))
-
-#define mprSlabAllocTypeZeroed(ctx, type, inc) \
- ((type*) mprSlabAllocZeroedBlock(MPR_LOC_ARGS(ctx), sizeof(type), \
- inc))
-
-/*
- * Multithread locking
- */
-#if BLD_FEATURE_MULTITHREAD
-extern void mprInitThreads(MprApp *app);
-extern void mprTermThreads(MprApp *app);
-extern MprLock *mprCreateLock(MprCtx ctx);
-extern void mprDestroyLock(MprLock *lock);
-extern void mprLock(MprLock *lock);
-extern int mprTryLock(MprLock *lock);
-extern void mprUnlock(MprLock *lock);
-extern void mprGlobalLock(MprCtx ctx);
-extern void mprGlobalUnlock(MprCtx ctx);
-extern int mprGetCurrentThreadID();
-#else
-/*
- * Disable multithreading
- */
-#define mprInitThreads(ctx, app)
-#define mprTermThreads(app)
-#define mprCreateLock(ctx)
-#define mprDestroyLock(lock)
-#define mprLock(lock)
-#define mprTryLock(lock)
-#define mprUnlock(lock)
-#define mprGlobalLock(app)
-#define mprGlobalUnlock(app)
-#define mprGetCurrentThreadID()
-#endif
-
-/*
- * Time
- */
-extern MprTime *mprGetTime(MprCtx ctx, MprTime *tp);
-extern int mprGetTimeRemaining(MprCtx ctx, MprTime mark, uint timeout);
-extern int mprGetElapsedTime(MprCtx ctx, MprTime mark);
-extern int mprCompareTime(MprTime *t1, MprTime *t2);
-extern uint mprSubtractTime(MprTime *t1, MprTime *t2);
-extern void mprAddElapsedToTime(MprTime *time, uint elapsed);
-
-#if !BREW
-extern int mprAsctime(MprCtx ctx, char *buf, int bufsize,
- const struct tm *timeptr);
-extern int mprCtime(MprCtx ctx, char *buf, int bufsize,
- const time_t *timer);
-extern struct tm *mprLocaltime(MprCtx ctx, struct tm *timep, time_t *now);
-extern struct tm *mprGmtime(MprCtx ctx, time_t* now, struct tm *timep);
-extern int mprRfcTime(MprCtx ctx, char *buf, int bufsize,
- const struct tm *timep);
-#endif /* !BREW */
-
-/*
- * Host name
- */
-extern struct hostent* mprGetHostByName(MprCtx ctx, const char *name);
-
-#if WIN
-extern int mprReadRegistry(MprCtx ctx, char **buf, int max,
- const char *key, const char *val);
-extern int mprWriteRegistry(MprCtx ctx, const char *key, const char *name,
- const char *value);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _h_MPR */
-
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim:tw=78
- * vim600: sw=4 ts=4 fdm=marker
- * vim<600: sw=4 ts=4
- */