diff --git a/girepository/gienuminfo.c b/girepository/gienuminfo.c index 6f30ea08e..1848e8fd7 100644 --- a/girepository/gienuminfo.c +++ b/girepository/gienuminfo.c @@ -221,51 +221,3 @@ gi_enum_info_class_init (gpointer g_class, info_class->info_type = GI_INFO_TYPE_ENUM; } - -/** - * GIValueInfo: - * - * A `GIValueInfo` represents a value in an enumeration. - * - * The `GIValueInfo` is fetched by calling - * [method@GIRepository.EnumInfo.get_value] on a [class@GIRepository.EnumInfo]. - * - * Since: 2.80 - */ - -/** - * gi_value_info_get_value: - * @info: a #GIValueInfo - * - * Obtain the enumeration value of the `GIValueInfo`. - * - * Returns: the enumeration value. This will always be representable - * as a 32-bit signed or unsigned value. The use of `int64_t` as the - * return type is to allow both. - * Since: 2.80 - */ -int64_t -gi_value_info_get_value (GIValueInfo *info) -{ - GIRealInfo *rinfo = (GIRealInfo *)info; - ValueBlob *blob; - - g_return_val_if_fail (info != NULL, -1); - g_return_val_if_fail (GI_IS_VALUE_INFO (info), -1); - - blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset]; - - if (blob->unsigned_value) - return (int64_t)(uint32_t)blob->value; - else - return (int64_t)blob->value; -} - -void -gi_value_info_class_init (gpointer g_class, - gpointer class_data) -{ - GIBaseInfoClass *info_class = g_class; - - info_class->info_type = GI_INFO_TYPE_VALUE; -} diff --git a/girepository/gienuminfo.h b/girepository/gienuminfo.h index ba1d33d09..2f2546f30 100644 --- a/girepository/gienuminfo.h +++ b/girepository/gienuminfo.h @@ -44,17 +44,6 @@ G_BEGIN_DECLS ((gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_ENUM) || \ (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_FLAGS)) -/** - * GI_IS_VALUE_INFO: - * @info: an info structure - * - * Checks if @info is a [class@GIRepository.ValueInfo]. - * - * Since: 2.80 - */ -#define GI_IS_VALUE_INFO(info) \ - (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_VALUE) - GI_AVAILABLE_IN_ALL unsigned int gi_enum_info_get_n_values (GIEnumInfo *info); @@ -76,8 +65,4 @@ GITypeTag gi_enum_info_get_storage_type (GIEnumInfo *info); GI_AVAILABLE_IN_ALL const char * gi_enum_info_get_error_domain (GIEnumInfo *info); - -GI_AVAILABLE_IN_ALL -int64_t gi_value_info_get_value (GIValueInfo *info); - G_END_DECLS diff --git a/girepository/girepository.h b/girepository/girepository.h index 52ef28a8d..6c687b19d 100644 --- a/girepository/girepository.h +++ b/girepository/girepository.h @@ -50,6 +50,7 @@ #include #include #include +#include #include G_BEGIN_DECLS diff --git a/girepository/givalueinfo.c b/girepository/givalueinfo.c new file mode 100644 index 000000000..b55cf670e --- /dev/null +++ b/girepository/givalueinfo.c @@ -0,0 +1,81 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * GObject introspection: Enum implementation + * + * Copyright (C) 2005 Matthias Clasen + * Copyright (C) 2008,2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include + +#include +#include "gibaseinfo-private.h" +#include "girepository-private.h" +#include "gitypelib-internal.h" +#include "givalueinfo.h" + +/** + * GIValueInfo: + * + * A `GIValueInfo` represents a value in an enumeration. + * + * The `GIValueInfo` is fetched by calling + * [method@GIRepository.EnumInfo.get_value] on a [class@GIRepository.EnumInfo]. + * + * Since: 2.80 + */ + +/** + * gi_value_info_get_value: + * @info: a #GIValueInfo + * + * Obtain the enumeration value of the `GIValueInfo`. + * + * Returns: the enumeration value. This will always be representable + * as a 32-bit signed or unsigned value. The use of `int64_t` as the + * return type is to allow both. + * Since: 2.80 + */ +int64_t +gi_value_info_get_value (GIValueInfo *info) +{ + GIRealInfo *rinfo = (GIRealInfo *)info; + ValueBlob *blob; + + g_return_val_if_fail (info != NULL, -1); + g_return_val_if_fail (GI_IS_VALUE_INFO (info), -1); + + blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset]; + + if (blob->unsigned_value) + return (int64_t)(uint32_t)blob->value; + else + return (int64_t)blob->value; +} + +void +gi_value_info_class_init (gpointer g_class, + gpointer class_data) +{ + GIBaseInfoClass *info_class = g_class; + + info_class->info_type = GI_INFO_TYPE_VALUE; +} diff --git a/girepository/givalueinfo.h b/girepository/givalueinfo.h new file mode 100644 index 000000000..3cb20d43d --- /dev/null +++ b/girepository/givalueinfo.h @@ -0,0 +1,50 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * GObject introspection: Enum and Enum values + * + * Copyright (C) 2005 Matthias Clasen + * Copyright (C) 2008,2009 Red Hat, Inc. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#pragma once + +#if !defined (__GIREPOSITORY_H_INSIDE__) && !defined (GI_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * GI_IS_VALUE_INFO: + * @info: an info structure + * + * Checks if @info is a [class@GIRepository.ValueInfo]. + * + * Since: 2.80 + */ +#define GI_IS_VALUE_INFO(info) \ + (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_VALUE) + + +GI_AVAILABLE_IN_ALL +int64_t gi_value_info_get_value (GIValueInfo *info); + +G_END_DECLS diff --git a/girepository/meson.build b/girepository/meson.build index c39efa618..be45a9bc5 100644 --- a/girepository/meson.build +++ b/girepository/meson.build @@ -62,6 +62,7 @@ girepo_headers = files( 'gitypes.h', 'giunioninfo.h', 'giunresolvedinfo.h', + 'givalueinfo.h', 'givfuncinfo.h', ) @@ -162,6 +163,7 @@ girepo_sources = files( 'gitypelib.c', 'giunioninfo.c', 'giunresolvedinfo.c', + 'givalueinfo.c', 'givfuncinfo.c', )