Ejemplo n.º 1
0
/*-------------------------------------------------------------------------
 * Function:	_lite_PD_mk_descriptor
 *
 * Purpose:	Build a member descriptor out of the given string.
 *
 * Return:	Success:
 *
 *		Failure:
 *
 * Programmer:	Adapted from PACT PDB
 *		Mar  5, 1996  2:06 PM EST
 *
 * Modifications:
 *    Eric Brugger, Tue Dec  8 15:16:07 PST 1998
 *    Remove unnecessary calls to lite_SC_mark, since reference count now
 *    set when allocated.
 *
 *-------------------------------------------------------------------------
 */
memdes *
_lite_PD_mk_descriptor (char *member, int defoff) {

    memdes *desc;
    char *ms, *ts, *bs, *ns, *p;
    dimdes *nd;

    desc = FMAKE(memdes, "_PD_MK_DESCRIPTOR:desc");

    /*
     * Get rid of any leading white space.
     */
    for (p = member; strchr(" \t\n\r\f", *p) != NULL; p++) /*void*/ ;

    ms = lite_SC_strsavef(p, "char*:_PD_MK_DESCRIPTOR:member");
    ts = _lite_PD_member_type(p);
    bs = _lite_PD_member_base_type(p);
    ns = _lite_PD_member_name(p);
    nd = _lite_PD_ex_dims(p, defoff, FALSE);

    desc->member      = ms;
    desc->type        = ts;
    desc->base_type   = bs;
    desc->name        = ns;
    desc->dimensions  = nd;

    desc->number      = _lite_PD_comp_num(desc->dimensions);
    desc->member_offs = -1L;
    desc->cast_offs   = -1L;
    desc->cast_memb   = NULL;
    desc->next        = NULL;

    return(desc);
}
Ejemplo n.º 2
0
int
lite_PD_write_as (PDBfile *file, char *name, char *intype, char *outtype,
		  lite_SC_byte *vr) {
   
   syment *ep;
   dimdes *dims;
   char *lname, fullpath[MAXLINE];

   strcpy(fullpath, _lite_PD_fixname(file, name));
   lname = lite_SC_firsttok(fullpath, ".");

   dims = _lite_PD_ex_dims(lname, file->default_offset, FALSE);
   ep   = _PD_write(file, name, intype, outtype, vr, dims, _append_flag);
   if (ep != NULL) {
      _lite_PD_rl_syment_d(ep);
      return(TRUE);
   } else {
      return(FALSE);
   }
}