17898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/* 27898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 37898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 47898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * you may not use this file except in compliance with the License. 67898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * You may obtain a copy of the License at 77898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 87898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 107898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * See the License for the specific language governing permissions and 147898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * limitations under the License. 157898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */ 167898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 177898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#ifndef PINYINIME_INCLUDE_UTF16READER_H__ 187898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#define PINYINIME_INCLUDE_UTF16READER_H__ 197898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 207898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#include <stdio.h> 217898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#include "./utf16char.h" 227898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 237898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectnamespace ime_pinyin { 247898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 257898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectclass Utf16Reader { 267898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private: 277898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project FILE *fp_; 287898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project char16 *buffer_; 297898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project size_t buffer_total_len_; 307898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project size_t buffer_next_pos_; 317898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 327898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Always less than buffer_total_len_ - buffer_next_pos_ 337898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project size_t buffer_valid_len_; 347898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 357898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public: 367898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Utf16Reader(); 377898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project ~Utf16Reader(); 387898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 397898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // filename is the name of the file to open. 407898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // buffer_len specifies how long buffer should be allocated to speed up the 417898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // future reading 427898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project bool open(const char* filename, size_t buffer_len); 437898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project char16* readline(char16* read_buf, size_t max_len); 447898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project bool close(); 457898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project}; 467898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project} 477898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 487898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#endif // PINYINIME_INCLUDE_UTF16READER_H__ 49