home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 November / PCO_1198.ISO / filesbbs / os2 / netrexx.arj / NETREXX.ZIP / NetRexx / netrexx / lang / RexxTrace.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-01  |  6.8 KB  |  453 lines

  1. package netrexx.lang;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Vector;
  5.  
  6. public final class RexxTrace {
  7.    private static final Rexx $01 = Rexx.toRexx("*=*");
  8.    private static final Rexx $02 = new Rexx(' ');
  9.    private static final Rexx $03 = Rexx.toRexx("*-*");
  10.    private static final Rexx $04 = new Rexx('>');
  11.    private static final Rexx $05 = new Rexx('"');
  12.    private static final Rexx $06 = Rexx.toRexx("---");
  13.    // $FF: renamed from: $0 java.lang.String
  14.    private static final String field_0 = "RexxTrace.nrx";
  15.    public static final int OFF = 0;
  16.    public static final int VAR = 1;
  17.    public static final int METHODS = 2;
  18.    public static final int ALL = 3;
  19.    public static final int RESULTS = 4;
  20.    public static final int TERMS = 5;
  21.    public static final int OPS = 6;
  22.    private static final Rexx levelwords = Rexx.toRexx("off var methods all results");
  23.    private static final String nulltrace = "[null]";
  24.    private int level;
  25.    private boolean context;
  26.    private int width;
  27.    private int lastline;
  28.    private String programname;
  29.    private PrintStream tracestream;
  30.    private String[] varnames;
  31.    private static Thread lastthread = null;
  32.    private static String lastprogramname = "";
  33.    private static Object threadlock = new Object();
  34.  
  35.    public RexxTrace(int var1) {
  36.       this(var1, System.err, "?");
  37.    }
  38.  
  39.    public RexxTrace(int var1, PrintStream var2) {
  40.       this(var1, var2, "?");
  41.    }
  42.  
  43.    public RexxTrace(int var1, PrintStream var2, String var3) {
  44.       this.level = 0;
  45.       this.context = true;
  46.       this.varnames = new String[0];
  47.       this.width = String.valueOf(var1).length();
  48.       this.tracestream = var2;
  49.       this.programname = var3;
  50.    }
  51.  
  52.    public RexxTrace(RexxTrace var1) {
  53.       this.level = 0;
  54.       this.context = true;
  55.       this.varnames = new String[0];
  56.       this.level = var1.level;
  57.       this.width = var1.width;
  58.       this.lastline = var1.lastline;
  59.       this.tracestream = var1.tracestream;
  60.       this.programname = var1.programname;
  61.       this.varnames = var1.varnames;
  62.       this.context = var1.context;
  63.    }
  64.  
  65.    public Rexx levelword() {
  66.       return levelwords.word(new Rexx(this.level + 1));
  67.    }
  68.  
  69.    public void newlevel(int var1) {
  70.       this.level = var1;
  71.       if (this.level == 0) {
  72.          this.lastline = 0;
  73.       }
  74.  
  75.    }
  76.  
  77.    public boolean getContext() {
  78.       return this.context;
  79.    }
  80.  
  81.    public void setContext(boolean var1) {
  82.       this.context = var1;
  83.    }
  84.  
  85.    public void modnames(String[] var1, String[] var2) {
  86.       int var4 = 0;
  87.       boolean var5 = false;
  88.       Object var6 = null;
  89.       boolean var7 = false;
  90.       if (this.level == 0) {
  91.          this.level = 1;
  92.       }
  93.  
  94.       if (var1 == null) {
  95.          var1 = new String[0];
  96.       }
  97.  
  98.       if (var2 == null) {
  99.          var2 = new String[0];
  100.       }
  101.  
  102.       Vector var3 = new Vector(this.varnames.length + var1.length);
  103.       int var8 = var1.length;
  104.  
  105.       for(int var12 = 0; var8 > 0; ++var12) {
  106.          var3.addElement(var1[var12]);
  107.          --var8;
  108.       }
  109.  
  110.       int var9 = this.varnames.length;
  111.  
  112.       for(int var14 = 0; var9 > 0; ++var14) {
  113.          String var15 = this.varnames[var14];
  114.          int var10 = var1.length;
  115.          var4 = 0;
  116.  
  117.          label47:
  118.          while(true) {
  119.             if (var10 <= 0) {
  120.                int var11 = var2.length;
  121.  
  122.                for(int var16 = 0; var11 > 0; ++var16) {
  123.                   if (var2[var16].equals(var15)) {
  124.                      break label47;
  125.                   }
  126.  
  127.                   --var11;
  128.                }
  129.  
  130.                var3.addElement(var15);
  131.                break;
  132.             }
  133.  
  134.             if (var1[var4].equals(var15)) {
  135.                break;
  136.             }
  137.  
  138.             --var10;
  139.             ++var4;
  140.          }
  141.  
  142.          --var9;
  143.       }
  144.  
  145.       this.varnames = new String[var3.size()];
  146.       var3.copyInto(this.varnames);
  147.    }
  148.  
  149.    public void traceclause(int var1, String[] var2) {
  150.       this.traceclause(var1, var2, 3, (String[])null);
  151.    }
  152.  
  153.    public void traceclause(int var1, String[] var2, int var3) {
  154.       this.traceclause(var1, var2, var3, (String[])null);
  155.    }
  156.  
  157.    public void traceclause(int var1, String[] var2, int var3, String[] var4) {
  158.       int var5 = 0;
  159.       Object var6 = null;
  160.       boolean var7 = false;
  161.       Object var8 = null;
  162.       boolean var9 = false;
  163.       if (this.level >= var3) {
  164.          if (var3 == 1 && this.level < 3) {
  165.             if (var4 == null) {
  166.                return;
  167.             }
  168.  
  169.             int var10 = var4.length;
  170.             var5 = 0;
  171.  
  172.             label127:
  173.             while(true) {
  174.                if (var10 <= 0) {
  175.                   return;
  176.                }
  177.  
  178.                String var16 = var4[var5];
  179.                int var11 = this.varnames.length;
  180.  
  181.                for(int var17 = 0; var11 > 0; ++var17) {
  182.                   if (this.varnames[var17].equals(var16)) {
  183.                      break label127;
  184.                   }
  185.  
  186.                   --var11;
  187.                }
  188.  
  189.                --var10;
  190.                ++var5;
  191.             }
  192.          }
  193.  
  194.          Object var21 = threadlock;
  195.          synchronized(var21){}
  196.  
  197.          try {
  198.             if (this.context) {
  199.                this.showContext();
  200.             }
  201.  
  202.             Rexx var18;
  203.             if (this.lastline == var1) {
  204.                var18 = (new Rexx(' ')).copies(new Rexx(this.width));
  205.             } else {
  206.                var18 = (new Rexx(var1)).right(new Rexx(this.width));
  207.                this.lastline = var1 + var2.length - 1;
  208.             }
  209.  
  210.             var18 = var18.OpCcblank((RexxSet)null, $01);
  211.             int var12 = var2.length - 1;
  212.  
  213.             for(int var20 = 0; var20 <= var12; ++var20) {
  214.                this.tracestream.println($02.OpCc((RexxSet)null, var18).OpCcblank((RexxSet)null, Rexx.toRexx(var2[var20])));
  215.                var18 = (new Rexx(var1 + var20 + 1)).right(new Rexx(this.width)).OpCcblank((RexxSet)null, $03);
  216.             }
  217.          } catch (Throwable var14) {
  218.             throw var14;
  219.          }
  220.  
  221.       }
  222.    }
  223.  
  224.    private void traceresult(int var1, Rexx var2, char var3, String var4) {
  225.       Object var5 = null;
  226.       int var6 = 0;
  227.       Object var7 = null;
  228.       Object var8 = null;
  229.       boolean var9 = false;
  230.       if (this.level < 4) {
  231.          if (this.level == 0) {
  232.             return;
  233.          }
  234.  
  235.          String var15 = var4.toLowerCase();
  236.          int var10 = this.varnames.length;
  237.          var6 = 0;
  238.  
  239.          while(true) {
  240.             if (var10 <= 0) {
  241.                return;
  242.             }
  243.  
  244.             if (this.varnames[var6].equals(var15)) {
  245.                break;
  246.             }
  247.  
  248.             --var10;
  249.             ++var6;
  250.          }
  251.       }
  252.  
  253.       Object var21 = threadlock;
  254.       synchronized(var21){}
  255.  
  256.       try {
  257.          if (this.context) {
  258.             this.showContext();
  259.          }
  260.  
  261.          Rexx var17;
  262.          if (this.lastline == var1) {
  263.             var17 = (new Rexx(' ')).copies(new Rexx(this.width));
  264.          } else {
  265.             var17 = (new Rexx(var1)).right(new Rexx(this.width));
  266.             this.lastline = var1;
  267.          }
  268.  
  269.          var17 = var17.OpCcblank((RexxSet)null, $04).OpCc((RexxSet)null, new Rexx(var3)).OpCc((RexxSet)null, $04);
  270.          if (!var4.equals("")) {
  271.             var17 = var17.OpCcblank((RexxSet)null, Rexx.toRexx(var4));
  272.          }
  273.  
  274.          if (var2 == null) {
  275.             this.tracestream.println($02.OpCc((RexxSet)null, var17).OpCcblank((RexxSet)null, Rexx.toRexx("[null]")));
  276.          } else {
  277.             char[] var19 = Rexx.tochararray(var2);
  278.             int var12 = var19.length - 1;
  279.  
  280.             for(int var20 = 0; var20 <= var12; ++var20) {
  281.                if (var19[var20] < ' ') {
  282.                   if (var19[var20] == '\t') {
  283.                      var19[var20] = ' ';
  284.                   } else {
  285.                      var19[var20] = '?';
  286.                   }
  287.                }
  288.             }
  289.  
  290.             this.tracestream.println($02.OpCc((RexxSet)null, var17).OpCcblank((RexxSet)null, $05).OpCc((RexxSet)null, Rexx.toRexx(var19)).OpCc((RexxSet)null, $05));
  291.          }
  292.       } catch (Throwable var14) {
  293.          throw var14;
  294.       }
  295.  
  296.    }
  297.  
  298.    public void showContext() {
  299.       Thread var1 = Thread.currentThread();
  300.       if (lastthread != var1 || !lastprogramname.equals(this.programname)) {
  301.          Rexx var2 = (new Rexx(' ')).copies(new Rexx(this.width)).OpCcblank((RexxSet)null, $06);
  302.          String var3 = var1.getName();
  303.          String var4 = var1.getThreadGroup().getName();
  304.          if (!var4.equals("main")) {
  305.             var3 = var3 + "," + var4;
  306.          }
  307.  
  308.          if (var3.equals("main")) {
  309.             var3 = "";
  310.          } else {
  311.             var3 = " [" + var3 + "]";
  312.          }
  313.  
  314.          this.tracestream.println($02.OpCc((RexxSet)null, var2).OpCcblank((RexxSet)null, Rexx.toRexx(this.programname)).OpCc((RexxSet)null, Rexx.toRexx(var3)));
  315.          lastthread = var1;
  316.          lastprogramname = this.programname;
  317.          this.lastline = 0;
  318.       }
  319.    }
  320.  
  321.    public char tracechar(int var1, char var2, char var3, int var4, String var5) {
  322.       if (this.level < var4) {
  323.          return var2;
  324.       } else {
  325.          this.traceresult(var1, new Rexx(var2), var3, var5);
  326.          return var2;
  327.       }
  328.    }
  329.  
  330.    public boolean traceboolean(int var1, boolean var2, char var3, int var4, String var5) {
  331.       if (this.level < var4) {
  332.          return var2;
  333.       } else {
  334.          this.traceresult(var1, new Rexx(var2), var3, var5);
  335.          return var2;
  336.       }
  337.    }
  338.  
  339.    public byte tracebyte(int var1, byte var2, char var3, int var4, String var5) {
  340.       if (this.level < var4) {
  341.          return var2;
  342.       } else {
  343.          this.traceresult(var1, new Rexx(var2), var3, var5);
  344.          return var2;
  345.       }
  346.    }
  347.  
  348.    public short traceshort(int var1, short var2, char var3, int var4, String var5) {
  349.       if (this.level < var4) {
  350.          return var2;
  351.       } else {
  352.          this.traceresult(var1, new Rexx(var2), var3, var5);
  353.          return var2;
  354.       }
  355.    }
  356.  
  357.    public int traceint(int var1, int var2, char var3, int var4, String var5) {
  358.       if (this.level < var4) {
  359.          return var2;
  360.       } else {
  361.          this.traceresult(var1, new Rexx(var2), var3, var5);
  362.          return var2;
  363.       }
  364.    }
  365.  
  366.    public long tracelong(int var1, long var2, char var4, int var5, String var6) {
  367.       if (this.level < var5) {
  368.          return var2;
  369.       } else {
  370.          this.traceresult(var1, new Rexx(var2), var4, var6);
  371.          return var2;
  372.       }
  373.    }
  374.  
  375.    public float tracefloat(int var1, float var2, char var3, int var4, String var5) {
  376.       if (this.level < var4) {
  377.          return var2;
  378.       } else {
  379.          this.traceresult(var1, new Rexx(var2), var3, var5);
  380.          return var2;
  381.       }
  382.    }
  383.  
  384.    public double tracedouble(int var1, double var2, char var4, int var5, String var6) {
  385.       if (this.level < var5) {
  386.          return var2;
  387.       } else {
  388.          this.traceresult(var1, new Rexx(var2), var4, var6);
  389.          return var2;
  390.       }
  391.    }
  392.  
  393.    public Rexx traceRexx(int var1, Rexx var2, char var3, int var4, String var5) {
  394.       if (this.level < var4) {
  395.          return var2;
  396.       } else {
  397.          this.traceresult(var1, var2, var3, var5);
  398.          return var2;
  399.       }
  400.    }
  401.  
  402.    public String traceString(int var1, String var2, char var3, int var4, String var5) {
  403.       Object var6 = null;
  404.       if (this.level < var4) {
  405.          return var2;
  406.       } else {
  407.          Rexx var7;
  408.          if (var2 == null) {
  409.             var7 = null;
  410.          } else {
  411.             var7 = new Rexx(var2);
  412.          }
  413.  
  414.          this.traceresult(var1, var7, var3, var5);
  415.          return var2;
  416.       }
  417.    }
  418.  
  419.    public char[] tracechararray(int var1, char[] var2, char var3, int var4, String var5) {
  420.       Object var6 = null;
  421.       if (this.level < var4) {
  422.          return var2;
  423.       } else {
  424.          Rexx var7;
  425.          if (var2 == null) {
  426.             var7 = null;
  427.          } else {
  428.             var7 = new Rexx(var2);
  429.          }
  430.  
  431.          this.traceresult(var1, var7, var3, var5);
  432.          return var2;
  433.       }
  434.    }
  435.  
  436.    public Object traceObject(int var1, Object var2, char var3, int var4, String var5) {
  437.       Object var6 = null;
  438.       if (this.level < var4) {
  439.          return var2;
  440.       } else {
  441.          Rexx var7;
  442.          if (var2 == null) {
  443.             var7 = null;
  444.          } else {
  445.             var7 = new Rexx(var2.toString());
  446.          }
  447.  
  448.          this.traceresult(var1, var7, var3, var5);
  449.          return var2;
  450.       }
  451.    }
  452. }
  453.