Beispiel #1
0
        public List <EmojiSearchResult> findEmoji(string str)
        {
            List <EmojiSearchResult> emojiSearchResults = new List <EmojiSearchResult>();

            EmojiTreeNode currentNode = root;
            int           start       = 0;

            for (int i = 0; i < str.Length; i++)
            {
                Char ch = str[i];

                currentNode = currentNode.get(ch);

                if (currentNode != null)
                {
                    if (currentNode.isLeaf())
                    {
                        // save
                        emojiSearchResults.Add(new EmojiSearchResult(currentNode.code, start, i));
                    }
                    else
                    {
                        continue;
                    }
                }


                currentNode = root;
                start       = i + 1;
            }

            return(emojiSearchResults);
        }
Beispiel #2
0
//        public void allocateInTree(ByteBuffer bb, EmojiTreeNode node, long payload) {
        public void allocateInTree(byte[] bb, EmojiTreeNode node, long payload) {

//            Character ch = bb.getChar();

            using (MemoryStream memory = new MemoryStream(bb, false)) {
                using (BinaryReader reader = new BinaryReader(memory)) {
                    Char ch = reader.ReadChar();
                    EmojiTreeNode newNode = node.get(ch);

                    if (newNode != null) {
                        if (memory.Length - memory.Position == 0) {
                            if (newNode.isSubtree()) {
                                newNode.put(ch, new EmojiTreeNode(payload));
                            }
                        }
                        else {
                            allocateInTree(reader.ReadBytes((int) memory.Length - (int) memory.Position), newNode,
                                payload);
                        }

                    }
                    else {
                        if (memory.Length - memory.Position == 0) {
                            node.put(ch, new EmojiTreeNode(payload));
                            return;
                        }

                        newNode = new EmojiTreeNode();
                        node.put(ch, newNode);
                        allocateInTree(reader.ReadBytes((int) memory.Length - (int) memory.Position), newNode,
                            payload);
                    }
                }

//            EmojiTreeNode newNode = node.get(ch);

//            if (newNode != null) {
//                if (bb.remaining() == 0) {
//                    if (newNode.isSubtree()) {
//                        newNode.put(ch, new EmojiTreeNode(payload));
//                    }
//                } else {
//                    allocateInTree(bb, newNode, payload);
//                }
//            } else {
//                if (bb.remaining() == 0) {
//                    node.put(ch, new EmojiTreeNode(payload));
//                    return;
//                }
//
//                newNode = new EmojiTreeNode();
//                node.put(ch, newNode);
//                allocateInTree(bb, newNode, payload);
//            }
            }
        }
Beispiel #3
0
//        public void allocateInTree(ByteBuffer bb, EmojiTreeNode node, long payload) {
        public void allocateInTree(byte[] bb, EmojiTreeNode node, long payload)
        {
//            Character ch = bb.getChar();

            using (MemoryStream memory = new MemoryStream(bb, false)) {
                using (BinaryReader reader = new BinaryReader(memory)) {
                    Char          ch      = reader.ReadChar();
                    EmojiTreeNode newNode = node.get(ch);

                    if (newNode != null)
                    {
                        if (memory.Length - memory.Position == 0)
                        {
                            if (newNode.isSubtree())
                            {
                                newNode.put(ch, new EmojiTreeNode(payload));
                            }
                        }
                        else
                        {
                            allocateInTree(reader.ReadBytes((int)memory.Length - (int)memory.Position), newNode,
                                           payload);
                        }
                    }
                    else
                    {
                        if (memory.Length - memory.Position == 0)
                        {
                            node.put(ch, new EmojiTreeNode(payload));
                            return;
                        }

                        newNode = new EmojiTreeNode();
                        node.put(ch, newNode);
                        allocateInTree(reader.ReadBytes((int)memory.Length - (int)memory.Position), newNode,
                                       payload);
                    }
                }

//            EmojiTreeNode newNode = node.get(ch);

//            if (newNode != null) {
//                if (bb.remaining() == 0) {
//                    if (newNode.isSubtree()) {
//                        newNode.put(ch, new EmojiTreeNode(payload));
//                    }
//                } else {
//                    allocateInTree(bb, newNode, payload);
//                }
//            } else {
//                if (bb.remaining() == 0) {
//                    node.put(ch, new EmojiTreeNode(payload));
//                    return;
//                }
//
//                newNode = new EmojiTreeNode();
//                node.put(ch, newNode);
//                allocateInTree(bb, newNode, payload);
//            }
            }
        }
Beispiel #4
0
 public void put(Char ch, EmojiTreeNode node) {
     items.Add(ch, node);
 }
Beispiel #5
0
 public void put(Char ch, EmojiTreeNode node)
 {
     items.Add(ch, node);
 }