1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 int
 saf_declare_default_coords(SAF_ParMode pmode,   /* the parallel mode */
                            SAF_Set *base,       /* the base space set whose default coordinates are being declared */
                            SAF_Field *field     /* the field to serve as the default coordinates */
                            )
 {
     SAF_ENTER(saf_declare_default_coords, SAF_PRECONDITION_ERROR);

     SAF_REQUIRE(_saf_valid_pmode(pmode), SAF_LOW_CHK_COST, SAF_PRECONDITION_ERROR,
                 _saf_errmsg("PMODE must be valid"));
     if (!_saf_is_participating_proc(pmode)) SAF_RETURN(-1);

     SAF_REQUIRE(SS_SET(base), SAF_LOW_CHK_COST, SAF_PRECONDITION_ERROR,
                 _saf_errmsg("BASE must be a valid set handle"));
     SAF_REQUIRE(SS_FIELD(field), SAF_LOW_CHK_COST, SAF_PRECONDITION_ERROR,
                 _saf_errmsg("FIELD must be a valid field handle"));

     SAF_ASSERT(SS_FIELD(field)->is_coord_field, SAF_LOW_CHK_COST, SAF_ASSERTION_ERROR,
                _saf_errmsg("the specified field must be a coordinate field"));

     /* The field's base space must be `base' */
     SAF_ASSERT(SS_PERS_EQ(SS_FIELD_P(field,base_space), base), SAF_LOW_CHK_COST, SAF_ASSERTION_ERROR,
                _saf_errmsg("the field to be used as default coord must be defined on BASE"));

     /* Set the default coordinate field on the set */
     SAF_DIRTY(base, pmode);
     SS_SET(base)->dflt_coordfld = *field;

     SAF_LEAVE(SAF_SUCCESS);
 }