diff options
Diffstat (limited to 'src/repeat.rs')
| -rw-r--r-- | src/repeat.rs | 30 | 
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( +                "e! { +                    fn #ht gl_command_name_noprefix(#ht gl_command_args) -> #ht gl_command_ret_type {} +                }, +                ®istry, +            ) +            .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(), +        );      }  } | 
