/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "sdp/RsdparsaSdpInc.h" #include "sdp/RsdparsaSdpGlue.h" namespace mozilla { std::string convertStringView(StringView str) { if (nullptr == str.buf) { return std::string(); } else { return std::string(str.buf, str.len); } } std::vector convertStringVec(StringVec* vec) { std::vector ret; size_t len = string_vec_len(vec); for (size_t i = 0; i < len; i++) { StringView view; string_vec_get_view(vec, i, &view); ret.push_back(convertStringView(view)); } return ret; } sdp::AddrType convertAddressType(RustSdpAddressType addrType) { switch (addrType) { case RustSdpAddressType::kRustAddrIp4: return sdp::kIPv4; case RustSdpAddressType::kRustAddrIp6: return sdp::kIPv6; } MOZ_CRASH("unknown address type"); } std::string convertAddress(RustAddress* address) { return address->isFqdn ? convertStringView(address->fqdn) : std::string(address->ipAddress); } std::pair convertExplicitlyTypedAddress( RustExplicitlyTypedAddress* address) { return std::make_pair(convertAddressType(address->addressType), convertAddress(&address->address)); } std::vector convertU8Vec(U8Vec* vec) { std::vector ret; size_t len = u8_vec_len(vec); for (size_t i = 0; i < len; i++) { uint8_t byte; u8_vec_get(vec, i, &byte); ret.push_back(byte); } return ret; } std::vector convertU16Vec(U16Vec* vec) { std::vector ret; size_t len = u16_vec_len(vec); for (size_t i = 0; i < len; i++) { uint16_t word; u16_vec_get(vec, i, &word); ret.push_back(word); } return ret; } std::vector convertU32Vec(U32Vec* vec) { std::vector ret; size_t len = u32_vec_len(vec); for (size_t i = 0; i < len; i++) { uint32_t num; u32_vec_get(vec, i, &num); ret.push_back(num); } return ret; } std::vector convertF32Vec(F32Vec* vec) { std::vector ret; size_t len = f32_vec_len(vec); for (size_t i = 0; i < len; i++) { float flt; f32_vec_get(vec, i, &flt); ret.push_back(flt); } return ret; } } // namespace mozilla