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