*/ void Dump_Values(REBVAL *vp, REBCNT count) /* ** Dump raw values into a string buffer; ** ***********************************************************************/ { REBYTE buf[2048]; REBYTE *cp; REBCNT l, n; REBCNT *bp = (REBCNT*)vp; cp = buf; for (l = 0; l < count; l++) { cp = Form_Hex_Pad(cp, (REBCNT) bp, 8); *cp++ = ':'; *cp++ = ' '; for (n = 0; n < 4; n++) { cp = Form_Hex_Pad(cp, *bp++, 8); *cp++ = ' '; } *cp++ = '\n'; if ((cp - buf) >= 2040) break; } *cp++ = 0; Debug_Str(buf); }
*/ void Dump_Values(REBVAL *vp, REBCNT count) /* ** Print out values in raw hex; If memory is corrupted ** this function still needs to work. ** ***********************************************************************/ { REBYTE buf[2048]; REBYTE *cp; REBCNT l, n; REBCNT *bp = (REBCNT*)vp; REBYTE *type; cp = buf; for (l = 0; l < count; l++) { cp = Form_Hex_Pad(cp, (REBCNT) l, 4); *cp++ = ':'; *cp++ = ' '; type = Get_Type_Name((REBVAL*)bp); for (n = 0; n < 11; n++) { if (*type) *cp++ = *type++; else *cp++ = ' '; } *cp++ = ' '; for (n = 0; n < 4; n++) { cp = Form_Hex_Pad(cp, *bp++, 8); *cp++ = ' '; } *cp = 0; Debug_Str(buf); cp = buf; } }
// // Dump_Values: C // // Print values in raw hex; If memory is corrupted this still needs to work. // void Dump_Values(RELVAL *vp, REBCNT count) { REBYTE buf[2048]; REBYTE *cp; REBCNT l, n; REBCNT *bp = (REBCNT*)vp; const REBYTE *type; cp = buf; for (l = 0; l < count; l++) { REBVAL *val = cast(REBVAL*, bp); cp = Form_Hex_Pad(cp, l, 8); *cp++ = ':'; *cp++ = ' '; type = Get_Type_Name((REBVAL*)bp); for (n = 0; n < 11; n++) { if (*type) *cp++ = *type++; else *cp++ = ' '; } *cp++ = ' '; for (n = 0; n < sizeof(REBVAL) / sizeof(REBCNT); n++) { cp = Form_Hex_Pad(cp, *bp++, 8); *cp++ = ' '; } n = 0; if (IS_WORD(val) || IS_GET_WORD(val) || IS_SET_WORD(val)) { const REBYTE *name = STR_HEAD(VAL_WORD_SPELLING(val)); n = snprintf( s_cast(cp), sizeof(buf) - (cp - buf), " (%s)", cs_cast(name) ); } *(cp + n) = 0; Debug_Str(s_cast(buf)); cp = buf; } }
*/ void Dump_Bytes(REBYTE *bp, REBCNT limit) /* ** Dump memory into a string buffer; ** ***********************************************************************/ { #ifdef _DEBUG REBYTE buf[20480]; REBYTE str[40]; REBYTE *cp, *tp; REBYTE c; REBCNT l, n; REBCNT cnt = 0; cp = buf; for (l = 0; l < 150; l++) { cp = Form_Hex_Pad(cp, (REBCNT) bp, 8); *cp++ = ':'; *cp++ = ' '; tp = str; for (n = 0; n < 16; n++) { if (cnt++ >= limit) break; c = *bp++; cp = Form_Hex2(cp, c); if ((n & 3) == 3) *cp++ = ' '; if ((c < 32) || (c > 126)) c = '.'; *tp++ = c; } for (; n < 16; n++) { c = ' '; *cp++ = c; *cp++ = c; if ((n & 3) == 3) *cp++ = ' '; if ((c < 32) || (c > 126)) c = '.'; *tp++ = c; } *tp++ = 0; for (tp = str; *tp;) *cp++ = *tp++; *cp++ = '\n'; if (cnt >= limit) break; } *cp++ = 0; Debug_Str(buf); #endif }
*/ void Dump_Bytes(REBYTE *bp, REBCNT limit) /* ***********************************************************************/ { const max_lines = 120; REBYTE buf[2048]; REBYTE str[40]; REBYTE *cp, *tp; REBYTE c; REBCNT l, n; REBCNT cnt = 0; cp = buf; for (l = 0; l < max_lines; l++) { cp = Form_Hex_Pad(cp, (REBCNT) bp, 8); *cp++ = ':'; *cp++ = ' '; tp = str; for (n = 0; n < 16; n++) { if (cnt++ >= limit) break; c = *bp++; cp = Form_Hex2(cp, c); if ((n & 3) == 3) *cp++ = ' '; if ((c < 32) || (c > 126)) c = '.'; *tp++ = c; } for (; n < 16; n++) { c = ' '; *cp++ = c; *cp++ = c; if ((n & 3) == 3) *cp++ = ' '; if ((c < 32) || (c > 126)) c = '.'; *tp++ = c; } *tp++ = 0; for (tp = str; *tp;) *cp++ = *tp++; *cp = 0; Debug_Str(buf); if (cnt >= limit) break; cp = buf; } }