___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; }
___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); }