Michal Krol | a904b49 | 2004-03-04 13:07:52 +0000 | [diff] [blame^] | 1 | /* |
| 2 | * Mesa 3-D graphics library |
| 3 | * Version: 6.1 |
| 4 | * |
| 5 | * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. |
| 6 | * |
| 7 | * Permission is hereby granted, free of charge, to any person obtaining a |
| 8 | * copy of this software and associated documentation files (the "Software"), |
| 9 | * to deal in the Software without restriction, including without limitation |
| 10 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| 11 | * and/or sell copies of the Software, and to permit persons to whom the |
| 12 | * Software is furnished to do so, subject to the following conditions: |
| 13 | * |
| 14 | * The above copyright notice and this permission notice shall be included |
| 15 | * in all copies or substantial portions of the Software. |
| 16 | * |
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 18 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| 20 | * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
| 21 | * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 22 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 23 | */ |
| 24 | |
| 25 | #ifndef GRAMMAR_H |
| 26 | #define GRAMMAR_H |
| 27 | |
| 28 | |
| 29 | #ifndef GRAMMAR_PORT_INCLUDE |
| 30 | #error Do not include this file directly, include your grammar_XXX.h instead |
| 31 | #endif |
| 32 | |
| 33 | |
| 34 | #ifdef __cplusplus |
| 35 | extern "C" { |
| 36 | #endif |
| 37 | |
| 38 | void grammar_alloc_free (void *); |
| 39 | void *grammar_alloc_malloc (unsigned int); |
| 40 | void *grammar_alloc_realloc (void *, unsigned int, unsigned int); |
| 41 | void *grammar_memory_copy (void *, const void *, unsigned int); |
| 42 | int grammar_string_compare (const byte *, const byte *); |
| 43 | int grammar_string_compare_n (const byte *, const byte *, unsigned int); |
| 44 | byte *grammar_string_copy (byte *, const byte *); |
| 45 | byte *grammar_string_copy_n (byte *, const byte *, unsigned int); |
| 46 | byte *grammar_string_duplicate (const byte *); |
| 47 | unsigned int grammar_string_length (const byte *); |
| 48 | |
| 49 | /* |
| 50 | loads grammar script from null-terminated ASCII <text> |
| 51 | returns unique grammar id to grammar object |
| 52 | returns 0 if an error occurs (call grammar_get_last_error to retrieve the error text) |
| 53 | */ |
| 54 | grammar grammar_load_from_text (const byte *text); |
| 55 | |
| 56 | /* |
| 57 | sets a new <value> to a register <name> for grammar <id> |
| 58 | returns 0 on error (call grammar_get_last_error to retrieve the error text) |
| 59 | returns 1 on success |
| 60 | */ |
| 61 | int grammar_set_reg8 (grammar id, const byte *name, byte value); |
| 62 | |
| 63 | /* |
| 64 | checks if a null-terminated <text> matches given grammar <id> |
| 65 | returns 0 on error (call grammar_get_last_error to retrieve the error text) |
| 66 | returns 1 on success, the <prod> points to newly allocated buffer with production and <size> |
| 67 | is filled with the production size |
| 68 | call grammar_alloc_free to free the memory block pointed by <prod> |
| 69 | */ |
| 70 | int grammar_check (grammar id, const byte *text, byte **prod, unsigned int *size); |
| 71 | |
| 72 | /* |
| 73 | destroys grammar object identified by <id> |
| 74 | returns 0 on error (call grammar_get_last_error to retrieve the error text) |
| 75 | returns 1 on success |
| 76 | */ |
| 77 | int grammar_destroy (grammar id); |
| 78 | |
| 79 | /* |
| 80 | retrieves last grammar error reported either by grammar_load_from_text, grammar_check |
| 81 | or grammar_destroy |
| 82 | the user allocated <text> buffer receives error description, <pos> points to error position, |
| 83 | <size> is the size of the text buffer to fill in - it must be at least 4 bytes long, |
| 84 | */ |
| 85 | void grammar_get_last_error (byte *text, unsigned int size, int *pos); |
| 86 | |
| 87 | #ifdef __cplusplus |
| 88 | } |
| 89 | #endif |
| 90 | |
| 91 | #endif |
| 92 | |