--- parser3/src/include/pa_request_charsets.h 2003/01/29 11:31:42 1.1.2.1 +++ parser3/src/include/pa_request_charsets.h 2012/03/16 09:24:10 1.6 @@ -1,33 +1,48 @@ /** @file Parser: request charsets class decl. - Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ #ifndef PA_REQUEST_CHARSETS_H #define PA_REQUEST_CHARSETS_H -static const char* IDENT_REQUEST_CHARSETS_H="$Date: 2003/01/29 11:31:42 $"; +#define IDENT_PA_REQUEST_CHARSETS_H "$Id: pa_request_charsets.h,v 1.6 2012/03/16 09:24:10 moko Exp $" class Request_charsets { - Pool& fpool; + friend class Temp_client_charset; + Charset *fsource; Charset *fclient; Charset *fmail; public: - Request_charsets(Pool& apool, + Request_charsets( Charset& asource, Charset& aclient, - Charset& amail): fpool(apool), + Charset& amail): fsource(&asource), fclient(&aclient), fmail(&amail) {} - Pool& pool() { return fpool; } - Charset& source() { return *fsource; } void set_source(Charset& asource) { fsource=&asource; } - Charset& client() { return *fclient; } void set_client(Charset& aclient) { fclient=&aclient; } - Charset& mail() { return *fmail; } void set_mail(Charset& amail) { fmail=&amail; } + Charset& source() const { return *fsource; } void set_source(Charset& asource) { fsource=&asource; } + Charset& client() const { return *fclient; } void set_client(Charset& aclient) { fclient=&aclient; } + Charset& mail() const { return *fmail; } void set_mail(Charset& amail) { fmail=&amail; } +}; + +class Temp_client_charset { + Request_charsets& fcharsets; + Charset &fclient; +public: + + Temp_client_charset(Request_charsets& acharsets, Charset& aclient): + fcharsets(acharsets), + fclient(acharsets.client()) { + fcharsets.set_client(aclient); + } + ~Temp_client_charset(){ + fcharsets.set_client(fclient); + } }; #endif