[libc]: implement 'iswalnum' entrypoint (#185581)

- Added entry points for `iswalnum`  for the following platforms: 
  - baremetal/arm
  - baremetal/riscv
  - dawin/aarch64
  - linux/x86_64
  - linux/arm
  - linux/aarch64
  - linux/riscv
  - windows
- Added a unit test for `iswalnum`
 
part of #185136
This commit is contained in:
Mir Immad 2026-03-12 19:32:28 +05:30 committed by GitHub
parent 428b9bda87
commit 1f2a3bfd40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 100 additions and 1 deletions

View File

@ -302,6 +302,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -299,6 +299,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -105,6 +105,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -372,6 +372,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -197,6 +197,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -376,6 +376,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -421,6 +421,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswdigit
libc.src.wctype.iswalnum
libc.src.wctype.iswlower
libc.src.wctype.iswspace
libc.src.wctype.iswblank

View File

@ -108,6 +108,7 @@ set(TARGET_LIBC_ENTRYPOINTS
# wctype.h entrypoints
libc.src.wctype.iswalpha
libc.src.wctype.iswalnum
libc.src.wctype.iswgraph
libc.src.wctype.iswcntrl
libc.src.wctype.iswlower

View File

@ -44,3 +44,9 @@ functions:
return_type: int
arguments:
- type: wint_t
- name: iswalnum
standards:
- stdc
return_type: int
arguments:
- type: wint_t

View File

@ -26,7 +26,18 @@ add_entrypoint_object(
HDRS
iswdigit.h
DEPENDS
libc.src.__support.wctype_utils
libc.src.__support.wctype_utils
)
add_entrypoint_object(
iswalnum
SRCS
iswalnum.cpp
HDRS
iswalnum.h
DEPENDS
libc.src.__support.wctype_utils
libc.hdr.types.wint_t
)
add_entrypoint_object(

View File

@ -0,0 +1,20 @@
//===-- Implementation of iswalnum ----------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
/**/
#include "src/wctype/iswalnum.h"
#include "src/__support/common.h"
#include "src/__support/wctype_utils.h"
#include "hdr/types/wint_t.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, iswalnum, (wint_t c)) {
return internal::isalnum(static_cast<wchar_t>(c));
}
} // namespace LIBC_NAMESPACE_DECL

View File

@ -0,0 +1,20 @@
//===-- Implementation header for iswalnum ----------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SRC_WCTYPE_ISWALNUM_H
#define LLVM_LIBC_SRC_WCTYPE_ISWALNUM_H
#include "hdr/types/wint_t.h"
#include "src/__support/common.h"
namespace LIBC_NAMESPACE_DECL {
int iswalnum(wint_t c);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_WCTYPE_ISWALNUM_H

View File

@ -81,3 +81,13 @@ add_libc_test(
DEPENDS
libc.src.wctype.iswxdigit
)
add_libc_test(
iswalnum_test
SUITE
libc_wctype_unittests
SRCS
iswalnum_test.cpp
DEPENDS
libc.src.wctype.iswalnum
)

View File

@ -0,0 +1,24 @@
//===-- Unittests for iswalnum --------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "src/wctype/iswalnum.h"
#include "test/UnitTest/Test.h"
TEST(LlvmLibciswalnum, SimpleTest) {
EXPECT_NE(LIBC_NAMESPACE::iswalnum('A'), 0);
EXPECT_NE(LIBC_NAMESPACE::iswalnum('z'), 0);
EXPECT_NE(LIBC_NAMESPACE::iswalnum('0'), 0);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum(' '), 0);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum('?'), 0);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum('\0'), 0);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum(-1), 0);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum('a'), 1);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum('Z'), 1);
EXPECT_EQ(LIBC_NAMESPACE::iswalnum('9'), 1);
}