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