xref: /haiku/src/add-ons/kernel/file_systems/udf/DString.h (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 /*
2  * Copyright 2003, Tyler Dauwalder, tyler@dauwalder.net.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _D_STRING_H
6 #define _D_STRING_H
7 
8 
9 #include "UdfDebug.h"
10 
11 #include "UdfString.h"
12 
13 #include <util/kernel_cpp.h>
14 
15 
16 /*! \brief Fixed-length d-string class that takes a UdfString as input
17 	and provides a properly formatted ECMA-167 d-string of the given
18 	field length as ouput.
19 
20 	For d-string info, see: ECMA-167 1/7.2.12, UDF-2.50 2.1.3
21 */
22 class DString {
23 public:
24 								DString();
25 								DString(const DString &ref);
26 								DString(const UdfString &string,
27 									uint8 fieldLength);
28 								DString(const char *utf8, uint8 fieldLength);
29 								~DString();
30 
31 			uint8				Length() const { return fLength; }
32 
33 			void				SetTo(const DString &ref);
34 			void				SetTo(const UdfString &string, uint8 fieldLength);
35 			void				SetTo(const char *utf8, uint8 fieldLength);
36 
37 			const uint8* 		String() const { return fString; }
38 
39 private:
40 			void 				_Clear();
41 
42 private:
43 			uint8				fLength;
44 			uint8				*fString;
45 };
46 
47 
48 #endif	// _D_STRING_H
49