Annotation of parser3/src/types/pa_vform.h, revision 1.30
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.29 paf 5: Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
1.1 paf 6:
1.30 ! paf 7: $Id: pa_vform.h,v 1.29 2001/11/05 11:46:32 paf Exp $
1.1 paf 8: */
9:
10: #ifndef PA_VFORM_H
11: #define PA_VFORM_H
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.17 paf 19: extern Methoded *form_base_class;
1.1 paf 20:
1.4 paf 21: class Request;
1.30 ! paf 22: struct Transcoder;
1.4 paf 23:
1.10 paf 24: /**
1.13 paf 25: derivates from VStateless_class so that :CLASS element referred to @a this.
1.10 paf 26:
27: and users could do such tricks:
28: @verbatim
29: ^rem{pass somebody something with elements}
30:
31: ^rem{this time that would be elements of a form}
1.12 paf 32: ^somebody[$form:CLASS]
1.10 paf 33:
34: ^rem{this time that would be elements of a table record}
35: $news[^table:sql[select * from news]]
36: ^somebody[^news.record[]]
37: @endverbatim
38: */
1.1 paf 39: class VForm : public VStateless_class {
40: public: // Value
41:
42: const char *type() const { return "form"; }
1.24 parser 43:
44: // form: CLASS,method,fields,tables,field
1.23 parser 45: Value *get_element(const String& aname);
1.1 paf 46:
47: public: // usage
48:
49: VForm(Pool& apool) : VStateless_class(apool, form_base_class),
1.24 parser 50: fields(apool),
1.30 ! paf 51: tables(apool),
! 52: client_transcoder(0), source_transcoder(0) {
1.1 paf 53: }
54:
1.24 parser 55: void fill_fields_and_tables(Request& request);
1.7 paf 56:
1.6 paf 57: private:
58:
1.14 paf 59: char *strpart(const char *str, size_t len);
1.27 parser 60: char *getAttributeValue(char *data,char *attr,size_t len);
1.14 paf 61: void UnescapeChars(char **sp, const char *cp, size_t len);
1.27 parser 62: void ParseGetFormInput(char *query_string, size_t length);
1.26 parser 63: void ParseFormInput(char *data, size_t length);
1.27 parser 64: void ParseMimeInput(char *content_type, char *data, size_t length);
1.6 paf 65: void AppendFormEntry(
66: const char *name,
1.28 paf 67: char *value_ptr, size_t value_size,
1.6 paf 68: const char *file_name=0);
1.1 paf 69:
70: private:
71:
1.4 paf 72: Hash fields;
1.24 parser 73: Hash tables;
1.30 ! paf 74:
! 75: private:
! 76:
! 77: void transcode(
! 78: const void *source_body, size_t source_content_length,
! 79: const void *& dest_body, size_t& dest_content_length);
! 80:
! 81: private:
! 82:
! 83: const Transcoder *client_transcoder;
! 84: const Transcoder *source_transcoder;
1.1 paf 85:
86: };
87:
88: #endif
E-mail: