xref: /aosp_15_r20/frameworks/av/media/mtp/MtpStringBuffer.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker  * Copyright (C) 2010 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker  *
4*ec779b8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker  *
8*ec779b8eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker  *
10*ec779b8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker  * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker  */
16*ec779b8eSAndroid Build Coastguard Worker 
17*ec779b8eSAndroid Build Coastguard Worker #ifndef _MTP_STRING_BUFFER_H
18*ec779b8eSAndroid Build Coastguard Worker #define _MTP_STRING_BUFFER_H
19*ec779b8eSAndroid Build Coastguard Worker 
20*ec779b8eSAndroid Build Coastguard Worker #include <log/log.h>
21*ec779b8eSAndroid Build Coastguard Worker #include <stdint.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <string>
23*ec779b8eSAndroid Build Coastguard Worker #include <string_view>
24*ec779b8eSAndroid Build Coastguard Worker 
25*ec779b8eSAndroid Build Coastguard Worker // Max Character number of a MTP String
26*ec779b8eSAndroid Build Coastguard Worker #define MTP_STRING_MAX_CHARACTER_NUMBER             255
27*ec779b8eSAndroid Build Coastguard Worker 
28*ec779b8eSAndroid Build Coastguard Worker namespace android {
29*ec779b8eSAndroid Build Coastguard Worker 
30*ec779b8eSAndroid Build Coastguard Worker class MtpDataPacket;
31*ec779b8eSAndroid Build Coastguard Worker 
32*ec779b8eSAndroid Build Coastguard Worker // Represents a utf8 string, with a maximum of 255 characters
33*ec779b8eSAndroid Build Coastguard Worker class MtpStringBuffer {
34*ec779b8eSAndroid Build Coastguard Worker 
35*ec779b8eSAndroid Build Coastguard Worker private:
36*ec779b8eSAndroid Build Coastguard Worker     std::string     mString;
37*ec779b8eSAndroid Build Coastguard Worker 
38*ec779b8eSAndroid Build Coastguard Worker public:
MtpStringBuffer()39*ec779b8eSAndroid Build Coastguard Worker                     MtpStringBuffer() {};
~MtpStringBuffer()40*ec779b8eSAndroid Build Coastguard Worker                     ~MtpStringBuffer() {};
41*ec779b8eSAndroid Build Coastguard Worker 
42*ec779b8eSAndroid Build Coastguard Worker     explicit        MtpStringBuffer(const char* src);
43*ec779b8eSAndroid Build Coastguard Worker     explicit        MtpStringBuffer(const uint16_t* src);
44*ec779b8eSAndroid Build Coastguard Worker                     MtpStringBuffer(const MtpStringBuffer& src);
45*ec779b8eSAndroid Build Coastguard Worker 
46*ec779b8eSAndroid Build Coastguard Worker     void            set(const char* src);
47*ec779b8eSAndroid Build Coastguard Worker     void            set(const uint16_t* src);
48*ec779b8eSAndroid Build Coastguard Worker 
49*ec779b8eSAndroid Build Coastguard Worker     inline void     append(const char* other);
50*ec779b8eSAndroid Build Coastguard Worker     inline void     append(MtpStringBuffer &other);
51*ec779b8eSAndroid Build Coastguard Worker 
52*ec779b8eSAndroid Build Coastguard Worker     bool            readFromPacket(MtpDataPacket* packet);
53*ec779b8eSAndroid Build Coastguard Worker     void            writeToPacket(MtpDataPacket* packet) const;
54*ec779b8eSAndroid Build Coastguard Worker 
isEmpty()55*ec779b8eSAndroid Build Coastguard Worker     inline bool     isEmpty() const { return mString.empty(); }
size()56*ec779b8eSAndroid Build Coastguard Worker     inline int      size() const { return mString.length(); }
57*ec779b8eSAndroid Build Coastguard Worker 
58*ec779b8eSAndroid Build Coastguard Worker     inline operator const char*() const { return mString.c_str(); }
string_view()59*ec779b8eSAndroid Build Coastguard Worker     operator std::string_view() const { return mString; }
60*ec779b8eSAndroid Build Coastguard Worker };
61*ec779b8eSAndroid Build Coastguard Worker 
append(const char * other)62*ec779b8eSAndroid Build Coastguard Worker inline void MtpStringBuffer::append(const char* other) {
63*ec779b8eSAndroid Build Coastguard Worker     mString += other;
64*ec779b8eSAndroid Build Coastguard Worker }
65*ec779b8eSAndroid Build Coastguard Worker 
append(MtpStringBuffer & other)66*ec779b8eSAndroid Build Coastguard Worker inline void MtpStringBuffer::append(MtpStringBuffer &other) {
67*ec779b8eSAndroid Build Coastguard Worker     mString += other.mString;
68*ec779b8eSAndroid Build Coastguard Worker }
69*ec779b8eSAndroid Build Coastguard Worker 
70*ec779b8eSAndroid Build Coastguard Worker }; // namespace android
71*ec779b8eSAndroid Build Coastguard Worker 
72*ec779b8eSAndroid Build Coastguard Worker #endif // _MTP_STRING_BUFFER_H
73