summaryrefslogtreecommitdiff
path: root/jurt/com/sun/star/lib/uno/protocols/urp/Cache.java
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:57:40 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:57:40 +0100
commit2716f7dce26f16a2b677c178aa7d01cea096ae47 (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /jurt/com/sun/star/lib/uno/protocols/urp/Cache.java
parent10ac9e750447fd57e3cef7993b0ad6c6538d6269 (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'jurt/com/sun/star/lib/uno/protocols/urp/Cache.java')
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Cache.java120
1 files changed, 0 insertions, 120 deletions
diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Cache.java b/jurt/com/sun/star/lib/uno/protocols/urp/Cache.java
deleted file mode 100644
index ad4bdbcc1..000000000
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Cache.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.protocols.urp;
-
-import java.util.HashMap;
-
-/**
- An LRU cache for arbitrary objects.
-
- This class is not synchronized, as any necessary synchronization will already
- take place in the client.
-*/
-final class Cache {
- /**
- Create a cache.
-
- @param size the maximum cache size, must be between 0, inclusive, and
- NOT_CACHED, exclusive
- */
- public Cache(int size) {
- maxSize = size;
- }
-
- public int add(boolean[] found, Object content) {
- Entry e = (Entry) map.get(content);
- found[0] = e != null;
- if (e == null) {
- if (map.size() < maxSize) {
- // There is still room for a new entry at the front:
- e = new Entry(content, map.size(), null, first);
- if (first == null) {
- last = e;
- } else {
- first.prev = e;
- }
- first = e;
- } else if (last != null) {
- // Take last entry out and recycle as new front:
- map.remove(last.content);
- e = last;
- e.content = content;
- if (first != last) {
- // Reached only if maxSize > 1:
- last = last.prev;
- last.next = null;
- e.prev = null;
- e.next = first;
- first.prev = e;
- first = e;
- }
- } else {
- // Reached iff maxSize == 0:
- return NOT_CACHED;
- }
- map.put(content, e);
- } else if (e != first) {
- // Move to front (reached only if maxSize > 1):
- e.prev.next = e.next;
- if (e.next == null) {
- last = e.prev;
- } else {
- e.next.prev = e.prev;
- }
- e.prev = null;
- e.next = first;
- first.prev = e;
- first = e;
- }
- return e.index;
- }
-
- public static final int NOT_CACHED = 0xFFFF;
-
- private static final class Entry {
- public Entry(Object content, int index, Entry prev, Entry next) {
- this.content = content;
- this.index = index;
- this.prev = prev;
- this.next = next;
- }
-
- public Object content;
- public int index;
- public Entry prev;
- public Entry next;
- }
-
- // first/last form a list of 0 to maxSize entries, most recently used first;
- // map contains the same entries; each entry has a unique index in the range
- // 0 to maxSize - 1
- private final int maxSize;
- private final HashMap map = new HashMap(); // from Object to Entry
- private Entry first = null;
- private Entry last = null;
-}