Skip to content

Commit 06cc3a3

Browse files
authored
Handle multi-dimensional arrays in codegen (#428)
1 parent 73d08a8 commit 06cc3a3

4 files changed

Lines changed: 12 additions & 31 deletions

File tree

‎cpp2rust/converter/models/converter_refcount.cpp‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,16 +268,22 @@ bool ConverterRefCount::VisitConstantArrayType(clang::ConstantArrayType *type) {
268268
Convert(type->getElementType());
269269
StrCat(std::format("; {}]", GetNumAsString(type->getSize()).c_str()));
270270
break;
271-
case ConversionKind::Ptr:
271+
case ConversionKind::Ptr: {
272+
PushConversionKind elem(*this, ConversionKind::FullRefCount,
273+
type->getElementType()->isArrayType());
272274
Convert(type->getElementType());
273275
break;
276+
}
274277
case ConversionKind::Pointee:
275-
case ConversionKind::FullRefCount:
278+
case ConversionKind::FullRefCount: {
279+
PushConversionKind elem(*this, ConversionKind::FullRefCount,
280+
type->getElementType()->isArrayType());
276281
StrCat("Box<[");
277282
Convert(type->getElementType());
278283
StrCat("]>");
279284
break;
280285
}
286+
}
281287
return false;
282288
}
283289

@@ -2803,6 +2809,10 @@ std::string ConverterRefCount::ConvertPointeeType(clang::QualType ptr_type) {
28032809
assert(!ptr_type.isNull() && ptr_type->isPointerType());
28042810
PushConversionKind push(*this, ConversionKind::Unboxed);
28052811
auto pointee = ptr_type->getPointeeType();
2812+
if (pointee->isArrayType()) {
2813+
PushConversionKind array(*this, ConversionKind::FullRefCount);
2814+
return std::string(Trim(ToString(pointee)));
2815+
}
28062816
if (!pointee->isRecordType()) {
28072817
return std::string(Trim(ToString(pointee)));
28082818
}

‎rules/carray/src.cpp‎

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎rules/carray/tgt_refcount.rs‎

Lines changed: 0 additions & 12 deletions
This file was deleted.

‎rules/carray/tgt_unsafe.rs‎

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)