/*
- * $Id: errorpage.cc,v 1.182 2003/01/23 00:37:20 robertc Exp $
+ * $Id: errorpage.cc,v 1.183 2003/01/27 22:33:25 robertc Exp $
*
* DEBUG: section 4 Error Generation
* AUTHOR: Duane Wessels
}
};
-static Stack ErrorDynamicPages;
+static Vector<ErrorDynamicPageInfo *> ErrorDynamicPages;
/* local prototypes */
anErr = (err_type)(++(int)anErr);
return anErr;
}
+
+int operator - (err_type const &anErr, err_type const &anErr2) {
+ return (int)anErr - (int)anErr2;
+}
+
/*
* Function: errorInitialize
*
{
err_type i;
const char *text;
- error_page_count = ERR_MAX + ErrorDynamicPages.count;
+ error_page_count = ERR_MAX + ErrorDynamicPages.size();
error_text = static_cast<char **>(xcalloc(error_page_count, sizeof(char *)));
for (i = ERR_NONE, ++i; i < error_page_count; ++i) {
safe_free(error_text[i]);
error_text[i] = errorLoadText(err_type_str[i]);
} else {
/* dynamic */
- ErrorDynamicPageInfo *info = static_cast<ErrorDynamicPageInfo *>(ErrorDynamicPages.items[i - ERR_MAX]);
+ ErrorDynamicPageInfo *info = ErrorDynamicPages.items[i - ERR_MAX];
assert(info && info->id == i && info->page_name);
if (strchr(info->page_name, ':') == NULL) {
/* Not on redirected errors... */
safe_free(error_text[i]);
safe_free(error_text);
}
- while (ErrorDynamicPages.count)
- errorDynamicPageInfoDestroy(static_cast<ErrorDynamicPageInfo *>(stackPop(&ErrorDynamicPages)));
+ while (ErrorDynamicPages.size())
+ errorDynamicPageInfoDestroy(ErrorDynamicPages.pop_back());
error_page_count = 0;
}
static ErrorDynamicPageInfo *
errorDynamicPageInfoCreate(int id, const char *page_name)
{
- ErrorDynamicPageInfo *info = static_cast<ErrorDynamicPageInfo *>(xcalloc(1, sizeof(ErrorDynamicPageInfo)));
+ ErrorDynamicPageInfo *info = new ErrorDynamicPageInfo;
info->id = id;
info->page_name = xstrdup(page_name);
return info;
{
assert(info);
xfree(info->page_name);
- xfree(info);
+ delete info;
}
static int
if (strcmp(err_type_str[i], page_name) == 0)
return i;
}
- for (size_t i = 0; i < ErrorDynamicPages.count; i++) {
- if (strcmp(((ErrorDynamicPageInfo *) ErrorDynamicPages.items[i])->page_name, page_name) == 0)
+ for (size_t i = 0; i < ErrorDynamicPages.size(); i++) {
+ if (strcmp(ErrorDynamicPages.items[i]->page_name, page_name) == 0)
return i + ERR_MAX;
}
return ERR_NONE;
ErrorDynamicPageInfo *info;
int id = errorPageId(page_name);
if (id == ERR_NONE) {
- info = errorDynamicPageInfoCreate(ERR_MAX + ErrorDynamicPages.count, page_name);
- stackPush(&ErrorDynamicPages, info);
+ info = errorDynamicPageInfoCreate(ERR_MAX + ErrorDynamicPages.size(), page_name);
+ ErrorDynamicPages.push_back(info);
id = info->id;
}
return (err_type)id;
{
if (pageId >= ERR_NONE && pageId < ERR_MAX) /* common case */
return err_type_str[pageId];
- if (pageId >= ERR_MAX && pageId - ERR_MAX < (ssize_t)ErrorDynamicPages.count)
- return ((ErrorDynamicPageInfo *) ErrorDynamicPages.
- items[pageId - ERR_MAX])->page_name;
+ if (pageId >= ERR_MAX && pageId - ERR_MAX < (ssize_t)ErrorDynamicPages.size())
+ return ErrorDynamicPages.items[pageId - ERR_MAX]->page_name;
return "ERR_UNKNOWN"; /* should not happen */
}