Sha256: 1e5c9dc40e7c360f7611d0ed2cf8972abdfa7975eb3665442d2bccce8c577904
Contents?: true
Size: 1.19 KB
Versions: 8
Compression:
Stored size: 1.19 KB
Contents
#ifndef _WORD_H_ #define _WORD_H_ #include <climits> #include <cstring> #include "memory.h" namespace rmmseg { const int word_embed_len = 4; /* at least 1 char (3 bytes+'\0') */ struct Word { unsigned char nbytes; /* number of bytes */ char length; /* number of characters */ unsigned short freq; char text[word_embed_len]; }; /** * text: the text of the word. * length: number of characters (not bytes). * freq: the frequency of the word. */ inline Word *make_word(const char *text, int length=1, int freq=0, int nbytes=-1) { if (freq > USHRT_MAX) freq = USHRT_MAX; /* avoid overflow */ if (nbytes == -1) nbytes = strlen(text); Word *w = static_cast<Word *>(pool_alloc(sizeof(Word) + nbytes+1 - word_embed_len)); w->nbytes = std::strlen(text); w->length = length; w->freq = freq; std::strncpy(w->text, text, nbytes); w->text[nbytes] = '\0'; return w; } } #endif /* _WORD_H_ */
Version data entries
8 entries across 8 versions & 2 rubygems