1 #ifndef CPPAD_CG_CUSTOM_POSITION_INCLUDED     2 #define CPPAD_CG_CUSTOM_POSITION_INCLUDED    29     std::vector<std::vector<bool> > elFilter_;
    31     std::vector<std::set<size_t> > elements_;
    35         filterDefined_(
false),
    39     template<
class VectorSize>
    41                           const VectorSize& rows,
    42                           const VectorSize& cols) :
    44         elFilter_(m, std::vector<bool>(n, 
false)),
    46         CPPADCG_ASSERT_KNOWN(rows.size() == cols.size(), 
"The number of row indexes must be the same as the number of column indexes.")
    47         for (
size_t i = 0; i < rows.size(); i++) {
    48             elFilter_[rows[i]][cols[i]] = 
true;
    52     template<
class VectorSet>
    54                           const VectorSet& elements) :
    56         elFilter_(m, std::vector<bool>(n, 
false)),
    58         CPPADCG_ASSERT_KNOWN(elements.size() <= m, 
"Invalid number of rows.")
    60         for (
size_t i = 0; i < elements.size(); i++) {
    61             for (
size_t it : elements[i]) {
    62                 elFilter_[i][it] = 
true;
    67     inline bool isFilterDefined()
 const {
    68         return filterDefined_;
    71     inline bool isFullDefined()
 const {
    75     inline void setFullElements(
const std::vector<std::set<size_t> >& elements) {
    81     inline const std::vector<std::set<size_t> >& getFullElements()
const {
    85     inline void filter(
CppAD::vector<std::set<size_t> >& sparsity)
 const {
    90     inline void filter(std::vector<std::set<size_t> >& sparsity)
 const {
    95     inline void filter(
ArrayView<std::set<size_t> >& sparsity)
 const {
    99         std::set<size_t>::iterator it, currentIt;
   101         for (
size_t i = 0; i < sparsity.size(); i++) {
   102             it = sparsity[i].begin();
   103             while (it != sparsity[i].end()) {
   106                 if (!elFilter_[i][*currentIt]) {
   107                     sparsity[i].erase(currentIt);