Beispiel #1
0
___ERR_CODE QString_to_SCMOBJ (QString src, ___SCMOBJ* dst, int arg_num)
{
  unsigned int n = src.length ();
  ___SCMOBJ r = ___alloc_scmobj (___sSTRING, n<<___LCS, ___STILL);

  if (___FIXNUMP(r))
    {
      *dst = ___FAL;
      return ___CTOS_HEAP_OVERFLOW_ERR+arg_num;
    }

  while (n-- > 0)
    {
      ___UCS4 c = src.ref (n).unicode ();
      if (c > ___MAX_CHR)
        {
          ___release_scmobj (r);
          *dst = ___FAL;
          return ___CTOS_UCS2STRING_ERR+arg_num;
        }
      ___STRINGSET(r,___FIX(n),___CHR(c))
    }

  *dst = r;

  return ___NO_ERR;
}
Beispiel #2
0
___ERR_CODE SCMOBJ_to_QString (___SCMOBJ src, QString* dst, int arg_num)
{
  ___SCMOBJ ___temp; // used by ___STRINGP

  if (!___STRINGP(src))
    return ___STOC_UCS2STRING_ERR+arg_num;

  unsigned int n = ___INT(___STRINGLENGTH(src));
  QString r;

  while (n-- > 0)
    {
      ___UCS4 c = ___INT(___STRINGREF(src,___FIX(n)));
      if (c > 0xffff) // UCS-2 is 16 bits
        return ___STOC_UCS2STRING_ERR+arg_num;
      r.ref (n) = QChar (c);
    }

  *dst = r;

  return ___NO_ERR;
}
//static void
//sigqueue_release (struct sigqueue*q) {
static ___SCMOBJ
sigqueue_release (void*q) {
    //fprintf(stderr,"releasing %p\n",q);
    free(q);
    return ___FIX(___NO_ERR);
}