75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
/*******************************************************************************
|
|
* Copyright (c) 2015-2018 Skymind, Inc.
|
|
*
|
|
* This program and the accompanying materials are made available under the
|
|
* terms of the Apache License, Version 2.0 which is available at
|
|
* https://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.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
******************************************************************************/
|
|
|
|
//
|
|
// @author raver119@gmail.com
|
|
//
|
|
|
|
#ifndef LIBND4J_NDINDEX_H
|
|
#define LIBND4J_NDINDEX_H
|
|
|
|
#include <pointercast.h>
|
|
#include <vector>
|
|
#include <dll.h>
|
|
|
|
namespace nd4j {
|
|
class ND4J_EXPORT NDIndex {
|
|
protected:
|
|
std::vector<Nd4jLong> _indices;
|
|
Nd4jLong _stride = 1;
|
|
public:
|
|
NDIndex() = default;
|
|
~NDIndex() = default;
|
|
|
|
bool isAll();
|
|
bool isPoint();
|
|
virtual bool isInterval();
|
|
|
|
std::vector<Nd4jLong>& getIndices();
|
|
Nd4jLong stride();
|
|
|
|
static NDIndex* all();
|
|
static NDIndex* point(Nd4jLong pt);
|
|
static NDIndex* interval(Nd4jLong start, Nd4jLong end, Nd4jLong stride = 1);
|
|
};
|
|
|
|
class ND4J_EXPORT NDIndexAll : public NDIndex {
|
|
public:
|
|
NDIndexAll();
|
|
virtual bool isInterval();
|
|
~NDIndexAll() = default;
|
|
};
|
|
|
|
|
|
class ND4J_EXPORT NDIndexPoint : public NDIndex {
|
|
public:
|
|
NDIndexPoint(Nd4jLong point);
|
|
virtual bool isInterval();
|
|
~NDIndexPoint() = default;
|
|
};
|
|
|
|
class ND4J_EXPORT NDIndexInterval : public NDIndex {
|
|
public:
|
|
NDIndexInterval(Nd4jLong start, Nd4jLong end, Nd4jLong stride = 1);
|
|
virtual bool isInterval();
|
|
~NDIndexInterval() = default;
|
|
};
|
|
}
|
|
|
|
|
|
|
|
#endif //LIBND4J_NDINDEX_H
|