From 9e1ee2c8c964f74163559dc12aba5def1ff5366a Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sun, 4 Oct 2026 10:22:46 +1300 Subject: basic PXString implementation --- src/String.m | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/String.m (limited to 'src') diff --git a/src/String.m b/src/String.m new file mode 100644 index 0000000..7d5d4d8 --- /dev/null +++ b/src/String.m @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include +#include +#include + +@implementation PXString + +/* init/lifecycle */ + ++ (instancetype)stringWithCString:(const char *)cstring { + PXString *string = [PXString alloc]; + return [string initWithCString:cstring]; +} + +- (instancetype)init { + return [self initWithCString:""]; +} + +- (instancetype)initWithCString:(const char *)cstring { + self = [super init]; + if (self) { + if (cstring == NULL) + cstring = ""; + + _length = strlen(cstring); + _bytes = malloc(_length + 1); + memcpy(_bytes, cstring, _length + 1); + } + return self; +} + +- (void)dealloc { + free(_bytes); + [super dealloc]; +} + +/* getters */ +- (const char *)UTF8String { + return _bytes; +} + +- (size_t)length { + return _length; +} + +- (BOOL)isEqual:(PXString *)string { + if (self == string) + return YES; + + if (string == nil || _length != string->_length) + return NO; + + return (memcmp(_bytes, string->_bytes, _length) == 0); +} + +@end -- cgit v1.2.3