Skip to content

Commit 72c11c6

Browse files
authored
Use dataclass slots to decrease memory usage
1 parent e55feb1 commit 72c11c6

File tree

15 files changed

+45
-46
lines changed

15 files changed

+45
-46
lines changed

src/genieutils/civ.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from genieutils.versions import Version
66

77

8-
@dataclass
8+
@dataclass(slots=True)
99
class Civ(GenieClass):
1010
player_type: int
1111
name: str

src/genieutils/datfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from genieutils.versions import Version
1919

2020

21-
@dataclass
21+
@dataclass(slots=True)
2222
class DatFile(GenieClass):
2323
version: str
2424
float_ptr_terrain_tables: list[int]

src/genieutils/effect.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class EffectCommand(GenieClass):
99
type: int
1010
a: int
@@ -32,7 +32,7 @@ def to_bytes(self, version: Version) -> bytes:
3232
])
3333

3434

35-
@dataclass
35+
@dataclass(slots=True)
3636
class Effect(GenieClass):
3737
name: str
3838
effect_commands: list[EffectCommand]

src/genieutils/graphic.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class GraphicDelta(GenieClass):
99
graphic_id: int
1010
padding_1: int
@@ -38,7 +38,7 @@ def to_bytes(self, version: Version) -> bytes:
3838
])
3939

4040

41-
@dataclass
41+
@dataclass(slots=True)
4242
class GraphicAngleSound(GenieClass):
4343
frame_num: int
4444
sound_id: int
@@ -78,7 +78,7 @@ def to_bytes(self, version: Version) -> bytes:
7878
])
7979

8080

81-
@dataclass
81+
@dataclass(slots=True)
8282
class Graphic(GenieClass):
8383
name: str
8484
file_name: str

src/genieutils/playercolour.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class PlayerColour(GenieClass):
99
id: int
1010
player_color_base: int

src/genieutils/randommaps.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class MapUnit(GenieClass):
99
unit: int
1010
host_terrain: int
@@ -56,7 +56,7 @@ def to_bytes(self, version: Version) -> bytes:
5656
])
5757

5858

59-
@dataclass
59+
@dataclass(slots=True)
6060
class MapTerrain(GenieClass):
6161
proportion: int
6262
terrain: int
@@ -87,7 +87,7 @@ def to_bytes(self, version: Version) -> bytes:
8787
])
8888

8989

90-
@dataclass
90+
@dataclass(slots=True)
9191
class MapLand(GenieClass):
9292
land_id: int
9393
terrain: int
@@ -145,7 +145,7 @@ def to_bytes(self, version: Version) -> bytes:
145145
])
146146

147147

148-
@dataclass
148+
@dataclass(slots=True)
149149
class MapElevation(GenieClass):
150150
proportion: int
151151
terrain: int
@@ -176,7 +176,7 @@ def to_bytes(self, version: Version) -> bytes:
176176
])
177177

178178

179-
@dataclass
179+
@dataclass(slots=True)
180180
class MapInfo(GenieClass):
181181
map_id: int
182182
border_south_west: int
@@ -277,7 +277,7 @@ def to_bytes(self, version: Version) -> bytes:
277277
])
278278

279279

280-
@dataclass
280+
@dataclass(slots=True)
281281
class RandomMaps(GenieClass):
282282
random_maps_ptr: int
283283
map_info_1: list[MapInfo]

src/genieutils/sound.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class SoundItem(GenieClass):
99
filename: str
1010
resource_id: int
@@ -32,7 +32,7 @@ def to_bytes(self, version: Version) -> bytes:
3232
])
3333

3434

35-
@dataclass
35+
@dataclass(slots=True)
3636
class Sound(GenieClass):
3737
id: int
3838
play_delay: int

src/genieutils/task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class Task(GenieClass):
99
task_type: int
1010
id: int

src/genieutils/tech.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class ResearchResourceCost(GenieClass):
99
type: int
1010
amount: int
@@ -26,7 +26,7 @@ def to_bytes(self, version: Version) -> bytes:
2626
])
2727

2828

29-
@dataclass
29+
@dataclass(slots=True)
3030
class Tech(GenieClass):
3131
required_techs: tuple[int, int, int, int, int, int]
3232
resource_costs: tuple[ResearchResourceCost, ResearchResourceCost, ResearchResourceCost]

src/genieutils/techtree.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from genieutils.versions import Version
55

66

7-
@dataclass
7+
@dataclass(slots=True)
88
class Common(GenieClass):
99
slots_used: int
1010
unit_research: tuple[int, int, int, int, int, int, int, int, int, int]
@@ -26,7 +26,7 @@ def to_bytes(self, version: Version) -> bytes:
2626
])
2727

2828

29-
@dataclass
29+
@dataclass(slots=True)
3030
class TechTreeAge(GenieClass):
3131
id: int
3232
status: int
@@ -89,7 +89,7 @@ def to_bytes(self, version: Version) -> bytes:
8989
])
9090

9191

92-
@dataclass
92+
@dataclass(slots=True)
9393
class BuildingConnection(GenieClass):
9494
id: int
9595
status: int
@@ -152,7 +152,7 @@ def to_bytes(self, version: Version) -> bytes:
152152
])
153153

154154

155-
@dataclass
155+
@dataclass(slots=True)
156156
class UnitConnection(GenieClass):
157157
id: int
158158
status: int
@@ -207,7 +207,7 @@ def to_bytes(self, version: Version) -> bytes:
207207
])
208208

209209

210-
@dataclass
210+
@dataclass(slots=True)
211211
class ResearchConnection(GenieClass):
212212
id: int
213213
status: int
@@ -266,7 +266,7 @@ def to_bytes(self, version: Version) -> bytes:
266266
])
267267

268268

269-
@dataclass
269+
@dataclass(slots=True)
270270
class TechTree(GenieClass):
271271
total_unit_tech_groups: int
272272
tech_tree_ages: list[TechTreeAge]

0 commit comments

Comments
 (0)