text: /*
  *******************************************************************************
  * Copyright (C) 2011-2012, International Business Machines Corporation and    *
  * others. All Rights Reserved.                                                *
  *******************************************************************************
  */
  #ifndef __TZGNAMES_H
  #define __TZGNAMES_H
  
  /**
   * \file 
   * \brief C API: Time zone generic names classe
   */
  
  #include "unicode/utypes.h"
  
  #if !UCONFIG_NO_FORMATTING
  
  #include "unicode/locid.h"
  #include "unicode/unistr.h"
  #include "unicode/tzfmt.h"
  #include "unicode/tznames.h"
  
  U_CDECL_BEGIN
  
  typedef enum UTimeZoneGenericNameType {
      UTZGNM_UNKNOWN      = 0x00,
      UTZGNM_LOCATION     = 0x01,
      UTZGNM_LONG         = 0x02,
      UTZGNM_SHORT        = 0x04
  } UTimeZoneGenericNameType;
  
  U_CDECL_END
  
  U_NAMESPACE_BEGIN
  
  class TimeZone;
  struct TZGNCoreRef;
  
  class U_I18N_API TimeZoneGenericNames : public UMemory {
  public:
      virtual ~TimeZoneGenericNames();
  
      static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status);
  
      virtual UBool operator==(const TimeZoneGenericNames& other) const;
      virtual UBool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);};
      virtual TimeZoneGenericNames* clone() const;
  
      UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type,
                          UDate date, UnicodeString& name) const;
  
      UnicodeString& getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeString& name) const;
  
      int32_t findBestMatch(const UnicodeString& text, int32_t start, uint32_t types,
          UnicodeString& tzID, UTimeZoneFormatTimeType& timeType, UErrorCode& status) const;
  
  private:
      TimeZoneGenericNames();
      TZGNCoreRef* fRef;
  };
  
  U_NAMESPACE_END
  #endif
  #endif
  