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
11#import "NSString+StdString.h"
12
Ali Tofigh6364d082022-03-14 13:32:04 +010013#include "absl/strings/string_view.h"
14
hjonaa32c3e2015-12-13 19:58:11 -080015@implementation NSString (StdString)
16
17- (std::string)stdString {
18 return [NSString stdStringForString:self];
19}
20
21+ (std::string)stdStringForString:(NSString *)nsString {
22 NSData *charData = [nsString dataUsingEncoding:NSUTF8StringEncoding];
23 return std::string(reinterpret_cast<const char *>(charData.bytes),
24 charData.length);
25}
26
Jon Hjelle29d5e572016-01-06 11:49:11 -080027+ (NSString *)stringForStdString:(const std::string&)stdString {
28 // 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
37@implementation NSString (AbslStringView)
38
39+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView {
40 return [[NSString alloc] initWithBytes:abslStringView.data()
41 length:abslStringView.length()
42 encoding:NSUTF8StringEncoding];
43}
44
45@end