Commit Graph

19 Commits

Author SHA1 Message Date
Wolfgang Bumiller
4a0e18d9b3 calling convention 'fixup'
if we ever want to support mgvtbl methods we may need to add
support for detecting the pTHX_ parameter into our build.rs
scripts

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-10-27 13:47:58 +02:00
Wolfgang Bumiller
f888c202cc perlmod-macro: drop anyhow dependency
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-10-15 09:45:57 +02:00
Wolfgang Bumiller
4c9f6c51d7 macro: different approach to clippy warning
currently this does in fact deduplicate code, so...

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-07-02 11:54:33 +02:00
Wolfgang Bumiller
a2a884c13d macro: clippy fixes
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-07-02 11:37:51 +02:00
Wolfgang Bumiller
aa13c5c85b macro: add newlines to errors
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-06-30 08:14:54 +02:00
Wolfgang Bumiller
705d6989ad macro: support tuple return types in functions
These are now *list* return types in perl.
However, currently there is no support for 'wantarray' or
lists of dynamic length.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-02-16 10:39:37 +01:00
Wolfgang Bumiller
fa4d4a654c macro: make generated helpers #[doc(hidden)]
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-02-15 14:05:02 +01:00
Wolfgang Bumiller
7de9fdf07b introduce try_from_ref argument attribute
and document attributes in the #[export] macro documentation

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-27 15:35:08 +01:00
Wolfgang Bumiller
81e9f75763 clippy lints
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-27 12:06:01 +01:00
Wolfgang Bumiller
dd7f83c3ee deserialize by reference
Allow deserializing things such as `&[u8]` to reference the
original data instead of requiring a `Vec<u8>` instead.

Introduces `perlmod::from_ref_value` next to
`perlmod::from_value` with a new signature.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-26 13:50:07 +01:00
Wolfgang Bumiller
2991a46a31 fix #[export(name=...)], drop deprecated make_package
The `make_package` macro is tedious to use. We now simply
depend on new-enough rustc for `package` to work.

The change to #[export] allows writing:

    #[export(name = "DESTROY")]
    fn destroy(#[raw] this: Value) { ... }

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-25 14:35:34 +01:00
Wolfgang Bumiller
913a8a72ce support functions without return values
this makes for surprisingly ugly code

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-24 11:05:55 +01:00
Wolfgang Bumiller
0cdb12e277 add support for raw parameters
#[export]
    fn foo(#[raw] this: Value) -> Result<(), Error>;

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-24 10:36:03 +01:00
Wolfgang Bumiller
29e61fa65e add 'raw_return' function attribute
A function declared with a raw_return attribute like this:

    #[export(raw_return)]
    fn foo() -> Result<Value, Error>;

will not perform serialization on the 'Value', but return
the "raw" value to perl. This allows returning blessed
values.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-11-24 09:37:59 +01:00
Wolfgang Bumiller
9525acd643 add some function name mangling to xs exports
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-10-16 11:08:50 +02:00
Wolfgang Bumiller
fb6b493d63 switch from failure to anyhow
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-04-20 12:38:49 +02:00
Wolfgang Bumiller
e199764961 macro: verify parameter count
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-01-13 14:21:45 +01:00
Wolfgang Bumiller
f0475cd5a1 silence cippy and add some ffi documentation
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-01-10 11:55:48 +01:00
Wolfgang Bumiller
b03c149435 macro: some refactoring
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2020-01-10 10:18:42 +01:00