/****************************************************************************
 * KONOHA COPYRIGHT, LICENSE NOTICE, AND DISCRIMER  
 * 
 * Copyright (c) 2005-2008, Kimio Kuramitsu <kimio at ynu.ac.jp>
 *           (c) 2008-      Konoha Software Foundation  
 * All rights reserved.
 * 
 * You may choose one of the following two licenses when you use konoha. 
 * See www.konohaware.org/license.html for further information.
 * 
 * (1) GNU General Public License 2.0      (with    KONOHA_UNDER_GPL2)
 * (2) Konoha Software Foundation License 1.0
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "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 COPYRIGHT OWNER 
 * OR CONTRIBUTORS 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.
 *  
 ****************************************************************************/

#ifndef KONOHA_T__H
#define KONOHA_T__H

#include<konoha/konoha_t.h>
#include<konoha/gen/konoha_name_.h>


#ifdef __cplusplus 
extern "C" {
#endif

/* ======================================================================== */

/* ======================================================================== */
/* [konoha] */

#include<konoha/class/konoha.h>

typedef struct knh_Iterator_t {
	knh_hObject_t h;
	knh_Iterator *b;
	f_next fnext_1;
} knh_Iterator_t; 

typedef struct knh_DictMap_t {
	knh_hObject_t h;
	knh_DictMap *b;
} knh_DictMap_t; 

typedef struct knh_DictSet_t {
	knh_hObject_t h;
	knh_DictSet *b;
} knh_DictSet_t; 

typedef struct knh_HashMap_t {
	knh_hObject_t h;
	knh_HashMap *b;
} knh_HashMap_t; 

typedef struct knh_HashSet_t {
	knh_hObject_t h;
	knh_HashSet *b;
} knh_HashSet_t; 

typedef struct knh_LRUHashMap_t {
	knh_hObject_t h;
	knh_LRUHashMap *b;
} knh_LRUHashMap_t; 

typedef struct knh_DictIdx_t {
	knh_hObject_t h;
	knh_DictIdx *b;
} knh_DictIdx_t; 

typedef struct knh_ClassStruct_t {
	knh_hObject_t h;
	knh_ClassStruct *b;
} knh_ClassStruct_t; 

typedef struct knh_MethodField_t {
	knh_hObject_t h;
	knh_MethodField *b;
} knh_MethodField_t; 

typedef struct knh_Method_t {
	knh_hObject_t h;
	knh_Method *b;
	f_method fcall_1;
	void *code_2;
} knh_Method_t; 

typedef struct knh_Mapper_t {
	knh_hObject_t h;
	knh_Mapper *b;
	f_mapper fmap_1;
} knh_Mapper_t; 

typedef struct knh_ClassMap_t {
	knh_hObject_t h;
	knh_ClassMap *b;
} knh_ClassMap_t; 

typedef struct knh_AffineConv_t {
	knh_hObject_t h;
	knh_AffineConv *b;
} knh_AffineConv_t; 

typedef struct knh_IntUnit_t {
	knh_hObject_t h;
	knh_IntUnit *b;
} knh_IntUnit_t; 

typedef struct knh_FloatUnit_t {
	knh_hObject_t h;
	knh_FloatUnit *b;
} knh_FloatUnit_t; 

typedef struct knh_BytesConv_t {
	knh_hObject_t h;
	knh_BytesConv *b;
} knh_BytesConv_t; 

typedef struct knh_StringUnit_t {
	knh_hObject_t h;
	knh_StringUnit *b;
} knh_StringUnit_t; 

typedef struct knh_InputStream_t {
	knh_hObject_t h;
	knh_InputStream *b;
} knh_InputStream_t; 

typedef struct knh_OutputStream_t {
	knh_hObject_t h;
	knh_OutputStream *b;
} knh_OutputStream_t; 

typedef struct knh_ResultSet_t {
	knh_hObject_t h;
	knh_ResultSet *b;
} knh_ResultSet_t; 

typedef struct knh_Connection_t {
	knh_hObject_t h;
	knh_Connection *b;
} knh_Connection_t; 

typedef struct knh_Exception_t {
	knh_hObject_t h;
	knh_Exception *b;
} knh_Exception_t; 

typedef struct knh_ExceptionHandler_t {
	knh_hObject_t h;
	knh_ExceptionHandler *b;
} knh_ExceptionHandler_t; 

typedef struct knh_NameSpace_t {
	knh_hObject_t h;
	knh_NameSpace *b;
} knh_NameSpace_t; 

typedef struct knh_System_t {
	knh_hObject_t h;
	knh_System *b;
} knh_System_t; 

typedef struct knh_Runtime_t {
	knh_hObject_t h;
	knh_Runtime *b;
} knh_Runtime_t; 

/* ======================================================================== */
/* [konohac] */

#include<konoha/class/konohac.h>

typedef struct knh_Token_t {
	knh_hObject_t h;
	knh_Token *b;
} knh_Token_t; 

typedef struct knh_Stmt_t {
	knh_hObject_t h;
	knh_Stmt *b;
} knh_Stmt_t; 

typedef struct knh_Compiler_t {
	knh_hObject_t h;
	knh_Compiler *b;
} knh_Compiler_t; 

typedef struct knh_VirtualMachineCode_t {
	knh_hObject_t h;
	knh_VirtualMachineCode *b;
} knh_VirtualMachineCode_t; 

/* ======================================================================== */
/* [naruto] */

#include<konoha/class/naruto.h>

typedef struct knh_Counter_t {
	knh_hObject_t h;
	knh_Counter *b;
} knh_Counter_t; 

typedef struct knh_Amazon_t {
	knh_hObject_t h;
	knh_Amazon *b;
} knh_Amazon_t; 

/* ======================================================================== */

#ifdef __cplusplus
}
#endif

/* ======================================================================== */

#endif/*KONOHA_T__H*/
