/** \file
 * Declarations for all the antlr3 C runtime interfaces/classes. This
 * allows the structures that define the interfaces to contain pointers to
 * each other without trying to sort out the cyclic interdependencies that
 * would otherwise result.
 */
#ifndef	_ANTLR3_INTERFACES_H
#define	_ANTLR3_INTERFACES_H

// [The "BSD licence"]
// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
// http://www.temporal-wave.com
// http://www.linkedin.com/in/jimidle
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
// 3. The name of the author may not be used to endorse or promote products
//    derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#ifdef __cplusplus
extern "C" {
#endif

typedef	struct ANTLR3_INT_STREAM_struct						*pANTLR3_INT_STREAM;

/// Pointer to an instantiation of the 'class' #ANTLR3_BASE_RECOGNIZER
/// \ingroup ANTLR3_BASE_RECOGNIZER
///
typedef struct ANTLR3_BASE_RECOGNIZER_struct				*pANTLR3_BASE_RECOGNIZER;
/// Pointer to an instantiation of 'class' #ANTLR3_RECOGNIZER_SHARED_STATE		
/// \ingroup ANTLR3_RECOGNIZER_SHARED_STATE		
///
typedef	struct ANTLR3_RECOGNIZER_SHARED_STATE_struct		*pANTLR3_RECOGNIZER_SHARED_STATE;

/// Pointer to an instantiation of 'class' #ANTLR3_BITSET_LIST
/// \ingroup ANTLR3_BITSET_LIST
///
typedef struct ANTLR3_BITSET_LIST_struct					*pANTLR3_BITSET_LIST;

/// Pointer to an instantiation of 'class' #ANTLR3_BITSET							
/// \ingroup ANTLR3_BITSET							
///
typedef struct ANTLR3_BITSET_struct							*pANTLR3_BITSET;

/// Pointer to an instantiation of 'class' #ANTLR3_TOKEN_FACTORY					
/// \ingroup ANTLR3_TOKEN_FACTORY					
///
typedef struct ANTLR3_TOKEN_FACTORY_struct					*pANTLR3_TOKEN_FACTORY;
/// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TOKEN					
/// \ingroup ANTLR3_COMMON_TOKEN					
///
typedef struct ANTLR3_COMMON_TOKEN_struct					*pANTLR3_COMMON_TOKEN;

/// Pointer to an instantiation of 'class' #ANTLR3_EXCEPTION						
/// \ingroup ANTLR3_EXCEPTION						
///
typedef struct ANTLR3_EXCEPTION_struct						*pANTLR3_EXCEPTION;

/// Pointer to an instantiation of 'class' #ANTLR3_HASH_BUCKET					
/// \ingroup ANTLR3_HASH_BUCKET					
///
typedef struct ANTLR3_HASH_BUCKET_struct					*pANTLR3_HASH_BUCKET;
/// Pointer to an instantiation of 'class' #ANTLR3_HASH_ENTRY						
/// \ingroup ANTLR3_HASH_ENTRY						
///
typedef struct ANTLR3_HASH_ENTRY_struct						*pANTLR3_HASH_ENTRY;
/// Pointer to an instantiation of 'class' #ANTLR3_HASH_ENUM						
/// \ingroup ANTLR3_HASH_ENUM						
///
typedef struct ANTLR3_HASH_ENUM_struct						*pANTLR3_HASH_ENUM;
/// Pointer to an instantiation of 'class' #ANTLR3_HASH_TABLE						
/// \ingroup ANTLR3_HASH_TABLE						
///
typedef struct ANTLR3_HASH_TABLE_struct						*pANTLR3_HASH_TABLE;

/// Pointer to an instantiation of 'class' #ANTLR3_LIST							
/// \ingroup ANTLR3_LIST							
///
typedef struct ANTLR3_LIST_struct							*pANTLR3_LIST;
/// Pointer to an instantiation of 'class' #ANTLR3_VECTOR_FACTORY					
/// \ingroup ANTLR3_VECTOR_FACTORY					
///
typedef struct ANTLR3_VECTOR_FACTORY_struct					*pANTLR3_VECTOR_FACTORY;
/// Pointer to an instantiation of 'class' #ANTLR3_VECTOR							
/// \ingroup ANTLR3_VECTOR							
///
typedef struct ANTLR3_VECTOR_struct							*pANTLR3_VECTOR;
/// Pointer to an instantiation of 'class' #ANTLR3_STACK							
/// \ingroup ANTLR3_STACK							
///
typedef struct ANTLR3_STACK_struct							*pANTLR3_STACK;

/// Pointer to an instantiation of 'class' #ANTLR3_TOPO
/// \ingroup ANTLR3_TOPO
///
typedef struct ANTLR3_TOPO_struct                                               *pANTLR3_TOPO;

/// Pointer to an instantiation of 'class' #ANTLR3_INPUT_STREAM					
/// \ingroup ANTLR3_INPUT_STREAM					
///
typedef struct ANTLR3_INPUT_STREAM_struct					*pANTLR3_INPUT_STREAM;
/// Pointer to an instantiation of 'class' #ANTLR3_LEX_STATE						
/// \ingroup ANTLR3_LEX_STATE						
///
typedef struct ANTLR3_LEX_STATE_struct						*pANTLR3_LEX_STATE;

/// Pointer to an instantiation of 'class' #ANTLR3_STRING_FACTORY					
/// \ingroup ANTLR3_STRING_FACTORY					
///
typedef struct ANTLR3_STRING_FACTORY_struct					*pANTLR3_STRING_FACTORY;
/// Pointer to an instantiation of 'class' #ANTLR3_STRING							
/// \ingroup ANTLR3_STRING							
///
typedef struct ANTLR3_STRING_struct							*pANTLR3_STRING;

/// Pointer to an instantiation of 'class' #ANTLR3_TOKEN_SOURCE					
/// \ingroup ANTLR3_TOKEN_SOURCE					
///
typedef struct ANTLR3_TOKEN_SOURCE_struct					*pANTLR3_TOKEN_SOURCE;
/// Pointer to an instantiation of 'class' #ANTLR3_TOKEN_STREAM					
/// \ingroup ANTLR3_TOKEN_STREAM					
///
typedef	struct ANTLR3_TOKEN_STREAM_struct					*pANTLR3_TOKEN_STREAM;
/// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TOKEN_STREAM			
/// \ingroup ANTLR3_COMMON_TOKEN_STREAM			
///
typedef	struct ANTLR3_COMMON_TOKEN_STREAM_struct			*pANTLR3_COMMON_TOKEN_STREAM;

/// Pointer to an instantiation of 'class' #ANTLR3_CYCLIC_DFA						
/// \ingroup ANTLR3_CYCLIC_DFA						
///
typedef struct ANTLR3_CYCLIC_DFA_struct						*pANTLR3_CYCLIC_DFA;

/// Pointer to an instantiation of 'class' #ANTLR3_LEXER							
/// \ingroup ANTLR3_LEXER							
///
typedef	struct ANTLR3_LEXER_struct							*pANTLR3_LEXER;
/// Pointer to an instantiation of 'class' #ANTLR3_PARSER							
/// \ingroup ANTLR3_PARSER							
///
typedef struct ANTLR3_PARSER_struct							*pANTLR3_PARSER;

/// Pointer to an instantiation of 'class' #ANTLR3_BASE_TREE						
/// \ingroup ANTLR3_BASE_TREE						
///
typedef	struct ANTLR3_BASE_TREE_struct						*pANTLR3_BASE_TREE;
/// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE					
/// \ingroup ANTLR3_COMMON_TREE					
///
typedef struct ANTLR3_COMMON_TREE_struct					*pANTLR3_COMMON_TREE;
/// Pointer to an instantiation of 'class' #ANTLR3_ARBORETUM						
/// \ingroup ANTLR3_ARBORETUM						
///
typedef	struct ANTLR3_ARBORETUM_struct						*pANTLR3_ARBORETUM;
/// Pointer to an instantiation of 'class' #ANTLR3_PARSE_TREE						
/// \ingroup ANTLR3_PARSE_TREE						
///
typedef	struct ANTLR3_PARSE_TREE_struct						*pANTLR3_PARSE_TREE;

/// Pointer to an instantiation of 'class' #ANTLR3_TREE_NODE_STREAM				
/// \ingroup ANTLR3_TREE_NODE_STREAM				
///
typedef struct ANTLR3_TREE_NODE_STREAM_struct				*pANTLR3_TREE_NODE_STREAM;
/// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE_NODE_STREAM		
/// \ingroup ANTLR3_COMMON_TREE_NODE_STREAM		
///
typedef	struct ANTLR3_COMMON_TREE_NODE_STREAM_struct		*pANTLR3_COMMON_TREE_NODE_STREAM;
/// Pointer to an instantiation of 'class' #ANTLR3_TREE_WALK_STATE				
/// \ingroup ANTLR3_TREE_WALK_STATE				
///
typedef struct ANTLR3_TREE_WALK_STATE_struct				*pANTLR3_TREE_WALK_STATE;

/// Pointer to an instantiation of 'class' #ANTLR3_BASE_TREE_ADAPTOR				
/// \ingroup ANTLR3_BASE_TREE_ADAPTOR				
///
typedef struct ANTLR3_BASE_TREE_ADAPTOR_struct				*pANTLR3_BASE_TREE_ADAPTOR;
/// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE_ADAPTOR			
/// \ingroup ANTLR3_COMMON_TREE_ADAPTOR			
///
typedef	struct ANTLR3_COMMON_TREE_ADAPTOR_struct			*pANTLR3_COMMON_TREE_ADAPTOR;

/// Pointer to an instantiation of 'class' #ANTLR3_TREE_PARSER					
/// \ingroup ANTLR3_TREE_PARSER					
///
typedef struct ANTLR3_TREE_PARSER_struct					*pANTLR3_TREE_PARSER;

/// Pointer to an instantiation of 'class' #ANTLR3_INT_TRIE						
/// \ingroup ANTLR3_INT_TRIE						
///
typedef struct ANTLR3_INT_TRIE_struct						*pANTLR3_INT_TRIE;

/// Pointer to an instantiation of 'class' #ANTLR3_REWRITE_RULE_ELEMENT_STREAM	
/// \ingroup ANTLR3_REWRITE_RULE_ELEMENT_STREAM	
///
typedef struct ANTLR3_REWRITE_RULE_ELEMENT_STREAM_struct	*pANTLR3_REWRITE_RULE_ELEMENT_STREAM;
/// Pointer to an instantiation of 'class' #ANTLR3_REWRITE_RULE_ELEMENT_STREAM	
/// \ingroup ANTLR3_REWRITE_RULE_ELEMENT_STREAM	
///
typedef	struct ANTLR3_REWRITE_RULE_ELEMENT_STREAM_struct	*pANTLR3_REWRITE_RULE_TOKEN_STREAM;

/// Pointer to an instantiation of 'class' #ANTLR3_REWRITE_RULE_SUBSTREE_STREAM	
/// \ingroup ANTLR3_REWRITE_RULE_SUBTREE_STREAM	
///
typedef	struct ANTLR3_REWRITE_RULE_ELEMENT_STREAM_struct	*pANTLR3_REWRITE_RULE_SUBTREE_STREAM;

/// Pointer to an instantiation of 'class' #ANTLR3_REWRITE_RULE_NODE_STREAM	
/// \ingroup ANTLR3_REWRITE_RULE_NODE_STREAM	
///
typedef	struct ANTLR3_REWRITE_RULE_ELEMENT_STREAM_struct	*pANTLR3_REWRITE_RULE_NODE_STREAM;

/// Pointer to an instantiation of 'class' #ANTLR3_DEBUG_EVENT_LISTENER			
/// \ingroup ANTLR3_DEBUG_EVENT_LISTENER			
///
typedef struct ANTLR3_DEBUG_EVENT_LISTENER_struct			*pANTLR3_DEBUG_EVENT_LISTENER;

#ifdef __cplusplus
}
#endif

#endif
