blob: c98432c4458f744ef244163a9e8bbeaad7b8633b [file] [log] [blame]
hjonaa32c3e2015-12-13 19:58:11 -08001/*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Artem Titov63ee39d2022-05-13 14:46:42 +000011#import "NSString+StdString.h"
hjonaa32c3e2015-12-13 19:58:11 -080012
Ali Tofigh6364d082022-03-14 13:32:04 +010013#include "absl/strings/string_view.h"
14
Artem Titov63ee39d2022-05-13 14:46:42 +000015@implementation NSString (StdString)
hjonaa32c3e2015-12-13 19:58:11 -080016
17- (std::string)stdString {
Artem Titov63ee39d2022-05-13 14:46:42 +000018 return [NSString stdStringForString:self];
hjonaa32c3e2015-12-13 19:58:11 -080019}
20
Artem Titov63ee39d2022-05-13 14:46:42 +000021+ (std::string)stdStringForString:(NSString *)nsString {
hjonaa32c3e2015-12-13 19:58:11 -080022 NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding];
Artem Titov63ee39d2022-05-13 14:46:42 +000023 return std::string(reinterpret_cast<const char *>(charData.bytes),
24 charData.length);
hjonaa32c3e2015-12-13 19:58:11 -080025}
26
Artem Titov63ee39d2022-05-13 14:46:42 +000027+ (NSString *)stringForStdString:(const std::string&)stdString {
Jon Hjelle29d5e572016-01-06 11:49:11 -080028 // std::string may contain null termination character so we construct
29 // using length.
30 return [[NSString alloc] initWithBytes:stdString.data()
31 length:stdString.length()
32 encoding:NSUTF8StringEncoding];
33}
34
hjonaa32c3e2015-12-13 19:58:11 -080035@end
Ali Tofigh6364d082022-03-14 13:32:04 +010036
Artem Titov63ee39d2022-05-13 14:46:42 +000037@implementation NSString (AbslStringView)
Ali Tofigh6364d082022-03-14 13:32:04 +010038
Artem Titov63ee39d2022-05-13 14:46:42 +000039+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView {
Ali Tofigh6364d082022-03-14 13:32:04 +010040 return [[NSString alloc] initWithBytes:abslStringView.data()
41 length:abslStringView.length()
42 encoding:NSUTF8StringEncoding];
43}
44
45@end