/*
* Copyright (C) 2007 Esmertec AG.
* Copyright (C) 2007 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 WBXML_STL_H
#define WBXML_STL_H
#ifdef PLATFORM_ANDROID
#include <utils/String8.h>
#include <utils/Vector.h>
using android::String8;
using android::Vector;
class string: public String8
{
public:
string() {}
string(const string& o) :
String8(o)
{
}
string(const char* o) :
String8(o)
{
}
string(const char* o, size_t len) :
String8(o, len)
{
}
string & operator=(const char* other)
{
setTo(other);
return *this;
}
string & assign(const char* other, int len)
{
setTo(other, len);
return *this;
}
bool empty(void) const
{
return size() == 0;
}
const char *c_str(void) const
{
return String8::string();
}
string & operator+=(const string & o)
{
append(o);
return *this;
}
string & operator+=(const char * other)
{
append(other);
return *this;
}
string & operator+=(char ch)
{
char c[2] = {ch, 0}; // temporary workaround for String8.append(str, len) bug
append(c, 1);
return *this;
}
void clear(void)
{
setTo("");
}
};
template <class T>
class vector: public Vector<T>
{
public:
T & back(void)
{
return Vector<T>::editTop();
}
const T & back(void) const
{
return Vector<T>::top();
}
void push_back(const T& val)
{
Vector<T>::push(val);
}
void pop_back(void)
{
Vector<T>::pop();
}
bool empty(void) const
{
return Vector<T>::isEmpty();
}
};
#else
#include <string>
#include <vector>
using std::string;
using std::vector;
#endif
#endif