Index: trunk/src/gl/gl_context.cc
===================================================================
--- trunk/src/gl/gl_context.cc	(revision 120)
+++ trunk/src/gl/gl_context.cc	(revision 121)
@@ -83,5 +83,5 @@
 }
 
-void gl_context::apply_stencil_face( int face, stencil_test_face& stencil, const stencil_test_face& new_stencil )
+void gl_context::apply_stencil_face( unsigned face, stencil_test_face& stencil, const stencil_test_face& new_stencil )
 {
 	if (( stencil.op_fail       != new_stencil.op_fail       ) ||
@@ -317,5 +317,5 @@
 }
 
-void gl_context::force_apply_stencil_face( int face, const stencil_test_face& stencil )
+void gl_context::force_apply_stencil_face( unsigned face, const stencil_test_face& stencil )
 {
 	glStencilOpSeparate( face,
@@ -356,5 +356,5 @@
 }
 
-void gl_context::draw( primitive prim, const render_state& rs, program* p, vertex_array* va, int count )
+void gl_context::draw( primitive prim, const render_state& rs, program* p, vertex_array* va, size_t count )
 {
 	apply_render_state( rs );
@@ -365,9 +365,9 @@
 		if ( va->has_index_buffer() )
 		{
-			glDrawElements( primitive_to_enum(prim), count, datatype_to_gl_enum( va->get_index_buffer_type() ), 0 );
+			glDrawElements( primitive_to_enum(prim), static_cast<GLsizei>( count ), datatype_to_gl_enum( va->get_index_buffer_type() ), 0 );
 		}
 		else
 		{
-			glDrawArrays( primitive_to_enum(prim), 0, count);
+			glDrawArrays( primitive_to_enum(prim), 0, static_cast<GLsizei>( count ) );
 		}
 		va->unbind();
Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 120)
+++ trunk/src/gl/gl_device.cc	(revision 121)
@@ -53,10 +53,10 @@
 }
 
-vertex_buffer* gl_device::create_vertex_buffer( buffer_hint hint, int size, void* source /*= nullptr */ )
+vertex_buffer* gl_device::create_vertex_buffer( buffer_hint hint, size_t size, void* source /*= nullptr */ )
 {
 	return new gl_vertex_buffer( hint, size, source );
 }
 
-index_buffer* gl_device::create_index_buffer( buffer_hint hint, int size, void* source /*= nullptr */ )
+index_buffer* gl_device::create_index_buffer( buffer_hint hint, size_t size, void* source /*= nullptr */ )
 {
 	return new gl_index_buffer( hint, size, source );
Index: trunk/src/gl/gl_enum.cc
===================================================================
--- trunk/src/gl/gl_enum.cc	(revision 120)
+++ trunk/src/gl/gl_enum.cc	(revision 121)
@@ -30,5 +30,5 @@
 	case depth_test::GREATER_OR_EQUAL : return GL_GEQUAL;
 	case depth_test::ALWAYS           : return GL_ALWAYS;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -53,5 +53,5 @@
 	case blending::ONE_MINUS_CONSTANT_ALPHA: return GL_ONE_MINUS_CONSTANT_ALPHA;
 	case blending::SRC_ALPHA_SATURATE      : return GL_SRC_ALPHA_SATURATE;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -66,5 +66,5 @@
 	case blending::MINIMUM          : return GL_MIN;
 	case blending::MAXIMUM          : return GL_MAX;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -77,5 +77,5 @@
 	case culling::BACK           : return GL_BACK;
 	case culling::FRONT_AND_BACK : return GL_FRONT_AND_BACK;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -87,5 +87,5 @@
 	case culling::CW   : return GL_CW;
 	case culling::CCW  : return GL_CCW;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -103,5 +103,5 @@
 	case stencil_test_face::GREATER_OR_EQUAL : return GL_GEQUAL;
 	case stencil_test_face::ALWAYS           : return GL_ALWAYS;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -119,5 +119,5 @@
 	case stencil_test_face::INCREMENT_WRAP   : return GL_INCR_WRAP;
 	case stencil_test_face::DECREMENT_WRAP   : return GL_DECR_WRAP;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -130,5 +130,5 @@
 	case STREAM_DRAW   : return GL_STREAM_DRAW;
 	case DYNAMIC_DRAW  : return GL_DYNAMIC_DRAW;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -140,5 +140,5 @@
 	case RGB  : return GL_RGB;
 	case RGBA : return GL_RGBA;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -154,5 +154,5 @@
 	case sampler::NEAREST_MIPMAP_LINEAR  : return GL_NEAREST_MIPMAP_LINEAR;
 	case sampler::LINEAR_MIPMAP_LINEAR   : return GL_LINEAR_MIPMAP_LINEAR;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -166,5 +166,5 @@
 	case sampler::MIRRORED_REPEAT : return GL_MIRRORED_REPEAT;
 	case sampler::REPEAT          : return GL_REPEAT;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -181,5 +181,5 @@
 	case TRIANGLE_STRIP : return GL_TRIANGLE_STRIP;
 	case TRIANGLE_FAN   : return GL_TRIANGLE_FAN;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
@@ -209,5 +209,5 @@
 	case BYTE_VECTOR_3  : return GL_INT_VEC3;
 	case BYTE_VECTOR_4  : return GL_INT_VEC4;
-	default : return 0; // TODO: throw!
+	NV_RETURN_COVERED_DEFAULT( 0 );
 	}
 }
Index: trunk/src/gl/gl_program.cc
===================================================================
--- trunk/src/gl/gl_program.cc	(revision 120)
+++ trunk/src/gl/gl_program.cc	(revision 121)
@@ -14,12 +14,12 @@
 using namespace nv;
 
-gl_shader::gl_shader( uint32 shader_type ) 
-	: object_id(0), shader_type( shader_type )
+gl_shader::gl_shader( uint32 sh_type ) 
+	: shader_type( sh_type ), object_id(0)
 {
 	// no op
 }
 
-gl_shader::gl_shader( uint32 shader_type, const string& shader_code )
-	: object_id(0), shader_type( shader_type )
+gl_shader::gl_shader( uint32 sh_type, const string& shader_code )
+	: shader_type( sh_type ), object_id(0)
 {
 	compile( shader_code );
@@ -140,5 +140,5 @@
 	glGetProgramiv( m_name.get_value(), GL_ACTIVE_ATTRIBUTES, &params );
 
-	for ( int i = 0; i < params; ++i )
+	for ( unsigned i = 0; i < (unsigned)params; ++i )
 	{
 		int attr_nlen;
@@ -149,5 +149,5 @@
 		glGetActiveAttrib( m_name.get_value(), i, 128, &attr_nlen, &attr_len, &attr_type, name_buffer );
 
-		string name( name_buffer, attr_nlen );
+		string name( name_buffer, size_t(attr_nlen) );
 
 		// skip built-ins
@@ -165,5 +165,5 @@
 	glGetProgramiv( m_name.get_value(), GL_ACTIVE_UNIFORMS, &params );
 
-	for ( int i = 0; i < params; ++i )
+	for ( unsigned i = 0; i < size_t(params); ++i )
 	{
 		int uni_nlen;
@@ -174,5 +174,5 @@
 		glGetActiveUniform( m_name.get_value(), i, 128, &uni_nlen, &uni_len, &uni_type, name_buffer );
 
-		string name( name_buffer, uni_nlen );
+		string name( name_buffer, size_t(uni_nlen) );
 
 		// skip built-ins
@@ -206,5 +206,5 @@
 			case FLOAT_MATRIX_3 : glUniformMatrix3fv( uloc, 1, GL_FALSE, glm::value_ptr(((uniform< enum_to_type< FLOAT_MATRIX_3 >::type >*)( ubase ))->get_value()) ); break;
 			case FLOAT_MATRIX_4 : glUniformMatrix4fv( uloc, 1, GL_FALSE, glm::value_ptr(((uniform< enum_to_type< FLOAT_MATRIX_4 >::type >*)( ubase ))->get_value()) ); break;
-			//default     : error?
+			default : break; // error?
 			}
 			ubase->clean();
Index: trunk/src/gl/gl_texture2d.cc
===================================================================
--- trunk/src/gl/gl_texture2d.cc	(revision 120)
+++ trunk/src/gl/gl_texture2d.cc	(revision 121)
@@ -15,8 +15,8 @@
 	glBindTexture( GL_TEXTURE_2D, m_name.get_value() );
 
-	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nv::sampler_filter_to_enum( m_sampler.filter_min ) );
-	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nv::sampler_filter_to_enum( m_sampler.filter_max ) );
-	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nv::sampler_wrap_to_enum( m_sampler.wrap_s) );
-	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nv::sampler_wrap_to_enum( m_sampler.wrap_t) );
+	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (int)nv::sampler_filter_to_enum( m_sampler.filter_min ) );
+	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (int)nv::sampler_filter_to_enum( m_sampler.filter_max ) );
+	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (int)nv::sampler_wrap_to_enum( m_sampler.wrap_s) );
+	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (int)nv::sampler_wrap_to_enum( m_sampler.wrap_t) );
 
 	glBindTexture( GL_TEXTURE_2D, 0 );
@@ -31,9 +31,9 @@
 {
 	glBindTexture( GL_TEXTURE_2D, m_name.get_value() );
-	glTexImage2D( GL_TEXTURE_2D, 0, nv::image_format_to_enum(m_format), m_size.x, m_size.y, 0, nv::image_format_to_enum(m_format), nv::datatype_to_gl_enum(m_datatype), data );
+	glTexImage2D( GL_TEXTURE_2D, 0, (GLint)nv::image_format_to_enum(m_format), m_size.x, m_size.y, 0, nv::image_format_to_enum(m_format), nv::datatype_to_gl_enum(m_datatype), data );
 	glBindTexture( GL_TEXTURE_2D, 0 );
 }
 
-void nv::gl_texture2d::bind( int slot )
+void nv::gl_texture2d::bind( size_t slot )
 {
 	glActiveTexture( GL_TEXTURE0 + slot );
Index: trunk/src/gl/gl_vertex_buffer.cc
===================================================================
--- trunk/src/gl/gl_vertex_buffer.cc	(revision 120)
+++ trunk/src/gl/gl_vertex_buffer.cc	(revision 121)
@@ -10,15 +10,15 @@
 using namespace nv;
 
-gl_vertex_buffer::gl_vertex_buffer( buffer_hint hint, int size, void* data ) 
+gl_vertex_buffer::gl_vertex_buffer( buffer_hint hint, size_t size, void* data ) 
 	: vertex_buffer( hint, size ), m_name()
 {
 	bind();
-	glBufferData( GL_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
+	glBufferData( GL_ARRAY_BUFFER, (GLsizeiptr)m_size, data, buffer_hint_to_enum( m_hint ) );
 	unbind();
 }
 
-void gl_vertex_buffer::update( void* data, int offset, int size )
+void gl_vertex_buffer::update( void* data, size_t offset, size_t size )
 {
-	glBufferSubData( GL_ARRAY_BUFFER, offset, size, data );
+	glBufferSubData( GL_ARRAY_BUFFER, (GLintptr)offset, (GLsizeiptr)size, data );
 }
 
@@ -39,15 +39,15 @@
 }
 
-gl_index_buffer::gl_index_buffer( buffer_hint hint, int size, void* data ) 
+gl_index_buffer::gl_index_buffer( buffer_hint hint, size_t size, void* data ) 
 	: index_buffer( hint, size ), m_name()
 {
 	bind();
-	glBufferData( GL_ELEMENT_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
+	glBufferData( GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)m_size, data, buffer_hint_to_enum( m_hint ) );
 	unbind();
 }
 
-void gl_index_buffer::update( void* data, int offset, int size )
+void gl_index_buffer::update( void* data, size_t offset, size_t size )
 {
-	glBufferSubData( GL_ELEMENT_ARRAY_BUFFER, offset, size, data );
+	glBufferSubData( GL_ELEMENT_ARRAY_BUFFER, (GLintptr)offset, (GLsizeiptr)size, data );
 }
 
@@ -76,5 +76,5 @@
 	for ( vertex_buffer_attribute_map::iterator i = m_map.begin(); 	i != m_map.end(); ++i ) 
 	{
-		int location                = i->first;
+		uint32 location             = static_cast<uint32>( i->first );
 		vertex_buffer_attribute* va = i->second;
 		vertex_buffer*           vb = va->get_buffer();
@@ -83,8 +83,8 @@
 		glVertexAttribPointer( 
 			location, 
-			va->get_components(), 
+			static_cast<GLint>( va->get_components() ), 
 			nv::datatype_to_gl_enum( va->get_datatype() ),
 			GL_FALSE,
-			va->get_stride(),
+			static_cast<GLsizei>( va->get_stride() ),
 			(void*)va->get_offset()
 			);
@@ -107,5 +107,5 @@
 	for ( vertex_buffer_attribute_map::iterator i = m_map.begin(); 	i != m_map.end(); ++i ) 
 	{
-		glDisableVertexAttribArray( i->first );
+		glDisableVertexAttribArray( static_cast<uint32>( i->first ) );
 	}
 }
Index: trunk/src/gl/gl_window.cc
===================================================================
--- trunk/src/gl/gl_window.cc	(revision 120)
+++ trunk/src/gl/gl_window.cc	(revision 121)
@@ -21,5 +21,5 @@
 	if (ke.keysym.unicode >= 32 && ke.keysym.unicode < 128 )
 	{
-		kevent.key.ascii = (char)ke.keysym.unicode;
+		kevent.key.ascii = static_cast<char8>( ke.keysym.unicode );
 	}
 
@@ -151,5 +151,5 @@
 	: m_device( dev ), m_width( width ), m_height( height ), m_title("NV Engine"), m_screen( nullptr )
 {
-	int flags = SDL_OPENGL;
+	uint32 flags = SDL_OPENGL;
 	
 	m_screen = SDL_SetVideoMode( width, height, 32, flags );
