text: #ifndef __GXGEOMETRY_H__
  #define __GXGEOMETRY_H__
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /*---------------------------------------------------------------------------*/
  #include "rvl/GXStruct.h"
  
  void GXSetVtxDesc           ( GXAttr attr, GXAttrType type );
  void GXSetVtxDescv          ( const GXVtxDescList *attrPtr );
  void GXClearVtxDesc         ( void );
  
  void GXSetVtxAttrFmt( 
      GXVtxFmt       vtxfmt, 
      GXAttr         attr, 
      GXCompCnt      cnt, 
      GXCompType     type, 
      u8             frac );
  
  void GXSetVtxAttrFmtv       ( GXVtxFmt vtxfmt, const GXVtxAttrFmtList *list );
  void GXSetArray             ( GXAttr attr, const void *base_ptr, u8 stride );
  void GXBegin                ( GXPrimitive type, GXVtxFmt vtxfmt, u16 nverts );
  
  #if defined(EMU) || defined(WIN32)
  void GXEnd                  ( void );
  #else // !EMU
  static inline void GXEnd           ( void )
  {
  #ifdef _DEBUG
      extern GXBool __GXinBegin;
      if (!__GXinBegin)
          OSPanic(__FILE__, __LINE__, "GXEnd: called without a GXBegin");
      __GXinBegin = GX_FALSE;
  #endif
  }
  #endif // EMU
  
  #if ( GX_REV != 1 ) // GX revision 2 or later only
  void GXSetTexCoordGen2(
      GXTexCoordID     dst_coord,
      GXTexGenType     func,
      GXTexGenSrc      src_param,
      u32              mtx,
      GXBool           normalize,
      u32              postmtx );
  #endif // ( GX_REV != 1 )
  
  #if ( GX_REV == 1 || defined(EMU) ) // GX revision 1 or emulator
  void GXSetTexCoordGen( 
      GXTexCoordID     dst_coord,
      GXTexGenType     func,
      GXTexGenSrc      src_param,
      u32              mtx );
  #else // GX revision 2 or later and real hardware
  static inline void GXSetTexCoordGen ( 
      GXTexCoordID    dst_coord,
      GXTexGenType    func,
      GXTexGenSrc     src_param,
      u32             mtx )
  {
      GXSetTexCoordGen2(dst_coord, func, src_param, mtx, 
                        GX_FALSE, GX_PTIDENTITY);
  }
  #endif // ( GX_REV == 1 || defined(EMU) )
  
  
  void GXSetNumTexGens        ( u8 nTexGens );
  
  void GXInvalidateVtxCache   ( void );
  void GXSetLineWidth         ( u8 width, GXTexOffset texOffsets );
  void GXSetPointSize         ( u8 pointSize, GXTexOffset texOffsets );
  void GXEnableTexOffsets	    ( GXTexCoordID coord, GXBool line_enable, 
  			      GXBool point_enable );
  
  /*---------------------------------------------------------------------------*/
  #ifdef __cplusplus
  }
  #endif
  
  #endif // __GXGEOMETRY_H__
  