aboutsummaryrefslogtreecommitdiff
path: root/src/repeat.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-03-05 20:33:41 +0100
committerHampusM <hampus@hampusmat.com>2023-03-05 20:35:02 +0100
commit306e3417b645be0941fee067c514bf009125a2f8 (patch)
treee7f77c95089be871fe8d199478917eeff70ea854 /src/repeat.rs
parent3f26d9e7ebadb145fde8d5dcc60429c7ba4c2399 (diff)
feat: add prefixless command name replacement
Diffstat (limited to 'src/repeat.rs')
-rw-r--r--src/repeat.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/repeat.rs b/src/repeat.rs
index 668fefb..594d23e 100644
--- a/src/repeat.rs
+++ b/src/repeat.rs
@@ -10,6 +10,7 @@ use crate::{
OPENGL_CMD_ARGS_REPLACE,
OPENGL_CMD_ARG_NAMES_REPLACE,
OPENGL_CMD_ARG_TYPES_REPLACE,
+ OPENGL_CMD_NAME_NOPREFIX_REPLACE,
OPENGL_CMD_NAME_REPLACE,
OPENGL_CMD_RET_TYPE_REPLACE,
};
@@ -31,6 +32,19 @@ pub fn for_each_opengl_command_impl(
)),
);
+ let cmd_prototype = gl_command.prototype();
+
+ let stream = stream.replace_ident(
+ &Ident::new(OPENGL_CMD_NAME_NOPREFIX_REPLACE, Span::call_site()),
+ &TokenTree::Ident(Ident::new(
+ cmd_prototype
+ .name()
+ .strip_prefix("gl")
+ .unwrap_or_else(|| cmd_prototype.name()),
+ Span::call_site(),
+ )),
+ );
+
let return_type = gl_command.prototype().return_type();
let stream = stream.replace_ident(
@@ -197,5 +211,21 @@ mod tests
}
.to_string(),
);
+
+ assert_eq!(
+ for_each_opengl_command_impl(
+ &quote! {
+ fn #ht gl_command_name_noprefix(#ht gl_command_args) -> #ht gl_command_ret_type {}
+ },
+ &registry,
+ )
+ .to_string(),
+ quote! {
+ fn BindBuffer() -> std::ffi::c_void {}
+ fn ActiveTexture(abc: GLuint, xyz: GLshort) -> std::ffi::c_void {}
+ fn DrawArrays(foo: GLubyte) -> GLint {}
+ }
+ .to_string(),
+ );
}
}