/*
+ * Copyright (C) 2005-2008 Atsushi Konno All rights reserved.
* Copyright (C) 2005 QSDN,Inc. All rights reserved.
- * Copyright (C) 2005 Atsushi Konno All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
#ifndef __QS_PARSE_STRING_H__
#define __QS_PARSE_STRING_H__
-#include <httpd.h>
+
+#include "chxj_apache.h"
+#include "chxj_buffered_write.h"
/*
#define DEBUG
* It is judged whether it is the first byte of Japanese Shift_JIS
* "ZENKAKU KANJI".
*/
-#define is_sjis_kanji(c) ((0x81 <= (unsigned char)(c&0xff) && \
- (unsigned char)(c&0xff) <= 0x9f) \
- || (0xe0 <= (unsigned char)(c&0xff) && \
- (unsigned char)(c&0xff) <= 0xfc))
+#define is_sjis_kanji(c) ((0x81 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0x9f) \
+ || (0xe0 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xfc))
/**
* It is judged whether it is a byte of Japanese Shift_JIS "HANKAKU KANA".
*/
#define has_child(c) ((strcasecmp(c, "base" ) != 0) \
&& (strcasecmp(c, "meta" ) != 0) \
&& (strcasecmp(c, "br" ) != 0) \
- && (strcasecmp(c, "dt" ) != 0) \
- && (strcasecmp(c, "dd" ) != 0) \
&& (strcasecmp(c, "hr" ) != 0) \
&& (strcasecmp(c, "img" ) != 0) \
&& (strcasecmp(c, "input" ) != 0) \
- && (strcasecmp(c, "p" ) != 0) \
- && (strcasecmp(c, "plaintext") != 0) \
&& (strcasecmp(c, "?xml" ) != 0) \
&& (strcasecmp(c, "!doctype" ) != 0) \
&& (strcasecmp(c, "link" ) != 0) \
&& (strcasecmp(c, "action" ) != 0) \
&& (strcasecmp(c, "!--" ) != 0))
+#define QS_PARSE_NL_MARK "CrLf"
+
/**
* The structure of the attribute is defined.
*/
typedef struct Node Node;
struct Node {
- struct Node* next;
- struct Node* parent;
- struct Node* child;
- struct Node* child_tail;
- struct Attr* attr;
- struct Attr* attr_tail;
- char* name;
- char* value;
- int size;
- char* otext;
+ struct Node *next;
+ struct Node *parent;
+ struct Node *child;
+ struct Node *child_tail;
+ struct Attr *attr;
+ struct Attr *attr_tail;
+ char *name;
+ char *value;
+ int size;
+ char *otext;
+ int line;
+ int closed_by_itself;
};
typedef struct pointer_table_t {
- unsigned int address;
- unsigned long size;
- struct pointer_table_t* next;
- struct pointer_table_t* prev;
+ unsigned int address;
+ unsigned long size;
+ struct pointer_table_t *next;
+ struct pointer_table_t *prev;
} Pointer_Table;
} ParseMode_t;
typedef struct _doc {
- Node* now_parent_node;
- Node* root_node;
+ Node *now_parent_node;
+ Node *root_node;
int do_init_flag;
unsigned long alloc_size;
- Pointer_Table* pointer_table;
- Pointer_Table* free_list_head;
- Pointer_Table* free_list_tail;
- Pointer_Table* allocated_list_head;
- Pointer_Table* allocated_list_tail;
+ Pointer_Table *pointer_table;
+ Pointer_Table *free_list_head;
+ Pointer_Table *free_list_tail;
+ Pointer_Table *allocated_list_head;
+ Pointer_Table *allocated_list_tail;
ParseMode_t parse_mode;
- apr_allocator_t* allocator;
- apr_pool_t* pool;
+ apr_allocator_t *allocator;
+ apr_pool_t *pool;
+
+ buf_object buf;
#ifndef __NON_MOD_CHXJ__
- request_rec* r;
+ request_rec *r;
#endif
} Doc;
/*
* Prototype Declare
*/
-extern Node* qs_init_root_node(
- Doc* doc);
+extern Node *qs_init_root_node(
+ Doc *doc);
extern void qs_add_child_node(
Doc* doc,
Doc* doc,
Node*);
-Node* qs_get_root(Doc* doc) ;
-Node* qs_parse_string(Doc* doc, const char* ss, int len);
-char* qs_get_node_value(Doc* doc,Node* node);
-char* qs_get_node_name(Doc* doc, Node* node) ;
-int qs_get_node_size(Doc* doc, Node* node) ;
-Node* qs_get_child_node(Doc* doc, Node* node) ;
-Node* qs_get_next_node(Doc* doc, Node* node) ;
+extern Node* qs_get_root(
+ Doc* doc) ;
+
+extern Node* qs_parse_string(
+ Doc* doc,
+ const char* ss,
+ int len);
+
+extern char* qs_get_node_value(
+ Doc* doc,
+ Node* node);
+
+extern char* qs_get_node_name(
+ Doc* doc,
+ Node* node);
+
+extern int qs_get_node_size(Doc* doc, Node* node) ;
+
+extern Node *qs_get_child_node(Doc *doc, Node *node) ;
+extern Node *qs_get_next_node(Doc *doc, Node *node) ;
+
Attr* qs_get_attr(Doc* doc, Node* node) ;
Attr* qs_get_next_attr(Doc* doc, Attr* attr) ;
char* qs_get_attr_name(Doc* doc, Attr* attr) ;