116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood/* 216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Copyright (C) 2010 The Android Open Source Project 316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * 416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * you may not use this file except in compliance with the License. 616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * You may obtain a copy of the License at 716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * 816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * 1016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Unless required by applicable law or agreed to in writing, software 1116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 1216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * See the License for the specific language governing permissions and 1416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * limitations under the License. 1516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood */ 1616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 1716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifndef _MTP_STRING_BUFFER_H 1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_STRING_BUFFER_H 1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 20bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang#include <log/log.h> 2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include <stdint.h> 22bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang#include <string> 2316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 24014897f5aece2c6212418934bd4618326979f17aYin Liu// Max Character number of a MTP String 25014897f5aece2c6212418934bd4618326979f17aYin Liu#define MTP_STRING_MAX_CHARACTER_NUMBER 255 26014897f5aece2c6212418934bd4618326979f17aYin Liu 277850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 287850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDataPacket; 3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood// Represents a utf8 string, with a maximum of 255 characters 3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpStringBuffer { 3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 35bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang std::string mString; 3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 38bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang MtpStringBuffer() {}; 39bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang ~MtpStringBuffer() {}; 40bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang 41a039c883c593b2ebbca6d32282cbd855b5bec19fChih-Hung Hsieh explicit MtpStringBuffer(const char* src); 42a039c883c593b2ebbca6d32282cbd855b5bec19fChih-Hung Hsieh explicit MtpStringBuffer(const uint16_t* src); 4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStringBuffer(const MtpStringBuffer& src); 4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void set(const char* src); 46dde372033b4da75ebde7ea2afdec1c1b86ab5a42Mike Lockwood void set(const uint16_t* src); 4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 48bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang inline void append(const char* other); 49bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang inline void append(MtpStringBuffer &other); 50bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang 51ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood bool readFromPacket(MtpDataPacket* packet); 5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void writeToPacket(MtpDataPacket* packet) const; 5316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 54bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang inline bool isEmpty() const { return mString.empty(); } 55bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang inline int size() const { return mString.length(); } 5616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 57bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang inline operator const char*() const { return mString.c_str(); } 5816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 5916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 60bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhanginline void MtpStringBuffer::append(const char* other) { 61bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang mString += other; 62bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang} 63bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang 64bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhanginline void MtpStringBuffer::append(MtpStringBuffer &other) { 65bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang mString += other.mString; 66bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang} 67bc1d4b41f4df1b6dd04801ea5a526d23f5321340Jerry Zhang 687850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 697850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 7016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_STRING_BUFFER_H 71