text: /*
   * Copyright 2006-2012, Haiku, Inc. All Rights Reserved.
   * Distributed under the terms of the MIT License.
   *
   * Authors:
   *		Philippe Houdoin <philippe.houdoin@free.fr>
   */
  #ifndef _GLRENDERER_ROSTER_H
  #define _GLRENDERER_ROSTER_H
  
  
  #include <GLRenderer.h>
  
  #include <vector>
  
  
  typedef BGLRenderer* (*InstantiateRenderer) (BGLView* view, ulong options);
  
  struct renderer_item {
  	InstantiateRenderer entry;
  	entry_ref	ref;
  	ino_t		node;
  	image_id	image;
  };
  
  typedef std::vector<renderer_item> RendererMap;
  
  
  class GLRendererRoster {
  	public:
  		static GLRendererRoster *Roster();
  		BGLRenderer* GetRenderer(BGLView *view, ulong options);
  
  	private:
  		GLRendererRoster();
  		virtual ~GLRendererRoster();
  
  		void AddDefaultPaths();
  		status_t AddPath(const char* path);
  		status_t AddRenderer(InstantiateRenderer entry, image_id image,
  			const entry_ref* ref, ino_t node);
  		status_t CreateRenderer(const entry_ref& ref);
  
  		static GLRendererRoster* fInstance;
  		bool		fSafeMode;
  		const char*	fABISubDirectory;
  
  		RendererMap fRenderers;
  };
  
  
  #endif	/* _GLRENDERER_ROSTER_H */
  