/*
 *	@file 	espEnv.h
 *	@brief 	ESP Environment Variables
 */
/********************************* Copyright **********************************/
/*
 *	@copy	default
 *	
 *	Copyright (c) Mbedthis Software LLC, 2003-2005. 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
 */

/******************************************************************************/

#ifndef _h_ESP_ENV_h
#define _h_ESP_ENV_h 1

/*
 *	@brief Scripting environment variable array types
 */
typedef enum EspEnvType {
	ESP_UNDEFINED_OBJ = -1,

	/**	
	 *	Elements for server[]: 
	 *		DOCUMENT_ROOT GATEWAY_INTERFACE SERVER_ADDR SERVER_PORT SERVER_NAME 
	 *		SERVER_PROTOCOL SERVER_SOFTWARE SERVER_URL UPLOAD_DIR
	 *		FUTURE: SERVER_ADMIN 
 	 *		FUTURE: this could be shared across all hosts and be made read-only.
	 */
	ESP_SERVER_OBJ = 0,						/*! server[] data */

	/**
	 *	Elements for session[]: are user defined
	 */
	ESP_SESSION_OBJ = 1,					/*! session[] data */

	/**	
 	 *	Elements for request[]: 
	 *		AUTH_TYPE CONTENT_LENGTH CONTENT_TYPE QUERY_STRING PATH_INFO 
	 *		PATH_TRANSLATED REMOTE_ADDR REMOTE_HOST REMOTE_USER REQUEST_METHOD 
	 *		REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME 
	 *		FUTURE: FILEPATH_INFO REDIRECT_URL SELF REMOTE_PORT AUTH_USER 
	 *		AUTH_GROUP AUTH_ACL 
	 */
	ESP_REQUEST_OBJ = 2,					/*! request[] data */

	/**	
	 *	Elements for headers[]: 
	 *		HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_CONNECTION HTTP_HOST 
 	 *		HTTP_REFERER HTTP_USER_AGENT and any other custom headers
	 */
	ESP_HEADERS_OBJ = 3,					/*! header [] data */

	/**
 	 *	Elements for cookies[]: are defined by the HTTP request
	 */
	ESP_COOKIES_OBJ = 4,					/*! cookies[] data */
	
	/**
 	 *	Elements for files[]: are defined by the HTTP request
 	 *		CLIENT_FILENAME CONTENT_TYPE FILENAME SIZE
 	 */
	ESP_FILES_OBJ = 5,						/*! files[] data */

	/**
 	 *	Elements for form[]: are defined by the HTTP request
 	 */
	ESP_FORM_OBJ = 6,						/*! form[] data */

	/**
 	 *	Elements for application[]: are user defined
 	 */
	ESP_APPLICATION_OBJ = 7,				/*! application[] data */

	/**
 	 *	Elements for global[]: are defined by ESP/EJS
 	 */
	ESP_GLOBAL_OBJ = 8,						/*! global [] data */

	/*
 	 *	Elements for local[]: are defined by ESP/EJS
 	 */
	ESP_LOCAL_OBJ = 9,						/*! local [] data */
} EspEnvType;

#define ESP_OBJ_MAX 	10					/* Total objects */

#if BLD_SQUEEZE
#define ESP_HASH_SIZE	19					/* Size of hash tables */
#else
#define ESP_HASH_SIZE	37
#endif

/******************************************************************************/
#endif /* _h_ESP_ENV_h */

/*
 * 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
 */
