Artifact e49ea36f6ce46e02e047738fc256797cf61624d75d20427b51d51b3478b95f25:
- File
src/OFUTF8String.h
— part of check-in
[aeb403a1ed]
at
2020-10-10 14:27:37
on branch trunk
— OFObject: Change type of -[hash] to unsigned long
The internal hash is still 32 bit in most places, but this way, it is at
least not baked into the API and ABI and can be upgraded later, should
that ever be necessary. (user: js, size: 1488) [annotate] [blame] [check-ins using]
/* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, * 2018, 2019, 2020 * Jonathan Schleifer <js@nil.im> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OFString.h" OF_ASSUME_NONNULL_BEGIN @interface OFUTF8String: OFString { /* * A pointer to the actual data. * * Since constant strings don't have `_storage`, they have to allocate * it on the first access. Strings created at runtime just set the * pointer to `&_storage`. */ struct of_string_utf8_ivars { char *cString; size_t cStringLength; bool isUTF8; size_t length; bool hashed; unsigned long hash; char *_Nullable freeWhenDone; } *restrict _s; struct of_string_utf8_ivars _storage; } @end #ifdef __cplusplus extern "C" { #endif extern int of_string_utf8_check(const char *, size_t, size_t *); extern size_t of_string_utf8_get_index(const char *, size_t); extern size_t of_string_utf8_get_position(const char *, size_t, size_t); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END