yum-mirror/VkFFT
git clone https://git.yummers.dev/yum-mirror/VkFFT
ba7001c
develop
1//------------------------------------------------------------------------------------------------------------------------------------------------------------- 2// 3// Foundation/NSRange.hpp 4// 5// Copyright 2020-2021 Apple Inc. 6// 7// Licensed under the Apache License, Version 2.0 (the "License"); 8// you may not use this file except in compliance with the License. 9// You may obtain a copy of the License at 10// 11// http://www.apache.org/licenses/LICENSE-2.0 12// 13// Unless required by applicable law or agreed to in writing, software 14// distributed under the License is distributed on an "AS IS" BASIS, 15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16// See the License for the specific language governing permissions and 17// limitations under the License. 18// 19//------------------------------------------------------------------------------------------------------------------------------------------------------------- 20 21#pragma once 22 23//------------------------------------------------------------------------------------------------------------------------------------------------------------- 24 25#include "NSDefines.hpp" 26#include "NSTypes.hpp" 27 28//------------------------------------------------------------------------------------------------------------------------------------------------------------- 29 30namespace NS 31{ 32struct Range 33{ 34static Range Make (UInteger loc ,UInteger len ); 35 36Range (UInteger loc ,UInteger len ); 37 38bool Equal (const Range & range )const ; 39bool LocationInRange (UInteger loc )const ; 40UInteger Max ()const ; 41 42UInteger location ; 43UInteger length ; 44}_NS_PACKED ; 45} 46 47//------------------------------------------------------------------------------------------------------------------------------------------------------------- 48 49_NS_INLINE NS ::Range ::Range (UInteger loc ,UInteger len ) 50 :location (loc ) 51 ,length (len ) 52{ 53} 54 55//------------------------------------------------------------------------------------------------------------------------------------------------------------- 56 57_NS_INLINE NS ::Range NS ::Range ::Make (UInteger loc ,UInteger len ) 58{ 59return Range (loc ,len ); 60} 61 62//------------------------------------------------------------------------------------------------------------------------------------------------------------- 63 64_NS_INLINE boolNS ::Range ::Equal (const Range & range )const 65{ 66return (location == range .location )&& (length == range .length ); 67} 68 69//------------------------------------------------------------------------------------------------------------------------------------------------------------- 70 71_NS_INLINE boolNS ::Range ::LocationInRange (UInteger loc )const 72{ 73return (!(loc < location ))&& ((loc - location )< length ); 74} 75 76//------------------------------------------------------------------------------------------------------------------------------------------------------------- 77 78_NS_INLINE NS ::UInteger NS ::Range ::Max ()const 79{ 80return location + length ; 81} 82 83//-------------------------------------------------------------------------------------------------------------------------------------------------------------