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

Version Path
pluskid-rmmseg-cpp-0.2.0 ext/rmmseg/word.h
pluskid-rmmseg-cpp-0.2.1 ext/rmmseg/word.h
pluskid-rmmseg-cpp-0.2.2 ext/rmmseg/word.h
pluskid-rmmseg-cpp-0.2.3 ext/rmmseg/word.h
pluskid-rmmseg-cpp-0.2.4 ext/rmmseg/word.h
rmmseg-cpp-0.2.5 ext/rmmseg/word.h
rmmseg-cpp-0.2.7 ext/rmmseg/word.h
rmmseg-cpp-0.2.6 ext/rmmseg/word.h