1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package org.apache.giraph.function.primitive; 19 20 /** 21 * Convenience classes holding primitive values - a reference 22 * to a mutable value. 23 * For use when lambdas need to mutate capturing primitive local variable. 24 * (since lambdas cannot capture and modify local variables) 25 */ 26 public interface PrimitiveRefs { 27 28 // Have public field for convenience, since classes have no logic inside 29 // CHECKSTYLE: stop VisibilityModifierCheck 30 31 /** 32 * Convenience class holding int value, 33 * for use when lambdas need to mutate capturing int local variable. 34 */ 35 public class IntRef { 36 /** value */ 37 public int value; 38 39 /** 40 * Constructor 41 * @param value initial value 42 */ 43 public IntRef(int value) { 44 this.value = value; 45 } 46 } 47 48 /** 49 * Convenience class holding long value, 50 * for use when lambdas need to mutate capturing long local variable. 51 */ 52 public class LongRef { 53 /** value */ 54 public long value; 55 56 /** 57 * Constructor 58 * @param value initial value 59 */ 60 public LongRef(long value) { 61 this.value = value; 62 } 63 } 64 65 /** 66 * Convenience class holding int value, 67 * for use when lambdas need to mutate capturing int local variable. 68 */ 69 public class ShortRef { 70 /** value */ 71 public short value; 72 73 /** 74 * Constructor 75 * @param value initial value 76 */ 77 public ShortRef(short value) { 78 this.value = value; 79 } 80 } 81 82 83 /** 84 * Convenience class holding float value, 85 * for use when lambdas need to mutate capturing float local variable. 86 */ 87 public class FloatRef { 88 /** value */ 89 public float value; 90 91 /** 92 * Constructor 93 * @param value initial value 94 */ 95 public FloatRef(float value) { 96 this.value = value; 97 } 98 } 99 100 /** 101 * Convenience class holding double value, 102 * for use when lambdas need to mutate capturing double local variable. 103 */ 104 public class DoubleRef { 105 /** value */ 106 public double value; 107 108 /** 109 * Constructor 110 * @param value initial value 111 */ 112 public DoubleRef(double value) { 113 this.value = value; 114 } 115 } 116 117 /** 118 * Convenience class holding object values, 119 * for use when lambdas need to mutate capturing object local variable. 120 */ 121 public class ObjRef<O> { 122 /** value */ 123 public O value; 124 125 /** 126 * Constructor 127 * @param value initial value 128 */ 129 public ObjRef(O value) { 130 this.value = value; 131 } 132 } 133 134 // CHECKSTYLE: resume VisibilityModifierCheck 135 }