80c663882a
Summary: First draft. Unit tests pass. Test Plan: unit tests attached Reviewers: heyongqiang Reviewed By: heyongqiang Differential Revision: https://reviews.facebook.net/D3969
41 lines
813 B
C++
41 lines
813 B
C++
/**
|
|
* Copyright 2012 Facebook
|
|
* @author Tudor Bosman (tudorb@fb.com)
|
|
*/
|
|
|
|
#ifndef THRIFT_LIB_CPP_REFLECTION_H_
|
|
#define THRIFT_LIB_CPP_REFLECTION_H_
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
#include "reflection_types.h"
|
|
|
|
namespace apache {
|
|
namespace thrift {
|
|
namespace reflection {
|
|
|
|
namespace detail {
|
|
const size_t kTypeBits = 5;
|
|
const uint64_t kTypeMask = (1ULL << kTypeBits) - 1;
|
|
} // namespace detail
|
|
|
|
inline int64_t makeTypeId(Type type, uint64_t hash) {
|
|
return static_cast<int64_t>((hash & ~detail::kTypeMask) | type);
|
|
}
|
|
|
|
inline Type getType(int64_t typeId) {
|
|
return static_cast<Type>(typeId & detail::kTypeMask);
|
|
}
|
|
|
|
inline bool isBaseType(Type type) {
|
|
return type <= TYPE_DOUBLE;
|
|
}
|
|
|
|
} // namespace reflection
|
|
} // namespace thrift
|
|
} // namespace apache
|
|
|
|
#endif /* THRIFT_LIB_CPP_REFLECTION_H_ */
|
|
|