/*	
 *	clipgc.h
 *
 *	P/ECE梡僈乕儀乕僕僐儗僋僞乕
 *
 *	乽K.Sasada's Home Page乿(http://www.namikilab.tuat.ac.jp/~sasada/)偝傫偺
 *	亀PiGC : P/ECE 梡僈儀乕僕僐儗僋僞乕亁(http://www.namikilab.tuat.ac.jp/~sasada/prog/pigc.html)
 *	偺幚憰傪嶲峫偵偝偣偰捀偒傑偟偨丅偁傝偑偲偆偛偞偄傑偡丅
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2012 Naoyuki Sawa
 *
 *	* Tue Jul 22 07:00:00 JST 2004 Naoyuki Sawa
 *	- 嶌惉奐巒丅
 *	* Tue Nov 27 22:17:14 JST 2012 Naoyuki Sawa
 *	- GC偺摦嶌儗儀儖傪曄峏偡傞巇慻傒傪捛壛偟傑偟偨丅(gc_init()偺堷悢捛壛)
 *	- 崱屻嶌惉偡傞傾僾儕働乕僔儑儞偱偼丄嬌椡乽曐庣揑乿GC摦嶌儗儀儖傪巊梡偟偰丄摦嶌専徹偟偰偔偩偝偄丅
 *	  摦嶌専徹偺寢壥丄傕偟乽曐庣揑乿摦嶌儗儀儖偵偍偗傞忋弎偺寚揰偑丄幚梡忋栤戣偵側傜側偄傛偆側傜偽丄
 *	  姼偊偰乽拞娫揑乿乽愊嬌揑乿摦嶌儗儀儖傪巊梡偡傞昁梫偼柍偔丄乽曐庣揑乿偵摑堦偡傞偐傕抦傟傑偣傫丅
 */
#ifndef __CLIP_GC_H__
#define __CLIP_GC_H__

/****************************************************************************
 *	掕悢丄峔憿懱
 ****************************************************************************/

//{{2012/11/27捛壛
//乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧
#define GC_LEVEL_CONSERVATIVE	0	/* 乽曐庣揑乿側GC摦嶌儗儀儖 */	//悇彠//
//
//	GC偺摦嶌儗儀儖傪丄乽曐庣揑乿偵愝掕偟傑偡丅
//	儊儌儕僽儘僢僋偺斖埻傪巜偡億僀儞僞慡偰傪丄桳岠側嶲徠偲尒側偟傑偡丅
//
//	仩棙揰
//	巊梡拞偺儊儌儕僽儘僢僋傪丄岆偭偰奐曻偟偰偟傑偆婋尟偑丄桳傝傑偣傫丅
//	仩寚揰
//	巊梡拞偱側偄儊儌儕僽儘僢僋傪丄巊梡拞偲尒側偟偰奐曻偱偒偢丄儊儌儕晄懌偵偍偪偄傞婋尟偑崅偄偱偡丅
//	偙偺寚揰傪寉尭偡傞偵偼丄僈乕儀乕僕僐儗僋僞乕偵傛傞帺摦揑側儊儌儕僽儘僢僋偺奐曻偩偗偵埶懚偣偢丄
//	傾僾儕働乕僔儑儞偑free()傪屇傃弌偟偰丄柧傜偐偵晄梫側儊儌儕僽儘僢僋傪柧帵揑偵奐曻偡傞偙偲偱偡丅
//	仩崱屻偺梊掕
//	崱屻嶌惉偡傞傾僾儕働乕僔儑儞偱偼丄嬌椡乽曐庣揑乿GC摦嶌儗儀儖傪巊梡偟偰丄摦嶌専徹偟偰偔偩偝偄丅
//	摦嶌専徹偺寢壥丄傕偟乽曐庣揑乿摦嶌儗儀儖偵偍偗傞忋弎偺寚揰偑丄幚梡忋栤戣偵側傜側偄傛偆側傜偽丄
//	姼偊偰乽拞娫揑乿乽愊嬌揑乿摦嶌儗儀儖傪巊梡偡傞昁梫偼柍偔丄乽曐庣揑乿偵摑堦偡傞偐傕抦傟傑偣傫丅
//
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔俫俤俙俹俵俤俵劔
//	劆億僀儞僞乮倫乯丂丂丂丂丂劌劅劅劅劅劅劅劅仺劙劒劒劒劒劒劒劒劜
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶乯丂丂劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄侾乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俀乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俁乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆俫俤俙俹俵俤俵劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劌劅劅劅劅劅劅劅劎
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//
//	亙椺亜
//		typedef struct _NODE {
//			char path[8+1+3+1];
//			LIST_ENTRY link;
//		} NODE;
//		NODE* pNode = malloc(sizeof(NODE));	//仜桳岠側嶲徠
//		LIST_ENTRY* pLink = &pNode->link;	//仜桳岠側嶲徠
//		char* pExt = &pNode->path[8+1];		//仜桳岠側嶲徠
//
//乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧
#define GC_LEVEL_INTERMEDIATE	1	/* 乽拞娫揑乿側GC摦嶌儗儀儖 */
//
//	GC偺摦嶌儗儀儖傪丄乽拞娫揑乿偵愝掕偟傑偡丅
//	儊儌儕僽儘僢僋偺斖埻丄偐偮丄儚乕僪嫬奅傪巜偡億僀儞僞傪丄桳岠側嶲徠偲尒側偟傑偡丅
//
//	仩棙揰
//	GC_LEVEL_CONSERVATIVE偲GC_LEVEL_AGGRESSIVE偺丄拞娫偺摿惈傪帩偪傑偡丅
//	仩寚揰
//	GC_LEVEL_CONSERVATIVE偲GC_LEVEL_AGGRESSIVE偺丄拞娫偺摿惈傪帩偪傑偡丅
//	仩曗懌
//	2012/11/24乣26偺娫丄杮儌僕儏乕儖偼丄GC_LEVEL_INTERMEDIATE 偵憡摉偡傞摦嶌偱偟偨丅
//	偙偺娫偵丄GC偺摦嶌偵埶懚偟偨傾僾儕働乕僔儑儞傪嶌惉偟偰偄側偄偨傔丄峫椂晄梫偱偡丅
//
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔俫俤俙俹俵俤俵劔
//	劆億僀儞僞乮倫乯丂丂丂丂丂劌劅劅劅劅劅劅劅仺劙劒劒劒劒劒劒劒劜
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶乯丂丂劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄侾乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俀乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俁乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆俫俤俙俹俵俤俵劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劌劅劅劅劅劅劅劅劎
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//
//	亙椺亜
//		typedef struct _NODE {
//			char path[8+1+3+1];
//			LIST_ENTRY link;
//		} NODE;
//		NODE* pNode = malloc(sizeof(NODE));	//仜桳岠側嶲徠
//		LIST_ENTRY* pLink = &pNode->link;	//仜桳岠側嶲徠
//		char* pExt = &pNode->path[8+1];		//亊柍岠側嶲徠
//
//乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧
#define GC_LEVEL_AGGRESSIVE	2	/* 乽愊嬌揑乿側GC摦嶌儗儀儖 */
//
//	GC偺摦嶌儗儀儖傪丄乽愊嬌揑乿偵愝掕偟傑偡丅
//	儊儌儕僽儘僢僋偺愭摢傪巜偡億僀儞僞偺傒傪丄桳岠側嶲徠偲尒側偟傑偡丅
//
//	仩棙揰
//	巊梡拞偱側偄儊儌儕僽儘僢僋傪丄巊梡拞偲尒側偟偰奐曻偱偒偢丄儊儌儕晄懌偵偍偪偄傞婋尟偑掅偄偱偡丅
//	仩寚揰
//	巊梡拞偺儊儌儕僽儘僢僋傪丄岆偭偰奐曻偟偰偟傑偆婋尟偑桳傝傑偡丅
//	偙偺寚揰傪夞旔偡傞偵偼丄傾僾儕働乕僔儑儞偑堄幆偟偰儊儌儕僽儘僢僋偺愭摢傪巜偡億僀儞僞傪曐帩偟丄
//	儊儌儕僽儘僢僋偺搑拞傪巜偡億僀儞僞偩偗傪曐帩偟側偄傛偆偵偡傞偙偲偱偡丅
//	仩曗懌
//	2012/11/23傑偱丄杮儌僕儏乕儖偼丄GC_LEVEL_AGGRESSIVE 偵憡摉偡傞摦嶌偱偟偨丅
//	偙傟傑偱偵嶌惉偟偨丄杮儌僕儏乕儖偺婡擻傪棙梡偡傞傾僾儕働乕僔儑儞偼丄忋婰偺嶌朄偵廬偭偰偄傑偡丅
//
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔俫俤俙俹俵俤俵劔
//	劆億僀儞僞乮倫乯丂丂丂丂丂劌劅劅劅劅劅劅劅仺劙劒劒劒劒劒劒劒劜
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂仜桳岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶乯丂丂劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄侾乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俀乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	劇劅劅劅劅劅劅劅劅劅劅劅劅劉丂丂丂丂丂丂丂丂劔乛乛乛乛乛乛乛劔
//	劆億僀儞僞乮倫亄係俶亄俁乯劌劅劅劅劅劅劅劅仺劔乛乛乛乛乛乛乛劔
//	劋劅劅劅劅劅劅劅劅劅劅劅劅劊丂亊柍岠側嶲徠丂劔乛乛乛乛乛乛乛劔
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劙劒劒劒劒劒劒劒劜
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆俫俤俙俹俵俤俵劆
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劌劅劅劅劅劅劅劅劎
//	丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆丂丂丂丂丂丂丂劆
//
//	亙椺亜
//		typedef struct _NODE {
//			char path[8+1+3+1];
//			LIST_ENTRY link;
//		} NODE;
//		NODE* pNode = malloc(sizeof(NODE));	//仜桳岠側嶲徠
//		LIST_ENTRY* pLink = &pNode->link;	//亊柍岠側嶲徠
//		char* pExt = &pNode->path[8+1];		//亊柍岠側嶲徠
//
//	乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧乧
//}}2012/11/27捛壛

/****************************************************************************
 *	傾僾儕働乕僔儑儞梡娭悢
 ****************************************************************************/

/* 僈乕儀乕僕僐儗僋僞乕傪弶婜壔偟傑偡丅
 * {{2012/11/27捛壛
 * [in]
 *	level	GC偺摦嶌儗儀儖
 *		(GC_LEVEL_CONSERVATIVE,枖偼,GC_LEVEL_INTERMEDIATE,枖偼,GC_LEVEL_AGGRESSIVE 傪巜掕)
 * }}2012/11/27捛壛
 * [note]
 *	* gc_init()傪屇傇偲丄pceHeapAlloc()偑僈乕儀乕僕僐儗僋僞乕懳墳偲側傝傑偡丅
 *	  2004/06/22尰嵼丄malloc(),calloc(),realloc(),strdup()傕pceHeapAlloc()傪棙梡偟偰偄傞偺偱丄
 *	  偙傟傜偺娭悢傕僈乕儀乕僕僐儗僋僞乕懳墳偲側傝傑偡丅
 *	* gc_init()傪屇傫偩傾僾儕働乕僔儑儞偼丄廔椆慜偵昁偢gc_free()傪屇傫偱偔偩偝偄丅
 *	  gc_free()傪屇偽偢偵廔椆偡傞偲丄P/ECE偑僴儞僌傾僢僾偟傑偡丅
 *	  2004/06/22尰嵼丄CLiP儔僀僽儔儕偺廔椆儖乕僠儞偼帺摦揑偵gc_free()傪屇傃弌偟傑偣傫丅
 *	  昁偢丄傾僾儕働乕僔儑儞僾儘僌儔儉偐傜柧帵揑偵gc_free()傪屇傃弌偟偰偔偩偝偄丅
 */
//{{2012/11/27曄峏
//void gc_init();
//伀2012/11/27曄峏
void gc_init(int level);
//}}2012/11/27曄峏

/* 僈乕儀乕僕僐儗僋僞乕傪廔椆偟傑偡丅
 * [note]
 *	* 僈乕儀乕僕僐儗僋僞乕偑弶婜壔偝傟偰偄側偐偭偨応崌偼丄壗傕偟傑偣傫丅
 */
void gc_free();

/* 捈偪偵僈乕儀乕僕僐儗僋僞乕傪婲摦偟傑偡丅
 * [note]
 *	* 捠忢偼丄pceHeapAlloc()偺拞偱帺摦揑偵僈乕儀乕僕僐儗僋僞乕偑婲摦偟傑偡丅
 *	  傾僾儕働乕僔儑儞僾儘僌儔儉偑柧帵揑偵僈乕儀乕僕僐儗僋僞乕傪婲摦偡傞昁梫偼偁傝傑偣傫丅
 *	* 張棟帪娫偵梋桾偺偁傞帪偵gc_run()傪屇傫偱柧帵揑偵僈乕儀乕僕僐儗僋僞乕傪婲摦偟丄
 *	  偦偺屻偺僈乕儀乕僕僐儗僋僔儑儞張棟帪娫傪愡栺偡傞偺偑丄偙偺娭悢偺棙梡朄偱偡丅
 *	* Sat Jun 20 01:31:13 JST 2009 Naoyuki Sawa 捛婰
 *	- gc_run()偵攔懠惂屼傪捛壛偟傑偟偨丅妱傝崬傒儖乕僠儞撪偱GC偑婲摦偟偰傕埨慡偱偡丅
 */
void gc_run();

#endif /*__CLIP_GC_H__*/
