blob: 7c9869947abf5e7c895c387393d3eff83d02ac10 [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef A_STRING_H_
#define A_STRING_H_
#include <utils/Errors.h>
#include <sys/types.h>
namespace android {
struct String8;
struct Parcel;
struct AString {
AString();
AString(const char *s);
AString(const char *s, size_t size);
AString(const String8 &from);
AString(const AString &from);
AString(const AString &from, size_t offset, size_t n);
~AString();
AString &operator=(const AString &from);
void setTo(const char *s);
void setTo(const char *s, size_t size);
void setTo(const AString &from, size_t offset, size_t n);
size_t size() const;
const char *c_str() const;
bool empty() const;
void clear();
void trim();
void erase(size_t start, size_t n);
void append(char c) { append(&c, 1); }
void append(const char *s);
void append(const char *s, size_t size);
void append(const AString &from);
void append(const AString &from, size_t offset, size_t n);
void append(int x);
void append(unsigned x);
void append(long x);
void append(unsigned long x);
void append(long long x);
void append(unsigned long long x);
void append(float x);
void append(double x);
void append(void *x);
void insert(const AString &from, size_t insertionPos);
void insert(const char *from, size_t size, size_t insertionPos);
ssize_t find(const char *substring, size_t start = 0) const;
size_t hash() const;
bool operator==(const AString &other) const;
bool operator!=(const AString &other) const {
return !operator==(other);
}
bool operator<(const AString &other) const;
bool operator>(const AString &other) const;
int compare(const AString &other) const;
int compareIgnoreCase(const AString &other) const;
bool equalsIgnoreCase(const AString &other) const;
bool startsWith(const char *prefix) const;
bool endsWith(const char *suffix) const;
bool startsWithIgnoreCase(const char *prefix) const;
bool endsWithIgnoreCase(const char *suffix) const;
void tolower();
static AString FromParcel(const Parcel &parcel);
status_t writeToParcel(Parcel *parcel) const;
private:
static const char *kEmptyString;
char *mData;
size_t mSize;
size_t mAllocSize;
void makeMutable();
};
AString StringPrintf(const char *format, ...);
} // namespace android
#endif // A_STRING_H_