/* Copyright (C) 2015 The giomm 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, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

_CONFIGINCLUDE(giommconfig.h)

#include <glibmm/variant.h>

_DEFS(giomm,gio)
_PINCLUDE(glibmm/private/object_p.h)

#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef struct _GSettingsSchemaKey GSettingsSchemaKey;
#endif

namespace Gio
{

//TODO: Add some class documentation, though there is none in the C docs.

/** See SettingsSchema.
 *
 * @newin{2,32}
 */
class SettingsSchemaKey final
{
  _CLASS_OPAQUE_REFCOUNTED(SettingsSchemaKey, GSettingsSchemaKey, NONE, g_settings_schema_key_ref, g_settings_schema_key_unref)

protected:
  _IGNORE(g_settings_schema_key_ref, g_settings_schema_key_unref)

  //Ignore internal GSettingsSchemaKey functions.
  _IGNORE(g_settings_schema_key_init, g_settings_schema_key_clear,
    g_settings_schema_key_type_check, g_settings_schema_key_range_fixup,
    g_settings_schema_key_get_translated_default, g_settings_schema_key_to_enum,
    g_settings_schema_key_from_enum, g_settings_schema_key_to_flags,
    g_settings_schema_key_from_flags)

public:
  //TODO: _WRAP_METHOD(const GVariantType *    g_settings_schema_key_get_value_type           (), g_settings_schema_key_get_value_type)
  //_WRAP_METHOD(GVariant *              g_settings_schema_key_get_default_value        (), g_settings_schema_key_get_default_value)
  //_WRAP_METHOD(GVariant *              g_settings_schema_key_get_range                (), g_settings_schema_key_get_range)
  //TODO: _WRAP_METHOD(bool range_check(GVariant               *value), g_settings_schema_key_range_check)

  _WRAP_METHOD(Glib::ustring get_name() const, g_settings_schema_key_get_name)
  _WRAP_METHOD(Glib::ustring get_summary() const, g_settings_schema_key_get_summary)
  _WRAP_METHOD(Glib::ustring get_description() const, g_settings_schema_key_get_description)
};

} // namespace Gio
