开源中国 2018 年度最后一场技术盛会邀你来约~错过就要等明年啦!点此立即预约

RonxBulld / ftrpcC++GPL-3.0

指数
0
Watch 12 Star 36 Fork 5
加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
这是一个简单的异步RPC框架,基于JSON进行传输。程序只进行打/解包参数工作,不涉及具体通信方式,socket、websocket都可以使用。目前作者使用此项目生成 typescript 前端和 C++ 后端,更多语言将被支持。 展开 收起

https://gitee.com/RonxBulld/ftrpc/wikis

  • C 81.1%
  • C++ 17.7%
  • JavaScript 0.7%
  • TypeScript 0.3%
  • CMake 0.1%
  • Other 0.1%
symman.h 1.28 KB
一键复制 编辑 Web IDE 原始数据 按行查看 历史
RonxBulld 提交于 2018-07-09 00:23 . 添加数组支持
//
// Created by Rexfield on 2018/5/3.
//
#ifndef FTRPC_SYMMAN_H
#define FTRPC_SYMMAN_H
#include <map>
#include <string>
#include <list>
#include "ast_tree.h"
typedef unsigned int TokenID;
class TokenManage
{
private:
TokenID indexReg = 0;
std::map<std::string, TokenID> s2i;
std::map<TokenID, std::string> i2s;
public:
TokenID operator[](const std::string &Token);
const std::string &operator[](const TokenID &ID);
TokenManage(std::initializer_list<std::pair<std::string, TokenID>> initToken);
TokenManage() = default;
};
typedef unsigned int TypeID;
typedef std::pair<TypeNode, TokenID> Member;
typedef std::list<Member> MemberLists;
class TypeManage
{
private:
TypeID indexReg = 0;
public:
std::map<TokenID, TypeID> tk2ty; // TokenID -> TypeID
std::map<TypeID, TokenID> ty2tk; // TypeID -> TokenID
std::map<TypeID, MemberLists> StructsMap; // TypeID { TypeID* }
TypeManage(std::initializer_list<std::pair<TypeID, TokenID>> initBaseType);
TypeManage() = default;
enum typeDefType { DeclareBase, DeclareStruct };
void registType(TokenID Name, enum typeDefType DeclareType, MemberLists &MemberList);
TypeID getTypeID(TokenID Name);
bool isType(TokenID Name);
};
#endif //FTRPC_SYMMAN_H

评论 ( 0 )

你可以在登录后,发表评论

搜索帮助