Sha256: 021d78c8031c28d4b49368774a75689bb8407412b6fe2df8f7be5fc3c0f17c1e

Contents?: true

Size: 951 Bytes

Versions: 4

Compression:

Stored size: 951 Bytes

Contents

#include <stdlib.h>
#include <string.h>

void utf_char_to_code(char *str, unsigned long long *ret_code, int *ret_byte_length){
  unsigned char first_char = str[0];
  if(first_char >= 252) *ret_byte_length = 6;      // 1111110x
  else if(first_char >= 248) *ret_byte_length = 5; // 111110xx
  else if(first_char >= 240) *ret_byte_length = 4; // 11110xxx
  else if(first_char >= 224) *ret_byte_length = 3; // 1110xxxx
  else if(first_char >= 192) *ret_byte_length = 2; // 110xxxxx
  else *ret_byte_length = 1;
  *ret_code = 0;
  memcpy(ret_code, str, *ret_byte_length);
}

void string_to_codes(char *str, int length, unsigned long long **ret_codes, int *ret_length){
  unsigned int code;
  char byte_length;

  *ret_codes = calloc(length, sizeof(long long));
  *ret_length = 0;

  for(int i = 0; i < length;){
    int byte_length;
    utf_char_to_code(&str[i], &(*ret_codes)[*ret_length], &byte_length);
    *ret_length += 1;
    i += byte_length;
  }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jaro_winkler-1.4.0-java ext/jaro_winkler/code.c
jaro_winkler-1.4.0 ext/jaro_winkler/code.c
jaro_winkler-1.3.7 ext/jaro_winkler/code.c
jaro_winkler-1.3.6 ext/jaro_winkler/code.c