Top | ![]() |
![]() |
![]() |
![]() |
gboolean | (*GwySetFractionFunc) () |
gboolean | (*GwySetMessageFunc) () |
void | gwy_hash_table_to_slist_cb () |
void | gwy_hash_table_to_list_cb () |
gchar * | gwy_strkill () |
gchar * | gwy_strreplace () |
gint | gwy_strdiffpos () |
gboolean | gwy_strisident () |
gboolean | gwy_ascii_strcase_equal () |
guint | gwy_ascii_strcase_hash () |
guint | gwy_stramong () |
gpointer | gwy_memmem () |
gboolean | gwy_file_get_contents () |
gboolean | gwy_file_abandon_contents () |
gchar * | gwy_find_self_dir () |
const gchar * | gwy_get_user_dir () |
const gchar * | gwy_get_home_dir () |
gchar * | gwy_canonicalize_path () |
gboolean | gwy_filename_ignore () |
gchar * | gwy_sgettext () |
gchar * | gwy_str_next_line () |
guint | gwy_str_fixed_font_width () |
guint | gwy_gstring_replace () |
void | gwy_gstring_to_native_eol () |
void | gwy_memcpy_byte_swap () |
void | gwy_convert_raw_data () |
guint | gwy_raw_data_size () |
void | gwy_object_set_or_reset () |
gboolean | gwy_set_member_object () |
FILE * | gwy_fopen () |
gint | gwy_fprintf () |
Various utility functions: creating GLib lists from hash tables
gwy_hash_table_to_list_cb()
), protably finding Gwyddion application
directories (gwy_find_self_dir()
), string functions (gwy_strreplace()
), path
manipulation (gwy_canonicalize_path()
).
gboolean
(*GwySetFractionFunc) (gdouble fraction
);
Type of function for reporting progress of a long computation.
Usually you want to use gwy_app_wait_set_fraction()
.
gboolean
(*GwySetMessageFunc) (const gchar *message
);
Type of function for reporting what a long computation is doing now.
Usually you want to use gwy_app_wait_set_message()
.
void gwy_hash_table_to_slist_cb (gpointer unused_key
,gpointer value
,gpointer user_data
);
GHashTable to GSList convertor.
Usble in g_hash_table_foreach()
, pass a pointer to a GSList* as user
data to it.
unused_key |
Hash key (unused). |
|
value |
Hash value. |
|
user_data |
User data (a pointer to GSList*). |
void gwy_hash_table_to_list_cb (gpointer unused_key
,gpointer value
,gpointer user_data
);
GHashTable to GList convertor.
Usble in g_hash_table_foreach()
, pass a pointer to a GList* as user
data to it.
unused_key |
Hash key (unused). |
|
value |
Hash value. |
|
user_data |
User data (a pointer to GList*). |
gchar * gwy_strkill (gchar *s
,const gchar *killchars
);
Removes characters in killchars
from string s
, modifying it in place.
Use gwy_strkill(g_strdup(s
), killchars
) to get a modified copy.
gchar * gwy_strreplace (const gchar *haystack
,const gchar *needle
,const gchar *replacement
,gsize maxrepl
);
Replaces occurences of string needle
in haystack
with replacement
.
See gwy_gstring_replace()
for a function which does in-place replacement
on a GString.
gint gwy_strdiffpos (const gchar *s1
,const gchar *s2
);
Finds position where two strings differ.
The last position where the strings do not differ yet.
Particularly, -1 is returned if either string is NULL
,
zero-length, or they differ in the very first character.
gboolean gwy_strisident (const gchar *s
,const gchar *more
,const gchar *startmore
);
Checks whether a string is valid identifier.
Valid identifier must start with an alphabetic character or a character from
startmore
, and it must continue with alphanumeric characters or characters
from more
.
Note underscore is not allowed by default, you have to pass it in more
and/or startmore
.
gboolean gwy_ascii_strcase_equal (gconstpointer v1
,gconstpointer v2
);
Compares two strings for equality, ignoring case.
The case folding is performed only on ASCII characters.
This function is intended to be passed to g_hash_table_new()
as
key_equal_func
, namely in conjuction with gwy_ascii_strcase_hash()
hashing
function.
Since: 2.26
guint
gwy_ascii_strcase_hash (gconstpointer v
);
Converts a string to a hash value, ignoring case.
The case folding is performed only on ASCII characters.
This function is intended to be passed to g_hash_table_new()
as hash_func
,
namely in conjuction with gwy_ascii_strcase_equal()
comparison function.
Since: 2.26
guint gwy_stramong (const gchar *str
,...
);
Checks whether a string is equal to any from given list.
Zero if str
does not equal to any string from the list, nozero
othwerise. More precisely, the position + 1 of the first string
str
equals to is returned in the latter case.
Since: 2.11
gpointer gwy_memmem (gconstpointer haystack
,gsize haystack_len
,gconstpointer needle
,gsize needle_len
);
Find a block of memory in another block of memory.
This function is very similar to strstr()
, except that it works with
arbitrary memory blocks instead of NUL-terminated strings.
If needle_len
is zero, haystack
is always returned.
On GNU systems with glibc at least 2.1 this is a just a trivial memmem()
wrapper. On other systems it emulates memmem()
behaviour.
haystack |
Memory block to search in. |
|
haystack_len |
Size of |
|
needle |
Memory block to find. |
|
needle_len |
Size of |
Pointer to the first byte of memory block in haystack
that matches
needle
; NULL
if no such block exists.
Since: 2.12
gboolean gwy_file_get_contents (const gchar *filename
,guchar **buffer
,gsize *size
,GError **error
);
Reads or mmaps file filename
into memory.
The buffer must be treated as read-only and must be freed with
gwy_file_abandon_contents()
. It is NOT guaranteed to be NUL-terminated,
use size
to find its end.
filename |
A file to read contents of. |
|
buffer |
Buffer to store the file contents. |
|
size |
Location to store buffer (file) size. |
|
error |
Return location for a GError. |
gboolean gwy_file_abandon_contents (guchar *buffer
,gsize size
,GError **error
);
Frees or unmmaps memory allocated by gwy_file_get_contents()
.
buffer |
Buffer with file contents as created by |
|
size |
Buffer size. |
|
error |
Return location for a GError. Since 2.22 no error can occur;
safely pass |
gchar *
gwy_find_self_dir (const gchar *dirname
);
Finds a system Gwyddion directory.
On Unix, a compiled-in path is returned, unless it's overriden with environment variables (see gwyddion manual page).
On Win32, the directory where the libgwyddion DLL from which this function was called resides is taken as the base and the location of other Gwyddion directories is calculated from it.
The returned value is not actually tested for existence, it's up to caller.
To obtain the Gwyddion user directory see gwy_get_user_dir()
.
const gchar *
gwy_get_user_dir (void
);
Returns the directory where Gwyddion user settings and data should be stored.
On Unix this is usually a dot-directory in user's home directory. On modern Win32 the returned directory resides in user's Documents and Settings. On silly platforms or silly occasions, silly locations (namely a temporary directory) can be returned as fallback.
To obtain a Gwyddion system directory see gwy_find_self_dir()
.
const gchar *
gwy_get_home_dir (void
);
Returns home directory, or temporary directory as a fallback.
Under normal circumstances the same string as g_get_home_dir()
would return
is returned. But on MS Windows, something like "C:\Windows\Temp" can be
returned too, as it is as good as anything else (we can write there).
gchar *
gwy_canonicalize_path (const gchar *path
);
Canonicalizes a filesystem path.
Particularly it makes the path absolute, resolves ..' and
.', and fixes
slash sequences to single slashes. On Win32 it also converts all
backslashes to slashes along the way.
Note this function does NOT resolve symlinks, use g_file_read_link()
for
that.
gboolean
gwy_filename_ignore (const gchar *filename_sys
);
Checks whether file should be ignored.
This function checks for common file names indicating files that should be normally ignored. Currently it means backup files (ending with ~ or .bak) and Unix hidden files (starting with a dot).
gchar *
gwy_sgettext (const gchar *msgid
);
Translate a message id containing disambiguating prefix ending with `|'.
gchar *
gwy_str_next_line (gchar **buffer
);
Extracts a next line from a character buffer, modifying it in place.
buffer
is updated to point after the end of the line and the "\n"
(or "\r" or "\r\n") is replaced with "\0", if present.
The final line may or may not be terminated with an EOL marker, its contents
is returned in either case. Note, however, that the empty string "" is not
interpreted as an empty unterminated line. Instead, NULL
is immediately
returned.
The typical usage of gwy_str_next_line()
is:
1 2 3 4 5 6 7 |
gchar *p = text; for (gchar *line = gwy_str_next_line(&p); line; line = gwy_str_next_line(&p)) { g_strstrip(line); // Do something more with line } |
guint
gwy_str_fixed_font_width (const gchar *str
);
Measures the width of UTF-8 encoded string in fixed-width font.
This corresponds to width of the string displayed on a text terminal, for instance. Zero and double width characters are taken into account. It is not guaranteed all terminals display the string with the calculated width.
Since: 2.52
guint gwy_gstring_replace (GString *str
,const gchar *old
,const gchar *replacement
,gint count
);
Replaces non-overlapping occurrences of one string with another in a GString.
Passing NULL
or the empty string for replacement
will cause the occurrences
of old
to be removed.
Passing NULL
or the empty string for old
means a match occurs at every
position in the string, including after the last character. So replacement
will be inserted at every position in this case.
See gwy_strreplace()
for a function which creates a new plain C string with
substring replacement.
str |
A GString string to modify in place. |
|
old |
The character sequence to find and replace. Passing |
|
replacement |
The character sequence that should replace |
|
count |
The maximum number of replacements to make. A negative number means
replacing all occurrences of |
The number of replacements made. A non-zero value means the string has been modified, no-op replacements do not count.
Since: 2.36
void
gwy_gstring_to_native_eol (GString *str
);
Converts "\n" in a string to operating system native line terminators.
Text files are most easily written by opening them in the text mode. This
function can be useful for writing text files using functions such as
g_file_set_contents()
that do not permit the conversion to happen
automatically.
It is a no-op on all POSIX systems, including OS X. So at present, it actually performs any conversion at all only on MS Windows.
Since: 2.36
void gwy_memcpy_byte_swap (const guint8 *source
,guint8 *dest
,gsize item_size
,gsize nitems
,gsize byteswap
);
Copies a block of memory swapping bytes along the way.
The bits in byteswap
correspond to groups of bytes to swap: if j-th bit is
set, adjacent groups of 2j bits are swapped. For example, value 3 means
items will be divided into couples (bit 1) of bytes and adjacent couples of
bytes swapped, and then divided into single bytes (bit 0) and adjacent bytes
swapped. The net effect is reversal of byte order in groups of four bytes.
More generally, if you want to reverse byte order in groups of size
2j, use byte swap pattern j-1.
When byteswap
is zero, this function reduces to plain memcpy()
.
source |
Source memory block. |
|
dest |
Destination memory location. |
|
item_size |
Size of one copied item, it should be a power of two. |
|
nitems |
Number of items of size |
|
byteswap |
Byte swap pattern. |
Since: 2.1
void gwy_convert_raw_data (gconstpointer data
,gsize nitems
,gssize stride
,GwyRawDataType datatype
,GwyByteOrder byteorder
,gdouble *target
,gdouble scale
,gdouble offset
);
Converts a block of raw data items to doubles.
Note that conversion from 64bit integral types may lose information as they have more bits than the mantissa of doubles. All other conversions should be precise.
data |
Pointer to the input raw data to be converted to doubles. The data
type is given by |
|
nitems |
Data block length, i.e. the number of consecutive items to convert. |
|
stride |
Item stride in the raw data, measured in raw values. Pass 1 for
consecutive raw data. For backward reading, pass -1 and point
|
|
datatype |
Type of the raw data items. |
|
byteorder |
Byte order of the raw data. |
|
target |
Array of |
|
scale |
Factor to multiply the data with. |
|
offset |
Constant to add to the data after multiplying with |
Since: 2.25
guint
gwy_raw_data_size (GwyRawDataType datatype
);
Reports the size of a single raw data item.
Since: 2.25
void gwy_object_set_or_reset (gpointer object
,GType type
,...
);
Sets object properties, resetting other properties to defaults.
All explicitly specified properties are set. In addition, all unspecified
settable properties of type type
(or all unspecified properties if type
is
0) are reset to defaults. Settable means the property is writable and not
construction-only.
The order in which properties are set is undefined beside keeping the relative order of explicitly specified properties, therefore this function is not generally usable for objects with interdependent properties.
Unlike g_object_set()
, it does not set properties that already have the
requested value, as a consequences notifications are emitted only for
properties which actually change.
object |
A GObject. |
|
type |
The type whose properties are to reset, may be zero for all types.
The object must be of this type (more precisely |
|
... |
|
gboolean gwy_set_member_object (gpointer instance
,gpointer member_object
,GType expected_type
,gpointer member_field
,...
);
Replaces a member object of another object, handling signal connection and disconnection.
If member_object
is not NULL
a reference is taken, sinking any floating
objects (and conversely, the reference to the previous member object is
released).
The purpose is to simplify bookkeeping in classes that have settable member objects and (usually but not necessarily) need to connect to some signals of these member objects. Since this function both connects and disconnects signals it must be always called with the same set of signals, including callbacks and flags, for a specific member object.
Example for a GwyFoo class owning a GwyGradient member object, assuming the usual conventions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
typedef struct _GwyFooPrivate GwyFooPrivate; struct _GwyFooPrivate { GwyGradient *gradient; gulong gradient_data_changed_id; }; static gboolean set_gradient(GwyFoo *foo) { GwyFooPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE(foo, GWY_TYPE_FOO, GwyFooPrivate); if (!gwy_set_member_object(foo, gradient, GWY_TYPE_GRADIENT, &priv->gradient, "data-changed", &foo_gradient_data_changed, &priv->gradient_data_changed_id, G_CONNECT_SWAPPED, NULL)) return FALSE; // Do whatever else needs to be done if the gradient changes. return TRUE; } |
The gradient setter then usually only calls
and disposing of the member object again
only calls set_gradient()
but with set_gradient()
NULL
gradient.
instance |
An object instance. |
|
member_object |
Another object to be owned by |
|
expected_type |
The type of |
|
member_field |
Pointer to location storing the current member object to
be replaced by |
|
... |
List of quadruplets of the form signal name, GCallback callback, gulong pointer to location to hold the signal handler id, and GConnectFlags connection flags. |
TRUE
if member_field
was changed. FALSE
means the new
member is identical to the current one and the function reduced to
no-op (or that an assertion faled).
Since: 2.49
FILE * gwy_fopen (const gchar *filename
,const gchar *mode
);
A wrapper for the stdio fopen()
function. The fopen()
function
opens a file and associates a new stream with it.
Because file descriptors are specific to the C library on Windows,
and a file descriptor is part of the FILE struct, the FILE* returned
by this function makes sense only to functions in the same C library.
Thus if the GLib-using code uses a different C library than GLib does,
the FILE* returned by this function cannot be passed to C library
functions like fprintf()
or fread()
.
See your C library manual for more details about fopen()
.
filename |
a pathname in the GLib file name encoding (UTF-8 on Windows) |
|
mode |
a string describing the mode in which the file should be opened |
Since: 2.43
gint gwy_fprintf (FILE *file
,gchar const *format
,...
);
An implementation of the standard fprintf()
function which supports
positional parameters, as specified in the Single Unix Specification.
file |
the stream to write to. |
|
format |
a standard |
|
... |
the arguments to insert in the output. |
Since: 2.43
Types of raw data.
Multibyte types usually need to be complemented with GwyByteOrder to get a full type specification.
Signed 8bit integer (one byte). |
||
Unsigned 8bit integer (one byte). |
||
Signed 16bit integer (two bytes). |
||
Unsigned 16bit integer (two bytes). |
||
Signed 32bit integer (four bytes). |
||
Unsigned 32bit integer (four bytes). |
||
Signed 64bit integer (eight bytes). |
||
Unsigned 64bit integer (eight bytes). |
||
Half-precision floating point number (two bytes). |
||
Single-precision floating point number (four bytes). |
||
Pascal ‘real’ floating point number (six bytes). |
||
Double-precision floating point number (eight bytes). |
Since: 2.25
Type of byte order.
Native byte order. |
||
Little endian byte order (the same as
|
||
Big endian byte order (the same as
|
Since: 2.25