lout-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lout Internals Anyone?


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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]