transStringLiteral
parent
b2e06c3bf4
commit
69b90e0681
|
@ -965,3 +965,6 @@ pub extern fn ZigClangBinaryOperator_getOpcode(*const ZigClangBinaryOperator) Zi
|
||||||
pub extern fn ZigClangBinaryOperator_getBeginLoc(*const ZigClangBinaryOperator) ZigClangSourceLocation;
|
pub extern fn ZigClangBinaryOperator_getBeginLoc(*const ZigClangBinaryOperator) ZigClangSourceLocation;
|
||||||
pub extern fn ZigClangBinaryOperator_getLHS(*const ZigClangBinaryOperator) *const ZigClangExpr;
|
pub extern fn ZigClangBinaryOperator_getLHS(*const ZigClangBinaryOperator) *const ZigClangExpr;
|
||||||
pub extern fn ZigClangBinaryOperator_getRHS(*const ZigClangBinaryOperator) *const ZigClangExpr;
|
pub extern fn ZigClangBinaryOperator_getRHS(*const ZigClangBinaryOperator) *const ZigClangExpr;
|
||||||
|
|
||||||
|
pub extern fn ZigClangStringLiteral_getKind(*const ZigClangStringLiteral) ZigClangStringLiteral_StringKind;
|
||||||
|
pub extern fn ZigClangStringLiteral_getString_bytes_begin_size(*const ZigClangStringLiteral, *usize) [*c]const u8;
|
||||||
|
|
|
@ -336,6 +336,7 @@ fn transStmt(
|
||||||
.ImplicitCastExprClass => return transImplicitCastExpr(rp, scope, @ptrCast(*const ZigClangImplicitCastExpr, stmt), result_used),
|
.ImplicitCastExprClass => return transImplicitCastExpr(rp, scope, @ptrCast(*const ZigClangImplicitCastExpr, stmt), result_used),
|
||||||
.IntegerLiteralClass => return transIntegerLiteral(rp, scope, @ptrCast(*const ZigClangIntegerLiteral, stmt), result_used),
|
.IntegerLiteralClass => return transIntegerLiteral(rp, scope, @ptrCast(*const ZigClangIntegerLiteral, stmt), result_used),
|
||||||
.ReturnStmtClass => return transReturnStmt(rp, scope, @ptrCast(*const ZigClangReturnStmt, stmt)),
|
.ReturnStmtClass => return transReturnStmt(rp, scope, @ptrCast(*const ZigClangReturnStmt, stmt)),
|
||||||
|
.StringLiteralClass => return transStringLiteral(rp, scope, @ptrCast(*const ZigClangStringLiteral, stmt), result_used),
|
||||||
else => {
|
else => {
|
||||||
return revertAndWarn(
|
return revertAndWarn(
|
||||||
rp,
|
rp,
|
||||||
|
@ -647,6 +648,41 @@ fn transReturnStmt(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn transStringLiteral(
|
||||||
|
rp: RestorePoint,
|
||||||
|
scope: *Scope,
|
||||||
|
stmt: *const ZigClangStringLiteral,
|
||||||
|
result_used: ResultUsed,
|
||||||
|
) !TransResult {
|
||||||
|
const kind = ZigClangStringLiteral_getKind(stmt);
|
||||||
|
switch (kind) {
|
||||||
|
.Ascii, .UTF8 => {
|
||||||
|
var len: usize = undefined;
|
||||||
|
const cstr = ZigClangStringLiteral_getString_bytes_begin_size(stmt, &len);
|
||||||
|
const zstr = try rp.c.str(cstr);
|
||||||
|
const token = try appendToken(rp.c, .StringLiteral, zstr);
|
||||||
|
const node = try rp.c.a().create(ast.Node.StringLiteral);
|
||||||
|
node.* = ast.Node.StringLiteral{
|
||||||
|
.base = ast.Node{ .id = .StringLiteral },
|
||||||
|
.token = token,
|
||||||
|
};
|
||||||
|
const res = TransResult{
|
||||||
|
.node = &node.base,
|
||||||
|
.child_scope = scope,
|
||||||
|
.node_scope = scope,
|
||||||
|
};
|
||||||
|
return maybeSuppressResult(rp, scope, result_used, res);
|
||||||
|
},
|
||||||
|
.UTF16, .UTF32, .Wide => return revertAndWarn(
|
||||||
|
rp,
|
||||||
|
error.UnsupportedTranslation,
|
||||||
|
ZigClangStmt_getBeginLoc(@ptrCast(*const ZigClangStmt, stmt)),
|
||||||
|
"TODO: support string literal kind {}",
|
||||||
|
kind,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn transCCast(
|
fn transCCast(
|
||||||
rp: RestorePoint,
|
rp: RestorePoint,
|
||||||
scope: *Scope,
|
scope: *Scope,
|
||||||
|
|
Loading…
Reference in New Issue