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_ */
|
||
|
|