mirror of
https://github.com/TakeV-Lambda/dino.git
synced 2024-11-26 00:44:34 +00:00
4a9c05ea37
Most of these are caused by various issues is the Vala compiler, but it doesn't hurt to display them and report them upstream.
114 lines
4.4 KiB
Vala
114 lines
4.4 KiB
Vala
[CCode (cprefix="u_")]
|
|
namespace ICU {
|
|
|
|
[CCode (cname = "UChar")]
|
|
[IntegerType (rank = 5, min = 0, max = 65535)]
|
|
struct Char {}
|
|
|
|
[CCode (cname = "UChar*", destroy_function="g_free", has_type_id = false, cheader_filename = "unicode/ustring.h")]
|
|
[SimpleType]
|
|
struct String {
|
|
public static String alloc(int32 length) {
|
|
return (String) (Char*) new Char[length];
|
|
}
|
|
|
|
public static String from_string(string src) throws GLib.ConvertError {
|
|
ErrorCode status = ErrorCode.ZERO_ERROR;
|
|
int32 dest_capacity = src.length * 2 + 1;
|
|
String dest = alloc(dest_capacity);
|
|
int32 dest_length;
|
|
strFromUTF8(dest, dest_capacity, out dest_length, src, src.length, ref status);
|
|
if (status.is_failure()) {
|
|
throw new GLib.ConvertError.FAILED(status.errorName());
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
public string to_string() throws GLib.ConvertError {
|
|
ErrorCode status = ErrorCode.ZERO_ERROR;
|
|
char[] dest = new char[len() * 4 + 1];
|
|
int32 dest_length;
|
|
strToUTF8(dest, out dest_length, this, -1, ref status);
|
|
if (status.is_failure()) {
|
|
throw new GLib.ConvertError.FAILED(status.errorName());
|
|
}
|
|
dest[dest_length] = 0;
|
|
return (string) dest;
|
|
}
|
|
|
|
[CCode (cname = "u_strlen")]
|
|
public int32 len();
|
|
|
|
[CCode (cname="u_strFromUTF8")]
|
|
private static void strFromUTF8(String dest, int32 dest_capacity, out int32 dest_length, string src, int32 src_length, ref ErrorCode status);
|
|
[CCode (cname="u_strToUTF8")]
|
|
private static void strToUTF8(char[] dest, out int32 dest_length, String src, int32 src_length, ref ErrorCode status);
|
|
}
|
|
|
|
[CCode (cname = "UErrorCode", cprefix = "U_", cheader_filename = "unicode/utypes.h")]
|
|
enum ErrorCode {
|
|
ZERO_ERROR,
|
|
INVALID_CHAR_FOUND,
|
|
INDEX_OUTOFBOUNDS_ERROR,
|
|
BUFFER_OVERFLOW_ERROR,
|
|
STRINGPREP_PROHIBITED_ERROR,
|
|
UNASSIGNED_CODE_POINT_FOUND,
|
|
IDNA_STD3_ASCII_RULES_ERROR
|
|
;
|
|
[CCode (cname = "u_errorName")]
|
|
public unowned string errorName();
|
|
[CCode (cname = "U_SUCCESS")]
|
|
public bool is_success();
|
|
[CCode (cname = "U_FAILURE")]
|
|
public bool is_failure();
|
|
}
|
|
|
|
[CCode (cname = "UParseError", cprefix = "U_", cheader_filename = "unicode/parseerr.h")]
|
|
struct ParseError {}
|
|
|
|
[CCode (cname = "UStringPrepProfile", cprefix = "usprep_", free_function = "usprep_close", cheader_filename = "unicode/usprep.h")]
|
|
[Compact]
|
|
class PrepProfile {
|
|
public static PrepProfile open(string path, string file_name, ref ErrorCode status);
|
|
public static PrepProfile openByType(PrepType type, ref ErrorCode status);
|
|
public int32 prepare(String src, int32 src_length, String dest, int32 dest_capacity, PrepOptions options, out ParseError parse_error, ref ErrorCode status);
|
|
}
|
|
[CCode (cname = "UStringPrepProfileType", cprefix = "USPREP_")]
|
|
enum PrepType {
|
|
RFC3491_NAMEPREP,
|
|
RFC3920_NODEPREP,
|
|
RFC3920_RESOURCEPREP
|
|
}
|
|
[CCode (cname = "int32_t", cprefix = "USPREP_")]
|
|
enum PrepOptions {
|
|
DEFAULT,
|
|
ALLOW_UNASSIGNED
|
|
}
|
|
|
|
[CCode (cname = "UIDNA", cprefix = "uidna_", free_function = "uidna_close", cheader_filename = "unicode/uidna.h")]
|
|
[Compact]
|
|
class IDNA {
|
|
public static IDNA openUTS46(IDNAOptions options, ref ErrorCode status);
|
|
public static int32 IDNToUnicode(Char* src, int32 src_length, Char* dest, int32 dest_capacity, IDNAOptions options, out ParseError parse_error, ref ErrorCode status);
|
|
public static int32 IDNToASCII(Char* src, int32 src_length, Char* dest, int32 dest_capacity, IDNAOptions options, out ParseError parse_error, ref ErrorCode status);
|
|
public int32 nameToUnicode(Char* src, int32 src_length, Char* dest, int32 dest_capacity, out IDNAInfo info, ref ErrorCode status);
|
|
public int32 nameToASCII(Char* src, int32 src_length, Char* dest, int32 dest_capacity, out IDNAInfo info, ref ErrorCode status);
|
|
public int32 nameToASCII_UTF8(string name, int32 name_length, char[] dest, out IDNAInfo info, ref ErrorCode status);
|
|
public int32 nameToUnicodeUTF8(string name, int32 name_length, char[] dest, out IDNAInfo info, ref ErrorCode status);
|
|
}
|
|
|
|
[CCode (cname = "UIDNAInfo", default_value = "UIDNA_INFO_INITIALIZER", has_type_id = false, cheader_filename = "unicode/uidna.h")]
|
|
struct IDNAInfo {
|
|
public static IDNAInfo INITIAL;
|
|
public uint32 errors;
|
|
public bool isTransitionalDifferent;
|
|
}
|
|
|
|
[CCode (cname = "uint32_t", cprefix = "UIDNA_")]
|
|
enum IDNAOptions {
|
|
DEFAULT,
|
|
ALLOW_UNASSIGNED,
|
|
USE_STD3_RULES
|
|
}
|
|
|
|
}
|