| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #ifndef GUTHTHILA_READER_H |
| #define GUTHTHILA_READER_H |
| |
| #include <stdio.h> |
| #include <guththila_defines.h> |
| #include <axutil_utils.h> |
| EXTERN_C_START() typedef int( |
| GUTHTHILA_CALL * GUTHTHILA_READ_INPUT_CALLBACK)( |
| guththila_char_t *buffer, |
| int size, |
| void *ctx); |
| enum guththila_reader_type |
| { |
| GUTHTHILA_FILE_READER = |
| 1, GUTHTHILA_IO_READER, GUTHTHILA_MEMORY_READER |
| }; |
| typedef struct guththila_reader_s |
| { |
| int |
| type; |
| |
| FILE * |
| fp; |
| guththila_char_t * |
| buff; |
| int |
| buff_size; |
| |
| GUTHTHILA_READ_INPUT_CALLBACK |
| input_read_callback; |
| void * |
| context; |
| |
| } |
| guththila_reader_t; |
| |
| #ifndef GUTHTHILA_READER_SET_LAST_START |
| #define GUTHTHILA_READER_SET_LAST_START(_reader, _start) ((_reader)->start = _start) |
| #endif /* */ |
| |
| #ifndef GUTHTHILA_READER_STEP_BACK |
| #define GUTHTHILA_READER_STEP_BACK(_reader) ((_reader->next--)) |
| #endif /* */ |
| GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL |
| guththila_reader_create_for_file(guththila_char_t *filename, |
| const axutil_env_t * env); |
| GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL |
| guththila_reader_create_for_io(GUTHTHILA_READ_INPUT_CALLBACK |
| input_read_callback, void *ctx, |
| const axutil_env_t * env); |
| GUTHTHILA_EXPORT guththila_reader_t * GUTHTHILA_CALL |
| guththila_reader_create_for_memory(void *buffer, |
| int size, |
| const axutil_env_t * env); |
| GUTHTHILA_EXPORT int GUTHTHILA_CALL guththila_reader_read( |
| guththila_reader_t * r, |
| guththila_char_t * buffer, |
| int offset, |
| int length, |
| const axutil_env_t * env); |
| GUTHTHILA_EXPORT void GUTHTHILA_CALL guththila_reader_free( |
| guththila_reader_t * r, |
| const axutil_env_t * env); |
| EXTERN_C_END() |
| #endif /* */ |
| |