/* * @license Apache-2.0 * * Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* eslint-disable max-lines */ // TypeScript Version: 4.1 /// import { typedndarray, genericndarray, complexndarray } from '@stdlib/types/ndarray'; import { MultiSlice, Slice } from '@stdlib/types/slice'; import { ComplexLike } from '@stdlib/types/complex'; /** * Interface defining function options. */ interface Options { /** * Boolean indicating whether to enforce strict bounds checking (default: true). */ strict?: boolean; } /** * Slice argument. */ type SliceArgument = Slice | number | null | undefined; /** * Typed ndarray element. */ type Element = U extends typedndarray ? T : never; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param s - slice argument * @param options - function options * @param options.strict - boolean indicating whether to enforce strict bounds checking * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var MultiSlice = require( '@stdlib/slice/multi' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'complex128' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * var s = new MultiSlice( s0, s1 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s ); * // returns * * var bool = ( y === x ); * // returns true * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'complex128' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, [ s0, s1 ] ); * // returns * * var bool = ( y === x ); * // returns true */ declare function fillSlice( x: T, value: number | ComplexLike, s: MultiSlice | ArrayLike, options?: Options ): T; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param args - slice and option arguments * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'complex128' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s0, s1 ); * // returns * * var bool = ( y === x ); * // returns true */ declare function fillSlice( x: T, value: number | ComplexLike, ...args: Array ): T; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param s - slice argument * @param options - function options * @param options.strict - boolean indicating whether to enforce strict bounds checking * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var MultiSlice = require( '@stdlib/slice/multi' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'float64' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * var s = new MultiSlice( s0, s1 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'float64' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, [ s0, s1 ] ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] */ declare function fillSlice = typedndarray>( x: U, value: Element, s: MultiSlice | ArrayLike, options?: Options ): U; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param args - slice and option arguments * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'float64' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s0, s1 ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] */ declare function fillSlice = typedndarray>( x: U, value: Element, ...args: Array ): U; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param s - slice argument * @param options - function options * @param options.strict - boolean indicating whether to enforce strict bounds checking * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var MultiSlice = require( '@stdlib/slice/multi' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'generic' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * var s = new MultiSlice( s0, s1 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'generic' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, [ s0, s1 ] ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] */ declare function fillSlice( x: genericndarray, value: U, s: MultiSlice | ArrayLike, options?: Options ): genericndarray; /** * Fills an input ndarray view with a specified value. * * @param x - input ndarray * @param value - fill value * @param args - slice and option arguments * @returns input ndarray * * @example * var zeros = require( '@stdlib/ndarray/zeros' ); * var MultiSlice = require( '@stdlib/slice/multi' ); * var Slice = require( '@stdlib/slice/ctor' ); * var ndarray2array = require( '@stdlib/ndarray/to-array' ); * * var x = zeros( [ 3, 4 ], { * 'dtype': 'generic' * }); * * // Specify the fill region: * var s0 = new Slice( 1, 3 ); * var s1 = new Slice( 2, 4 ); * * // Fill the slice: * var y = fillSlice( x, 5.0, s0, s1 ); * // returns * * var bool = ( y === x ); * // returns true * * var arr = ndarray2array( x ); * // returns [ [ 0, 0, 0, 0 ], [ 0, 0, 5, 5 ], [ 0, 0, 5, 5 ] ] */ declare function fillSlice( x: genericndarray, value: U, ...args: Array ): genericndarray; // EXPORTS // export = fillSlice;