xref: /haiku/headers/private/debugger/user_interface/util/UiUtils.h (revision cbe0a0c436162d78cc3f92a305b64918c839d079)
1 /*
2  * Copyright 2014-2016, Rene Gollent, rene@gollent.com.
3  * Copyright 2012, Ingo Weinhold, ingo_weinhold@gmx.de.
4  * Distributed under the terms of the MIT License.
5  */
6 #ifndef UI_UTILS_H
7 #define UI_UTILS_H
8 
9 #include <size_t.h>
10 
11 #include <image.h>
12 
13 #include "Types.h"
14 
15 
16 class BString;
17 class BVariant;
18 class RangeList;
19 class StackFrame;
20 class Team;
21 class TeamMemoryBlock;
22 class ValueNodeChild;
23 
24 
25 enum {
26 	SIMD_RENDER_FORMAT_INT8 = 0,
27 	SIMD_RENDER_FORMAT_INT16,
28 	SIMD_RENDER_FORMAT_INT32,
29 	SIMD_RENDER_FORMAT_INT64,
30 	SIMD_RENDER_FORMAT_FLOAT,
31 	SIMD_RENDER_FORMAT_DOUBLE
32 };
33 
34 
35 class UiUtils {
36 public:
37 	static	const char*			ThreadStateToString(int state,
38 									int stoppedReason);
39 
40 	static	const char*			VariantToString(const BVariant& value,
41 									char* buffer, size_t bufferSize);
42 	static	const char*			FunctionNameForFrame(StackFrame* frame,
43 									char* buffer, size_t bufferSize);
44 	static	const char*			ImageTypeToString(image_type type,
45 									char* buffer, size_t bufferSize);
46 	static	const char*			AreaLockingFlagsToString(uint32 flags,
47 									char* buffer, size_t bufferSize);
48 	static	const BString&			AreaProtectionFlagsToString(uint32 protection,
49 									BString& _output);
50 
51 	static	const char*			ReportNameForTeam(::Team* team,
52 									char* buffer, size_t bufferSize);
53 
54 	static	const char*			CoreFileNameForTeam(::Team* team,
55 									char* buffer, size_t bufferSize);
56 
57 	// this function assumes the value nodes have already been resolved
58 	// (if possible).
59 	static	void				PrintValueNodeGraph(BString& _output,
60 									ValueNodeChild* child,
61 									int32 indentLevel, int32 maxDepth);
62 
63 	static	void				DumpMemory(BString& _output,
64 									int32 indentLevel,
65 									TeamMemoryBlock* block,
66 									target_addr_t address, int32 itemSize,
67 									int32 displayWidth, int32 count);
68 
69 	static	status_t			ParseRangeExpression(
70 									const BString& rangeString,
71 									int32 lowerBound, int32 upperBound,
72 									bool fixedRange,
73 									RangeList& _output);
74 
75 	static	const char*			TypeCodeToString(type_code type);
76 
77 	static	const BString&		FormatSIMDValue(const BVariant& value,
78 									uint32 bitSize, uint32 format,
79 									BString& _output);
80 
81 	static	const char*			SignalNameToString(int32 signal,
82 									BString& _output);
83 	static	const char*			SignalDispositionToString(int disposition);
84 };
85 
86 
87 #endif	// UI_UTILS_H
88