diff --git a/src/gl_generator/generators/global_gen.rs b/src/gl_generator/generators/global_gen.rs
index 4bf1b033..2a451d2f 100644
--- a/src/gl_generator/generators/global_gen.rs
+++ b/src/gl_generator/generators/global_gen.rs
@@ -107,23 +107,7 @@ fn write_fns(ecx: &ExtCtxt, registry: &Registry) -> Vec
> {
None => "".to_string()
};
- ecx.parse_item(if c.is_safe {
- format!(
- "#[allow(non_snake_case)] #[allow(unused_variables)] #[allow(dead_code)]
- #[inline] #[unstable] {doc} pub fn {name}({params}) -> {return_suffix} {{ \
- unsafe {{ \
- __gl_imports::mem::transmute::<_, extern \"system\" fn({types}) -> {return_suffix}>\
- (storage::{name}.f)({idents}) \
- }} \
- }}",
- name = c.proto.ident,
- doc = doc,
- params = super::gen_parameters(ecx, c).into_iter().map(|p| p.to_source()).collect::>().connect(", "),
- types = super::gen_parameters(ecx, c).into_iter().map(|p| p.ty.to_source()).collect::>().connect(", "),
- return_suffix = super::gen_return_type(ecx, c).to_source(),
- idents = super::gen_parameters(ecx, c).into_iter().map(|p| p.pat.to_source()).collect::>().connect(", "),
- )
- } else {
+ ecx.parse_item(
format!(
"#[allow(non_snake_case)] #[allow(unused_variables)] #[allow(dead_code)]
#[inline] #[unstable] {doc} pub unsafe fn {name}({typed_params}) -> {return_suffix} {{ \
@@ -136,7 +120,7 @@ fn write_fns(ecx: &ExtCtxt, registry: &Registry) -> Vec> {
return_suffix = super::gen_return_type(ecx, c).to_source(),
idents = super::gen_parameters(ecx, c).into_iter().map(|p| p.pat.to_source()).collect::>().connect(", "),
)
- })
+ )
}).collect()
}
diff --git a/src/gl_generator/generators/struct_gen.rs b/src/gl_generator/generators/struct_gen.rs
index 50333cc7..f75de543 100644
--- a/src/gl_generator/generators/struct_gen.rs
+++ b/src/gl_generator/generators/struct_gen.rs
@@ -220,34 +220,17 @@ fn write_impl(ecx: &ExtCtxt, registry: &Registry, ns: &Ns) -> P {
modules = registry.cmd_iter().map(|c| {
use syntax::ext::quote::rt::ToSource;
- if c.is_safe {
- format!(
- "#[allow(non_snake_case)] #[allow(unused_variables)] #[allow(dead_code)]
- #[inline] #[unstable] pub fn {name}(&self, {params}) -> {return_suffix} {{ \
- unsafe {{ \
- __gl_imports::mem::transmute::<_, extern \"system\" fn({types}) -> {return_suffix}>\
- (self.{name}.f)({idents}) \
- }} \
- }}",
- name = c.proto.ident,
- params = super::gen_parameters(ecx, c).into_iter().map(|p| p.to_source()).collect::>().connect(", "),
- types = super::gen_parameters(ecx, c).into_iter().map(|p| p.ty.to_source()).collect::>().connect(", "),
- return_suffix = super::gen_return_type(ecx, c).to_source(),
- idents = super::gen_parameters(ecx, c).into_iter().map(|p| p.pat.to_source()).collect::>().connect(", "),
- )
- } else {
- format!(
- "#[allow(non_snake_case)] #[allow(unused_variables)] #[allow(dead_code)]
- #[inline] #[unstable] pub unsafe fn {name}(&self, {typed_params}) -> {return_suffix} {{ \
- __gl_imports::mem::transmute::<_, extern \"system\" fn({typed_params}) -> {return_suffix}>\
- (self.{name}.f)({idents}) \
- }}",
- name = c.proto.ident,
- typed_params = super::gen_parameters(ecx, c).into_iter().map(|p| p.to_source()).collect::>().connect(", "),
- return_suffix = super::gen_return_type(ecx, c).to_source(),
- idents = super::gen_parameters(ecx, c).into_iter().map(|p| p.pat.to_source()).collect::>().connect(", "),
- )
- }
+ format!(
+ "#[allow(non_snake_case)] #[allow(unused_variables)] #[allow(dead_code)]
+ #[inline] #[unstable] pub unsafe fn {name}(&self, {typed_params}) -> {return_suffix} {{ \
+ __gl_imports::mem::transmute::<_, extern \"system\" fn({typed_params}) -> {return_suffix}>\
+ (self.{name}.f)({idents}) \
+ }}",
+ name = c.proto.ident,
+ typed_params = super::gen_parameters(ecx, c).into_iter().map(|p| p.to_source()).collect::>().connect(", "),
+ return_suffix = super::gen_return_type(ecx, c).to_source(),
+ idents = super::gen_parameters(ecx, c).into_iter().map(|p| p.pat.to_source()).collect::>().connect(", "),
+ )
}).collect::>().connect("\n")
))
}
diff --git a/src/gl_generator/registry.rs b/src/gl_generator/registry.rs
index 4ffd40a3..c4404b1e 100644
--- a/src/gl_generator/registry.rs
+++ b/src/gl_generator/registry.rs
@@ -225,6 +225,9 @@ pub struct Binding {
pub struct Cmd {
pub proto: Binding,
pub params: Vec,
+ /// True if this command doesn't take any pointers.
+ ///
+ /// Unused by the built-in generators.
pub is_safe: bool,
pub alias: Option,
pub vecequiv: Option,