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