ArrayMetaStore class
Пакет: com.hypixel.hytale.server.core.meta
Файл: com/hypixel/hytale/server/core/meta/ArrayMetaStore.java
extends: AbstractMetaStore<K>
Поля (11)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Object |
NO_ENTRY |
|
int |
var2 |
|
Object |
var2 |
|
Object |
var2 |
|
int |
var2 |
|
Object |
var3 |
|
int |
var3 |
|
Object |
var3 |
|
Object[] |
var3 |
|
Object |
var4 |
|
Object |
var4 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var2 = 0; var2 < this.array.length; var2++) |
|
|
if if(var2 >= this.array.length) |
|
|
if if(var3 == NO_ENTRY) |
|
|
if if(var3 >= this.array.length) |
|
|
if if(var3 != NO_ENTRY) |
private |
<T> void |
resizeArray<T> void resizeArray(T var1, int var2) |
abstract |
|
super super(var1, var2, var3) |
abstract |
|
this this(var1, var2, false) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.meta;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ArrayMetaStore<K> class="kw">extends AbstractMetaStore<K> {
class="kw">private class="kw">static class="kw">final Object NO_ENTRY = new Object();
class="kw">private Object[] array = ArrayUtil.emptyArray();
class="kw">public ArrayMetaStore(K var1, IMetaRegistry<K> var2) {
this(var1, var2, false);
}
class="kw">public ArrayMetaStore(K var1, IMetaRegistry<K> var2, boolean var3) {
super(var1, var2, var3);
}
@Override
class="kw">protected <T> T get0(@Nonnull MetaKey<T> var1) {
class="kw">return (T)this.array[var1.getId()];
}
@Override
class="kw">public <T> T getMetaObject(@Nonnull MetaKey<T> var1) {
int var2 = var1.getId();
if (var2 >= this.array.length) {
Object var4 = this.decodeOrNewMetaObject(var1);
this.resizeArray(var4, var2);
class="kw">return var4;
}
Object var3 = this.get0(var1);
if (var3 == NO_ENTRY) {
this.array[var2] = var3 = this.decodeOrNewMetaObject(var1);
}
class="kw">return var3;
}
@Nullable
@Override
class="kw">public <T> T getIfPresentMetaObject(@Nonnull MetaKey<T> var1) {
if (var1.getId() >= this.array.length) {
class="kw">return null;
}
Object var2 = this.get0(var1);
class="kw">return var2 != NO_ENTRY ? var2 : null;
}
@Nullable
@Override
class="kw">public <T> T putMetaObject(@Nonnull MetaKey<T> var1, T var2) {
this.markMetaStoreDirty();
int var3 = var1.getId();
if (var3 >= this.array.length) {
this.resizeArray(var2, var3);
class="kw">return null;
} else {
Object var4 = (T)this.array[var3];
this.array[var3] = var2;
class="kw">return var4 != NO_ENTRY ? var4 : null;
}
}
@Nullable
@Override
class="kw">public <T> T removeMetaObject(@Nonnull MetaKey<T> var1) {
if (var1.getId() >= this.array.length) {
class="kw">return null;
}
this.markMetaStoreDirty();
Object var2 = (T)this.array[var1.getId()];
this.array[var1.getId()] = NO_ENTRY;
class="kw">return var2 != NO_ENTRY ? var2 : null;
}
@Nullable
@Override
class="kw">public <T> T removeSerializedMetaObject(@Nonnull MetaKey<T> var1) {
if (var1.getId() >= this.array.length && var1 class="kw">instanceof PersistentMetaKey) {
this.tryDecodeUnknownKey((PersistentMetaKey<T>)var1);
}
class="kw">return this.removeMetaObject(var1);
}
@Override
class="kw">public boolean hasMetaObject(@Nonnull MetaKey<?> var1) {
int var2 = var1.getId();
class="kw">return var2 >= this.array.length ? false : this.array[var2] != NO_ENTRY;
}
@Override
class="kw">public void forEachMetaObject(@Nonnull IMetaStore.MetaEntryConsumer var1) {
for (int var2 = 0; var2 < this.array.length; var2++) {
Object var3 = this.array[var2];
if (var3 != NO_ENTRY) {
var1.accept(var2, var3);
}
}
}
class="kw">private <T> void resizeArray(T var1, int var2) {
Object[] var3 = new Object[var2 + 1];
Arrays.fill(var3, this.array.length, var3.length, NO_ENTRY);
System.arraycopy(this.array, 0, var3, 0, this.array.length);
var3[var2] = var1;
this.array = var3;
}
}