Merge remote-tracking branch 'origin/topic/vern/CPP-Oct22-maint'

* origin/topic/vern/CPP-Oct22-maint:
  -O C++ maintenance updates to test suite
  -O gen-C++ maintenance: fixes for attributes & initializing globals
This commit is contained in:
Tim Wojtulewicz 2022-10-17 16:18:55 -07:00
commit 0143d0cb86
18 changed files with 109 additions and 13 deletions

View file

@ -206,12 +206,7 @@ void CPPCompile::InitializeGlobals()
auto& init = ginit.Init();
if ( ic == INIT_NONE )
{
IDPtr gid = {NewRef{}, const_cast<ID*>(g)};
auto gn = make_intrusive<RefExpr>(make_intrusive<NameExpr>(gid));
auto ae = make_intrusive<AssignExpr>(gn, init, true);
Emit(GenExpr(ae.get(), GEN_NATIVE, true) + ";");
}
Emit(GenExpr(init, GEN_NATIVE, true) + ";");
else
{
@ -227,6 +222,15 @@ void CPPCompile::InitializeGlobals()
Emit("%s->SetValue(%s, %s);", globals[g->Name()], GenExpr(init, GEN_NATIVE, true), ics);
}
const auto& attrs = g->GetAttrs();
if ( attrs )
{
string attr_tags;
string attr_vals;
BuildAttrs(attrs, attr_tags, attr_vals);
Emit("assign_attrs__CPP(%s, %s, %s);", globals[g->Name()], attr_tags, attr_vals);
}
}
EndBlock();