mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v1.9.4.1
This commit is contained in:
@@ -955,6 +955,15 @@ public class Bry_ {
|
||||
}
|
||||
return ary;
|
||||
}
|
||||
public static byte[] Lower_1st(byte[] ary) {
|
||||
if (ary == null) return null;
|
||||
int len = ary.length;
|
||||
if (len == 0) return ary;
|
||||
byte b = ary[0];
|
||||
if (b > 64 && b < 91)
|
||||
ary[0] = (byte)(b + 32);
|
||||
return ary;
|
||||
}
|
||||
public static byte[] Lower_ascii(byte[] ary) {
|
||||
int len = ary.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
@@ -50,11 +50,19 @@ public class Bry_bfr_mkr {
|
||||
}
|
||||
}
|
||||
class Bry_bfr_mkr_mgr {
|
||||
public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {this.mgr_id = mgr_id; this.reset = reset;} private int reset;
|
||||
private final Object thread_lock;
|
||||
public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21
|
||||
thread_lock = new Object();
|
||||
synchronized (thread_lock) {
|
||||
this.mgr_id = mgr_id;
|
||||
this.reset = reset;
|
||||
this.free = Int_.Ary_empty;
|
||||
this.free_len = 0;
|
||||
}
|
||||
} private int reset;
|
||||
public byte Mgr_id() {return mgr_id;} private byte mgr_id;
|
||||
private Bry_bfr[] ary = Ary_empty; private int nxt_idx = 0, ary_max = 0;
|
||||
private int[] free = Int_.Ary_empty; private int free_len = 0;
|
||||
private Object thread_lock = new Object();
|
||||
private int[] free; private int free_len;
|
||||
public void Reset_if_gt(int v) {
|
||||
this.Clear(); // TODO: for now, just call clear
|
||||
}
|
||||
@@ -94,13 +102,14 @@ class Bry_bfr_mkr_mgr {
|
||||
Bry_bfr rv = null;
|
||||
int rv_idx = -1;
|
||||
if (free_len > 0) {
|
||||
rv_idx = free[--free_len];
|
||||
rv = ary[rv_idx];
|
||||
try {rv_idx = free[--free_len];}
|
||||
catch (Exception e) {throw Err_.new_("failed to get free index; free_len={0} free.length={1} err={2}", free_len, free.length, Err_.Message_lang(e));}
|
||||
try {rv = ary[rv_idx];}
|
||||
catch (Exception e) {throw Err_.new_("failed to get bfr; rv_idx={0} ary.length={1} err={2}", rv_idx, ary.length, Err_.Message_lang(e));}
|
||||
}
|
||||
else {
|
||||
if (nxt_idx == ary_max) {
|
||||
if (nxt_idx == ary_max)
|
||||
Expand();
|
||||
}
|
||||
rv_idx = nxt_idx++;
|
||||
rv = ary[rv_idx];
|
||||
if (rv == null) {
|
||||
|
||||
@@ -254,4 +254,5 @@ public class Int_ implements GfoInvkAble {
|
||||
rv[i] = Int_.parse_(ary[i]);
|
||||
return rv;
|
||||
}
|
||||
public static byte[] Xto_bry(int v) {return Bry_.new_ascii_(Xto_str(v));}
|
||||
}
|
||||
|
||||
@@ -28,10 +28,10 @@ public class Hash_adp_bry extends gplx.lists.HashAdp_base implements HashAdp {
|
||||
@Override protected boolean Has_base(Object key) {return super.Has_base(key_ref.Init((byte[])key));}
|
||||
public Object Get_by_bry(byte[] src) {return super.Fetch_base(key_ref.Init(src));}
|
||||
public Object Get_by_mid(byte[] src, int bgn, int end) {return super.Fetch_base(key_ref.Init(src, bgn, end));}
|
||||
public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;}
|
||||
public Hash_adp_bry Add_bry_bry(byte[] key) {this.Add_base(key, key); return this;}
|
||||
public Hash_adp_bry Add_str_byte(String key, byte val) {this.Add_base(Bry_.new_utf8_(key), Byte_obj_val.new_(val)); return this;}
|
||||
public Hash_adp_bry Add_str_obj(String key, Object val) {this.Add_base(Bry_.new_utf8_(key), val); return this;}
|
||||
public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;}
|
||||
public Hash_adp_bry Add_bry_obj(byte[] key, Object val) {this.Add_base(key, val); return this;}
|
||||
public Hash_adp_bry Add_many_str(String... ary) {
|
||||
int ary_len = ary.length;
|
||||
|
||||
Reference in New Issue
Block a user