1e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber/*
2e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * Copyright (C) 2009 The Android Open Source Project
3e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber *
4e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * you may not use this file except in compliance with the License.
6e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * You may obtain a copy of the License at
7e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber *
8e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber *
10e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * Unless required by applicable law or agreed to in writing, software
11e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * See the License for the specific language governing permissions and
14e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber * limitations under the License.
15e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber */
16e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
1763d524fdf0572c821bb1daed099d1b400db4ae3dAndreas Huber#include "include/stagefright_string.h"
18e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
1989e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber#include <media/stagefright/MediaDebug.h>
2089e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber
21e46b7be812d68e49710b34048662cbf18e2a6550Andreas Hubernamespace android {
22e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
23e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber// static
24e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::size_type string::npos = (string::size_type)-1;
25e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
26e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::string() {
27e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
28e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
29e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::string(const char *s, size_t length)
30e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    : mString(s, length) {
31e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
32e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
3389e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huberstring::string(const string &from, size_type start, size_type length) {
3489e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber    CHECK(start <= from.size());
3589e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber    if (length == npos) {
3689e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber        length = from.size() - start;
3789e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber    } else {
3889e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber        CHECK(start + length <= from.size());
3989e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber    }
4089e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber
4189e91f76965858a071088d0b5ddef3e9c5ff0967Andreas Huber    mString.setTo(from.c_str() + start, length);
42e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
43e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
44e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::string(const char *s)
45e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    : mString(s) {
46e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
47e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
48e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberconst char *string::c_str() const {
49e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return mString.string();
50e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
51e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
52e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::size_type string::size() const {
53e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return mString.length();
54e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
55e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
56e46b7be812d68e49710b34048662cbf18e2a6550Andreas Hubervoid string::clear() {
57e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    mString = String8();
58e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
59e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
60e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring::size_type string::find(char c) const {
61e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    char s[2];
62e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    s[0] = c;
63e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    s[1] = '\0';
64e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
65e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    ssize_t index = mString.find(s);
66e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
67e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return index < 0 ? npos : (size_type)index;
68e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
69e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
70e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberbool string::operator<(const string &other) const {
71e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return mString < other.mString;
72e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
73e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
74e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberbool string::operator==(const string &other) const {
75e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return mString == other.mString;
76e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
77e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
78e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberstring &string::operator+=(char c) {
79e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    mString.append(&c, 1);
80e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
81e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    return *this;
82e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
83e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
84e46b7be812d68e49710b34048662cbf18e2a6550Andreas Hubervoid string::erase(size_t from, size_t length) {
85e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    String8 s(mString.string(), from);
86e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    s.append(mString.string() + from + length);
87e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
88e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber    mString = s;
89e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}
90e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
91e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}  // namespace android
92e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber
93