<refentry id="glib-Basic-Types"> <refmeta> <refentrytitle>Basic Types</refentrytitle> <manvolnum>3</manvolnum> <refmiscinfo>GLIB Library</refmiscinfo> </refmeta> <refnamediv> <refname>Basic Types</refname><refpurpose>standard GLib types, defined for ease-of-use and portability.</refpurpose> </refnamediv> <refsynopsisdiv><title>Synopsis</title> <synopsis> #include <glib.h> typedef <link linkend="gboolean">gboolean</link>; typedef <link linkend="gpointer">gpointer</link>; typedef <link linkend="gconstpointer">gconstpointer</link>; typedef <link linkend="gchar">gchar</link>; typedef <link linkend="guchar">guchar</link>; typedef <link linkend="gint">gint</link>; typedef <link linkend="guint">guint</link>; typedef <link linkend="gshort">gshort</link>; typedef <link linkend="gushort">gushort</link>; typedef <link linkend="glong">glong</link>; typedef <link linkend="gulong">gulong</link>; typedef <link linkend="gint8">gint8</link>; typedef <link linkend="guint8">guint8</link>; typedef <link linkend="gint16">gint16</link>; typedef <link linkend="guint16">guint16</link>; typedef <link linkend="gint32">gint32</link>; typedef <link linkend="guint32">guint32</link>; #define <link linkend="G-HAVE-GINT64-CAPS">G_HAVE_GINT64</link> typedef <link linkend="gint64">gint64</link>; typedef <link linkend="guint64">guint64</link>; #define <link linkend="G-GINT64-CONSTANT-CAPS">G_GINT64_CONSTANT</link> (val) typedef <link linkend="gfloat">gfloat</link>; typedef <link linkend="gdouble">gdouble</link>; typedef <link linkend="gsize">gsize</link>; typedef <link linkend="gssize">gssize</link>; </synopsis> </refsynopsisdiv> <refsect1> <title>Description</title> <para> GLib defines a number of commonly used types, which can be divided into 4 groups: <itemizedlist> <listitem><para> New types which are not part of standard C - <link linkend="gboolean"><type>gboolean</type></link>, <link linkend="gsize"><type>gsize</type></link>, <link linkend="gssize"><type>gssize</type></link>. </para></listitem> <listitem><para> Integer types which are guaranteed to be the same size across all platforms - <link linkend="gint8"><type>gint8</type></link>, <link linkend="guint8"><type>guint8</type></link>, <link linkend="gint16"><type>gint16</type></link>, <link linkend="guint16"><type>guint16</type></link>, <link linkend="gint32"><type>gint32</type></link>, <link linkend="guint32"><type>guint32</type></link>, <link linkend="gint64"><type>gint64</type></link>, <link linkend="guint64"><type>guint64</type></link>. </para></listitem> <listitem><para> Types which are easier to use than their standard C counterparts - <link linkend="gpointer"><type>gpointer</type></link>, <link linkend="gconstpointer"><type>gconstpointer</type></link>, <link linkend="guchar"><type>guchar</type></link>, <link linkend="guint"><type>guint</type></link>, <link linkend="gushort"><type>gushort</type></link>, <link linkend="gulong"><type>gulong</type></link>. </para></listitem> <listitem><para> Types which correspond exactly to standard C types, but are included for completeness - <link linkend="gchar"><type>gchar</type></link>, <link linkend="gint"><type>gint</type></link>, <link linkend="gshort"><type>gshort</type></link>, <link linkend="glong"><type>glong</type></link>, <link linkend="gfloat"><type>gfloat</type></link>, <link linkend="gdouble"><type>gdouble</type></link>. </para></listitem> </itemizedlist> </para> </refsect1> <refsect1> <title>Details</title> <refsect2> <title><anchor id="gboolean"/>gboolean</title> <indexterm><primary>gboolean</primary></indexterm><programlisting>typedef gint gboolean; </programlisting> <para> A standard <type>boolean</type> type. Variables of this type should only contain the value <link linkend="TRUE-CAPS"><type>TRUE</type></link> or <link linkend="FALSE-CAPS"><type>FALSE</type></link>. </para></refsect2> <refsect2> <title><anchor id="gpointer"/>gpointer</title> <indexterm><primary>gpointer</primary></indexterm><programlisting>typedef void* gpointer; </programlisting> <para> An untyped pointer. <link linkend="gpointer"><type>gpointer</type></link> looks better and is easier to use than <type>void*</type>. </para></refsect2> <refsect2> <title><anchor id="gconstpointer"/>gconstpointer</title> <indexterm><primary>gconstpointer</primary></indexterm><programlisting>typedef const void *gconstpointer; </programlisting> <para> An untyped pointer to constant data. The data pointed to should not be changed. </para> <para> This is typically used in function prototypes to indicate that the data pointed to will not be altered by the function. </para></refsect2> <refsect2> <title><anchor id="gchar"/>gchar</title> <indexterm><primary>gchar</primary></indexterm><programlisting>typedef char gchar; </programlisting> <para> Corresponds to the standard C <type>char</type> type. </para></refsect2> <refsect2> <title><anchor id="guchar"/>guchar</title> <indexterm><primary>guchar</primary></indexterm><programlisting>typedef unsigned char guchar; </programlisting> <para> Corresponds to the standard C <type>unsigned char</type> type. </para></refsect2> <refsect2> <title><anchor id="gint"/>gint</title> <indexterm><primary>gint</primary></indexterm><programlisting>typedef int gint; </programlisting> <para> Corresponds to the standard C <type>int</type> type. Values of this type can range from <link linkend="G-MININT-CAPS"><type>G_MININT</type></link> to <link linkend="G-MAXINT-CAPS"><type>G_MAXINT</type></link>. </para></refsect2> <refsect2> <title><anchor id="guint"/>guint</title> <indexterm><primary>guint</primary></indexterm><programlisting>typedef unsigned int guint; </programlisting> <para> Corresponds to the standard C <type>unsigned int</type> type. Values of this type can range from 0 to <link linkend="G-MAXUINT-CAPS"><type>G_MAXUINT</type></link>. </para></refsect2> <refsect2> <title><anchor id="gshort"/>gshort</title> <indexterm><primary>gshort</primary></indexterm><programlisting>typedef short gshort; </programlisting> <para> Corresponds to the standard C <type>short</type> type. Values of this type can range from <link linkend="G-MINSHORT-CAPS"><type>G_MINSHORT</type></link> to <link linkend="G-MAXSHORT-CAPS"><type>G_MAXSHORT</type></link>. </para></refsect2> <refsect2> <title><anchor id="gushort"/>gushort</title> <indexterm><primary>gushort</primary></indexterm><programlisting>typedef unsigned short gushort; </programlisting> <para> Corresponds to the standard C <type>unsigned short</type> type. Values of this type can range from 0 to <link linkend="G-MAXUSHORT-CAPS"><type>G_MAXUSHORT</type></link>. </para></refsect2> <refsect2> <title><anchor id="glong"/>glong</title> <indexterm><primary>glong</primary></indexterm><programlisting>typedef long glong; </programlisting> <para> Corresponds to the standard C <type>long</type> type. Values of this type can range from <link linkend="G-MINLONG-CAPS"><type>G_MINLONG</type></link> to <link linkend="G-MAXLONG-CAPS"><type>G_MAXLONG</type></link>. </para></refsect2> <refsect2> <title><anchor id="gulong"/>gulong</title> <indexterm><primary>gulong</primary></indexterm><programlisting>typedef unsigned long gulong; </programlisting> <para> Corresponds to the standard C <type>unsigned long</type> type. Values of this type can range from 0 to <link linkend="G-MAXULONG-CAPS"><type>G_MAXULONG</type></link>. </para></refsect2> <refsect2> <title><anchor id="gint8"/>gint8</title> <indexterm><primary>gint8</primary></indexterm><programlisting>typedef signed char gint8; </programlisting> <para> A signed integer guaranteed to be 8 bits on all platforms. Values of this type can range from -128 to 127. </para></refsect2> <refsect2> <title><anchor id="guint8"/>guint8</title> <indexterm><primary>guint8</primary></indexterm><programlisting>typedef unsigned char guint8; </programlisting> <para> An unsigned integer guaranteed to be 8 bits on all platforms. Values of this type can range from 0 to 255. </para></refsect2> <refsect2> <title><anchor id="gint16"/>gint16</title> <indexterm><primary>gint16</primary></indexterm><programlisting>typedef signed short gint16; </programlisting> <para> A signed integer guaranteed to be 16 bits on all platforms. Values of this type can range from -32,768 to 32,767. </para></refsect2> <refsect2> <title><anchor id="guint16"/>guint16</title> <indexterm><primary>guint16</primary></indexterm><programlisting>typedef unsigned short guint16; </programlisting> <para> An unsigned integer guaranteed to be 16 bits on all platforms. Values of this type can range from 0 to 65,535. </para></refsect2> <refsect2> <title><anchor id="gint32"/>gint32</title> <indexterm><primary>gint32</primary></indexterm><programlisting>typedef signed int gint32; </programlisting> <para> A signed integer guaranteed to be 32 bits on all platforms. Values of this type can range from -2,147,483,648 to 2,147,483,647. </para></refsect2> <refsect2> <title><anchor id="guint32"/>guint32</title> <indexterm><primary>guint32</primary></indexterm><programlisting>typedef unsigned int guint32; </programlisting> <para> An unsigned integer guaranteed to be 32 bits on all platforms. Values of this type can range from 0 to 4,294,967,295. </para></refsect2> <refsect2> <title><anchor id="G-HAVE-GINT64-CAPS"/>G_HAVE_GINT64</title> <indexterm><primary>G_HAVE_GINT64</primary></indexterm><programlisting>#define G_HAVE_GINT64 1 /* deprecated, always true */ </programlisting> <para> This macro is defined if 64-bit signed and unsigned integers are available on the platform. </para></refsect2> <refsect2> <title><anchor id="gint64"/>gint64</title> <indexterm><primary>gint64</primary></indexterm><programlisting>G_GNUC_EXTENSION typedef signed long long gint64; </programlisting> <para> A signed integer guaranteed to be 64 bits on all platforms on which it is available (see <link linkend="G-HAVE-GINT64-CAPS"><type>G_HAVE_GINT64</type></link>). Values of this type can range from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. </para></refsect2> <refsect2> <title><anchor id="guint64"/>guint64</title> <indexterm><primary>guint64</primary></indexterm><programlisting>G_GNUC_EXTENSION typedef unsigned long long guint64; </programlisting> <para> An unsigned integer guaranteed to be 64 bits on all platforms on which it is available (see <link linkend="G-HAVE-GINT64-CAPS"><type>G_HAVE_GINT64</type></link>). Values of this type can range from 0 to 18,446,744,073,709,551,615. </para></refsect2> <refsect2> <title><anchor id="G-GINT64-CONSTANT-CAPS"/>G_GINT64_CONSTANT()</title> <indexterm><primary>G_GINT64_CONSTANT</primary></indexterm><programlisting>#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL)) </programlisting> <para> This macro is used to insert 64-bit integer literals into the source code. </para><variablelist role="params"> <varlistentry><term><parameter>val</parameter> :</term> <listitem><simpara>a literal integer value, e.g. 0x1d636b02300a7aa7U. </simpara></listitem></varlistentry> </variablelist></refsect2> <refsect2> <title><anchor id="gfloat"/>gfloat</title> <indexterm><primary>gfloat</primary></indexterm><programlisting>typedef float gfloat; </programlisting> <para> Corresponds to the standard C <type>float</type> type. Values of this type can range from -<link linkend="G-MAXFLOAT-CAPS"><type>G_MAXFLOAT</type></link> to <link linkend="G-MAXFLOAT-CAPS"><type>G_MAXFLOAT</type></link>. </para></refsect2> <refsect2> <title><anchor id="gdouble"/>gdouble</title> <indexterm><primary>gdouble</primary></indexterm><programlisting>typedef double gdouble; </programlisting> <para> Corresponds to the standard C <type>double</type> type. Values of this type can range from -<link linkend="G-MAXDOUBLE-CAPS"><type>G_MAXDOUBLE</type></link> to <link linkend="G-MAXDOUBLE-CAPS"><type>G_MAXDOUBLE</type></link>. </para></refsect2> <refsect2> <title><anchor id="gsize"/>gsize</title> <indexterm><primary>gsize</primary></indexterm><programlisting>typedef unsigned int gsize; </programlisting> <para> An unsigned 32-bit integer intended to represent sizes of data structures. </para></refsect2> <refsect2> <title><anchor id="gssize"/>gssize</title> <indexterm><primary>gssize</primary></indexterm><programlisting>typedef signed int gssize; </programlisting> <para> A signed 32-bit integer intended to represent sizes of data structures. </para></refsect2> </refsect1> </refentry>