MCPcopy Create free account
hub / github.com/apache/fory / read_primitive_item

Function read_primitive_item

python/pyfory/cpp/pyfory.cc:1115–1239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1113}
1114
1115static PyObject *read_primitive_item(Buffer *buffer, uint8_t type_id) {
1116 Error error;
1117 switch (static_cast<TypeId>(type_id)) {
1118 case TypeId::STRING:
1119 return read_python_string(buffer);
1120 case TypeId::VARINT64:
1121 case TypeId::INT64: {
1122 const int64_t v = static_cast<TypeId>(type_id) == TypeId::INT64
1123 ? buffer->read_int64(error)
1124 : buffer->read_var_int64(error);
1125 if (FORY_PREDICT_FALSE(!error.ok())) {
1126 set_buffer_error(error);
1127 return nullptr;
1128 }
1129 return PyLong_FromLongLong(v);
1130 }
1131 case TypeId::VARINT32:
1132 case TypeId::INT32: {
1133 const int32_t v = static_cast<TypeId>(type_id) == TypeId::INT32
1134 ? buffer->read_int32(error)
1135 : buffer->read_var_int32(error);
1136 if (FORY_PREDICT_FALSE(!error.ok())) {
1137 set_buffer_error(error);
1138 return nullptr;
1139 }
1140 return PyLong_FromLong(v);
1141 }
1142 case TypeId::VAR_UINT64:
1143 case TypeId::UINT64:
1144 case TypeId::TAGGED_UINT64: {
1145 uint64_t v = 0;
1146 if (static_cast<TypeId>(type_id) == TypeId::VAR_UINT64) {
1147 v = buffer->read_var_uint64(error);
1148 } else if (static_cast<TypeId>(type_id) == TypeId::TAGGED_UINT64) {
1149 v = buffer->read_tagged_uint64(error);
1150 } else {
1151 v = buffer->read_uint64(error);
1152 }
1153 if (FORY_PREDICT_FALSE(!error.ok())) {
1154 set_buffer_error(error);
1155 return nullptr;
1156 }
1157 return PyLong_FromUnsignedLongLong(v);
1158 }
1159 case TypeId::VAR_UINT32:
1160 case TypeId::UINT32: {
1161 const uint32_t v = static_cast<TypeId>(type_id) == TypeId::UINT32
1162 ? buffer->read_uint32(error)
1163 : buffer->read_var_uint32(error);
1164 if (FORY_PREDICT_FALSE(!error.ok())) {
1165 set_buffer_error(error);
1166 return nullptr;
1167 }
1168 return PyLong_FromUnsignedLong(v);
1169 }
1170 case TypeId::BOOL: {
1171 const uint8_t v = buffer->read_uint8(error);
1172 if (FORY_PREDICT_FALSE(!error.ok())) {

Calls 15

read_python_stringFunction · 0.85
set_buffer_errorFunction · 0.85
read_int64Method · 0.45
read_var_int64Method · 0.45
okMethod · 0.45
read_int32Method · 0.45
read_var_int32Method · 0.45
read_var_uint64Method · 0.45
read_tagged_uint64Method · 0.45
read_uint64Method · 0.45
read_uint32Method · 0.45
read_var_uint32Method · 0.45

Tested by

no test coverage detected