File: cpw_glextensions.h

/***************************************************************************/
/*                                                                         */
/*  cpw_glextensions.h                                                     */
/*                                                                         */
/*    Utility functions for querying support of and iterating each of      */
/*    the localhost's OpenGL extensions.                                   */
/*                                                                         */
/*  Copyright 2001-2002 by                                                 */
/*  Jim Mathies,                                                           */
/*                                                                         */
/*  This file is part of the Cpw project, and may only be used,            */
/*  modified, and distributed under the terms of the Cpw project           */
/*  license.  By continuing to use, modify, or distribute this file        */
/*  you indicate that you have read the license and understand and         */
/*  accept it fully.                                                       */
/*                                                                         */
/*  File Platform: cross                                                   */
/*                                                                         */
/***************************************************************************/

#ifndef __cpw_glextensions_h__
#define __cpw_glextensions_h__

#include "cpw_config.h"
#include "cpw_state.h"

CPW_BEGIN_HEADER

  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    cpwIterateExtensions                                               */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Iterates each extension supported, returning a null terminated     */
  /*    string or null when the end of the list is reached.                */
  /*                                                                       */
  CPW_API pChar 
  cpwIterateExtensions( pCpw cpw );
  /*                                                                       */
  /*************************************************************************/

  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    cpwExtensionSupport                                                */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Tests to see if a particluar extension is supported using a        */
  /*    string search across the entire extension string list.             */
  /*                                                                       */
  CPW_API bool  
  cpwExtensionSupport( pCpw cpw, 
                       pChar string );
  /*                                                                       */
  /*************************************************************************/

  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    cpwIterateExtensionsReset                                          */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Resets the iteration index for cpwIterateExtensions.               */
  /*                                                                       */
  CPW_API bool  
  cpwIterateExtensionsReset( pCpw cpw );
  /*                                                                       */
  /*************************************************************************/

  /*************************************************************************/
  /*                                                                       */
  /*   internal functions and definitions                                  */
  /*                                                                       */
  /*************************************************************************/

#ifdef CPW_INTERN

  /*************************************************************************/
  /*                                                                       */
  /* <Struct>                                                              */
  /*    CpwExtensionList                                                   */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Hold a list of opengl extensions this localhost supports.          */
  /*                                                                       */
  struct _CpwExtensionList
  {
    pChar   list;
    uint_32 size;
    uint_32 index;
    bool    init;
  };
  typedef struct _CpwExtensionList CpwExtensionList;
  /*                                                                       */
  /*************************************************************************/


  bool cpw_glextensions_init( pCpw cpw );
  void cpw_glextensions_exit( pCpw cpw );
  bool cpw_glextensions_initlist( pCpw cpw );

#endif /* CPW_INTERN */

CPW_END_HEADER

#endif