68 lines
2.0 KiB
C++
68 lines
2.0 KiB
C++
/* ----------------------------------------------------------------------------
|
|
|
|
* GTSAM Copyright 2010, Georgia Tech Research Corporation,
|
|
* Atlanta, Georgia 30332-0415
|
|
* All Rights Reserved
|
|
* Authors: Frank Dellaert, et al. (see THANKS for the full author list)
|
|
|
|
* See LICENSE for the license information
|
|
|
|
* -------------------------------------------------------------------------- */
|
|
|
|
/**
|
|
* @file IndexConditional.h
|
|
* @brief
|
|
* @author Richard Roberts
|
|
* @created Oct 17, 2010
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <gtsam/inference/Conditional.h>
|
|
#include <gtsam/inference/IndexFactor.h>
|
|
|
|
namespace gtsam {
|
|
|
|
class IndexFactor;
|
|
|
|
class IndexConditional : public ConditionalBase<Index> {
|
|
|
|
public:
|
|
|
|
typedef IndexConditional This;
|
|
typedef ConditionalBase<Index> Base;
|
|
typedef IndexFactor Factor;
|
|
typedef boost::shared_ptr<IndexConditional> shared_ptr;
|
|
|
|
/** Empty Constructor to make serialization possible */
|
|
IndexConditional() {}
|
|
|
|
/** No parents */
|
|
IndexConditional(Index j) : Base(j) {}
|
|
|
|
/** Single parent */
|
|
IndexConditional(Index j, Index parent) : Base(j, parent) {}
|
|
|
|
/** Two parents */
|
|
IndexConditional(Index j, Index parent1, Index parent2) : Base(j, parent1, parent2) {}
|
|
|
|
/** Three parents */
|
|
IndexConditional(Index j, Index parent1, Index parent2, Index parent3) : Base(j, parent1, parent2, parent3) {}
|
|
|
|
/** Constructor from a frontal variable and a vector of parents */
|
|
IndexConditional(Index j, const std::vector<Index>& parents) : Base(j, parents) {}
|
|
|
|
/** Constructor from a frontal variable and an iterator range of parents */
|
|
template<typename ITERATOR>
|
|
static shared_ptr FromRange(Index j, ITERATOR firstParent, ITERATOR lastParent) {
|
|
return Base::FromRange<This>(j, firstParent, lastParent); }
|
|
|
|
/** Named constructor from any number of frontal variables and parents */
|
|
template<typename ITERATOR>
|
|
static shared_ptr FromRange(ITERATOR firstKey, ITERATOR lastKey, size_t nrFrontals) {
|
|
return Base::FromRange<This>(firstKey, lastKey, nrFrontals); }
|
|
|
|
};
|
|
|
|
}
|