gwymacros

gwymacros — Utility macros

Synopsis




#define             gettext                             (x)
#define             ngettext                            (sing, plur, n)
#define             _                                   (x)
#define             N_                                  (x)
#define             GWY_SWAP                            (t, x, y)
#define             gwy_strequal                        (a, b)
#define             GWY_CLAMP                           (x, low, hi)
#define             gwy_object_unref                    (obj)
#define             gwy_signal_handler_disconnect       (obj, hid)
#define             GWY_FIND_PSPEC                      (type, id, spectype)
#define             gwy_debug                           (format...)
void                gwy_debug_gnu                       (const gchar *domain,
                                                         const gchar *fileline,
                                                         const gchar *funcname,
                                                         const gchar *format,
                                                         ...);

Description

Details

gettext()

#define gettext(x) (x)

x :

ngettext()

#define ngettext(sing, plur, n) ((n) == 1 ? (sing) : (plur))

sing :
plur :
n :

_()

#define _(x) gettext(x)

x :

N_()

#define             N_(x)

x :

GWY_SWAP()

#define             GWY_SWAP(t, x, y)

Swaps two variables (more precisely lhs and rhs expressions) of type t in a single statement.

t : A C type.
x : A variable of type t to swap with x.
y : A variable of type t to swap with y.

gwy_strequal()

#define             gwy_strequal(a, b)

Expands to TRUE if strings are equal, to FALSE otherwise.

a : A string.
b : Another string.

GWY_CLAMP()

#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().

x : The value to clamp.
low : The minimum value allowed.
hi : The maximum value allowed.

gwy_object_unref()

#define             gwy_object_unref(obj)

Unreferences an object if it exists.

If obj is not NULL, g_object_unref() is called on it. In all cases obj is set to NULL.

A useful property of this macro is its idempotence.

If the object reference count is greater than one, assure it should be referenced elsewhere, otherwise it leaks memory.

obj : A pointer to GObject or NULL (must be an l-value).

gwy_signal_handler_disconnect()

#define             gwy_signal_handler_disconnect(obj, hid)

Disconnect a signal handler if it exists.

If hid is nonzero and obj is not NULL, the signal handler identified by hid is disconnected. In all cases hid is set to 0.

A useful property of this macro is its idempotence.

obj : A pointer to GObject or NULL.
hid : An obj signal handler id or 0 (must be an l-value).

GWY_FIND_PSPEC()

#define             GWY_FIND_PSPEC(type, id, spectype)

A convenience g_object_class_find_property() wrapper.

It expands to property spec cast to correct type (spec).

type : Object type (e.g. GWY_TYPE_CONTAINER).
id : Property id.
spectype : Param spec type (e.g. DOUBLE).

gwy_debug()

#define             gwy_debug(format...)

Prints a debugging message.

Does nothing if compiled without DEBUG defined.

format... : A format string followed by stuff to print.

gwy_debug_gnu ()

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.

domain : Log domain.
fileline : File and line info.
funcname : Function name.
format : Message format.
... : Message parameters.

See Also

gwyutils -- utility functions