MtpStringBuffer.h revision dde372033b4da75ebde7ea2afdec1c1b86ab5a42
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 2016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include <stdint.h> 2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 227850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 237850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 2416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDataPacket; 2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood// Represents a utf8 string, with a maximum of 255 characters 2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpStringBuffer { 2816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 30dde372033b4da75ebde7ea2afdec1c1b86ab5a42Mike Lockwood // mBuffer contains string in UTF8 format 3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // maximum 3 bytes/character, with 1 extra for zero termination 3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood uint8_t mBuffer[255 * 3 + 1]; 3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int mCharCount; 3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int mByteCount; 3516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStringBuffer(); 3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStringBuffer(const char* src); 39dde372033b4da75ebde7ea2afdec1c1b86ab5a42Mike Lockwood MtpStringBuffer(const uint16_t* src); 4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStringBuffer(const MtpStringBuffer& src); 4116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood virtual ~MtpStringBuffer(); 4216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void set(const char* src); 44dde372033b4da75ebde7ea2afdec1c1b86ab5a42Mike Lockwood void set(const uint16_t* src); 4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void readFromPacket(MtpDataPacket* packet); 4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void writeToPacket(MtpDataPacket* packet) const; 4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int getCharCount() const { return mCharCount; } 5016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int getByteCount() const { return mByteCount; } 5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline operator const char*() const { return (const char *)mBuffer; } 5316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 5416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 557850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 567850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 5716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_STRING_BUFFER_H 58