github.com/richardwilkes/toolbox@v1.121.0/xmath/geom/visibility/array.go (about)

     1  // Copyright (c) 2016-2024 by Richard A. Wilkes. All rights reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the Mozilla Public
     4  // License, version 2.0. If a copy of the MPL was not distributed with
     5  // this file, You can obtain one at http://mozilla.org/MPL/2.0/.
     6  //
     7  // This Source Code Form is "Incompatible With Secondary Licenses", as
     8  // defined by the Mozilla Public License, version 2.0.
     9  
    10  package visibility
    11  
    12  type array struct {
    13  	data []int
    14  }
    15  
    16  func (a *array) size() int {
    17  	return len(a.data)
    18  }
    19  
    20  func (a *array) elem(index int) int {
    21  	return a.data[index]
    22  }
    23  
    24  func (a *array) set(index, value int) {
    25  	a.data[index] = value
    26  }
    27  
    28  func (a *array) pop() int {
    29  	v := a.data[len(a.data)-1]
    30  	a.data = a.data[:len(a.data)-1]
    31  	return v
    32  }
    33  
    34  func (a *array) push(v int) {
    35  	a.data = append(a.data, v)
    36  }