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;
   }
}