@@ -78,15 +78,24 @@ def getVromStr(self) -> str:
78
78
return "None"
79
79
return f"0x{ self .vrom :06X} "
80
80
81
- def serializeSize (self ) -> str | None :
81
+ def serializeVram (self , humanReadable : bool = True ) -> str | int | None :
82
+ if humanReadable :
83
+ return f"0x{ self .vram :08X} "
84
+ return self .vram
85
+
86
+ def serializeSize (self , humanReadable : bool = True ) -> str | int | None :
82
87
if self .size is None :
83
88
return None
84
- return f"0x{ self .size :X} "
89
+ if humanReadable :
90
+ return f"0x{ self .size :X} "
91
+ return self .size
85
92
86
- def serializeVrom (self ) -> str | None :
93
+ def serializeVrom (self , humanReadable : bool = True ) -> str | int | None :
87
94
if self .vrom is None :
88
95
return None
89
- return f"0x{ self .size :X} "
96
+ if humanReadable :
97
+ return f"0x{ self .vrom :06X} "
98
+ return self .vrom
90
99
91
100
@staticmethod
92
101
def printCsvHeader ():
@@ -103,12 +112,12 @@ def toCsvHeader() -> str:
103
112
def toCsv (self ) -> str :
104
113
return f"{ self .name } ,{ self .vram :08X} ,{ self .size } "
105
114
106
- def toJson (self ) -> dict [str , Any ]:
115
+ def toJson (self , humanReadable : bool = True ) -> dict [str , Any ]:
107
116
result : dict [str , Any ] = {
108
117
"name" : self .name ,
109
- "vram" : self .getVramStr ( ),
110
- "size" : self .serializeSize (),
111
- "vrom" : self .serializeVrom (),
118
+ "vram" : self .serializeVram ( humanReadable = humanReadable ),
119
+ "size" : self .serializeSize (humanReadable = humanReadable ),
120
+ "vrom" : self .serializeVrom (humanReadable = humanReadable ),
112
121
}
113
122
114
123
return result
@@ -138,16 +147,22 @@ def isNoloadSection(self) -> bool:
138
147
return self .sectionType == ".bss"
139
148
140
149
141
- def serializeVram (self ) -> str | None :
142
- return f"0x{ self .vram :08X} "
150
+ def serializeVram (self , humanReadable : bool = True ) -> str | int | None :
151
+ if humanReadable :
152
+ return f"0x{ self .vram :08X} "
153
+ return self .vram
143
154
144
- def serializeSize (self ) -> str | None :
145
- return f"0x{ self .size :X} "
155
+ def serializeSize (self , humanReadable : bool = True ) -> str | int | None :
156
+ if humanReadable :
157
+ return f"0x{ self .size :X} "
158
+ return self .size
146
159
147
- def serializeVrom (self ) -> str | None :
160
+ def serializeVrom (self , humanReadable : bool = True ) -> str | int | None :
148
161
if self .vrom is None :
149
162
return None
150
- return f"0x{ self .vrom :06X} "
163
+ if humanReadable :
164
+ return f"0x{ self .vrom :06X} "
165
+ return self .vrom
151
166
152
167
153
168
def getName (self ) -> Path :
@@ -232,18 +247,18 @@ def toCsv(self, printVram: bool=True) -> str:
232
247
ret += f"{ self .filepath } ,{ self .sectionType } ,{ symCount } ,{ maxSize } ,{ self .size } ,{ averageSize :0.2f} "
233
248
return ret
234
249
235
- def toJson (self ) -> dict [str , Any ]:
250
+ def toJson (self , humanReadable : bool = True ) -> dict [str , Any ]:
236
251
fileDict : dict [str , Any ] = {
237
252
"filepath" : str (self .filepath ),
238
253
"sectionType" : self .sectionType ,
239
- "vram" : self .serializeVram (),
240
- "size" : self .serializeSize (),
241
- "vrom" : self .serializeVrom (),
254
+ "vram" : self .serializeVram (humanReadable = humanReadable ),
255
+ "size" : self .serializeSize (humanReadable = humanReadable ),
256
+ "vrom" : self .serializeVrom (humanReadable = humanReadable ),
242
257
}
243
258
244
259
symbolsList = []
245
260
for symbol in self ._symbols :
246
- symbolsList .append (symbol .toJson ())
261
+ symbolsList .append (symbol .toJson (humanReadable = humanReadable ))
247
262
248
263
fileDict ["symbols" ] = symbolsList
249
264
return fileDict
@@ -280,14 +295,20 @@ class Segment:
280
295
vrom : int
281
296
_filesList : list [File ] = dataclasses .field (default_factory = list )
282
297
283
- def serializeVram (self ) -> str | None :
284
- return f"0x{ self .vram :08X} "
298
+ def serializeVram (self , humanReadable : bool = True ) -> str | int | None :
299
+ if humanReadable :
300
+ return f"0x{ self .vram :08X} "
301
+ return self .vram
285
302
286
- def serializeSize (self ) -> str | None :
287
- return f"0x{ self .size :X} "
303
+ def serializeSize (self , humanReadable : bool = True ) -> str | int | None :
304
+ if humanReadable :
305
+ return f"0x{ self .size :X} "
306
+ return self .size
288
307
289
- def serializeVrom (self ) -> str | None :
290
- return f"0x{ self .vrom :06X} "
308
+ def serializeVrom (self , humanReadable : bool = True ) -> str | int | None :
309
+ if humanReadable :
310
+ return f"0x{ self .vrom :06X} "
311
+ return self .vrom
291
312
292
313
293
314
def filterBySectionType (self , sectionType : str ) -> Segment :
@@ -384,17 +405,17 @@ def toCsvSymbols(self) -> str:
384
405
ret += "\n "
385
406
return ret
386
407
387
- def toJson (self ) -> dict [str , Any ]:
408
+ def toJson (self , humanReadable : bool = True ) -> dict [str , Any ]:
388
409
segmentDict : dict [str , Any ] = {
389
410
"name" : self .name ,
390
- "vram" : self .serializeVram (),
391
- "size" : self .serializeSize (),
392
- "vrom" : self .serializeVrom (),
411
+ "vram" : self .serializeVram (humanReadable = humanReadable ),
412
+ "size" : self .serializeSize (humanReadable = humanReadable ),
413
+ "vrom" : self .serializeVrom (humanReadable = humanReadable ),
393
414
}
394
415
395
416
filesList = []
396
417
for file in self ._filesList :
397
- filesList .append (file .toJson ())
418
+ filesList .append (file .toJson (humanReadable = humanReadable ))
398
419
399
420
segmentDict ["files" ] = filesList
400
421
@@ -758,10 +779,10 @@ def toCsvSymbols(self) -> str:
758
779
ret += segment .toCsvSymbols ()
759
780
return ret
760
781
761
- def toJson (self ) -> dict [str , Any ]:
782
+ def toJson (self , humanReadable : bool = True ) -> dict [str , Any ]:
762
783
segmentsList = []
763
784
for segment in self ._segmentsList :
764
- segmentsList .append (segment .toJson ())
785
+ segmentsList .append (segment .toJson (humanReadable = humanReadable ))
765
786
766
787
result : dict [str , Any ] = {
767
788
"segments" : segmentsList
0 commit comments