| 
    SNAP Library 2.0, Developer Reference
    2013-05-13 16:33:57
    
   SNAP, a general purpose, high performance system for analysis and manipulation of large networks 
   | 
  
  
  
 
#include <unicode.h>

Classes | |
| class | TNode | 
Public Types | |
| typedef TItem_ | TItem | 
Public Member Functions | |
| TUniTrie () | |
| void | Clr () | 
| bool | Empty () const | 
| bool | Has1Gram (const TItem &item) const | 
| bool | Has2Gram (const TItem &last, const TItem &butLast) const | 
| int | Get3GramRoot (const TItem &last, const TItem &butLast, const TItem &butButLast) const | 
| int | GetChild (const int parentIdx, const TItem &item) const | 
| bool | IsNodeTerminal (const int nodeIdx) const | 
| template<typename TSrcVec > | |
| void | Add (const TSrcVec &src, const size_t srcIdx, const size_t srcCount) | 
| template<typename TSrcVec > | |
| void | Add (const TSrcVec &src) | 
Protected Types | |
| typedef TVec< TNode > | TNodeV | 
| typedef TPair< TItem, TItem > | TItemPr | 
| typedef TTriple< TItem, TItem,  TItem >  | TItemTr | 
| typedef TUniVecIdx | TVecIdx | 
Protected Attributes | |
| THash< TItem, TVoid > | singles | 
| THash< TItemPr, TVoid > | pairs | 
| THash< TItemTr, TInt > | roots | 
| TNodeV | nodes | 
typedef TUniVecIdx TUniTrie< TItem_ >::TVecIdx [protected] | 
        
| void TUniTrie< TItem_ >::Add | ( | const TSrcVec & | src, | 
| const size_t | srcIdx, | ||
| const size_t | srcCount | ||
| ) |  [inline] | 
        
Definition at line 1220 of file unicode.h.
Referenced by TUniChDb::SbEx_Add().
        {
                IAssert(srcCount > 0);
                if (srcCount == 1) { singles.AddKey(TItem(src[TVecIdx(srcIdx)])); return; }
                if (srcCount == 2) { pairs.AddKey(TItemPr(TItem(src[TVecIdx(srcIdx + 1)]), TItem(src[TVecIdx(srcIdx)]))); return; }
                size_t srcLast = srcIdx + (srcCount - 1);
                TItemTr tr = TItemTr(TItem(src[TVecIdx(srcLast)]), TItem(src[TVecIdx(srcLast - 1)]), TItem(src[TVecIdx(srcLast - 2)]));
                int keyId = roots.GetKeyId(tr), curNodeIdx = -1;
                if (keyId >= 0) curNodeIdx = roots[keyId];
                else { curNodeIdx = nodes.Add(TNode(TItem(0), -1, -1, false)); roots.AddDat(tr, curNodeIdx); }
                //
                if (srcCount > 3) for (size_t srcPos = srcLast - 3; ; )
                {
                        const TItem curItem = src[TVecIdx(srcPos)];
                        int childNodeIdx = nodes[curNodeIdx].child;
                        while (childNodeIdx >= 0) {
                                TNode &childNode = nodes[childNodeIdx];
                                if (childNode.item == curItem) break;
                                childNodeIdx = childNode.sib; }
                        if (childNodeIdx < 0) {
                                childNodeIdx = nodes.Add(TNode(curItem, -1, nodes[curNodeIdx].child, false));
                                nodes[curNodeIdx].child = childNodeIdx; }
                        curNodeIdx = childNodeIdx;
                        if (srcPos == srcIdx) break; else srcPos--;
                }
                nodes[curNodeIdx].terminal = true;
        }

| void TUniTrie< TItem_ >::Add | ( | const TSrcVec & | src | ) |  [inline] | 
        
Definition at line 1249 of file unicode.h.
Referenced by TUniTrie< TInt >::Add().
{ Add(src, 0, (size_t) src.Len()); }

| int TUniTrie< TItem_ >::Get3GramRoot | ( | const TItem & | last, | 
| const TItem & | butLast, | ||
| const TItem & | butButLast | ||
| ) |  const [inline] | 
        
| int TUniTrie< TItem_ >::GetChild | ( | const int | parentIdx, | 
| const TItem & | item | ||
| ) |  const [inline] | 
        
Definition at line 1209 of file unicode.h.
Referenced by TUniChDb::CanSentenceEndHere().
                                                                   {
                for (int childIdx = nodes[parentIdx].child; childIdx >= 0; ) {
                        const TNode &node = nodes[childIdx];
                        if (node.item == item) return childIdx;
                        childIdx = node.sib; }
                return -1; }

Definition at line 1204 of file unicode.h.
Referenced by TUniChDb::CanSentenceEndHere().

| bool TUniTrie< TItem_ >::IsNodeTerminal | ( | const int | nodeIdx | ) |  const [inline] | 
        
Definition at line 1215 of file unicode.h.
Referenced by TUniChDb::CanSentenceEndHere().
{ return nodes[nodeIdx].terminal; }

Definition at line 1197 of file unicode.h.
Referenced by TUniTrie< TInt >::Add(), TUniTrie< TInt >::Clr(), TUniTrie< TInt >::GetChild(), and TUniTrie< TInt >::IsNodeTerminal().
Definition at line 1195 of file unicode.h.
Referenced by TUniTrie< TInt >::Add(), TUniTrie< TInt >::Clr(), TUniTrie< TInt >::Empty(), and TUniTrie< TInt >::Has2Gram().
Definition at line 1196 of file unicode.h.
Referenced by TUniTrie< TInt >::Add(), TUniTrie< TInt >::Clr(), TUniTrie< TInt >::Empty(), and TUniTrie< TInt >::Get3GramRoot().
Definition at line 1194 of file unicode.h.
Referenced by TUniTrie< TInt >::Add(), TUniTrie< TInt >::Clr(), TUniTrie< TInt >::Empty(), and TUniTrie< TInt >::Has1Gram().