diff options
Diffstat (limited to 'src/strutil.c')
| -rw-r--r-- | src/strutil.c | 87 |
1 files changed, 86 insertions, 1 deletions
diff --git a/src/strutil.c b/src/strutil.c index ae96239..ca4181f 100644 --- a/src/strutil.c +++ b/src/strutil.c @@ -1,5 +1,24 @@ +/** + * @file strutil.c + * @author Gertjan van den Burg + * @date January, 2014 + * @brief Utility functions for dealing with strings + * + * @details + * This file contains functions for reading files, reading strings from a + * format and checking start and ends of strings. + */ + #include "strutil.h" +/** + * @brief Check if a string starts with a prefix + * + * @param[in] str string + * @param[in] pre prefix + * @returns boolean, true if string starts with prefix, false + * otherwise + */ bool str_startswith(const char *str, const char *pre) { size_t lenpre = strlen(pre), @@ -7,19 +26,41 @@ bool str_startswith(const char *str, const char *pre) return lenstr < lenpre ? false : strncmp(pre, str, lenpre) == 0; } +/** + * @brief Check if a string ends with a suffix + * + * @param[in] str string + * @param[in] suf suffix + * @returns boolean, true if string ends with suffix, false + * otherwise + */ bool str_endswith(const char *str, const char *suf) { size_t lensuf = strlen(suf), lenstr = strlen(str); - return lenstr < lensuf ? false : strncmp(str + lenstr - lensuf, suf, lensuf) == 0; + return lenstr < lensuf ? false : strncmp(str + lenstr - lensuf, suf, + lensuf) == 0; } +/** + * @brief Move to next line in file + * + * @param[in] fid File opened for reading + * @param[in] filename name of the file pointed to by fid + */ void next_line(FILE *fid, char *filename) { char buffer[MAX_LINE_LENGTH]; get_line(fid, filename, buffer); } +/** + * @brief Read line to buffer + * + * @param[in] fid File opened for reading + * @param[in] filename name of the file + * @param[in,out] buffer allocated buffer to read to + */ void get_line(FILE *fid, char *filename, char *buffer) { if (fgets(buffer, MAX_LINE_LENGTH, fid) == NULL) { @@ -28,6 +69,14 @@ void get_line(FILE *fid, char *filename, char *buffer) } } +/** + * @brief Read a double from file following a format + * + * @param[in] fid File opened for reading + * @param[in] filename Name of the file + * @param[in] fmt Format containing a float format + * @returns value read (if any) + */ double get_fmt_double(FILE *fid, char *filename, const char *fmt) { char buffer[MAX_LINE_LENGTH]; @@ -38,6 +87,14 @@ double get_fmt_double(FILE *fid, char *filename, const char *fmt) return value; } +/** + * @brief Read a long integer from file following a format + * + * @param[in] fid File opened for reading + * @param[in] filename Name of the file + * @param[in] fmt Format containing a long integer format + * @returns value read (if any) + */ long get_fmt_long(FILE *fid, char *filename, const char *fmt) { char buffer[MAX_LINE_LENGTH]; @@ -48,6 +105,20 @@ long get_fmt_long(FILE *fid, char *filename, const char *fmt) return value; } +/** + * @brief Read all doubles in a given buffer + * + * @details + * This function is used to read a line of doubles from a buffer. All the + * doubles found are stored in a pre-allocated array. + * + * @param[in] buffer a string buffer + * @param[in] offset an offset of the string to start looking for + * doubles + * @param[in] all_doubles pre-allocated array of doubles (should be large + * enough) + * @returns number of doubles read + */ long all_doubles_str(char *buffer, long offset, double *all_doubles) { double value; @@ -69,6 +140,20 @@ long all_doubles_str(char *buffer, long offset, double *all_doubles) return i; } +/** + * @brief Read all longs in a given buffer + * + * @details + * This function is used to read a line of longs from a buffer. All the + * longs found are stored in a pre-allocated array. + * + * @param[in] buffer a string buffer + * @param[in] offset an offset of the string to start looking for + * longs + * @param[in] all_longs pre-allocated array of longs (should be large + * enough) + * @returns number of longs read + */ long all_longs_str(char *buffer, long offset, long *all_longs) { long value; |
