Annotation of parser3/src/types/pa_vform.h, revision 1.42
1.10 paf 1: /** @file
1.16 paf 2: Parser: @b form class decls.
1.10 paf 3:
1.32 paf 4: Copyright (c) 2001, 2002 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.42 ! paf 11: static const char* IDENT_VFORM_H="$Date: 2002/08/15 10:13:20 $";
1.1 paf 12:
1.19 paf 13: #include "classes.h"
1.8 paf 14: #include "pa_common.h"
1.17 paf 15:
1.22 parser 16: #define FORM_FIELDS_ELEMENT_NAME "fields"
1.24 parser 17: #define FORM_TABLES_ELEMENT_NAME "tables"
1.42 ! paf 18: #define FORM_IMAP_ELEMENT_NAME "imap"
1.22 parser 19:
1.4 paf 20: class Request;
21:
1.10 paf 22: /**
1.13 paf 23: derivates from VStateless_class so that :CLASS element referred to @a this.
1.10 paf 24:
25: and users could do such tricks:
26: @verbatim
27: ^rem{pass somebody something with elements}
28:
29: ^rem{this time that would be elements of a form}
1.12 paf 30: ^somebody[$form:CLASS]
1.10 paf 31:
32: ^rem{this time that would be elements of a table record}
33: $news[^table:sql[select * from news]]
34: ^somebody[^news.record[]]
35: @endverbatim
36: */
1.1 paf 37: class VForm : public VStateless_class {
38: public: // Value
39:
40: const char *type() const { return "form"; }
1.24 parser 41:
1.35 paf 42: // form: CLASS,method,field,tables field
1.40 paf 43: Value *get_element(const String& aname, Value *aself, bool /*looking_up*/);
1.1 paf 44:
45: public: // usage
46:
1.31 paf 47: VForm(Pool& apool);
48:
1.24 parser 49: void fill_fields_and_tables(Request& request);
1.7 paf 50:
1.6 paf 51: private:
52:
1.14 paf 53: char *strpart(const char *str, size_t len);
1.41 paf 54: char *getAttributeValue(const char *data,char *attr,size_t len);
1.14 paf 55: void UnescapeChars(char **sp, const char *cp, size_t len);
1.41 paf 56: void ParseGetFormInput(const char *query_string, size_t length);
57: void ParseFormInput(const char *data, size_t length);
58: void ParseMimeInput(char *content_type, const char *data, size_t length);
1.6 paf 59: void AppendFormEntry(
60: const char *name,
1.41 paf 61: const char *value_ptr, const size_t value_size,
1.6 paf 62: const char *file_name=0);
1.42 ! paf 63: void AppendFormEntry(const char *name, Value *value);
1.1 paf 64:
65: private:
66:
1.34 paf 67: bool filled;
1.4 paf 68: Hash fields;
1.24 parser 69: Hash tables;
1.42 ! paf 70: Hash imap;
1.30 paf 71:
72: private:
73:
74: void transcode(
75: const void *source_body, size_t source_content_length,
76: const void *& dest_body, size_t& dest_content_length);
1.1 paf 77:
78: };
79:
80: #endif
E-mail: