001/*
002 * Copyright (c) 2022-2024 See AUTHORS file.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *   http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 */
017
018package com.github.tommyettinger.tantrum.juniper.distribution;
019
020import io.fury.Fury;
021import io.fury.memory.MemoryBuffer;
022import io.fury.serializer.Serializer;
023import com.github.tommyettinger.random.EnhancedRandom;
024import com.github.tommyettinger.random.distribution.ExponentialDistribution;
025
026public class ExponentialDistributionSerializer extends Serializer<ExponentialDistribution> {
027    public ExponentialDistributionSerializer(Fury fury) {
028        super(fury, ExponentialDistribution.class);
029    }
030    @Override
031    public void write(final MemoryBuffer output, ExponentialDistribution object) {
032        fury.writeRef(output, object.generator);
033        output.writeDouble(object.getParameterA());
034    }
035
036    @Override
037    public ExponentialDistribution read(MemoryBuffer input) {
038        return new ExponentialDistribution((EnhancedRandom) fury.readRef(input), input.readDouble());
039    }
040}