Annotation of parser3/src/types/pa_vform.h, revision 1.48
1.10 paf 1: /** @file
1.16 paf 2: Parser: @b form class decls.
1.10 paf 3:
1.46 paf 4: Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
1.33 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 paf 6: */
7:
8: #ifndef PA_VFORM_H
9: #define PA_VFORM_H
1.36 paf 10:
1.48 ! paf 11: static const char * const IDENT_VFORM_H="$Date: 2003/11/20 16:34:29 $";
1.46 paf 12:
13: // includes
1.1 paf 14:
1.19 paf 15: #include "classes.h"
1.8 paf 16: #include "pa_common.h"
1.46 paf 17: #include "pa_value.h"
18:
19: // defines
1.17 paf 20:
1.22 parser 21: #define FORM_FIELDS_ELEMENT_NAME "fields"
1.24 parser 22: #define FORM_TABLES_ELEMENT_NAME "tables"
1.42 paf 23: #define FORM_IMAP_ELEMENT_NAME "imap"
1.22 parser 24:
1.46 paf 25: // forwards
26:
27: class Request_info;
28: class Request_charsets;
1.4 paf 29:
1.10 paf 30: /**
1.13 paf 31: derivates from VStateless_class so that :CLASS element referred to @a this.
1.10 paf 32:
33: and users could do such tricks:
34: @verbatim
35: ^rem{pass somebody something with elements}
36:
37: ^rem{this time that would be elements of a form}
1.12 paf 38: ^somebody[$form:CLASS]
1.10 paf 39:
40: ^rem{this time that would be elements of a table record}
41: $news[^table:sql[select * from news]]
42: ^somebody[^news.record[]]
43: @endverbatim
44: */
1.46 paf 45: class VForm: public VStateless_class {
1.1 paf 46: public: // Value
47:
1.46 paf 48: const char* type() const { return "form"; }
1.24 parser 49:
1.35 paf 50: // form: CLASS,method,field,tables field
1.46 paf 51: Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1 paf 52:
53: public: // usage
54:
1.48 ! paf 55: VForm(Request_charsets& acharsets, Request_info& arequest_info);
1.31 paf 56:
1.6 paf 57: private:
58:
1.48 ! paf 59: Request_charsets& fcharsets;
! 60: Request_info& frequest_info;
1.46 paf 61:
62: char *strpart(const char* str, size_t len);
63: char *getAttributeValue(const char* data,char *attr,size_t len);
64: void UnescapeChars(char **sp, const char* cp, size_t len);
65: void ParseGetFormInput(const char* query_string, size_t length);
66: void ParseFormInput(const char* data, size_t length);
67: void ParseMimeInput(char *content_type, const char* data, size_t length);
1.6 paf 68: void AppendFormEntry(
1.46 paf 69: const char* cname_cstr,
70: const char* raw_cvalue_ptr, const size_t raw_cvalue_size,
71: const char* copy_me_file_name_cstr=0);
1.1 paf 72:
1.48 ! paf 73: bool should_refill_fields_and_tables();
! 74: void refill_fields_and_tables();
! 75:
1.1 paf 76: private:
77:
1.48 ! paf 78: Charset* filled_source;
! 79: Charset* filled_client;
1.46 paf 80: HashStringValue fields;
81: HashStringValue tables;
82: HashStringValue imap;
1.30 paf 83:
84: private:
85:
1.46 paf 86: String::C transcode(const char* client, size_t client_size);
1.1 paf 87:
88: };
89:
90: #endif
E-mail: