From 0f32001b466def0cee753557ad6e296cf15e2504 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Wed, 23 Sep 2026 16:35:50 -0700 Subject: Keyboard shortcuts Fast forward/reverse, pick-a-frame. Shorter type names. --- .../main/java/com/seaofnodes/simple/type/TypeFunPtr.java | 5 ++++- .../src/main/java/com/seaofnodes/simple/type/TypeMem.java | 4 ++++ .../main/java/com/seaofnodes/simple/type/TypeMemPtr.java | 9 ++++++--- .../main/java/com/seaofnodes/simple/type/TypeStruct.java | 14 ++++++++++++-- 4 files changed, 26 insertions(+), 6 deletions(-) (limited to 'chapter22/src/main/java/com') diff --git a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java index abfcf1e3..e6701360 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java @@ -81,12 +81,15 @@ public class TypeFunPtr extends TypeNil { return _sig == ptr._sig && _ret == ptr._ret && _fidxs == ptr._fidxs && super.eq(ptr); } - @Override public String str() { return print(new SB()).toString(); } + @Override public String str() { return print(new SB()).toString(); + } @Override public SB print(SB sb) { return _print(sb,false,true); } public SB print(SB sb, boolean n) { return _print(sb,false,n); } @Override public SB gprint(SB sb) { return _print(sb,true ,true); } private static SB _print(SB sb, boolean g, Type t) { return g ? t.gprint(sb) : t.print(sb); } private SB _print(SB sb, boolean g, boolean n) { + if( this==BOT ) return sb.p("FunBot"); + if( _nil==0 && _sig==TypeTuple.TOP && _ret==Type.TOP && _fidxs==0 ) return sb.p("FunTop"); sb.p(x()).p("{ "); if( _sig._types!=null ) for( Type t : _sig._types ) diff --git a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMem.java b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMem.java index 63fb30ce..74bcbd8f 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMem.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMem.java @@ -61,11 +61,15 @@ public class TypeMem extends Type { } @Override public SB print(SB sb) { + if( this==BOT ) return sb.p("MemBot"); + if( this==TOP ) return sb.p("MemTop"); sb.p("#"); if( _alias==0 ) return sb.p(_t._type==TTOP ? "TOP" : "BOT"); return _t.print(sb.p(_alias).p(":")); } @Override public SB gprint(SB sb) { + if( this==BOT ) return sb.p("MemBot"); + if( this==TOP ) return sb.p("MemTop"); sb.p("#"); if( _alias==0 ) return sb.p(_t._type==TTOP ? "TOP" : "BOT"); return _t.gprint(sb.p(_alias).p(":")); diff --git a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java index 78605e81..93f5a119 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java @@ -92,19 +92,22 @@ public class TypeMemPtr extends TypeNil { } @Override public String str() { + if( this==BOT ) return "PtrBot"; + if( this==TOP ) return "PtrTop"; if( this== NOTBOT) return "*void"; - if( this== BOT) return "*void?"; return x()+"*"+_obj.str()+q(); } @Override public SB print(SB sb) { + if( this==BOT ) return sb.p("PtrBot"); + if( this==TOP ) return sb.p("PtrTop"); if( this== NOTBOT) return sb.p("*void"); - if( this== BOT) return sb.p("*void?"); return _obj.print(sb.p(x()).p("*")).p(q()); } @Override public SB gprint(SB sb) { + if( this==BOT ) return sb.p("PtrBot"); + if( this==TOP ) return sb.p("PtrTop"); if( this== NOTBOT) return sb.p("*void"); - if( this== BOT) return sb.p("*void?"); return _obj.gprint(sb.p(x()).p("*")).p(q()); } } diff --git a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeStruct.java b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeStruct.java index 66a37d41..cde0bc93 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/type/TypeStruct.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/type/TypeStruct.java @@ -239,6 +239,8 @@ public class TypeStruct extends Type { @Override public SB print(SB sb) { + if( this==BOT ) return sb.p("StructBot"); + if( this==TOP ) return sb.p("StructTop"); if( _con!=TypeConAry.BOT ) return sb.p(_con.str()); sb.p(_name); if( _fields == null || isAry() ) // Forward reference struct, just print the name @@ -248,9 +250,17 @@ public class TypeStruct extends Type { f._type.print(sb).p(f._final ? " " : " !").p(f._fname).p("; "); return sb.p("}"); } - @Override public SB gprint( SB sb ) { return sb.p(_name); } + @Override public SB gprint( SB sb ) { + if( this==BOT ) return sb.p("StructBot"); + if( this==TOP ) return sb.p("StructTop"); + return sb.p(_name); + } - @Override public String str() { return _con==TypeConAry.BOT ? _name : _con.str(); } + @Override public String str() { + if( this==BOT ) return "StructBot"; + if( this==TOP ) return "StructTop"; + return _con==TypeConAry.BOT ? _name : _con.str(); + } public boolean isAry() { return _fields.length>=2 && _fields[_fields.length-1]._fname=="[]"; } -- cgit v1.2.3