Actual source code: isimpl.h

      1: /*
      2:     Index sets for scatter-gather type operations in vectors
      3: and matrices.

      5: */

      7: #if !defined(_IS_H)
      8: #define _IS_H

     10:  #include petscis.h

     12: struct _ISOps {
     13:   PetscErrorCode (*getsize)(IS,PetscInt*);
     14:   PetscErrorCode (*getlocalsize)(IS,PetscInt*);
     15:   PetscErrorCode (*getindices)(IS,PetscInt**);
     16:   PetscErrorCode (*restoreindices)(IS,PetscInt**);
     17:   PetscErrorCode (*invertpermutation)(IS,PetscInt,IS*);
     18:   PetscErrorCode (*sortindices)(IS);
     19:   PetscErrorCode (*sorted)(IS,PetscTruth *);
     20:   PetscErrorCode (*duplicate)(IS,IS *);
     21:   PetscErrorCode (*destroy)(IS);
     22:   PetscErrorCode (*view)(IS,PetscViewer);
     23:   PetscErrorCode (*identity)(IS,PetscTruth*);
     24: };

     26: struct _p_IS {
     27:   PETSCHEADER(struct _ISOps);
     28:   PetscTruth   isperm;          /* if is a permutation */
     29:   PetscInt     max,min;         /* range of possible values */
     30:   void         *data;
     31:   PetscTruth   isidentity;
     32: };

     35: #endif