libgrapheme

Freestanding C library for unicode string handling
git clone https://git.sinitax.com/suckless/libgrapheme
Log | Files | Refs | README | LICENSE | sfeed.txt

case.c (1194B)


      1/* See LICENSE file for copyright and license details. */
      2#include <errno.h>
      3#include <math.h>
      4#include <stdint.h>
      5#include <stdio.h>
      6#include <stdlib.h>
      7#include <string.h>
      8
      9#include "../gen/word-test.h"
     10#include "../grapheme.h"
     11#include "util.h"
     12
     13#define NUM_ITERATIONS 10000
     14
     15struct break_benchmark_payload {
     16	uint_least32_t *src;
     17	size_t srclen;
     18	uint_least32_t *dest;
     19	size_t destlen;
     20};
     21
     22void
     23libgrapheme(const void *payload)
     24{
     25	const struct break_benchmark_payload *p = payload;
     26
     27	grapheme_to_uppercase(p->src, p->srclen, p->dest, p->destlen);
     28}
     29
     30int
     31main(int argc, char *argv[])
     32{
     33	struct break_benchmark_payload p;
     34	double baseline = (double)NAN;
     35
     36	(void)argc;
     37
     38	if ((p.src = generate_cp_test_buffer(word_break_test,
     39	                                     LEN(word_break_test),
     40	                                     &(p.srclen))) == NULL) {
     41		return 1;
     42	}
     43	if ((p.dest = calloc((p.destlen = 2 * p.srclen), sizeof(*(p.dest)))) ==
     44	    NULL) {
     45		fprintf(stderr, "calloc: Out of memory\n");
     46	}
     47
     48	printf("%s\n", argv[0]);
     49	run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "codepoint",
     50	              &baseline, NUM_ITERATIONS, p.srclen - 1);
     51
     52	free(p.src);
     53	free(p.dest);
     54
     55	return 0;
     56}