// Generated by gmmproc 2.89.0 -- DO NOT MODIFY!
#ifndef _GIOMM_ENUMS_H
#define _GIOMM_ENUMS_H

#include <giommconfig.h>


#include <glibmm/ustring.h>
#include <sigc++/sigc++.h>

/* Copyright (C) 2007 The gtkmm Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 */


#include <gio/gio.h>
#include <glibmm/value.h>


namespace Gio
{

// BIG_ENDIAN and LITTLE_ENDIAN are defined as preprocessor macros somewhere.
/** @addtogroup giommEnums giomm Enums and Flags */

/** 
 *  @var DataStreamByteOrder::BIG_ENDIAN_ORDER
 * Selects Big Endian byte order.
 * 
 *  @var DataStreamByteOrder::LITTLE_ENDIAN_ORDER
 * Selects Little Endian byte order.
 * 
 *  @var DataStreamByteOrder::HOST_ENDIAN_ORDER
 * Selects endianness based on host machine's architecture.
 */
 /** DataStreamByteOrder is used to ensure proper endianness of streaming data sources
 * across various machine architectures.
 *
 * @ingroup giommEnums
 */
enum class DataStreamByteOrder
{
  BIG_ENDIAN_ORDER,
  LITTLE_ENDIAN_ORDER,
  HOST_ENDIAN_ORDER
};


} // namespace Gio

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class GIOMM_API Value<Gio::DataStreamByteOrder> : public Glib::Value_Enum<Gio::DataStreamByteOrder>
{
public:
  static GType value_type();
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gio
{

/** 
 *  @var DataStreamNewlineType::LF
 * Selects "LF" line endings, common on most modern UNIX platforms.
 * 
 *  @var DataStreamNewlineType::CR
 * Selects "CR" line endings.
 * 
 *  @var DataStreamNewlineType::CR_LF
 * Selects "CR, LF" line ending, common on Microsoft Windows.
 * 
 *  @var DataStreamNewlineType::ANY
 * Automatically try to handle any line ending type.
 */
 /** DataStreamNewlineType is used when checking for or setting the line endings for a given file.
 *
 * @ingroup giommEnums
 */
enum class DataStreamNewlineType
{
  LF,
  CR,
  CR_LF,
  ANY
};


} // namespace Gio

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class GIOMM_API Value<Gio::DataStreamNewlineType> : public Glib::Value_Enum<Gio::DataStreamNewlineType>
{
public:
  static GType value_type();
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gio
{

/** 
 *  @var SocketFamily::INVALID
 * No address family.
 * 
 *  @var SocketFamily::IPV4
 * The IPv4 family.
 * 
 *  @var SocketFamily::IPV6
 * The IPv6 family.
 * 
 *  @var SocketFamily::UNIX
 * The UNIX domain family.
 */
 /** The protocol family of a SocketAddress. (These values are
 * identical to the system defines AF_INET, AF_INET6 and AF_UNIX,
 * if available.)
 * 
 * @newin{2,22}
 *
 * @ingroup giommEnums
 */
enum class SocketFamily
{
  INVALID = 0,
  UNIX = 1,
  IPV4 = 2,
  IPV6 = 10
};


} // namespace Gio

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class GIOMM_API Value<Gio::SocketFamily> : public Glib::Value_Enum<Gio::SocketFamily>
{
public:
  static GType value_type();
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gio
{

/** 
 *  @var TlsAuthenticationMode::NONE
 * Client authentication not required.
 * 
 *  @var TlsAuthenticationMode::REQUESTED
 * Client authentication is requested.
 * 
 *  @var TlsAuthenticationMode::REQUIRED
 * Client authentication is required.
 */
 /** The client authentication mode for a TlsServerConnection.
 * 
 * @newin{2,28}
 *
 * @ingroup giommEnums
 */
enum class TlsAuthenticationMode
{
  NONE,
  REQUESTED,
  REQUIRED
};


} // namespace Gio

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class GIOMM_API Value<Gio::TlsAuthenticationMode> : public Glib::Value_Enum<Gio::TlsAuthenticationMode>
{
public:
  static GType value_type();
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gio
{

/** 
 *  @var TlsCertificateFlags::NO_FLAGS
 * No flags set. @newin{2,74}
 * 
 *  @var TlsCertificateFlags::UNKNOWN_CA
 * The signing certificate authority is
 * not known.
 * 
 *  @var TlsCertificateFlags::BAD_IDENTITY
 * The certificate does not match the
 * expected identity of the site that it was retrieved from.
 * 
 *  @var TlsCertificateFlags::NOT_ACTIVATED
 * The certificate's activation time
 * is still in the future.
 * 
 *  @var TlsCertificateFlags::EXPIRED
 * The certificate has expired.
 * 
 *  @var TlsCertificateFlags::REVOKED
 * The certificate has been revoked
 * according to the TlsConnection's certificate revocation list.
 * 
 *  @var TlsCertificateFlags::INSECURE
 * The certificate's algorithm is
 * considered insecure.
 * 
 *  @var TlsCertificateFlags::GENERIC_ERROR
 * Some other error occurred validating
 * the certificate.
 * 
 *  @var TlsCertificateFlags::VALIDATE_ALL
 * The combination of all of the above
 * flags.
 */
 /** A set of flags describing TLS certification validation. This can be
 * used to describe why a particular certificate was rejected (for
 * example, in TlsConnection::signal_accept_certificate()).
 * 
 * GLib guarantees that if certificate verification fails, at least one
 * flag will be set, but it does not guarantee that all possible flags
 * will be set. Accordingly, you may not safely decide to ignore any
 * particular type of error. For example, it would be incorrect to mask
 * Gio::TlsCertificateFlags::EXPIRED if you want to allow expired certificates,
 * because this could potentially be the only error flag set even if
 * other problems exist with the certificate.
 * 
 * @newin{2,28}
 *
 * @ingroup giommEnums
 * @par Bitwise operators:
 * <tt>TlsCertificateFlags operator|(TlsCertificateFlags, TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags operator&(TlsCertificateFlags, TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags operator^(TlsCertificateFlags, TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags operator~(TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags& operator|=(TlsCertificateFlags&, TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags& operator&=(TlsCertificateFlags&, TlsCertificateFlags)</tt><br>
 * <tt>TlsCertificateFlags& operator^=(TlsCertificateFlags&, TlsCertificateFlags)</tt><br>
 */
enum class TlsCertificateFlags
{
  NO_FLAGS = 0x0,
  UNKNOWN_CA = 1 << 0,
  BAD_IDENTITY = 1 << 1,
  NOT_ACTIVATED = 1 << 2,
  EXPIRED = 1 << 3,
  REVOKED = 1 << 4,
  INSECURE = 1 << 5,
  GENERIC_ERROR = 1 << 6,
  VALIDATE_ALL = 0x7f
};

/** @ingroup giommEnums */
inline TlsCertificateFlags operator|(TlsCertificateFlags lhs, TlsCertificateFlags rhs)
  { return static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }

/** @ingroup giommEnums */
inline TlsCertificateFlags operator&(TlsCertificateFlags lhs, TlsCertificateFlags rhs)
  { return static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }

/** @ingroup giommEnums */
inline TlsCertificateFlags operator^(TlsCertificateFlags lhs, TlsCertificateFlags rhs)
  { return static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }

/** @ingroup giommEnums */
inline TlsCertificateFlags operator~(TlsCertificateFlags flags)
  { return static_cast<TlsCertificateFlags>(~static_cast<unsigned>(flags)); }

/** @ingroup giommEnums */
inline TlsCertificateFlags& operator|=(TlsCertificateFlags& lhs, TlsCertificateFlags rhs)
  { return (lhs = static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }

/** @ingroup giommEnums */
inline TlsCertificateFlags& operator&=(TlsCertificateFlags& lhs, TlsCertificateFlags rhs)
  { return (lhs = static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }

/** @ingroup giommEnums */
inline TlsCertificateFlags& operator^=(TlsCertificateFlags& lhs, TlsCertificateFlags rhs)
  { return (lhs = static_cast<TlsCertificateFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }


} // namespace Gio

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class GIOMM_API Value<Gio::TlsCertificateFlags> : public Glib::Value_Flags<Gio::TlsCertificateFlags>
{
public:
  static GType value_type();
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gio
{


} // namespace Gio


#endif /* _GIOMM_ENUMS_H */

