コード例 #1
0
ファイル: value.cpp プロジェクト: mody/cpp-driver
Value::Value(int protocol_version,
             const SharedRefPtr<const DataType>& data_type,
             char* data, int32_t size)
  : protocol_version_(protocol_version)
  , data_type_(data_type) {
  if (size > 0 && data_type->is_collection()) {
    data_ = decode_size(protocol_version, data, count_);
    if (protocol_version_ >= 3) {
      size_ = size - sizeof(int32_t);
    } else {
      size_ = size - sizeof(uint16_t);
    }
  } else {
    if (data_type->is_tuple()) {
      SharedRefPtr<const SubTypesDataType> sub_types(data_type);
      count_ = sub_types->types().size();
    } else if (data_type->is_user_type()) {
      SharedRefPtr<const UserType> user_type(data_type);
      count_ = user_type->fields().size();
    } else {
      count_ = 0;
    }
    data_ = data;
    size_ = size;
  }
}