00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FORMENTRY_H_
00023 #define _FORMENTRY_H_ 1
00024
00025 #ifdef __GNUG__
00026 # pragma interface
00027 #endif
00028
00039 #include <iostream>
00040 #include <string>
00041 #include <climits>
00042 #include <cfloat>
00043
00044 #include "cgicc/CgiDefs.h"
00045 #include "cgicc/CgiUtils.h"
00046
00047 namespace cgicc {
00048
00049
00050
00051
00052
00068 class CGICC_API FormEntry
00069 {
00070 public:
00071
00072
00073
00076
00082 inline
00083 FormEntry()
00084 {}
00085
00093 inline
00094 FormEntry(const std::string& name,
00095 const std::string& value)
00096 : fName(name), fValue(value)
00097 {}
00098
00105 inline
00106 FormEntry(const FormEntry& entry)
00107 { operator=(entry); }
00108
00114 inline
00115 ~FormEntry()
00116 {}
00118
00119
00120
00123
00131 inline bool
00132 operator== (const FormEntry& entry) const
00133 { return stringsAreEqual(fName, entry.fName); }
00134
00142 inline bool
00143 operator!= (const FormEntry& entry) const
00144 { return ! operator==(entry); }
00145
00146 #ifdef WIN32
00147
00148 inline bool
00149 operator< (const FormEntry& entry) const
00150 { return false; }
00151 #endif
00152
00160 FormEntry&
00161 operator= (const FormEntry& entry);
00163
00164
00165
00170
00178 inline std::string
00179 getName() const
00180 { return fName; }
00181
00188 inline std::string
00189 getValue() const
00190 { return fValue; }
00191
00198 inline std::string
00199 operator* () const
00200 { return getValue(); }
00201
00210 inline std::string
00211 getValue(std::string::size_type maxChars) const
00212 { return makeString(maxChars, true); }
00213
00220 inline std::string
00221 getStrippedValue() const
00222 { return getStrippedValue(INT_MAX); }
00223
00233 inline std::string
00234 getStrippedValue(std::string::size_type maxChars) const
00235 { return makeString(maxChars, false); }
00236
00245 long
00246 getIntegerValue(long min = LONG_MIN,
00247 long max = LONG_MAX) const;
00248
00259 long
00260 getIntegerValue(long min,
00261 long max,
00262 bool& bounded) const;
00263
00272 double
00273 getDoubleValue(double min = -DBL_MAX,
00274 double max = DBL_MAX) const;
00275
00286 double
00287 getDoubleValue(double min,
00288 double max,
00289 bool& bounded) const;
00290
00291
00298 inline std::string::size_type
00299 length() const
00300 { return fValue.length(); }
00301
00308 inline bool
00309 isEmpty() const
00310 { return (length() == 0); }
00312
00313 private:
00314
00315 std::string
00316 makeString(std::string::size_type maxLen,
00317 bool allowNewlines) const;
00318
00319 std::string fName;
00320 std::string fValue;
00321 };
00322
00323 }
00324
00325 #endif