/* File: libwww_parse_html.h
** Author(s): kifer, Yang Yang
** Contact: xsb-contact@cs.sunysb.edu
**
** Copyright (C) The Research Foundation of SUNY, 2000
**
** XSB 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.
**
** XSB 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 XSB; if not, write to the Free Software Foundation,
** Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
** $Id: libwww_parse_html.h,v 1.6 2000/04/05 02:17:11 kifer Exp $
**
*/
typedef HText USERDATA;
struct _HText {
DELETE_USERDATA * delete_method;
int status; /* this is used to carry status into
delete_userData */
HTRequest * request;
HTParentAnchor * node_anchor; /* not used */
HTStream * target;
SGML_dtd * dtd;
int suppress_is_default; /* whether we begin parsing by
suppressing tags */
prolog_term parsed_term; /* actual result of the parse */
prolog_term parsed_term_tail; /* auxil variable */
int stackptr;
int stacksize; /* current size of stack */
struct stack_node {
int element_number; /* which element this is */
SGMLContent element_type; /* SGML_EMPTY, PCDATA_SPECIAL, normal */
int suppress; /* whether this element is in the
suppressed region */
prolog_term elt_term; /* here we build elements */
prolog_term content_list_tail; /* auxil var to help build elements */
} *stack; /* keeps nested elements */
};
/* function declarations */
PRIVATE inline HTTag *special_find_tag(USERDATA *htext, int element_number);
PRIVATE USERDATA *html_create_userData( HTRequest *request,
HTParentAnchor *anchor,
HTStream *output_stream);
PRIVATE void html_delete_userData(void *me);
PRIVATE int find_matching_elt(USERDATA *htext, int elt_number);
PRIVATE void html_push_element (USERDATA *htext,
int element_number,
const BOOL *present,
const char **value);
PRIVATE void html_pop_element(USERDATA *htext);
PRIVATE void html_push_suppressed_element(USERDATA *htext, int element_number);
PRIVATE void html_pop_suppressed_element(USERDATA *htext);
PRIVATE void collect_html_attributes ( prolog_term elt_term,
HTTag *tag,
const BOOL *present,
const char **value);
PRIVATE void html_addText (USERDATA *htext, const char *textbuf, int len);
PRIVATE void html_beginElement(USERDATA *htext,
int element_number,
const BOOL *present,
const char **value);
PRIVATE void html_endElement(USERDATA *htext, int element_number);
syntax highlighted by Code2HTML, v. 0.9.1