IM_Client/api/MP/EnumMapping.h

62 lines
930 B
C

//
// Created by dongl on 23-4-25.
//
#ifndef IM2_ENUMMAPPING_H
#define IM2_ENUMMAPPING_H
#include "proto/mp.mph.pb.h"
// 定义一个宏来包含需要用到的枚举值
#define MY_ENUM_VALUES \
X(MP_REQUEST_LOGIN) \
X(MP_REQUEST_LOGOUT) \
X(MP_REQUEST_REGISTER) \
X(MP_REQUEST_CODE) \
X(MP_REQUEST_FRIENDS) \
X(MP_REQUEST_GROUPS)
#if 0
// method 1
// 直接定义枚举值
enum {
SUMMER,
AUTUMN,
WINTER,
};
#else
// method 2
// 利用宏展开获取并定义枚举
#undef X
#define X(x) x,
enum {
MY_ENUM_VALUES
};
#endif
// 重新定义宏函数并获取新的展开形式,以获取枚举值对应的字符串;
const char *myenumToString(int n) {
#undef X
#define X(x) case (x): { return #x; }
#define MAKE_ENUM_CASES \
MY_ENUM_VALUES \
default: { return "unknown enum string."; }
switch (n) {
MAKE_ENUM_CASES
}
}
#endif //IM2_ENUMMAPPING_H