@interface kString : kObject
{
@public
string cString;
uint length;
}
+ (kObj)new:(kString*)str, ...;
+ (kObj)new:(kString*)str :(kArgs)args;
- (kObj)initFormattedString:(kString*)str, ...;
- (kObj)initFormattedString:(kString*)str :(kArgs)args;
+ (kObj)newCString:(const_string)str, ...;
+ (kObj)newCString:(const_string)str :(kArgs)args;
- (kObj)initCString:(const_string)str;
- (kObj)initFormattedCString:(const_string)str, ...;
- (kObj)initFormattedCString:(const_string)str :(kArgs)args;
- (const_string)cString;
- (kNatural*)length;
@end
@implementation kString
+ (kObj)new:(kString*)str, ...
{
va_list args;
va_start(args, str);
kString *s = [kString new:str :args];
va_end(args);
return s;
}
+ (kObj)new:(kString*)str :(kArgs)args
{
return [[self alloc] initFormattedCString:[str cString] :args];
}
- (kObj)initFormattedString:(kString*)str, ...
{
if(self = [super init])
{
cString = (string)malloc(255);
va_list args;
va_start(args, str);
vsprintf(cString, [str cString], args);
va_end(args);
length = strlen(cString) + 1;
}
return self;
}
- (kObj)initFormattedString:(kString*)str :(kArgs)args
{
if(self = [super init])
{
cString = (string)malloc(255);
vsprintf(cString, [str cString], args);
length = strlen(cString) + 1;
}
return self;
}
+ (kObj)newCString:(const_string)str, ...
{
va_list args;
va_start(args, str);
kString *s = [[self alloc] initFormattedCString:str :args];
va_end(args);
return s;
}
+ (kObj)newCString:(const_string)str :(kArgs)args
{
return [[self alloc] initFormattedCString:str :args];
}
- (kObj)initCString:(const_string)str
{
if(self = [super init])
{
length = strlen(str) + 1;
cString = (string)malloc(length);
strcpy(cString, str);
}
return self;
}
- (kObj)initFormattedCString:(const_string)str, ...
{
if(self = [super init])
{
cString = (string)malloc(255);
va_list args;
va_start(args, str);
vsprintf(cString, str, args);
va_end(args);
length = strlen(cString) + 1;
}
return self;
}
- (kObj)initFormattedCString:(const_string)str :(kArgs)args
{
if(self = [super init])
{
cString = (string)malloc(255);
vsprintf(cString, str, args);
length = strlen(cString) + 1;
}
return self;
}
- (const_string)cString
{
return cString;
}
- (kNatural*)length
{
return [kNatural new:length];
}
@end
Copyright © 2025 Rui Cuco. All rights reserved.