瀏覽代碼

* android: Removed cwstring from the uses clause of the unix unit. Use cwstring indirectly. It allows to avoid using cwstring if needed.

git-svn-id: trunk@40198 -
yury 6 年之前
父節點
當前提交
b717a149b6
共有 5 個文件被更改,包括 12 次插入7 次删除
  1. 2 1
      packages/rtl-extra/src/android/clocale.pp
  2. 5 1
      rtl/android/cwstring.pp
  3. 2 0
      rtl/android/sysandroid.inc
  4. 3 2
      rtl/android/unixandroid.inc
  5. 0 3
      rtl/unix/unix.pp

+ 2 - 1
packages/rtl-extra/src/android/clocale.pp

@@ -64,11 +64,12 @@ var
   unum_close: procedure (fmt: UNumberFormat); cdecl;
   unum_getSymbol: function (fmt: UNumberFormat; symbol: UNumberFormatSymbol; result: PUnicodeChar; resultLength: int32_t; var status: UErrorCode): int32_t; cdecl;
 
-function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean; external name 'CWSTRING_GET_ICU_PROC';
+  GetIcuProc: function (const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'ANDROID_GET_ICU_PROC';
 
 procedure InitIcuFunctions;
 begin
   if FunctionsInited then exit;
+  if not Assigned(GetIcuProc) then exit;
   if not GetIcuProc('udat_open', udat_open, 1) then exit;
   if not GetIcuProc('udat_close', udat_close, 1) then exit;
   if not GetIcuProc('udat_toPattern', udat_toPattern, 1) then exit;

+ 5 - 1
rtl/android/cwstring.pp

@@ -498,7 +498,7 @@ begin
   end;
 end;
 
-function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean; [public, alias: 'CWSTRING_GET_ICU_PROC'];
+function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean;
 var
   p: pointer;
   hLib: TLibHandle;
@@ -606,6 +606,9 @@ end;
 
 var
   oldm: TUnicodeStringManager;
+{$ifdef android}
+  SysGetIcuProc: pointer; external name 'ANDROID_GET_ICU_PROC';
+{$endif android}
 
 initialization
   GetUnicodeStringManager(oldm);
@@ -614,6 +617,7 @@ initialization
   if LoadICU then begin
     SetCWideStringManager;
     {$ifdef android}
+    SysGetIcuProc:=@GetIcuProc;
     SetStdIOCodePages;
     {$endif android}
   end;

+ 2 - 0
rtl/android/sysandroid.inc

@@ -21,6 +21,8 @@ var
 
   _environ: pointer external name 'environ';
 
+  GetIcuProc: pointer; public name 'ANDROID_GET_ICU_PROC';
+
 procedure CommonMainAndroid;
 const
   EmptyEnv: array[0..2] of PAnsiChar = (nil, nil, nil);

+ 3 - 2
rtl/android/unixandroid.inc

@@ -45,7 +45,7 @@ var
   TZStandardName: utf8string;
   TZDaylightName: utf8string;
 
-function GetIcuProc(const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'CWSTRING_GET_ICU_PROC';
+  GetIcuProc: function (const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'ANDROID_GET_ICU_PROC';
 
 procedure ReadTimeZoneFromICU;
 var
@@ -55,6 +55,7 @@ var
   err: UErrorCode;
   cal: UCalendar;
 begin
+  if not Assigned(GetIcuProc) then exit;
   if not GetIcuProc('ucal_open', ucal_open, 1) then exit;
   if not GetIcuProc('ucal_close', ucal_close, 1) then exit;
   if not GetIcuProc('ucal_getTimeZoneDisplayName', ucal_getTimeZoneDisplayName, 1) then exit;
@@ -128,7 +129,7 @@ procedure InitLocalTime;
 begin
   if SystemApiLevel > 10 then
     ReadTimeZoneFromLibC;
-  // If cuurent Android version is too old and does not support timezone
+  // If current Android version is too old and does not support timezone
   // in libc, use ICU library.
   if tzname[false] = nil then
     ReadTimeZoneFromICU;

+ 0 - 3
rtl/unix/unix.pp

@@ -16,9 +16,6 @@ Unit Unix;
 Interface
 
 Uses
-{$ifdef android}
-  cwstring,
-{$endif android}
   BaseUnix,UnixType;
 // If you deprecated new symbols, please annotate the version.
 // this makes it easier to decide if they can already be removed.