1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 int
 saf_describe_algebraic(SAF_ParMode pmode,
                        SAF_Algebraic *alg,      /* Algebraic to describe */
                        char **name,             /* If non-null, on return points to malloc'd algebraic name if any */
                        char **url,              /* If non-null, on return points to malloc'd URL if any */
                        hbool_t *indirect        /* If non-null, on return points to non-zero if type is indirect */
                        )
 {
     SAF_ENTER(saf_describe_algebraic, SAF_PRECONDITION_ERROR);

     if (!_saf_is_participating_proc(pmode)) SAF_RETURN(-1);
     SAF_REQUIRE(SS_ALGEBRAIC(alg), SAF_LOW_CHK_COST, SAF_PRECONDITION_ERROR,
                 _saf_errmsg("ALG must be a valid algebraic handle"));

     _saf_setupReturned_string(name, ss_string_ptr(SS_ALGEBRAIC_P(alg,name)));
     _saf_setupReturned_string(url, ss_string_ptr(SS_ALGEBRAIC_P(alg,url)));
     if (indirect) *indirect = SS_ALGEBRAIC(alg)->indirect;

     SAF_LEAVE(SAF_SUCCESS);
 }