All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.thirdteeth.immutables.pcollections.encodings.PCollectionsMapEncodings Maven / Gradle / Ivy

package org.thirdteeth.immutables.pcollections.encodings;

import org.immutables.encode.Encoding;
import org.pcollections.HashTreePMap;
import org.pcollections.PMap;

import java.util.Map;

@Encoding
class PCollectionsMapEncodings {
    // Using a linked variant provides more predictable semantics for serialization
    @Encoding.Impl
    private Map field = HashTreePMap.empty();

    PCollectionsMapEncodings() {

    }

    @Encoding.Copy
    Map with(final Map map) {
        return HashTreePMap.from(map);
    }

    @Encoding.Builder
    static final class Builder {
        private Map pmap = HashTreePMap.empty();

        Builder() {

        }

        @Encoding.Naming(standard = Encoding.StandardNaming.PUT)
        @Encoding.Init
        void put(final K key, final V value) {
            this.pmap = ((PMap) this.pmap).plus(key, value);
        }

        @Encoding.Init
        @Encoding.Naming(value = "setPMap*")
        void setPmap(final PMap elements) {
            this.pmap = elements;
        }

        @Encoding.Init
        @Encoding.Copy
        void set(final Map in_map) {
            this.pmap = HashTreePMap.from(in_map);
        }

        @Encoding.Naming(standard = Encoding.StandardNaming.PUT_ALL)
        @Encoding.Init
        void putAll(final Map map) {
            this.pmap = ((PMap) this.pmap).plusAll(map);
        }

        @Encoding.Build
        Map build()
        {
            return this.pmap;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy