Top | ![]() |
![]() |
![]() |
![]() |
#define | gwy_NC() |
#define | gwy_C() |
#define | GWY_SWAP() |
#define | GWY_ORDER() |
#define | gwy_strequal() |
#define | GWY_CLAMP() |
#define | gwy_clear() |
#define | gwy_clear1() |
#define | gwy_assign() |
#define | GWY_SI_VALUE_FORMAT_FREE() |
#define | GWY_FREE_ARRAY() |
#define | GWY_FREE_STRING() |
#define | GWY_FREE() |
#define | gwy_debug() |
#define | gwy_info() |
void | gwy_debug_gnu () |
#define gwy_NC(context, string) context "\004" string
Form a source code prefixed translatable message.
The macro expands to context
and string
joined by "\004"
. It is similar to the standard NC_()
macro, but it is also very different because NC_()
drops the context. The actual translation functions expect you
to provide it again. This macro creates a string which carries the context and can be used with a function such
as gwy_sgettext()
or macro gwy_C()
.
#define gwy_C(string) gwy_sgettext(GETTEXT_PACKAGE, string)
Translate a prefixed translatable message in the default domain.
The macro expands to gwy_sgettext()
with the first argument set to GETTEXT_DOMAIN. It thus relies on GETTEXT_DOMAIN
being correctly defined where the macro is used. See gwy_sgettext()
documentation for a discussion where this can
be a useful function and where you should stick to the standard C_()
macro.
#define GWY_SWAP(t, x, y)
Swaps two variables (more precisely lhs and rhs expressions) of type t
in a single statement.
Both x
and y
are evaluated multiple times as both lhs and rhs expressions. If their evaluation has any side
effect the result is undefined.
#define GWY_ORDER(t, x, y)
Ensures ascending order of two variables (more precisely lhs and rhs expressions) of type t
in a single statement.
The macro makes y
not smaller than x
. They may be still equal or their relation can be undefined (if either is
NaN).
Both x
and y
are evaluated multiple times as both lhs and rhs expressions. If their evaluation has any side
effect the result is undefined.
#define GWY_CLAMP(x, low, hi)
Ensures that x
is between the limits set by low
and hi
.
This macro differs from GLib's CLAMP()
by G_UNLIKELY()
assertions on the tests that x
is smaller than low
and
larger than hi
. This makes x
already being in the right range the fast code path.
It is supposed to be used on results of floating-point operations that should fall to a known range but may
occasionaly fail to due to rounding errors and in similar situations. Under normal circumstances, use CLAMP()
.
#define gwy_clear(array, n)
Fills a memory block representing an array with zeroes.
This is a shorthand for memset()
, with the number of bytes to fill calculated from the type of the pointer.
See gwy_clear1()
for a more convenient macro for clearing a single variable.
#define gwy_clear1(var)
Fills the memory occupied by a single variable with zeroes.
This is a shorthand for memset()
, with the number of bytes to fill calculated from the type of the variable.
See gwy_clear()
for clearing arrays and/or passing the address already as a pointer.
#define gwy_assign(dest, source, n)
Copies items from one memory block representing an array to another.
This is a shorthand for memcpy()
, with the number of bytes to fill calculated from the type of the dest
pointer
(the type of source
does not enter the calculation!)
As with memcpy()
, the memory blocks may not overlap.
#define GWY_FREE_ARRAY(arr)
Frees and nulls a pointer to a GArray if it exists.
The array memory must have been allocated using g_array_new()
or a similar function.
If ptr
is not NULL
, g_array_free()
is called on it, freeing also array data, and NULL
is assigned to the
variable. In all cases ptr
will be NULL
at the end.
A useful property of this macro is its idempotence.
#define GWY_FREE_STRING(str)
Frees and nulls a pointer to a GString if it exists.
The array memory must have been allocated using g_string_new()
or a similar function.
If ptr
is not NULL
, g_string_free()
is called on it, freeing also string data, and NULL
is assigned to the
variable. In all cases ptr
will be NULL
at the end.
A useful property of this macro is its idempotence.
#define GWY_FREE(ptr)
Frees and nulls a pointer if it exists.
The memory must have been allocated using one of the g_new()
and g_malloc()
class of functions.
If ptr
is not NULL
, g_free()
is called on it and NULL
is assigned to the variable. In all cases ptr
will be
NULL
at the end.
A useful property of this macro is its idempotence.
#define gwy_debug(format...)
Emits a debugging message to the program log.
The message is amended with additional information such as source file, line number or time (when possible) and
emitted at log level G_LOG_LEVEL_DEBUG
via g_log()
.
It should be noted that the default GLib log handler discards G_LOG_LEVEL_DEBUG
messages but the default Gwyddion
handler does not.
The macro expands to nothing if compiled without DEBUG defined.
#define gwy_info(format...)
Emits an informational message.
The message is emitted at log level G_LOG_LEVEL_INFO
via g_log()
. This macro is primarily meant for reporting of
non-fatal issues in file import modules.
It should be noted that the default GLib log handler discards G_LOG_LEVEL_INFO
messages but the default Gwyddion
handler does not.
void gwy_debug_gnu (const gchar *domain
,const gchar *fileline
,const gchar *funcname
,const gchar *format
,...
);
Print a debugging message.
To be used via gwy_debug()
, should not be used directly.
#define GWY_GPARAM_RWE (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY)
Standard property flags (read, write, static strings and explicitit notify).
Most object properties have the same standard GParamSpecFlags: G_PARAM_READWRITE
, G_PARAM_STATIC_STRINGS
and
G_PARAM_EXPLICIT_NOTIFY
(some of them being combinations of multiple flags themselves). This macro can be used to
write them in a concise manner.