Skip to content

Commit dd0da96

Browse files
committed
odb: minor edits and relieving the templates a bit
Signed-off-by: osamahammad21 <[email protected]>
1 parent 3bbfc26 commit dd0da96

File tree

15 files changed

+42
-37
lines changed

15 files changed

+42
-37
lines changed

src/odb/src/codeGenerator/gen.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ def make_parent_field(parent, relation):
5858
field["flags"] = ["cmp", "serial", "diff", "no-set", "get"] + relation.get(
5959
"flags", []
6060
)
61+
if "page_size" in relation:
62+
field["page_size"] = relation["page_size"]
6163
if "schema" in relation:
6264
field["schema"] = relation["schema"]
6365

@@ -261,6 +263,30 @@ def generate_relations(schema):
261263
make_parent_hash_field(parent, relation, parent_field)
262264
make_child_next_field(child, relation)
263265

266+
def preprocess_klass(klass):
267+
# Insert at the beginning to guarantee position 0
268+
klass["declared_classes"].insert(0, "dbIStream")
269+
klass["declared_classes"].insert(1, "dbOStream")
270+
if klass["name"] != "dbDatabase":
271+
klass["declared_classes"].insert(2, "_dbDatabase")
272+
klass["cpp_includes"].append("dbDatabase.h")
273+
klass["h_includes"].insert(0, "dbCore.h")
274+
klass["h_includes"].insert(1, "odb/odb.h")
275+
name = klass["name"]
276+
klass["cpp_includes"].extend(["dbTable.h", "dbTable.hpp", "odb/db.h", f"{name}.h"])
277+
if klass['hasBitFields']:
278+
klass['cpp_sys_includes'].extend(["cstdint", "cstring"])
279+
for field in klass["fields"]:
280+
if field.get('table', False):
281+
page_size_part = f", {field['page_size']}" if 'page_size' in field else ""
282+
# setting default value for table fields
283+
this_or_db = "this" if klass["name"] == "dbDatabase" else "db"
284+
field['default'] = f"new dbTable<_{field['type']}{page_size_part}>({this_or_db}, this, (GetObjTbl_t) &_{klass['name']}::getObjectTable, {field['type']}Obj)"
285+
# setting table identifier for table fields
286+
field['table_base_type'] = field['type']
287+
field['type'] = f"dbTable<_{field['type']}{page_size_part}>*"
288+
289+
264290

265291
def generate(schema, env, includeDir, srcDir, keep_empty):
266292
"""Generate generate code based on the schema and templates"""
@@ -326,7 +352,7 @@ def generate(schema, env, includeDir, srcDir, keep_empty):
326352
)
327353
hash_dict[hash_value] = klass["name"]
328354
klass["hash"] = f"0x{hash_value:08X}"
329-
355+
preprocess_klass(klass)
330356
# Generating files
331357
for template_file in ["impl.h", "impl.cpp"]:
332358
template = env.get_template(template_file)

src/odb/src/codeGenerator/helper.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
_comparable = [
55
"Point",
6+
"Point3D",
67
"Rect",
78
"Polygon",
89
"Line",
@@ -23,6 +24,7 @@
2324
"string",
2425
"uint",
2526
"unint_32t",
27+
"uint8_t"
2628
]
2729
std = [
2830
"bool",
@@ -42,6 +44,7 @@
4244
"string",
4345
"uint",
4446
"unint_32t",
47+
"uint8_t"
4548
]
4649

4750
_removable = ["const", "static", "unsigned"]

src/odb/src/codeGenerator/templates/impl.cpp

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,18 @@
33
// Copyright (c) 2019-2025, The OpenROAD Authors
44

55
// Generator Code Begin Cpp
6-
#include "{{klass.name}}.h"
7-
#include "odb/db.h"
8-
#include "dbDatabase.h"
9-
#include "dbTable.h"
10-
#include "dbTable.hpp"
11-
12-
{% if klass.hasBitFields %}
13-
#include <cstring>
14-
#include <cstdint>
15-
{% endif %}
16-
176
{% for include in klass.cpp_sys_includes %}
187
#include <{{include}}>
198
{% endfor %}
20-
219
{% for include in klass.cpp_includes %}
2210
#include "{{include}}"
2311
{% endfor %}
2412
// User Code Begin Includes
2513
// User Code End Includes
2614
namespace odb {
2715
template class dbTable<_{{klass.name}}>;
16+
// User Code Begin Static
17+
// User Code End Static
2818

2919
bool _{{klass.name}}::operator==(const _{{klass.name}}& rhs) const
3020
{
@@ -97,8 +87,6 @@ namespace odb {
9787
{% for field in klass.fields %}
9888
{% if field.bitFields %}
9989
{{field.name}} = {};
100-
{% elif field.table %}
101-
{{field.name}} = new dbTable<_{{field.type}}>(db, this, (GetObjTbl_t) &_{{klass.name}}::getObjectTable, {{field.type}}Obj);
10290
{% elif field.isHashTable %}
10391
{{field.name}}.setTable({{field.table_name}});
10492
{% elif 'default' in field%}
@@ -135,7 +123,7 @@ namespace odb {
135123
switch (type) {
136124
{% for field in klass.fields %}
137125
{% if field.table %}
138-
case {{field.type}}Obj:
126+
case {{field.table_base_type}}Obj:
139127
return {{field.name}};
140128
{% endif %}
141129
{% endfor %}
@@ -213,7 +201,7 @@ namespace odb {
213201
{
214202
{% if field.dbSetGetter %}
215203
_{{klass.name}}* obj = (_{{klass.name}}*)this;
216-
return dbSet<{{field.type}}>(obj, obj->{{field.name}});
204+
return dbSet<{{field.table_base_type}}>(obj, obj->{{field.name}});
217205
{% elif field.isPassByRef %}
218206
_{{klass.name}}* obj = (_{{klass.name}}*)this;
219207
tbl = obj->{{field.name}};

src/odb/src/codeGenerator/templates/impl.h

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
//Generator Code Begin Header
66
#pragma once
77

8-
#include "odb/odb.h"
9-
#include "dbCore.h"
108

119
{% for include in klass.h_sys_includes %}
1210
#include <{{include}}>
@@ -19,9 +17,8 @@
1917
// User Code End Includes
2018

2119
namespace odb {
22-
class dbIStream;
23-
class dbOStream;
24-
class _dbDatabase;
20+
// User Code Begin Consts
21+
// User Code End Consts
2522
{% for _class in klass.declared_classes %}
2623
{% if _class in ["dbTable", "dbHashTable"] %}
2724
template <class T>
@@ -62,11 +59,7 @@ namespace odb {
6259
{% if "comment" in field %}
6360
{{field.comment}}
6461
{% endif %}
65-
{% if field.table %}
66-
dbTable<_{{field.type}}>* {{field.name}};
67-
{% else %}
68-
{{field.type}} {{field.name}};
69-
{% endif %}
62+
{{field.type}} {{field.name}};
7063
{% endfor %}
7164

7265
// User Code Begin Fields

src/odb/src/codeGenerator/templates/macros.jinja

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
{% macro getter_signature(field, klass=None) -%}
3535
{% if klass %}{% set prefix = klass.name + "::" %}{% endif %}
3636
{% if field.dbSetGetter %}
37-
dbSet<{{field.type}}> {{prefix}}get{{field.functional_name}}() const
37+
dbSet<{{field.table_base_type}}> {{prefix}}get{{field.functional_name}}() const
3838
{% elif field.isPassByRef %}
3939
void {{prefix}}{{field.getterFunctionName}}({{field.getterReturnType}}& tbl) const
4040
{% elif field.isHashTable %}

src/odb/src/codeGenerator/templates/serializer_out.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
{% set sname = (parent.name + "::" if parent else '_') + klass.name %}
33
dbOStream& operator<<(dbOStream& stream, const {{sname}}& obj)
44
{
5+
{% if klass.ostream_scope %}
6+
dbOStreamScope scope(stream, "{{klass.name}}");
7+
{% endif %}
58
{% for field in klass.fields %}
69
{% if field.bitFields %}
710
{% if field.numBits == 32 %}
@@ -23,3 +26,4 @@
2326
return stream;
2427
}
2528
{%- endmacro %}
29+

src/odb/src/db/dbBusPort.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
#include "dbCore.h"
88
#include "odb/odb.h"
9-
109
// User Code Begin Includes
1110
#include "dbModuleBusPortModBTermItr.h"
1211
#include "dbVector.h"

src/odb/src/db/dbGlobalConnect.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include "dbTable.h"
1212
#include "dbTable.hpp"
1313
#include "odb/db.h"
14-
1514
// User Code Begin Includes
1615
#include "dbInst.h"
1716
#include "dbLib.h"

src/odb/src/db/dbGroup.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
#include "dbCore.h"
88
#include "odb/odb.h"
9-
109
// User Code Begin Includes
1110
#include "dbVector.h"
1211
// User Code End Includes

src/odb/src/db/dbGuide.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
#include "dbCore.h"
88
#include "odb/odb.h"
9-
109
// User Code Begin Includes
1110
#include "odb/geom.h"
1211
// User Code End Includes

0 commit comments

Comments
 (0)