URI:
       util.h - ledit - Text editor (WIP)
  HTML git clone git://lumidify.org/ledit.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/ledit.git (encrypted, but very slow)
  HTML git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/ledit.git (over tor)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       util.h (1605B)
       ---
            1 #ifndef _UTIL_H_
            2 #define _UTIL_H_
            3 
            4 /*
            5  * Return the position of the next start of a utf8 character.
            6  * If there is none, the position of the terminating NUL is
            7  * returned.
            8  */
            9 char *next_utf8(char *str);
           10 
           11 /*
           12  * Same as above, but also works with non-nul-terminated strings.
           13  * Instead of a pointer, the index of the next utf8 char is
           14  * returned.
           15  */
           16 size_t next_utf8_len(char *str, size_t len);
           17 
           18 /*
           19  * Add size_t values and abort if overflow would occur.
           20  * FIXME: Maybe someone with actual experience could tell me
           21  * if this overflow checking actually works.
           22  */
           23 size_t add_sz(size_t a, size_t b);
           24 size_t add_sz3(size_t a, size_t b, size_t c);
           25 
           26 void swap_sz(size_t *a, size_t *b);
           27 void sort_range(size_t *l1, size_t *b1, size_t *l2, size_t *b2);
           28 
           29 /*
           30  * Compare the nul-terminated string 'terminated' with the char
           31  * array 'array' with length 'len'.
           32  * Returns non-zero if they are equal, 0 otherwise.
           33  */
           34 /* Note: this doesn't work if array contains '\0'. */
           35 int str_array_equal(const char *terminated, const char *array, size_t len);
           36 
           37 #define LEDIT_MIN(x, y) ((x) < (y) ? (x) : (y))
           38 #define LEDIT_MAX(x, y) ((x) > (y) ? (x) : (y))
           39 
           40 /* Apparently, ISO C99 requires at least one argument for
           41    variadic macros, so there are two versions of the macro here. */
           42 #ifdef LEDIT_DEBUG
           43         #define ledit_debug(fmt) do {fprintf(stderr, "%s:%d: " fmt, __FILE__, __LINE__);} while (0)
           44         #define ledit_debug_fmt(fmt, ...) do {fprintf(stderr, "%s:%d: " fmt, __FILE__, __LINE__, __VA_ARGS__);} while (0)
           45 #else
           46         #define ledit_debug(fmt) do {} while (0)
           47         #define ledit_debug_fmt(fmt, ...) do {} while (0)
           48 #endif
           49 
           50 #endif