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