1f3b41502Scgyurgyik //===-- Implementation of strspn ------------------------------------------===// 2f3b41502Scgyurgyik // 3f3b41502Scgyurgyik // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f3b41502Scgyurgyik // See https://llvm.org/LICENSE.txt for license information. 5f3b41502Scgyurgyik // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f3b41502Scgyurgyik // 7f3b41502Scgyurgyik //===----------------------------------------------------------------------===// 8f3b41502Scgyurgyik 9f3b41502Scgyurgyik #include "src/string/strspn.h" 10f3b41502Scgyurgyik 11*f362aea4SSiva Chandra Reddy #include "src/__support/CPP/Bitset.h" 12f3b41502Scgyurgyik #include "src/__support/common.h" 13f3b41502Scgyurgyik #include <stddef.h> 14f3b41502Scgyurgyik 15f3b41502Scgyurgyik namespace __llvm_libc { 16f3b41502Scgyurgyik 17a0b65a7bSMichael Jones LLVM_LIBC_FUNCTION(size_t, strspn, (const char *src, const char *segment)) { 18f3b41502Scgyurgyik const char *initial = src; 19f3b41502Scgyurgyik cpp::Bitset<256> bitset; 20f3b41502Scgyurgyik 21f3b41502Scgyurgyik for (; *segment; ++segment) 22f3b41502Scgyurgyik bitset.set(*segment); 23f3b41502Scgyurgyik for (; *src && bitset.test(*src); ++src) 24f3b41502Scgyurgyik ; 25f3b41502Scgyurgyik return src - initial; 26f3b41502Scgyurgyik } 27f3b41502Scgyurgyik 28f3b41502Scgyurgyik } // namespace __llvm_libc 29