示例#1
0
static int lengthOfAttrs(PT_Attrs attrs)
{
  int length = 0;

  while (PT_hasAttrsHead(attrs)) {
    length += lengthOfAttr(PT_getAttrsHead(attrs)) + 2;
    attrs = PT_getAttrsTail(attrs);
  }

  return length > 0 ? length - 2 : 0; 
}
示例#2
0
static int 
yieldAttrs(PT_Attrs attrs, int idx, char *buf, int bufSize)
{
  assert(idx <= bufSize);

  while (PT_hasAttrsHead(attrs)) {
    idx = yieldAttr(PT_getAttrsHead(attrs), idx, buf, bufSize);
    attrs = PT_getAttrsTail(attrs);
    if (PT_hasAttrsHead(attrs)) {
      buf[idx++] = ',';
      buf[idx++] = ' ';
    }
  }
   
  assert(idx <= bufSize);
  return idx;
}
示例#3
0
static SDF_AttributeList PTAttrsToSDFAttributeList(PT_Attrs ptAttrs)
{
  SDF_AttributeList result;
  PT_Attr ptAttr;
  SDF_Attribute sdfAttribute;

  ptAttr = PT_getAttrsHead(ptAttrs);
  sdfAttribute = PTAttrToSDFAttribute(ptAttr);

  if (PT_isAttrsSingle(ptAttrs)) {
    result = SDF_makeAttributeListSingle(sdfAttribute);
  }
  else {
    PT_Attrs ptAttrsTail = PT_getAttrsTail(ptAttrs);
    result = PTAttrsToSDFAttributeList(ptAttrsTail);

    result = SDF_makeAttributeListMany(sdfAttribute,
				       SDF_makeLayoutEmpty(),
				       ",", /* FIXME in ApiGen!! */
				       SDF_makeLayoutEmpty(),
				       result);
  }
  return result;
}