1ca0551cfSopenharmony_ci/* 2ca0551cfSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3ca0551cfSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4ca0551cfSopenharmony_ci * you may not use this file except in compliance with the License. 5ca0551cfSopenharmony_ci * You may obtain a copy of the License at 6ca0551cfSopenharmony_ci * 7ca0551cfSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8ca0551cfSopenharmony_ci * 9ca0551cfSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10ca0551cfSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11ca0551cfSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ca0551cfSopenharmony_ci * See the License for the specific language governing permissions and 13ca0551cfSopenharmony_ci * limitations under the License. 14ca0551cfSopenharmony_ci */ 15ca0551cfSopenharmony_ci 16ca0551cfSopenharmony_ci#ifndef OHOS_IDL_FILE_H 17ca0551cfSopenharmony_ci#define OHOS_IDL_FILE_H 18ca0551cfSopenharmony_ci 19ca0551cfSopenharmony_ci#include <cstddef> 20ca0551cfSopenharmony_ci#include <cstdio> 21ca0551cfSopenharmony_ci 22ca0551cfSopenharmony_ci#include "util/string.h" 23ca0551cfSopenharmony_ci 24ca0551cfSopenharmony_cinamespace OHOS { 25ca0551cfSopenharmony_cinamespace Idl { 26ca0551cfSopenharmony_ciclass File { 27ca0551cfSopenharmony_cipublic: 28ca0551cfSopenharmony_ci File(const String& path, int mode); 29ca0551cfSopenharmony_ci 30ca0551cfSopenharmony_ci ~File(); 31ca0551cfSopenharmony_ci 32ca0551cfSopenharmony_ci bool IsValid() 33ca0551cfSopenharmony_ci { 34ca0551cfSopenharmony_ci return fd_ != nullptr; 35ca0551cfSopenharmony_ci } 36ca0551cfSopenharmony_ci 37ca0551cfSopenharmony_ci String GetPath() 38ca0551cfSopenharmony_ci { 39ca0551cfSopenharmony_ci return path_; 40ca0551cfSopenharmony_ci } 41ca0551cfSopenharmony_ci 42ca0551cfSopenharmony_ci char GetChar(); 43ca0551cfSopenharmony_ci 44ca0551cfSopenharmony_ci char PeekChar(); 45ca0551cfSopenharmony_ci 46ca0551cfSopenharmony_ci bool IsEof() const; 47ca0551cfSopenharmony_ci 48ca0551cfSopenharmony_ci int GetCharLineNumber() const 49ca0551cfSopenharmony_ci { 50ca0551cfSopenharmony_ci return lineNo_; 51ca0551cfSopenharmony_ci } 52ca0551cfSopenharmony_ci 53ca0551cfSopenharmony_ci int GetCharColumnNumber() const 54ca0551cfSopenharmony_ci { 55ca0551cfSopenharmony_ci return columnNo_; 56ca0551cfSopenharmony_ci } 57ca0551cfSopenharmony_ci 58ca0551cfSopenharmony_ci bool ReadData(void* data, size_t size); 59ca0551cfSopenharmony_ci 60ca0551cfSopenharmony_ci bool WriteData(const void* data, size_t size); 61ca0551cfSopenharmony_ci 62ca0551cfSopenharmony_ci void Flush(); 63ca0551cfSopenharmony_ci 64ca0551cfSopenharmony_ci bool Reset(); 65ca0551cfSopenharmony_ci 66ca0551cfSopenharmony_ci bool Skip(long size); 67ca0551cfSopenharmony_ci 68ca0551cfSopenharmony_ci void Close(); 69ca0551cfSopenharmony_ci 70ca0551cfSopenharmony_ci static constexpr unsigned int READ = 0x1; 71ca0551cfSopenharmony_ci static constexpr unsigned int WRITE = 0x2; 72ca0551cfSopenharmony_ci static constexpr unsigned int APPEND = 0x4; 73ca0551cfSopenharmony_ci 74ca0551cfSopenharmony_ciprivate: 75ca0551cfSopenharmony_ci int Read(); 76ca0551cfSopenharmony_ci 77ca0551cfSopenharmony_ci static constexpr int BUFFER_SIZE = 1024; 78ca0551cfSopenharmony_ci 79ca0551cfSopenharmony_ci char buffer_[BUFFER_SIZE] = {0}; 80ca0551cfSopenharmony_ci size_t size_ = 0; 81ca0551cfSopenharmony_ci size_t position_ = 0; 82ca0551cfSopenharmony_ci size_t columnNo_ = 1; 83ca0551cfSopenharmony_ci size_t lineNo_ = 1; 84ca0551cfSopenharmony_ci bool isEof_ = false; 85ca0551cfSopenharmony_ci bool isError_ = false; 86ca0551cfSopenharmony_ci 87ca0551cfSopenharmony_ci FILE* fd_ = nullptr; 88ca0551cfSopenharmony_ci String path_; 89ca0551cfSopenharmony_ci unsigned int mode_ = 0; 90ca0551cfSopenharmony_ci}; 91ca0551cfSopenharmony_ci} 92ca0551cfSopenharmony_ci} 93ca0551cfSopenharmony_ci#endif // OHOS_IDL_STRING_H 94