/*
 * $Id: gfxalloc.h,v 1.1 2003/06/06 00:15:12 tong Exp $
 *
 * 独立型Gfx領域借用関数
 *
 * 使用例）
 * {
 *     Gfx *glistp_new, *my_shape;
 *
 *     mtx = gfxalloc(&glistp, sizeof(Mtx));
 *     gSPMatrix(glistp++, mtx);
 *     my_shape = gfxopen(glistp);
 *     glistp_new = make_my_shape(my_shape);
 *     glistp = graph_gfxclose(glistp, glistp_new);
 *     {
 *         gDPSetPrimColor(glistp++, 0, 0, 255, 255, 50, 255);
 *         gSPDisplayList(glistp++, my_shape);
 *         gDPSetPrimColor(glistp++, 0, 0, 200, 255, 150, 255);
 *         gSPDisplayList(glistp++, my_shape);
 *     }
 * }
 *
 * $Log: gfxalloc.h,v $
 * Revision 1.1  2003/06/06 00:15:12  tong
 * source files for localization from Nintendo.
 *
 * Revision 1.3  2001-01-15 19:41:40+09  hayakawa
 * GfxNewとGfxNewAを追加
 *
 * Revision 1.2  1999-03-05 15:35:20+09  komatu
 * *** empty log message ***
 *
 * Revision 1.1  1999-02-25 14:38:30+09  nii
 * Initial revision
 *
 * Revision 1.1  1998-12-02 14:32:11+09  zelda
 * Initial revision
 *
 * Revision 2.1  1998/10/22 11:41:56  zelda
 * ＲＯＭ出しバージョン(NTSC)
 *
 * Revision 1.2  1998/08/28 05:18:17  hayakawa
 * *** empty log message ***
 *
 * Revision 1.1  1998-08-27 16:55:24+09  hayakawa
 * Initial revision
 *
 */

#ifndef __GFXALLOC_H_
#define __GFXALLOC_H_

#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
    
#include "gbi.h"

extern Gfx *gfxopen(Gfx *gp);
extern Gfx *gfxclose(Gfx *gp, Gfx *gp_new);
extern void *gfxalloc(Gfx **gpp, size_t size);

#define GfxOpen(gp)             ((gp) + 1)
#define GfxClose(gp, child)     (gSPBranchList((gp), (child)), (child))
#define GfxAlloc(gpp, size) 	gfxalloc(gpp, (size))
#define GfxNewA(gpp, type, num) (type *)GfxAlloc(gpp, sizeof(type) * (num))
#define GfxNew(gpp, type) 	GfxNewA(gpp, type, 1)


#ifdef _LANGUAGE_C_PLUS_PLUS
} /* extern "C" */
#endif

#endif /* __GFXALLOC_H_ */
