Closed longyn closed 6 months ago
好的!感谢报case。
我们看一下怎么解决。
请教一下,list应该被解析成std::list吗?
我们看了一下,list好像解析成std::vector是正确的。thrift本身没有vector,只能写成list。
std::map<int, int>这个写法不对,thrift只能写成map<i32, i32>
大括号在行首或行尾,也都没有问题……
明白你list的问题了。C++的vector\<bool>,没有办法用引用遍历。我们看看怎么解决。
我们看了一下,list好像解析成std::vector是正确的。thrift本身没有vector,只能写成list。
std::map<int, int>这个写法不对,thrift只能写成map<i32, i32>
已更正,手写错了,意思就是用map返回值解析类型,错误
大括号在行首或行尾,也都没有问题……
@Barenboim FYI
struct CResult
{
1: i32 result;
}
/** 变量类别 */
enum EFruit
{
Apple
}
service TestService
{
list<bool> getStatusList();
map<i32, i32> getValue();
}
大括号在行首或行尾,也都没有问题……
@Barenboim FYI
struct CResult { 1: i32 result; } /** 变量类别 */ enum EFruit { Apple } service TestService { list<bool> getStatusList(); map<i32, i32> getValue(); }
应该是我们解析注释的问题。去掉注释是对的。
@longyn 你好,两个问题应该都修复了,麻烦用最新代码再帮我们试一下。
map目前没发现有什么问题。
目前对注释的去除可能会出现一些过召的问题,例如这么写可能会被解析成功:
struct CR/*****/esult
{
1: i32 result;
}
/** 变量类别 */
enum EFruit
{
Apple
}
service TestService
{
list<bool> getStatusList();
map<i32, i32> getValue();
}
之后有空我们再完善一下,不影响正常使用。
@Barenboim 看生成的代码,没有map的接口, parser.cc里是通split空格取得返回值类型和方法,aa.size() == 3, 被忽略
/*
* Server codes
* Generated by SRPC
*/
class Service : public srpc::RPCService
{
public:
// please implement these methods in server.cc
virtual void getStatusList(std::vector<bool>& _return);
public:
virtual void getStatusList(getStatusListRequest *request, getStatusListResponse *response,
srpc::RPCContext *ctx);
public:
Service();
};
@Barenboim 看生成的代码,没有map的接口, parser.cc里是通split空格取得返回值类型和方法,aa.size() == 3, 被忽略
/* * Server codes * Generated by SRPC */ class Service : public srpc::RPCService { public: // please implement these methods in server.cc virtual void getStatusList(std::vector<bool>& _return); public: virtual void getStatusList(getStatusListRequest *request, getStatusListResponse *response, srpc::RPCContext *ctx); public: Service(); };
好的,感谢。我们一会修改一下。
我用最新的代码,测试了一下,可以正常解析和工作了,感谢
我用最新的代码,测试了一下,可以正常解析和工作了,感谢
其实这个bug还没有改好…… 主要是写成map<i32,i32>,两个i32之间不加空格就没有问题。我们还在修。你这边可以先把空格去了先用起来。
感谢给我们报bug。如果用上了,也麻烦star一下我们项目。
@longyn map的问题也彻底修复了,不会再受空格影响。
问题:
list<bool>
解析成std::vector<bool>
,无法编译