Annotation of parser3/src/types/pa_vform.h, revision 1.22.2.1
1.10 paf 1: /** @file
1.16 paf 2: Parser: @b form class decls.
1.10 paf 3:
1.1 paf 4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.10 paf 5:
1.1 paf 6: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
7:
1.22.2.1! parser 8: $Id: pa_vform.h,v 1.22 2001/09/07 11:05:02 parser Exp $
1.1 paf 9: */
10:
11: #ifndef PA_VFORM_H
12: #define PA_VFORM_H
13:
1.19 paf 14: #include "classes.h"
1.8 paf 15: #include "pa_common.h"
1.17 paf 16:
1.22 parser 17: #define FORM_FIELDS_ELEMENT_NAME "fields"
18:
1.17 paf 19: extern Methoded *form_base_class;
1.1 paf 20:
1.4 paf 21: class Request;
22:
1.10 paf 23: /**
1.13 paf 24: derivates from VStateless_class so that :CLASS element referred to @a this.
1.10 paf 25:
26: and users could do such tricks:
27: @verbatim
28: ^rem{pass somebody something with elements}
29:
30: ^rem{this time that would be elements of a form}
1.12 paf 31: ^somebody[$form:CLASS]
1.10 paf 32:
33: ^rem{this time that would be elements of a table record}
34: $news[^table:sql[select * from news]]
35: ^somebody[^news.record[]]
36: @endverbatim
37: */
1.1 paf 38: class VForm : public VStateless_class {
39: public: // Value
40:
41: const char *type() const { return "form"; }
1.22.2.1! parser 42: Value *get_element(const String& aname);
1.1 paf 43:
44: public: // usage
45:
46: VForm(Pool& apool) : VStateless_class(apool, form_base_class),
1.4 paf 47: fields(apool) {
1.1 paf 48: }
49:
1.15 paf 50: void fill_fields(Request& request);
1.7 paf 51:
1.6 paf 52: private:
53:
1.14 paf 54: char *strpart(const char *str, size_t len);
55: char *getAttributeValue(const char *data,char *attr,size_t len);
56: void UnescapeChars(char **sp, const char *cp, size_t len);
1.6 paf 57: void ParseGetFormInput(const char *query_string);
1.14 paf 58: void ParseFormInput(const char *data, size_t length);
59: void ParseMimeInput(const char *content_type, const char *data, size_t length);
1.6 paf 60: void AppendFormEntry(
61: const char *name,
1.14 paf 62: const char *value_ptr, size_t value_size=0,
1.6 paf 63: const char *file_name=0);
1.22.2.1! parser 64:
! 65: private:
! 66:
! 67: Value *fields_element();
1.1 paf 68:
69: private:
70:
1.4 paf 71: Hash fields;
1.1 paf 72:
73: };
74:
75: #endif
E-mail: