Annotation of parser3/src/types/pa_vform.h, revision 1.44
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.44 ! paf 11: static const char* IDENT_VFORM_H="$Date: 2002/10/31 12:22:14 $";
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.44 ! 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.1 paf 63:
64: private:
65:
1.34 paf 66: bool filled;
1.4 paf 67: Hash fields;
1.24 parser 68: Hash tables;
1.42 paf 69: Hash imap;
1.30 paf 70:
71: private:
72:
73: void transcode(
74: const void *source_body, size_t source_content_length,
75: const void *& dest_body, size_t& dest_content_length);
1.1 paf 76:
77: };
78:
79: #endif
E-mail: