gpt4 book ai didi

java - 为通过参数返回的函数创建类型映射

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:11 24 4
gpt4 key购买 nike

我正在转换 C api > Java,并且我有以下函数原型(prototype)。

/*
Retrieves an individual field value from the current Line
\param reader pointer to Text Reader object.
\param field_num relative field [aka column] index: first field has index 0.
\param type on completion this variable will contain the value type.
\param value on completion this variable will contain the current field value.
\return 0 on failure: any other value on success.
*/

extern int gaiaTextReaderFetchField (gaiaTextReaderPtr reader, int field_num, int *type, const char **value);

我想按预期返回状态,将“类型”作为 int 返回,将“值”作为字符串返回(不被释放)

根据文档,我发现您创建了几个可以保留返回值的结构。

有人可以帮我做第一个吗?

最佳答案

假设您的函数声明存在于名为 header.h 的文件中,您可以执行如下操作:

%module test

%{
#include "header.h"
%}

%inline %{
%immutable;
struct FieldFetch {
int status;
int type;
char *value;
};
%mutable;

struct FieldFetch gaiaTextReaderFetchField(gaiaTextReaderPtr reader, int field_num) {
struct FieldFetch result;
result.status = gaiaTextReaderFetchField(reader, field_num, &result.type, &result.value);
return result;
}
%}

%ignore gaiaTextReaderFetchField;
%include "header.h"

这隐藏了“真实的”gaiaTextReaderFetchField,取而代之的是一个返回输出参数和调用结果的版本(不可修改)。

(如果您愿意,可以使用 %javaexception 而不是将其放在结构中,而是使返回状态为 0 导致抛出异常)

关于java - 为通过参数返回的函数创建类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com