(file) Return to LanguageParser.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/LanguageParser.h between version 1.5.6.1 and 1.6

version 1.5.6.1, 2004/03/10 21:22:11 version 1.6, 2004/08/10 10:24:01
Line 23 
Line 23 
 // //
 //============================================================================== //==============================================================================
 // //
   
 // Author: Humberto Rivero (hurivero@us.ibm.com) // Author: Humberto Rivero (hurivero@us.ibm.com)
   
 // //
   
 // Modified By: // Modified By:
   
 // //
   
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
   
   
 #ifndef Pegasus_LanguageParser_h #ifndef Pegasus_LanguageParser_h
   
 #define Pegasus_LanguageParser_h #define Pegasus_LanguageParser_h
  
   
   
 #include <cstdlib> #include <cstdlib>
   
 #include <cctype> #include <cctype>
   
 #include <Pegasus/Common/Linkage.h> #include <Pegasus/Common/Linkage.h>
   
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
   
 #include <Pegasus/Common/String.h> #include <Pegasus/Common/String.h>
   
 #include <Pegasus/Common/Array.h> #include <Pegasus/Common/Array.h>
  
   
 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
  
   
   
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
  
   
   
   
 /** This class parses and validates AcceptLanguage OR ContentLanguage values /** This class parses and validates AcceptLanguage OR ContentLanguage values
   
  * from the respective HTTP headers, and provides various utility functions  * from the respective HTTP headers, and provides various utility functions
   
  * to parse and manipulate language information  * to parse and manipulate language information
   
  */  */
   
 class PEGASUS_COMMON_LINKAGE LanguageParser{ class PEGASUS_COMMON_LINKAGE LanguageParser{
  
   
   
 public: public:
  
   
   
 /**     This member is used to represent an empty LanguageParser. Using this /**     This member is used to represent an empty LanguageParser. Using this
   
     member avoids construction of an empty LanguageParser     member avoids construction of an empty LanguageParser
   
     (e.g., LanguageParser()).     (e.g., LanguageParser()).
   
 */ */
   
 static const LanguageParser EMPTY; static const LanguageParser EMPTY;
  
   
   
 /** Parses the value portion of either an AcceptLanguage HTTP header or a /** Parses the value portion of either an AcceptLanguage HTTP header or a
   
  * ContentLanguage HTTP header, extracts the individual fields and stores  * ContentLanguage HTTP header, extracts the individual fields and stores
   
  * them in an array.  * them in an array.
   
  * @param values Array<String>& where the individual fields are stored  * @param values Array<String>& where the individual fields are stored
   
  * @param hdr String the value portion of the HTTP Accept/ContentLanguage header  * @param hdr String the value portion of the HTTP Accept/ContentLanguage header
   
  */  */
   
 void parseHdr(Array<String> &values, String & hdr); void parseHdr(Array<String> &values, String & hdr);
  
   
   
 /** Parses an AcceptLanguage or ContentLanguage value from a header. /** Parses an AcceptLanguage or ContentLanguage value from a header.
   
  * If a valid AcceptLanguage value is determined to contain a quality  * If a valid AcceptLanguage value is determined to contain a quality
   
  * value, then this quality once validated is returned. Otherwise -1 is returned.  * value, then this quality once validated is returned. Otherwise -1 is returned.
   
  * It is up to the caller to know in what context this call is being made,  * It is up to the caller to know in what context this call is being made,
   
  * that is: it is the callers responsibility to know whether  * that is: it is the callers responsibility to know whether
   
  * an AcceptLanguage or a ContentLanguage value is being parsed.  * an AcceptLanguage or a ContentLanguage value is being parsed.
   
  * @param language String& where the valid language is stored  * @param language String& where the valid language is stored
   
  * @param hdr String the value being parsed and validated  * @param hdr String the value being parsed and validated
   
  * @return Real32 if a valid quality found then 1 <=> 0, otherwise 1  * @return Real32 if a valid quality found then 1 <=> 0, otherwise 1
   
  * @exception throws ???  * @exception throws ???
   
  */  */
   
 Real32 parseAcceptLanguageValue(String &language, String & hdr); Real32 parseAcceptLanguageValue(String &language, String & hdr);
  
   
   
 String parseContentLanguageValue(String & hdr); String parseContentLanguageValue(String & hdr);
  
   
   
 /** /**
   
  * Given a language ex: en-US-xx,  * Given a language ex: en-US-xx,
   
  * returns the base of the language "en".  * returns the base of the language "en".
   
  * @param language String  * @param language String
   
  * @param separator Char16 the character that separates the various subtags  * @param separator Char16 the character that separates the various subtags
   
  * @return String base of the language parameter  * @return String base of the language parameter
   
  */  */
   
 String getLanguage(String & language_tag); String getLanguage(String & language_tag);
  
   
   
 String getCountry(String & language_tag); String getCountry(String & language_tag);
  
   
   
 String getVariant(String & language_tag); String getVariant(String & language_tag);
  
   
   
 private: private:
  
   
   
 /** /**
   
  * Fills the first position in the array with the most general part of  * Fills the first position in the array with the most general part of
   
  * the language String, each subsequent postion is the array gets more  * the language String, each subsequent postion is the array gets more
   
  * and more detailed.  For example: en-us-fooblah would be returned as  * and more detailed.  For example: en-us-fooblah would be returned as
   
  * ["en"]["us"]["fooblah"]  * ["en"]["us"]["fooblah"]
   
  * @param subtags Array<String>& array filled in with the root and subtags  * @param subtags Array<String>& array filled in with the root and subtags
   
  * @param language String the language to parse  * @param language String the language to parse
   
  * @param separator Char16 the character that separates the various subtags  * @param separator Char16 the character that separates the various subtags
   
  * @return String the root of the language tag  * @return String the root of the language tag
   
  */  */
   
 void parseLanguageSubtags(Array<String> &subtags, String language_tag); void parseLanguageSubtags(Array<String> &subtags, String language_tag);
  
   
   
 /** Breaks the language into its parts(subtags), then validates each part /** Breaks the language into its parts(subtags), then validates each part
   
  * according to the RFCs.  * according to the RFCs.
   
  * @param s String language to be validated  * @param s String language to be validated
   
  * @return Boolean  * @return Boolean
   
  */  */
   
 Boolean isValid(String language_tag, Boolean length_check = true); Boolean isValid(String language_tag, Boolean length_check = true);
  
   
   
 /** Checks if the String has all characters in A-Z OR a-z range. /** Checks if the String has all characters in A-Z OR a-z range.
   
  * @param s String  * @param s String
   
  * @return Boolean  * @return Boolean
   
  */  */
   
 Boolean checkAlpha(CString _str); Boolean checkAlpha(CString _str);
  
   
   
 CString replaceSeparator(CString _s, char new_sep = '-'); CString replaceSeparator(CString _s, char new_sep = '-');
  
   
   
 char findSeparator(CString _str); char findSeparator(CString _str);
  
   
   
 String convertPrivateLanguageTag(String language_tag); String convertPrivateLanguageTag(String language_tag);
  
   
   
 }; //end LanguageParser }; //end LanguageParser
  
   
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  
   
 #endif  // PEGASUS_USE_EXPERIMENTAL_INTERFACES #endif  // PEGASUS_USE_EXPERIMENTAL_INTERFACES
  
   
 #endif #endif
   


Legend:
Removed from v.1.5.6.1  
changed lines
  Added in v.1.6

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2