Selaa lähdekoodia

Minor cleanup of CFString.odin

gingerBill 1 vuosi sitten
vanhempi
commit
8694fa5f78
1 muutettua tiedostoa jossa 143 lisäystä ja 150 poistoa
  1. 143 150
      core/sys/darwin/CoreFoundation/CFString.odin

+ 143 - 150
core/sys/darwin/CoreFoundation/CFString.odin

@@ -9,157 +9,157 @@ String :: distinct TypeRef // same as CFStringRef
 StringEncoding :: distinct u32
 
 StringBuiltInEncodings :: enum StringEncoding {
-	MacRoman = 0,
+	MacRoman      = 0,
 	WindowsLatin1 = 0x0500,
-	ISOLatin1 = 0x0201,
+	ISOLatin1     = 0x0201,
 	NextStepLatin = 0x0B01,
-	ASCII = 0x0600,
-	Unicode = 0x0100,
-	UTF8 = 0x08000100,
+	ASCII         = 0x0600,
+	Unicode       = 0x0100,
+	UTF8          = 0x08000100,
 	NonLossyASCII = 0x0BFF,
 
-	UTF16 = 0x0100,
+	UTF16   = 0x0100,
 	UTF16BE = 0x10000100,
 	UTF16LE = 0x14000100,
 
-	UTF32 = 0x0c000100,
-	UTF32BE = 0x18000100,
-	UTF32LE = 0x1c000100,
+	UTF32         = 0x0c000100,
+	UTF32BE       = 0x18000100,
+	UTF32LE       = 0x1c000100,
 }
 
 StringEncodings :: enum Index {
-	MacJapanese = 1,
-	MacChineseTrad = 2,
-	MacKorean = 3,
-	MacArabic = 4,
-	MacHebrew = 5,
-	MacGreek = 6,
-	MacCyrillic = 7,
-	MacDevanagari = 9,
-	MacGurmukhi = 10,
-	MacGujarati = 11,
-	MacOriya = 12,
-	MacBengali = 13,
-	MacTamil = 14,
-	MacTelugu = 15,
-	MacKannada = 16,
-	MacMalayalam = 17,
-	MacSinhalese = 18,
-	MacBurmese = 19,
-	MacKhmer = 20,
-	MacThai = 21,
-	MacLaotian = 22,
-	MacGeorgian = 23,
-	MacArmenian = 24,
-	MacChineseSimp = 25,
-	MacTibetan = 26,
-	MacMongolian = 27,
-	MacEthiopic = 28,
+	MacJapanese        = 1,
+	MacChineseTrad     = 2,
+	MacKorean          = 3,
+	MacArabic          = 4,
+	MacHebrew          = 5,
+	MacGreek           = 6,
+	MacCyrillic        = 7,
+	MacDevanagari      = 9,
+	MacGurmukhi        = 10,
+	MacGujarati        = 11,
+	MacOriya           = 12,
+	MacBengali         = 13,
+	MacTamil           = 14,
+	MacTelugu          = 15,
+	MacKannada         = 16,
+	MacMalayalam       = 17,
+	MacSinhalese       = 18,
+	MacBurmese         = 19,
+	MacKhmer           = 20,
+	MacThai            = 21,
+	MacLaotian         = 22,
+	MacGeorgian        = 23,
+	MacArmenian        = 24,
+	MacChineseSimp     = 25,
+	MacTibetan         = 26,
+	MacMongolian       = 27,
+	MacEthiopic        = 28,
 	MacCentralEurRoman = 29,
-	MacVietnamese = 30,
-	MacExtArabic = 31,
-	MacSymbol = 33,
-	MacDingbats = 34,
-	MacTurkish = 35,
-	MacCroatian = 36,
-	MacIcelandic = 37,
-	MacRomanian = 38,
-	MacCeltic = 39,
-	MacGaelic = 40,
-	MacFarsi = 0x8C,
-	MacUkrainian = 0x98,
-	MacInuit = 0xEC,
-	MacVT100 = 0xFC,
-	MacHFS = 0xFF,
-	ISOLatin2 = 0x0202,
-	ISOLatin3 = 0x0203,
-	ISOLatin4 = 0x0204,
-	ISOLatinCyrillic = 0x0205,
-	ISOLatinArabic = 0x0206,
-	ISOLatinGreek = 0x0207,
-	ISOLatinHebrew = 0x0208,
-	ISOLatin5 = 0x0209,
-	ISOLatin6 = 0x020A,
-	ISOLatinThai = 0x020B,
-	ISOLatin7 = 0x020D,
-	ISOLatin8 = 0x020E,
-	ISOLatin9 = 0x020F,
-	ISOLatin10 = 0x0210,
-	DOSLatinUS = 0x0400,
-	DOSGreek = 0x0405,
-	DOSBalticRim = 0x0406,
-	DOSLatin1 = 0x0410,
-	DOSGreek1 = 0x0411,
-	DOSLatin2 = 0x0412,
-	DOSCyrillic = 0x0413,
-	DOSTurkish = 0x0414,
-	DOSPortuguese = 0x0415,
-	DOSIcelandic = 0x0416,
-	DOSHebrew = 0x0417,
-	DOSCanadianFrench = 0x0418,
-	DOSArabic = 0x0419,
-	DOSNordic = 0x041A,
-	DOSRussian = 0x041B,
-	DOSGreek2 = 0x041C,
-	DOSThai = 0x041D,
-	DOSJapanese = 0x0420,
-	DOSChineseSimplif = 0x0421,
-	DOSKorean = 0x0422,
-	DOSChineseTrad = 0x0423,
-	WindowsLatin2 = 0x0501,
-	WindowsCyrillic = 0x0502,
-	WindowsGreek = 0x0503,
-	WindowsLatin5 = 0x0504,
-	WindowsHebrew = 0x0505,
-	WindowsArabic = 0x0506,
-	WindowsBalticRim = 0x0507,
-	WindowsVietnamese = 0x0508,
-	WindowsKoreanJohab = 0x0510,
-	ANSEL = 0x0601,
-	JIS_X0201_76 = 0x0620,
-	JIS_X0208_83 = 0x0621,
-	JIS_X0208_90 = 0x0622,
-	JIS_X0212_90 = 0x0623,
-	JIS_C6226_78 = 0x0624,
-	ShiftJIS_X0213 = 0x0628,
+	MacVietnamese      = 30,
+	MacExtArabic       = 31,
+	MacSymbol          = 33,
+	MacDingbats        = 34,
+	MacTurkish         = 35,
+	MacCroatian        = 36,
+	MacIcelandic       = 37,
+	MacRomanian        = 38,
+	MacCeltic          = 39,
+	MacGaelic          = 40,
+	MacFarsi           = 0x8C,
+	MacUkrainian       = 0x98,
+	MacInuit           = 0xEC,
+	MacVT100           = 0xFC,
+	MacHFS             = 0xFF,
+	ISOLatin2               = 0x0202,
+	ISOLatin3               = 0x0203,
+	ISOLatin4               = 0x0204,
+	ISOLatinCyrillic        = 0x0205,
+	ISOLatinArabic          = 0x0206,
+	ISOLatinGreek           = 0x0207,
+	ISOLatinHebrew          = 0x0208,
+	ISOLatin5               = 0x0209,
+	ISOLatin6               = 0x020A,
+	ISOLatinThai            = 0x020B,
+	ISOLatin7               = 0x020D,
+	ISOLatin8               = 0x020E,
+	ISOLatin9               = 0x020F,
+	ISOLatin10              = 0x0210,
+	DOSLatinUS              = 0x0400,
+	DOSGreek                = 0x0405,
+	DOSBalticRim            = 0x0406,
+	DOSLatin1               = 0x0410,
+	DOSGreek1               = 0x0411,
+	DOSLatin2               = 0x0412,
+	DOSCyrillic             = 0x0413,
+	DOSTurkish              = 0x0414,
+	DOSPortuguese           = 0x0415,
+	DOSIcelandic            = 0x0416,
+	DOSHebrew               = 0x0417,
+	DOSCanadianFrench       = 0x0418,
+	DOSArabic               = 0x0419,
+	DOSNordic               = 0x041A,
+	DOSRussian              = 0x041B,
+	DOSGreek2               = 0x041C,
+	DOSThai                 = 0x041D,
+	DOSJapanese             = 0x0420,
+	DOSChineseSimplif       = 0x0421,
+	DOSKorean               = 0x0422,
+	DOSChineseTrad          = 0x0423,
+	WindowsLatin2           = 0x0501,
+	WindowsCyrillic         = 0x0502,
+	WindowsGreek            = 0x0503,
+	WindowsLatin5           = 0x0504,
+	WindowsHebrew           = 0x0505,
+	WindowsArabic           = 0x0506,
+	WindowsBalticRim        = 0x0507,
+	WindowsVietnamese       = 0x0508,
+	WindowsKoreanJohab      = 0x0510,
+	ANSEL                   = 0x0601,
+	JIS_X0201_76            = 0x0620,
+	JIS_X0208_83            = 0x0621,
+	JIS_X0208_90            = 0x0622,
+	JIS_X0212_90            = 0x0623,
+	JIS_C6226_78            = 0x0624,
+	ShiftJIS_X0213          = 0x0628,
 	ShiftJIS_X0213_MenKuTen = 0x0629,
-	GB_2312_80 = 0x0630,
-	GBK_95 = 0x0631,
-	GB_18030_2000 = 0x0632,
-	KSC_5601_87 = 0x0640,
-	KSC_5601_92_Johab = 0x0641,
-	CNS_11643_92_P1 = 0x0651,
-	CNS_11643_92_P2 = 0x0652,
-	CNS_11643_92_P3 = 0x0653,
-	ISO_2022_JP = 0x0820,
-	ISO_2022_JP_2 = 0x0821,
-	ISO_2022_JP_1 = 0x0822,
-	ISO_2022_JP_3 = 0x0823,
-	ISO_2022_CN = 0x0830,
-	ISO_2022_CN_EXT = 0x0831,
-	ISO_2022_KR = 0x0840,
-	EUC_JP = 0x0920,
-	EUC_CN = 0x0930,
-	EUC_TW = 0x0931,
-	EUC_KR = 0x0940,
-	ShiftJIS = 0x0A01,
-	KOI8_R = 0x0A02,
-	Big5 = 0x0A03,
-	MacRomanLatin1 = 0x0A04,
-	HZ_GB_2312 = 0x0A05,
-	Big5_HKSCS_1999 = 0x0A06,
-	VISCII = 0x0A07,
-	KOI8_U = 0x0A08,
-	Big5_E = 0x0A09,
-	NextStepJapanese = 0x0B02,
-	EBCDIC_US = 0x0C01,
-	EBCDIC_CP037 = 0x0C02,
-	UTF7 = 0x04000100,
-	UTF7_IMAP = 0x0A10,
-	ShiftJIS_X0213_00 = 0x0628, // Deprecated. Use `ShiftJIS_X0213` instead.
+	GB_2312_80              = 0x0630,
+	GBK_95                  = 0x0631,
+	GB_18030_2000           = 0x0632,
+	KSC_5601_87             = 0x0640,
+	KSC_5601_92_Johab       = 0x0641,
+	CNS_11643_92_P1         = 0x0651,
+	CNS_11643_92_P2         = 0x0652,
+	CNS_11643_92_P3         = 0x0653,
+	ISO_2022_JP             = 0x0820,
+	ISO_2022_JP_2           = 0x0821,
+	ISO_2022_JP_1           = 0x0822,
+	ISO_2022_JP_3           = 0x0823,
+	ISO_2022_CN             = 0x0830,
+	ISO_2022_CN_EXT         = 0x0831,
+	ISO_2022_KR             = 0x0840,
+	EUC_JP                  = 0x0920,
+	EUC_CN                  = 0x0930,
+	EUC_TW                  = 0x0931,
+	EUC_KR                  = 0x0940,
+	ShiftJIS                = 0x0A01,
+	KOI8_R                  = 0x0A02,
+	Big5                    = 0x0A03,
+	MacRomanLatin1          = 0x0A04,
+	HZ_GB_2312              = 0x0A05,
+	Big5_HKSCS_1999         = 0x0A06,
+	VISCII                  = 0x0A07,
+	KOI8_U                  = 0x0A08,
+	Big5_E                  = 0x0A09,
+	NextStepJapanese        = 0x0B02,
+	EBCDIC_US               = 0x0C01,
+	EBCDIC_CP037            = 0x0C02,
+	UTF7                    = 0x04000100,
+	UTF7_IMAP               = 0x0A10,
+	ShiftJIS_X0213_00       = 0x0628, // Deprecated. Use `ShiftJIS_X0213` instead.
 }
 
-@(link_prefix = "CF", default_calling_convention = "c")
+@(link_prefix="CF", default_calling_convention="c")
 foreign CoreFoundation {
 	// Copies the character contents of a string to a local C string buffer after converting the characters to a given encoding.
 	StringGetCString :: proc(theString: String, buffer: [^]byte, bufferSize: Index, encoding: StringEncoding) -> b8 ---
@@ -181,23 +181,16 @@ foreign CoreFoundation {
 
 STR :: StringMakeConstantString
 
-StringCopyToOdinString :: proc(
-	theString: String,
-	allocator := context.allocator,
-) -> (
-	str: string,
-	ok: bool,
-) #optional_ok {
+StringCopyToOdinString :: proc(theString: String, allocator := context.allocator) -> (str: string, ok: bool) #optional_ok {
 	length := StringGetLength(theString)
 	max := StringGetMaximumSizeForEncoding(length, StringEncoding(StringBuiltInEncodings.UTF8))
 
 	buf, err := make([]byte, max, allocator)
-	if err != nil { return }
-
-	raw_str := runtime.Raw_String {
-		data = raw_data(buf),
+	if err != nil {
+		return
 	}
-	StringGetBytes(theString, {0, length}, StringEncoding(StringBuiltInEncodings.UTF8), 0, false, raw_data(buf), max, (^Index)(&raw_str.len))
 
-	return transmute(string)raw_str, true
+	n: Index
+	StringGetBytes(theString, {0, length}, StringEncoding(StringBuiltInEncodings.UTF8), 0, false, raw_data(buf), Index(len(buf)), &n)
+	return string(buf[:n]), true
 }