|
From: | Peter Shook |
Subject: | Re: Lout Internals Anyone? |
Date: | Sat, 26 Jul 2003 21:25:40 -0400 |
User-agent: | Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) |
Salman Khilji wrote:
I have spent around 20 hours looking at just this definition: #define Append(x, y, dir) \ ( zz_res = (x), zz_hold = (y), \ zz_hold == nilobj ? zz_res : \ zz_res == nilobj ? zz_hold : \ ( zz_tmp = pred(zz_hold, dir), \ pred(zz_hold, dir) = pred(zz_res, dir), \ succ(pred(zz_res, dir), dir) = zz_hold, \ pred(zz_res, dir) = zz_tmp, \ succ(zz_tmp, dir) = zz_res \ ) \ )
I'm only guessing, but I believe it must be a circular doubly link list. Use gdb to check if the pointers look something like this:
@SysInclude { tbl } @SysInclude { diag } @SysInclude { doc } macro hsep { ||3f } macro vsep { //2f } extend @DiagSetup @Geometry macro so { { 0 .5f } } extend @DiagSetup @Geometry macro po { { 0 .5f } } extend @DiagSetup @Diag macro obj { @Node outline { box } vstrut { 1f } hsize { 1f } alabel { s } clabel { p } } extend @DiagSetup @Diag macro lab { @Node outlinestyle { noline } margin { .2f } vstrut { 1f } hsize { 1f } } @Document @InitialFont { Courier Base 10p } @PageHeaders { None } // @Text @Begin @PP @Diag { { H:: lab { h } hsep lab {} hsep # T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } # @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP t = pred(h) @PP @Diag { { H:: lab { h } hsep lab {} hsep T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP pred(h) = pred(r) @PP @Diag { { H:: lab { h } hsep lab {} hsep T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } bias { 2.4f } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP succ(pred(r)) = h @PP @Diag { { H:: lab { h } hsep lab {} hsep T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } bias { 2.4f } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } bias { 2.4f } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP pred(r) = t @PP @Diag { { H:: lab { h } hsep lab {} hsep T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } bias { 2.4f } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP succ(t) = r @PP @Diag { { H:: lab { h } hsep lab {} hsep T:: lab { t } vsep A:: obj {} hsep B:: obj {} hsep C:: obj {} } ||6f { R:: lab { r } vsep D:: obj {} hsep E:: obj {} } vsep @Arrow from { H } to { A } @Arrow from { T } to { C } @Arrow from { R } to { D } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @Arrow from { address@hidden ++ so } to { address@hidden ++ so } @UWrapCurveArrow from { address@hidden ++ so } to { address@hidden ++ so } @DWrapCurveArrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } @Arrow from { address@hidden -- po } to { address@hidden -- po } } @DP @End @Text
[Prev in Thread] | Current Thread | [Next in Thread] |