43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2009 Joe Groff. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: kernel namespaces combinators.short-circuit vocabs sequences | ||
|  | compiler.units tools.annotations tools.annotations.private fry words | ||
|  | opengl calendar accessors ascii ;
 | ||
|  | IN: opengl.annotations | ||
|  | 
 | ||
|  | TUPLE: gl-error-log | ||
|  |     { function word initial: t } | ||
|  |     { error gl-error } | ||
|  |     { timestamp timestamp } ;
 | ||
|  | 
 | ||
|  | gl-error-log [ V{ } clone ] initialize
 | ||
|  | 
 | ||
|  | : <gl-error-log> ( function code -- gl-error-log )
 | ||
|  |     [ dup ] dip <gl-error> now gl-error-log boa ;
 | ||
|  | 
 | ||
|  | : log-gl-error ( function -- )
 | ||
|  |     gl-error-code [ <gl-error-log> gl-error-log get push ] [ drop ] if* ;
 | ||
|  | 
 | ||
|  | : clear-gl-error-log ( -- )
 | ||
|  |     V{ } clone gl-error-log set ;
 | ||
|  | 
 | ||
|  | : gl-function? ( word -- ? )
 | ||
|  |     name>> { [ "glGetError" = not ] [ "gl" head? ] [ third LETTER? ] } 1&& ;
 | ||
|  | 
 | ||
|  | : gl-functions ( -- words )
 | ||
|  |     "opengl.gl" vocab words [ gl-function? ] filter ;
 | ||
|  | 
 | ||
|  | : annotate-gl-functions ( quot -- )
 | ||
|  |     [ | ||
|  |         [ gl-functions ] dip [ [ dup ] dip curry (annotate) ] curry each
 | ||
|  |     ] with-compilation-unit ;
 | ||
|  | 
 | ||
|  | : reset-gl-functions ( -- )
 | ||
|  |     [ gl-functions [ (reset) ] each ] with-compilation-unit ;
 | ||
|  | 
 | ||
|  | : throw-gl-errors ( -- )
 | ||
|  |     [ '[ @ _ (gl-error) ] ] annotate-gl-functions ;
 | ||
|  | 
 | ||
|  | : log-gl-errors ( -- )
 | ||
|  |     [ '[ @ _ log-gl-error ] ] annotate-gl-functions ;
 |