00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _FORMFILE_H_
00023 #define _FORMFILE_H_ 1
00024 
00025 #ifdef __GNUG__
00026 #  pragma interface
00027 #endif
00028 
00038 #include <iostream>
00039 #include <string>
00040 
00041 #include "cgicc/CgiDefs.h"
00042 
00043 CGICC_BEGIN_NAMESPACE
00044 
00045 
00046 
00047 
00048 
00062 class CGICC_API FormFile
00063 {
00064 public:
00065   
00066   
00067 
00070   
00076   inline
00077   FormFile()
00078     {}
00079   
00089   FormFile(const STDNS string& name, 
00090            const STDNS string& filename, 
00091            const STDNS string& dataType, 
00092            const STDNS string& data);
00093   
00100   inline
00101   FormFile(const FormFile& file)
00102     { operator=(file); }
00103   
00109   inline
00110   ~FormFile()
00111     {}
00113   
00114   
00115 
00118 
00126   bool 
00127   operator== (const FormFile& file)                     const;
00128   
00136   inline bool 
00137   operator!= (const FormFile& file)                     const
00138     { return ! operator==(file); }
00139   
00140 #ifdef WIN32
00141   
00142   inline bool
00143   operator< (const FormFile& file)                      const
00144   { return false; }
00145 #endif
00146 
00154   FormFile& 
00155   operator= (const FormFile& file);
00157   
00158   
00159 
00164 
00171   void 
00172   writeToStream(STDNS ostream& out)                     const;
00173 
00181   inline STDNS string
00182   getName()                                             const
00183     { return fName; }
00184   
00191   inline STDNS string
00192   getFilename()                                         const
00193     { return fFilename; }
00194 
00201   inline STDNS string 
00202   getDataType()                                         const
00203     { return fDataType; }
00204     
00211   inline STDNS string 
00212   getData()                                     const
00213     { return fData; }
00214   
00221   inline STDNS string::size_type
00222   getDataLength()                               const
00223     { return fData.length(); }
00225 
00226 private:
00227   STDNS string  fName;
00228   STDNS string  fFilename;
00229   STDNS string  fDataType;
00230   STDNS string  fData;
00231 };
00232 
00233 CGICC_END_NAMESPACE
00234 
00235 #endif