<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-495644103355424</id><updated>2009-11-08T21:06:37.899-08:00</updated><title type='text'>Trixy Programming</title><subtitle type='html'>attempts to solve technical problems</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default?start-index=26&amp;max-results=25'/><author><name>Justin Beck</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-495644103355424.post-4335371477921487351</id><published>2009-07-11T14:20:00.000-07:00</published><updated>2009-10-30T06:32:34.178-07:00</updated><title type='text'>C# POP3 Library with SSL for Gmail</title><content type='html'>So I ended up searching for hours trying to find a free C# library to do POP3 access to a SSL server like gmail.  In our company we use Google Apps and we like gmail's mail server, it would be nice to be able to have programmatical access to these mail accounts.  How does this not exist?  &lt;br /&gt;&lt;br /&gt;So this solution takes &lt;a href="http://sourceforge.net/projects/hpop/"&gt;OpenPop.net Open source library&lt;/a&gt; and makes some very small tweaks so it has Ssl support.  &lt;br /&gt;&lt;br /&gt;Here is the important simple code snippet.&lt;br /&gt;&lt;pre&gt;Stream actualstream = clientSocket.GetStream();&lt;br /&gt;&lt;br /&gt;if (useSSL) {&lt;br /&gt;System.Net.Security.SslStream sslstream = new SslStream(clientSocket.GetStream());&lt;br /&gt;sslstream.AuthenticateAsClient(strHost);&lt;br /&gt;actualstream = sslstream;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Attached here is the re zip of the source code with the change to the library and also a tweak to the sample app with a checkbox to include SSL support.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.h2eng.com/OpenPOPwithSSL.zip"&gt;OpenPOP with SSL Source Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.h2eng.com/OpenPOPwithSSL_Binaries.zip"&gt;OpenPOP with SSL Binaries Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4335371477921487351?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/4335371477921487351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=4335371477921487351' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4335371477921487351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4335371477921487351'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2009/07/c-pop3-library-with-ssl-for-gmail.html' title='C# POP3 Library with SSL for Gmail'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-1879062892006221093</id><published>2008-12-21T22:58:00.001-08:00</published><updated>2008-12-21T23:02:56.319-08:00</updated><title type='text'>Generating Control Logic for 5 stage pipeline Processor Verilog</title><content type='html'>This one takes a little while to explain but is a really bright idea.  Control logic for a processor is one of the most confusing parts.  Especially if this is your first processor your building.  Cranking out a Control Logic Table in excel or something is very valuable because it allows you to see how it all works out.&lt;br /&gt;&lt;br /&gt;I wrote a little ruby script to generate verilog control code based on my spread sheet.  Not only do you not have to code any control logic, but fixing control logic bugs are really easy because it is all in the spread sheet. &lt;br /&gt;&lt;br /&gt;Ruby Script:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;require 'pp'&lt;br /&gt;&lt;br /&gt;def clean(str)&lt;br /&gt;  if str.rindex("b")&lt;br /&gt;    return str[1...str.size]&lt;br /&gt;   else&lt;br /&gt;     return str&lt;br /&gt;  end&lt;br /&gt;    &lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;@size = []&lt;br /&gt;@wirename = []&lt;br /&gt;@table = []&lt;br /&gt;&lt;br /&gt;File.open('table.txt','r') do |f|&lt;br /&gt;    @size = f.gets.split("\t").map{|x| x.strip }&lt;br /&gt;    @wirename = f.gets.split("\t").map{|x| x.strip }&lt;br /&gt;  f.readlines.each do |l|&lt;br /&gt;    @table &lt;&lt; l.split("\t").map{|x| x.strip } &lt;br /&gt;  end  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;@size.delete_at(0)&lt;br /&gt;@size.delete_at(0)&lt;br /&gt;&lt;br /&gt;@wirename.delete_at(0)&lt;br /&gt;@wirename.delete_at(0)&lt;br /&gt;&lt;br /&gt;@wiredefs = []&lt;br /&gt;@assignments = []&lt;br /&gt;&lt;br /&gt;#pp @size&lt;br /&gt;#pp @wirename&lt;br /&gt;#pp @table&lt;br /&gt;&lt;br /&gt;#wire assignments&lt;br /&gt;cur = 0&lt;br /&gt;@wirename.each_with_index do |n,i|&lt;br /&gt;  puts n&lt;br /&gt;  df = ""&lt;br /&gt;  sz = @size[i].to_i&lt;br /&gt;  if sz == 1&lt;br /&gt;    df ="wire "&lt;br /&gt;    ass = "assign " + n.to_s + " = data[" + cur.to_s + "];"&lt;br /&gt;  else&lt;br /&gt;    df = "wire[" + (sz-1).to_s + ":0] "   &lt;br /&gt;    ass = "assign " + n.to_s + " = data[" + (cur+sz-1).to_s + ":" + cur.to_s + "];"&lt;br /&gt;  end&lt;br /&gt;    df +=n.to_s + ";"  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  cur += sz&lt;br /&gt;  @wiredefs &lt;&lt; df&lt;br /&gt;  @assignments &lt;&lt;  ass&lt;br /&gt;  end&lt;br /&gt;datasize = 0&lt;br /&gt;File.open ('export.v','w') do |v|&lt;br /&gt;&lt;br /&gt;v.puts @wiredefs.join("\n")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@table.each {|x|&lt;br /&gt;  data = x[2...x.size] &lt;br /&gt;  data = data.reverse&lt;br /&gt;  data = data.map {|c| clean(c)}&lt;br /&gt;  q = data.join&lt;br /&gt;  code = "data = 32'b"  + q&lt;br /&gt;  datasize =  q.size if q.size &gt; datasize&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  v.puts "7'b" + x[0] + ": " + code + " ;" + '//' + x[1].to_s&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;v.puts @assignments.join("\n")&lt;br /&gt;end&lt;br /&gt;puts "data size: " + datasize.to_s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Example Verilog output:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;wire pc_en;&lt;br /&gt;wire muxI;&lt;br /&gt;wire[1:0] muxJ;&lt;br /&gt;wire pc_select;&lt;br /&gt;wire reg_write;&lt;br /&gt;wire[1:0] rd_select;&lt;br /&gt;wire sign_ext;&lt;br /&gt;wire[1:0] sign_ext_mask;&lt;br /&gt;wire[1:0] alu_rt_select;&lt;br /&gt;wire alu_rs_select;&lt;br /&gt;wire[1:0] alu_op;&lt;br /&gt;wire[1:0] alu_cin_sign;&lt;br /&gt;wire[1:0] alu_anot_bnot;&lt;br /&gt;wire[1:0] shifter_op;&lt;br /&gt;wire[2:0] logic_op;&lt;br /&gt;wire exe_select;&lt;br /&gt;wire save_select;&lt;br /&gt;wire mem_write;&lt;br /&gt;wire[2:0] write_select;&lt;br /&gt;wire pc_add_select;&lt;br /&gt;5'b00000: data = 32'bxxxx0xxxxxxxxxxxxxxxxxxxxx0xxxx0 ;//HALT&lt;br /&gt;5'b00001: data = 32'bx0000x1xxxxx000100000xxxxx00xx01 ;//NOP&lt;br /&gt;5'b01000: data = 32'bx0000x1xxxxx0001000101010010xx01 ;//ADDI&lt;br /&gt;5'b01001: data = 32'bx0000x1xxxxx1011000101010010xx01 ;//SUBI&lt;br /&gt;5'b01010: data = 32'bx0000x1xxxxx00xx100101000010xx01 ;//XORI&lt;br /&gt;5'b01011: data = 32'bx0000x1xxxxx01xx110101000010xx01 ;//ANDNI&lt;br /&gt;5'b10100: data = 32'bx0000x0xxx00xxxxxxx10xxx0010xx01 ;//ROLI&lt;br /&gt;5'b10101: data = 32'bx0000x0xxx01xxxxxxx10xxx0010xx01 ;//SLLI&lt;br /&gt;5'b10110: data = 32'bx0000x0xxx10xxxxxxx10xxx0010xx01 ;//SRAI&lt;br /&gt;5'b10111: data = 32'bx0000x0xxx11xxxxxxx10xxx0010xx01 ;//SRLI&lt;br /&gt;5'b10000: data = 32'bxxxx111xxxxx000100010101xx00xx01 ;//ST&lt;br /&gt;5'b10001: data = 32'bx0100x1xxxxx0001000101010010xx01 ;//LD&lt;br /&gt;5'b10011: data = 32'bx000111xxxxx0001000101010110xx01 ;//STU&lt;br /&gt;5'b11001: data = 32'bx0010xx1xxxx00xx11001xxx1010xx01 ;//TM&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx000100001xxx1010xx01 ;//ADD&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx101100001xxx1010xx01 ;//SUB&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx00xx10001xxx1010xx01 ;//XOR&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx01xx11001xxx1010xx01 ;//ANDN&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx00xxxxxxx01xxx1010xx01 ;//ROL&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx01xxxxxxx01xxx1010xx01 ;//SLL&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx10xxxxxxx01xxx1010xx01 ;//SRA&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx11xxxxxxx01xxx1010xx01 ;//SRL&lt;br /&gt;5'b11100: data = 32'bx0010xx000xx101000001xxx1010xx01 ;//SEQ&lt;br /&gt;5'b11101: data = 32'bx0010xx001xx101000001xxx1010xx01 ;//SLT&lt;br /&gt;5'b11110: data = 32'bx0010xx010xx101000001xxx1010xx01 ;//SLE&lt;br /&gt;5'b11111: data = 32'bx0010xx011xx000000001xxx1010xx01 ;//SCO&lt;br /&gt;5'b01100: data = 32'b0xxx0xxxxxxx00xx01000011xx0x0111 ;//BEQZ&lt;br /&gt;5'b01101: data = 32'b0xxx0xxxxxxx00xx01000011xx0x0011 ;//BNEZ&lt;br /&gt;5'b01110: data = 32'b0xxx0xxxxxxxxxxxxxxxx011xx0x1111 ;//BLTZ&lt;br /&gt;5'b01111: data = 32'b0xxx0xxxxxxxxxxxxxxxx011xx0x1011 ;//BGEZ&lt;br /&gt;5'b11000: data = 32'bx0110xxxxxxxxxxxxxx100110110xx01 ;//LBI&lt;br /&gt;5'b10010: data = 32'bx0000x1xxxxx00xx011100100110xx01 ;//SLBI&lt;br /&gt;5'b00100: data = 32'b0xxx0xxxxxxxxxxxxxxxx001xx01xx01 ;//J&lt;br /&gt;5'b00101: data = 32'b1xxx0xxxxxxxxxxxxxxxx011xx01xx01 ;//JR&lt;br /&gt;5'b00110: data = 32'b01000xxxxxxxxxxxxxxxx0011111xx01 ;//JAL&lt;br /&gt;5'b00111: data = 32'b11000xxxxxxxxxxxxxxxx0111111xx01 ;//JALR&lt;br /&gt;assign pc_en = data[0];&lt;br /&gt;assign muxI = data[1];&lt;br /&gt;assign muxJ = data[3:2];&lt;br /&gt;assign pc_select = data[4];&lt;br /&gt;assign reg_write = data[5];&lt;br /&gt;assign rd_select = data[7:6];&lt;br /&gt;assign sign_ext = data[8];&lt;br /&gt;assign sign_ext_mask = data[10:9];&lt;br /&gt;assign alu_rt_select = data[12:11];&lt;br /&gt;assign alu_rs_select = data[13];&lt;br /&gt;assign alu_op = data[15:14];&lt;br /&gt;assign alu_cin_sign = data[17:16];&lt;br /&gt;assign alu_anot_bnot = data[19:18];&lt;br /&gt;assign shifter_op = data[21:20];&lt;br /&gt;assign logic_op = data[24:22];&lt;br /&gt;assign exe_select = data[25];&lt;br /&gt;assign save_select = data[26];&lt;br /&gt;assign mem_write = data[27];&lt;br /&gt;assign write_select = data[30:28];&lt;br /&gt;assign pc_add_select = data[31];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Example Excel File(csv):&lt;pre&gt;&lt;br /&gt;  1 1 2 1 1 2 1 2 2 1 2 2 2 2 3 1 1 1 3 1&lt;br /&gt;  pc_en muxI muxJ pc_select reg_write rd_select sign_ext sign_ext_mask alu_rt_select alu_rs_select alu_op alu_cin_sign alu_anot_bnot shifter_op logic_op exe_select save_select mem_write write_select pc_add_select&lt;br /&gt;00000xx HALT 0 x bxx x 0 xx x xx xx x xx xx xx xx xxx x x 0 xxx x&lt;br /&gt;00001xx NOP 1 0 bxx 0 0 bxx x xx b00 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01000xx ADDI 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01001xx SUBI 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b11 b10 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01010xx XORI 1 0 bxx 0 1 b00 0 b10 b10 0 b10 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01011xx ANDNI 1 0 bxx 0 1 b00 0 b10 b10 0 b11 bxx b01 bxx bxxx 1 x 0 b000 x&lt;br /&gt;10100xx ROLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b00 bxxx 0 x 0 b000 x&lt;br /&gt;10101xx SLLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b01 bxxx 0 x 0 b000 x&lt;br /&gt;10110xx SRAI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b10 bxxx 0 x 0 b000 x&lt;br /&gt;10111xx SRLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b11 bxxx 0 x 0 b000 x&lt;br /&gt;10000xx ST 1 0 bxx 0 0 bxx 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 1 1 bxxx x&lt;br /&gt;10001xx LD 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 x 0 b010 x&lt;br /&gt;10011xx STU 1 0 bxx 0 1 b01 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 1 1 b000 x&lt;br /&gt;11001xx TM 1 0 bxx 0 1 b10 x bxx b01 0 b11 bxx b00 bxx b1xx x x 0 b001 x&lt;br /&gt;1101100 ADD 1 0 bxx 0 1 b10 x bxx b01 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101101 SUB 1 0 bxx 0 1 b10 x bxx b01 0 b00 b11 b10 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101110 XOR 1 0 bxx 0 1 b10 x bxx b01 0 b10 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101111 ANDN 1 0 bxx 0 1 b10 x bxx b01 0 b11 bxx b01 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101000 ROL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b00 bxxx 0 x 0 b000 x&lt;br /&gt;1101001 SLL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b01 bxxx 0 x 0 b000 x&lt;br /&gt;1101010 SRA 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b10 bxxx 0 x 0 b000 x&lt;br /&gt;1101011 SRL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b11 bxxx 0 x 0 b000 x&lt;br /&gt;11100xx SEQ 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b000 x x 0 b001 x&lt;br /&gt;11101xx SLT 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b001 x x 0 b001 x&lt;br /&gt;11110xx SLE 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b010 x x 0 b001 x&lt;br /&gt;11111xx SCO 1 0 bxx 0 1 b10 x bxx b01 0 b00 b00 b00 bxx b011 x x 0 b001 x&lt;br /&gt;01100xx BEQZ 1 1 b01 x 0 bxx 1 b01 b00 0 b01 bxx b00 bxx bxxx x x 0 bxxx 0&lt;br /&gt;01101xx BNEZ 1 1 b00 x 0 bxx 1 b01 b00 0 b01 bxx b00 bxx bxxx x x 0 bxxx 0&lt;br /&gt;01110xx BLTZ 1 1 b11 x 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;01111xx BGEZ 1 1 b10 x 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;11000xx LBI 1 0 bxx 0 1 b01 1 b01 b10 x bxx bxx bxx bxx bxxx x x 0 b011 x&lt;br /&gt;10010xx SLBI 1 0 bxx 0 1 b01 0 b01 b10 1 b01 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;00100xx J 1 0 bxx 1 0 bxx 1 b00 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;00101xx JR 1 0 bxx 1 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 1&lt;br /&gt;00110xx JAL 1 0 bxx 1 1 b11 1 b00 bxx x bxx bxx bxx bxx bxxx x x 0 b100 0&lt;br /&gt;00111xx JALR 1 0 bxx 1 1 b11 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 b100 1&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1879062892006221093?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/1879062892006221093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=1879062892006221093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1879062892006221093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1879062892006221093'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/generating-control-logic-for-5-stage.html' title='Generating Control Logic for 5 stage pipeline Processor Verilog'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-1786541521481553881</id><published>2008-12-21T22:39:00.001-08:00</published><updated>2008-12-21T22:41:58.829-08:00</updated><title type='text'>Lazy List in Ruby</title><content type='html'>A Lazy List is a list that evaluates and constructs it self as it is used.  Very much a functional language concept.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class LazyList&lt;br /&gt;  attr_accessor :head, :tail&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  def initialize(h, t)  &lt;br /&gt;    @head = h&lt;br /&gt;    @tail = t&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def nil?&lt;br /&gt;    return head.nil?&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.null&lt;br /&gt;    return LazyList.new(nil, nil)&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.seq(start, finish)&lt;br /&gt;    if start &gt; finish&lt;br /&gt;      return LazyList.null&lt;br /&gt;    else&lt;br /&gt;      return LazyList.new(start, proc { seq( start + 1, finish) })&lt;br /&gt;    end  &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.infseq(start)&lt;br /&gt;    return LazyList.new(start, proc { infseq( start + 1 ) })  &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  def self.constList(val)&lt;br /&gt;    return LazyList.new(val, proc { constList(val) })&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.boolseq(start)&lt;br /&gt;    return LazyList.new(start, proc { boolseq(!start) })&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  def self.filter(listcontrol, listdata)&lt;br /&gt;    if listcontrol.nil? || listdata.nil?&lt;br /&gt;      return LazyList.new&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    if listcontrol.head&lt;br /&gt;      LazyList.new(listdata.head, proc { filter(listcontrol.tail.call, listdata.tail.call)})&lt;br /&gt;    else&lt;br /&gt;      filter(listcontrol.tail.call, listdata.tail.call)&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def Nth(n)&lt;br /&gt;    return if nil?&lt;br /&gt;    &lt;br /&gt;    if n == 0&lt;br /&gt;      return head&lt;br /&gt;    else&lt;br /&gt;      tail.call.Nth(n-1)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.filter_check(data, check)&lt;br /&gt;    if nil?&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    if data.head % check != 0&lt;br /&gt;      LazyList.new(data.head, proc { filter_check(data.tail.call, check)})&lt;br /&gt;    else&lt;br /&gt;      filter_check(data.tail.call, check)&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.prime_help(list)&lt;br /&gt;    return LazyList.new(list.head, proc { prime_help(filter_check(list.tail.call, list.head))})&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.primes&lt;br /&gt;    return prime_help(infseq(2))&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def printN(n)&lt;br /&gt;    if nil?&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    puts head&lt;br /&gt;    if n &gt;= 0 &amp;&amp; !tail.nil?&lt;br /&gt;      tail.call.printN(n-1)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;l = LazyList.seq(2, 8)&lt;br /&gt;l.printN(34)&lt;br /&gt;l = LazyList.infseq(3)&lt;br /&gt;l.printN(34)&lt;br /&gt;b = LazyList.boolseq(false)&lt;br /&gt;b.printN(6)&lt;br /&gt;f = LazyList.filter(b,l)&lt;br /&gt;f.printN(6)&lt;br /&gt;&lt;br /&gt;a = LazyList.primes()&lt;br /&gt;a.printN(8)&lt;br /&gt;puts "nth #{f.Nth(2)}"&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1786541521481553881?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/1786541521481553881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=1786541521481553881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1786541521481553881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1786541521481553881'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/lazy-list-in-ruby.html' title='Lazy List in Ruby'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-4519013798536570875</id><published>2008-12-21T22:37:00.000-08:00</published><updated>2008-12-21T22:42:46.479-08:00</updated><title type='text'>Make Sublists in Scheme</title><content type='html'>A fairly useful function in scheme is to turn a list of elements into a list of list of elements&lt;br /&gt;&lt;br /&gt;example: [1,2,3] =&gt; [[1], [2], [3]]&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define (make-sublists l)&lt;br /&gt;  (map (lambda (x) (list x )) l))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4519013798536570875?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/4519013798536570875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=4519013798536570875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4519013798536570875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4519013798536570875'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/make-sublists-in-scheme.html' title='Make Sublists in Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-148446570272844988</id><published>2008-12-21T22:33:00.002-08:00</published><updated>2008-12-21T22:43:34.832-08:00</updated><title type='text'>Tree Map Scheme</title><content type='html'>Very similar to the Map function for a list in scheme, you can apply a map to a tree.&lt;br /&gt;This traverses the entire tree applying a map function to the value and stuffing back into a tree.&lt;br /&gt;&lt;pre&gt;(define (tree-map f t)&lt;br /&gt;  (if (null? t)&lt;br /&gt;      ()&lt;br /&gt;      (if (null? (cdr t))&lt;br /&gt;          ()&lt;br /&gt;          (append (append (tree-map f (car t)) &lt;br /&gt;                  (list (f (cadr t)))) &lt;br /&gt;                  (tree-map f (caddr t))))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-148446570272844988?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/148446570272844988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=148446570272844988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/148446570272844988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/148446570272844988'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/tree-map-scheme.html' title='Tree Map Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-6716970983912733882</id><published>2008-12-21T22:33:00.001-08:00</published><updated>2008-12-21T22:45:01.371-08:00</updated><title type='text'>Valid and Equal Binary Tree Scheme</title><content type='html'>This is one possible way of determining whether two binary trees are equal.  Granted this implementation is dependent on them being valid.  Which is that they are both symmetric around the top head node. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define (valid-bintree? t)&lt;br /&gt;  (if (null? t)&lt;br /&gt;      #t&lt;br /&gt;      (if (list? t)&lt;br /&gt;          (if (valid-bintree? (car t))&lt;br /&gt;              (if (valid-bintree? (caddr t))&lt;br /&gt;                  #t&lt;br /&gt;                  #f)&lt;br /&gt;              #f)&lt;br /&gt;          #f)&lt;br /&gt;      ))&lt;br /&gt;&lt;br /&gt;(define (equal-bintrees? a b)&lt;br /&gt;  (if (null? a) &lt;br /&gt;      (if (null? b)&lt;br /&gt;          #t&lt;br /&gt;          #f)&lt;br /&gt;      (if (null? b)&lt;br /&gt;          #f&lt;br /&gt;          (if (and (valid-bintree? a) (valid-bintree? b))&lt;br /&gt;              (and (= (cadr a) (cadr b)) (equal-bintrees?(car a) (car b)) (equal-bintrees?(caddr a) (caddr b)))&lt;br /&gt;              #f)&lt;br /&gt;          )&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6716970983912733882?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/6716970983912733882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=6716970983912733882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6716970983912733882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6716970983912733882'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/valid-and-equal-binary-tree-scheme.html' title='Valid and Equal Binary Tree Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-5879663037042061455</id><published>2008-12-21T22:23:00.002-08:00</published><updated>2008-12-21T22:49:39.200-08:00</updated><title type='text'>Extend Function Scheme</title><content type='html'>See merge and distrib for reference.&lt;br /&gt;An extend function is a pretty handy function for doing some advance list procedures.  &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (extend L E)&lt;br /&gt;  (merge L (distrib L E))&lt;br /&gt;  )&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-5879663037042061455?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/5879663037042061455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=5879663037042061455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5879663037042061455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5879663037042061455'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/extend-function-scheme.html' title='Extend Function Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-3265557497550909439</id><published>2008-12-21T22:23:00.001-08:00</published><updated>2008-12-21T22:50:09.670-08:00</updated><title type='text'>Subsets function in Scheme</title><content type='html'>Subsets computes all the possible subsets possible for a list of unique values.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (subsets L)&lt;br /&gt;  (if (null? L)&lt;br /&gt;      (list ())&lt;br /&gt;      (extend (subsets (cdr L)) (car L))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3265557497550909439?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/3265557497550909439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=3265557497550909439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3265557497550909439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3265557497550909439'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/subsets-function-in-scheme.html' title='Subsets function in Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-3955502616736011298</id><published>2008-12-21T22:22:00.000-08:00</published><updated>2008-12-21T22:23:03.603-08:00</updated><title type='text'>Distrib function Scheme</title><content type='html'>&lt;pre&gt;&lt;br /&gt;(define (distrib L E)&lt;br /&gt;  (if (null? L)&lt;br /&gt;      ()&lt;br /&gt;      (cons (cons E (car L))&lt;br /&gt;    (distrib (cdr L) E))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3955502616736011298?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/3955502616736011298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=3955502616736011298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3955502616736011298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3955502616736011298'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/distrib-function-scheme.html' title='Distrib function Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-5324928667080008691</id><published>2008-12-21T22:21:00.001-08:00</published><updated>2008-12-21T22:21:56.811-08:00</updated><title type='text'>Merge List in Scheme</title><content type='html'>&lt;pre&gt;&lt;br /&gt;(define (merge a b)&lt;br /&gt;  (if (null? a)&lt;br /&gt;      b&lt;br /&gt;      (if (null? b)&lt;br /&gt;          a&lt;br /&gt;          (if (&lt; (length (car a)) (length (car b)))&lt;br /&gt;              (append (list (car a)) (merge (cdr a) b))&lt;br /&gt;              (append (list (car b)) (merge (cdr b) a))&lt;br /&gt;              ))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-5324928667080008691?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/5324928667080008691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=5324928667080008691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5324928667080008691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5324928667080008691'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/merge-list-in-scheme.html' title='Merge List in Scheme'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-4755933802741000043</id><published>2008-12-21T15:01:00.000-08:00</published><updated>2008-12-21T15:04:07.867-08:00</updated><title type='text'>Binary Search Tree in Java</title><content type='html'>&lt;pre&gt;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;&lt;br /&gt;public class BinaryTreeNode {&lt;br /&gt; &lt;br /&gt; private Comparable key;&lt;br /&gt; private Object data;&lt;br /&gt; private BinaryTreeNode left;&lt;br /&gt; private BinaryTreeNode right;&lt;br /&gt; &lt;br /&gt; public BinaryTreeNode(Comparable pKey, Object pData)&lt;br /&gt; {&lt;br /&gt;  key = pKey;&lt;br /&gt;  data = pData;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the data.&lt;br /&gt;  */&lt;br /&gt; public Object getData() {&lt;br /&gt;  return data;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param data The data to set.&lt;br /&gt;  */&lt;br /&gt; public void setData(Object data) {&lt;br /&gt;  this.data = data;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the key.&lt;br /&gt;  */&lt;br /&gt; public Comparable getKey() {&lt;br /&gt;  return key;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param key The key to set.&lt;br /&gt;  */&lt;br /&gt; public void setKey(Comparable key) {&lt;br /&gt;  this.key = key;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the left.&lt;br /&gt;  */&lt;br /&gt; public BinaryTreeNode getLeft() {&lt;br /&gt;  return left;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param left The left to set.&lt;br /&gt;  */&lt;br /&gt; public void setLeft(BinaryTreeNode left) {&lt;br /&gt;  this.left = left;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the right.&lt;br /&gt;  */&lt;br /&gt; public BinaryTreeNode getRight() {&lt;br /&gt;  return right;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param right The right to set.&lt;br /&gt;  */&lt;br /&gt; public void setRight(BinaryTreeNode right) {&lt;br /&gt;  this.right = right;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class BinarySearchTree implements Dictionary {&lt;br /&gt;&lt;br /&gt; private BinaryTreeNode mRoot;&lt;br /&gt; private int mNumberItems=0;&lt;br /&gt; &lt;br /&gt; /* insert&lt;br /&gt;  * -exact same functionality as update, see update (drops the return value though)&lt;br /&gt;  */&lt;br /&gt; public void insert(Comparable key, Object data) {&lt;br /&gt;  update(key,data);&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /*recrusiveUpdateChild&lt;br /&gt;  * -runs through the entire tree, and updates a child with new data,&lt;br /&gt;  * -if the child doesn't exist, it is add at the appropriate branch ending&lt;br /&gt;  * &lt;br /&gt;  * returns true if update a node&lt;br /&gt;  * returns false if added a child at the end of the branch&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; private boolean recurisiveUpdateChild(BinaryTreeNode parent, Comparable key, Object data)&lt;br /&gt; {&lt;br /&gt;  if (key.compareTo(parent.getKey())==0)&lt;br /&gt;  {   &lt;br /&gt;   parent.setData(data);&lt;br /&gt;   return true; //replaced an associated data node&lt;br /&gt;  }&lt;br /&gt;  if (key.compareTo(parent.getKey())&lt;0)&lt;br /&gt;  {&lt;br /&gt;   if (parent.getLeft()==null)&lt;br /&gt;   {&lt;br /&gt;    &lt;br /&gt;    parent.setLeft(new BinaryTreeNode(key,data));&lt;br /&gt;    mNumberItems++;&lt;br /&gt;    return false; //no replacement, addition to the tree&lt;br /&gt;   }&lt;br /&gt;   return recurisiveUpdateChild(parent.getLeft(),key,data);   &lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   if (parent.getRight()==null)&lt;br /&gt;   {&lt;br /&gt;    parent.setRight(new BinaryTreeNode(key,data));&lt;br /&gt;    mNumberItems++;&lt;br /&gt;    return false; // no replacement&lt;br /&gt;   }&lt;br /&gt;   return recurisiveUpdateChild(parent.getRight(),key,data);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;/*Update&lt;br /&gt; *  -Provides add, and modify functionality&lt;br /&gt; *  &lt;br /&gt; *  -returns true if it did a modify&lt;br /&gt; *  -returns false if it did an add&lt;br /&gt; */&lt;br /&gt; public boolean update(Comparable key, Object data) {&lt;br /&gt;  if (mRoot==null)&lt;br /&gt;  {&lt;br /&gt;   mRoot = new BinaryTreeNode(key,data);&lt;br /&gt;   mNumberItems++;&lt;br /&gt;   return false;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   return recurisiveUpdateChild(mRoot,key,data);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;/*recursiveLookupChild&lt;br /&gt; * -simple lookup, traverses through the tree&lt;br /&gt; * &lt;br /&gt; * returns the associated data of the found node, if it found one&lt;br /&gt; * &lt;br /&gt; * returns null - if no node was found (fell off the tree) &lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt; private Object recurisiveLookupChild(BinaryTreeNode parent, Comparable key)&lt;br /&gt; {&lt;br /&gt;  if (key.compareTo(parent.getKey())==0)&lt;br /&gt;  {      &lt;br /&gt;   return parent.getData();&lt;br /&gt;  }&lt;br /&gt;  if (key.compareTo(parent.getKey())&lt;0)&lt;br /&gt;  {&lt;br /&gt;   if (parent.getLeft()==null) //fell off the tree&lt;br /&gt;   {&lt;br /&gt;    return null;    &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;   return recurisiveLookupChild(parent.getLeft(),key);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   if (parent.getRight()==null) //fell off the tree&lt;br /&gt;   {&lt;br /&gt;    return null;    &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    return recurisiveLookupChild(parent.getRight(),key);&lt;br /&gt;   }   &lt;br /&gt;  }  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /*lookup&lt;br /&gt;  * -looksup the data from the tree&lt;br /&gt;  * returns Data or null if not found&lt;br /&gt;  */&lt;br /&gt; public Object lookup(Comparable key) {&lt;br /&gt;  if (mRoot==null) return null;&lt;br /&gt;  &lt;br /&gt;  return recurisiveLookupChild(mRoot,key);&lt;br /&gt; }&lt;br /&gt;/*size&lt;br /&gt; *  returns number of items in tree&lt;br /&gt; */&lt;br /&gt; public int size() {&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt;/*print&lt;br /&gt; *  does an inorder traversal, printing out a sorted list of items&lt;br /&gt; */&lt;br /&gt; public void print(PrintWriter p) {&lt;br /&gt;  //p.println("Printing Binary Search Tree");&lt;br /&gt;  printNode(mRoot,p);&lt;br /&gt; }&lt;br /&gt; /*printnode&lt;br /&gt;  * -recursive aux method for the print funcationality&lt;br /&gt;  */&lt;br /&gt; private void printNode(BinaryTreeNode node,PrintWriter p)&lt;br /&gt; {&lt;br /&gt;  if (node==null) return;&lt;br /&gt;  //simple inorder traversal&lt;br /&gt;  printNode(node.getLeft(),p);&lt;br /&gt;  &lt;br /&gt;  p.print(node.getKey());&lt;br /&gt;  p.print(" ");&lt;br /&gt;  p.println(node.getData());&lt;br /&gt;  &lt;br /&gt;  printNode(node.getRight(),p);  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4755933802741000043?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/4755933802741000043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=4755933802741000043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4755933802741000043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/4755933802741000043'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/binary-search-tree-in-java.html' title='Binary Search Tree in Java'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-8739325673191568941</id><published>2008-12-21T15:00:00.000-08:00</published><updated>2008-12-21T15:01:19.805-08:00</updated><title type='text'>Sorted Arraylist in Java</title><content type='html'>&lt;pre&gt;&lt;br /&gt;public class SortedArrayList implements Dictionary {&lt;br /&gt;&lt;br /&gt; //number of items in the array&lt;br /&gt; private int mNumberItems=0;&lt;br /&gt; &lt;br /&gt; private DictionaryItem mItems[] = new DictionaryItem[10];&lt;br /&gt; /*expand array&lt;br /&gt;  * -checks to see if array needs expansion, if so, it builds a new array&lt;br /&gt;  */&lt;br /&gt; private void expandArray()&lt;br /&gt; {&lt;br /&gt;  if (checkExpandArray())&lt;br /&gt;  {&lt;br /&gt;    DictionaryItem newarray[] = new DictionaryItem[mItems.length*2];&lt;br /&gt;    System.arraycopy(mItems,0,newarray,0,mNumberItems); // copy all items into the new array&lt;br /&gt;    mItems = newarray;&lt;br /&gt;  }  &lt;br /&gt; }&lt;br /&gt; /*checkExpandArray&lt;br /&gt;  *-if the numberofitems in the array is getting large, increase the size of the array to make room for another item &lt;br /&gt;  */&lt;br /&gt; private boolean checkExpandArray()&lt;br /&gt; {&lt;br /&gt;  if (mNumberItems+1&gt;=mItems.length)&lt;br /&gt;  {&lt;br /&gt;   return true;   &lt;br /&gt;  }&lt;br /&gt;  return false;  &lt;br /&gt; }&lt;br /&gt; /*insert&lt;br /&gt;  *  -see update, same functionality, just drops the return value&lt;br /&gt;  */&lt;br /&gt; public void insert(Comparable key, Object data) {&lt;br /&gt;  update(key,data);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /*InsertIntoArray&lt;br /&gt;  * -Copies the data over in the array to make room&lt;br /&gt;  * -then slips the new value into that index&lt;br /&gt;  */&lt;br /&gt; private void insertIntoArray(int index, DictionaryItem item)&lt;br /&gt; {&lt;br /&gt;   System.arraycopy(mItems,index,mItems,index+1,mNumberItems-index); // copy all items infront of the index&lt;br /&gt;   mItems[index] = item;&lt;br /&gt; }&lt;br /&gt; /*getIndexForKey&lt;br /&gt;  * does a linear search to find out where a certain key should be inserted&lt;br /&gt;  */&lt;br /&gt; private int getIndexForKey(Comparable key)&lt;br /&gt; {&lt;br /&gt;  int i;&lt;br /&gt;  for(i=0;i&lt;= mNumberItems-1;i++)&lt;br /&gt;  {&lt;br /&gt;   DictionaryItem curr = mItems[i];&lt;br /&gt;   &lt;br /&gt;   if(curr.getKey().compareTo(key) &gt;=0)&lt;br /&gt;   {&lt;br /&gt;    return i;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt; /*getKeyAt&lt;br /&gt;  * -returns the key at a certain index&lt;br /&gt;  */&lt;br /&gt; private Object getKeyAt(int index)&lt;br /&gt; {  &lt;br /&gt;  return mItems[index].getKey();&lt;br /&gt; }&lt;br /&gt; /*lookupIndexForKey&lt;br /&gt;  * -does a binary search for a certain index location&lt;br /&gt;  * -returns -1 if value not found&lt;br /&gt;  */&lt;br /&gt; private int lookupIndexForKey(Comparable key)&lt;br /&gt; {&lt;br /&gt;  return auxBinSearch(key,0,mNumberItems-1);&lt;br /&gt; }&lt;br /&gt; /*auxBinSearch&lt;br /&gt;  * -is the aux recursive method to implement the binary search&lt;br /&gt;  */&lt;br /&gt; private int auxBinSearch(Comparable key, int startindex,int endindex)&lt;br /&gt; {&lt;br /&gt;  if (startindex &gt; endindex) return -1;&lt;br /&gt;  int mid = (startindex + endindex)/2;&lt;br /&gt;  &lt;br /&gt;  if (key.compareTo(getKeyAt(mid))==0) return mid;&lt;br /&gt;  if (key.compareTo(getKeyAt(mid))&lt;0)&lt;br /&gt;   return auxBinSearch(key,startindex,mid-1); //go left&lt;br /&gt;  else&lt;br /&gt;   return auxBinSearch(key,mid+1,endindex);//go right&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;/*update&lt;br /&gt; * -provides update functionality (insert, and replace&lt;br /&gt; * returns true if it replaced&lt;br /&gt; * returns false if inserted new record&lt;br /&gt; */&lt;br /&gt; public boolean update(Comparable key, Object data) {&lt;br /&gt;  &lt;br /&gt;  int insertindex=lookupIndexForKey(key);&lt;br /&gt;  &lt;br /&gt;  if (insertindex!=-1)&lt;br /&gt;  {   &lt;br /&gt;   mItems[insertindex] = new DictionaryItem(key,data);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;   //now we have to insert  &lt;br /&gt;   //perform linear search and get insert location&lt;br /&gt;   insertindex= getIndexForKey(key);&lt;br /&gt;   &lt;br /&gt;   expandArray();&lt;br /&gt;    &lt;br /&gt;   insertIntoArray(insertindex,new DictionaryItem(key,data));&lt;br /&gt;   mNumberItems++;  &lt;br /&gt;   return false;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;/*lookup&lt;br /&gt; * -uses a binary search to retrieve an object&lt;br /&gt; *  returns the Object if found&lt;br /&gt; *  return null if not found&lt;br /&gt; */&lt;br /&gt; public Object lookup(Comparable key) {&lt;br /&gt;  int index = lookupIndexForKey(key);&lt;br /&gt;  &lt;br /&gt;  if (index &lt;0 || index &gt; mNumberItems-1) return null;&lt;br /&gt;  return mItems[index].getData();  &lt;br /&gt; }&lt;br /&gt;/*size&lt;br /&gt; *-returns number of items in the array&lt;br /&gt; */&lt;br /&gt; public int size() {&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;/*print&lt;br /&gt; *  spits out the sorted arraylist contents&lt;br /&gt; */&lt;br /&gt; public void print(PrintWriter p) {&lt;br /&gt;  //p.println("Printing Sorted ArrayList");&lt;br /&gt;  for(DictionaryItem curr: mItems )&lt;br /&gt;  {&lt;br /&gt;   if(curr!=null)&lt;br /&gt;   {&lt;br /&gt;    p.print(curr.getKey());&lt;br /&gt;    p.print(" ");&lt;br /&gt;    p.println(curr.getData());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-8739325673191568941?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/8739325673191568941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=8739325673191568941' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8739325673191568941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8739325673191568941'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/sorted-arraylist-in-java.html' title='Sorted Arraylist in Java'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-8700600298036302949</id><published>2008-12-21T14:58:00.000-08:00</published><updated>2008-12-21T15:00:13.483-08:00</updated><title type='text'>Queue in Java</title><content type='html'>&lt;pre&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;&lt;br /&gt;/*Queue&lt;br /&gt; * implements a simple queue first in, first out&lt;br /&gt; */&lt;br /&gt;public class Queue {&lt;br /&gt;&lt;br /&gt; public Queue()&lt;br /&gt; {&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private ArrayList mItems = new ArrayList();&lt;br /&gt; &lt;br /&gt; /* empty&lt;br /&gt;  * -returns true if there are 0 items in the queue&lt;br /&gt;  * other wise false&lt;br /&gt;  */&lt;br /&gt;  public boolean empty()&lt;br /&gt;  {&lt;br /&gt;   return mItems.isEmpty();  &lt;br /&gt;  }&lt;br /&gt;  /* size&lt;br /&gt;   * -returns the number of items in the queue&lt;br /&gt;   */&lt;br /&gt;  public int size()&lt;br /&gt;  {&lt;br /&gt;   return mItems.size();  &lt;br /&gt;  }&lt;br /&gt;  /*enqueue&lt;br /&gt;   * -adds a node to the back end of the queue&lt;br /&gt;   * &lt;br /&gt;   */&lt;br /&gt;  public void enqueue(Object obj)&lt;br /&gt;  {&lt;br /&gt;   mItems.add(0,obj);&lt;br /&gt;  }&lt;br /&gt;  /*dequeue&lt;br /&gt;   * -removes the last Object from the inner list&lt;br /&gt;   * other words, pulls the first Object off the front of the queue&lt;br /&gt;   */&lt;br /&gt;  public Object dequeue()&lt;br /&gt;  {&lt;br /&gt;   if (this.empty()) throw new EmptyQueueException();&lt;br /&gt;   &lt;br /&gt;   return mItems.remove(mItems.size()-1);  &lt;br /&gt;  }&lt;br /&gt;  /*peek&lt;br /&gt;   * -returns the front Object of the que&lt;br /&gt;   */&lt;br /&gt;  public Object peek()&lt;br /&gt;  {&lt;br /&gt;   if (this.empty()) throw new EmptyQueueException();&lt;br /&gt;   &lt;br /&gt;   return mItems.get(mItems.size()-1);  &lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-8700600298036302949?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/8700600298036302949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=8700600298036302949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8700600298036302949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8700600298036302949'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/queue-in-java.html' title='Queue in Java'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-3622392726404123184</id><published>2008-12-21T14:57:00.001-08:00</published><updated>2008-12-21T14:57:49.029-08:00</updated><title type='text'>Stack in Java</title><content type='html'>&lt;pre&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.EmptyStackException;&lt;br /&gt;&lt;br /&gt;/* Stack class&lt;br /&gt; * A basic stack, you can push items in, last in, is first out.&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class Stack {&lt;br /&gt; /// stores my data member in the stack&lt;br /&gt; private ArrayList mItems = new ArrayList();&lt;br /&gt; &lt;br /&gt; public Stack()&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt;/* empty&lt;br /&gt; * -returns true if there are 0 items in the stack&lt;br /&gt; * other wise false&lt;br /&gt; */&lt;br /&gt; public boolean empty()&lt;br /&gt; {&lt;br /&gt;  return mItems.isEmpty();  &lt;br /&gt; }&lt;br /&gt; /* size&lt;br /&gt;  * -returns the number of items in the stack&lt;br /&gt;  */&lt;br /&gt; public int size()&lt;br /&gt; {&lt;br /&gt;  return mItems.size();  &lt;br /&gt; }&lt;br /&gt; /*push&lt;br /&gt;  * -adds an object to the Top of the stack&lt;br /&gt;  */&lt;br /&gt; public void push(Object obj)&lt;br /&gt; {&lt;br /&gt;  mItems.add(obj);&lt;br /&gt; }&lt;br /&gt; /*pop&lt;br /&gt;  * -removes the top object from the stack and returns it&lt;br /&gt;  * throws EmptyStackException if stack is empty&lt;br /&gt;  */&lt;br /&gt; public Object pop()&lt;br /&gt; {&lt;br /&gt;  if (this.empty()) throw new EmptyStackException();&lt;br /&gt;  &lt;br /&gt;  return mItems.remove(mItems.size()-1);&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; /*peek&lt;br /&gt;  * -returns the current top object in the stack&lt;br /&gt;  * DOES NOT REMOVE IT&lt;br /&gt;  */&lt;br /&gt; public Object peek()&lt;br /&gt; {&lt;br /&gt;  if (this.empty()) throw new EmptyStackException();&lt;br /&gt;  &lt;br /&gt;  return mItems.get(mItems.size()-1);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3622392726404123184?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/3622392726404123184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=3622392726404123184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3622392726404123184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3622392726404123184'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/stack-in-java.html' title='Stack in Java'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-3179473194000154289</id><published>2008-12-21T14:55:00.000-08:00</published><updated>2008-12-21T14:57:01.851-08:00</updated><title type='text'>Double Linked List in Java</title><content type='html'>&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * LinkedList&lt;br /&gt; * &lt;br /&gt; * This is the core List class&lt;br /&gt; * Provides a facility to a doublly linked list.&lt;br /&gt; * &lt;br /&gt; * Has Header Node optimization&lt;br /&gt; * Has LastNode optimization as well&lt;br /&gt; * &lt;br /&gt; * Future Features:&lt;br /&gt; * Optimized iterator support&lt;br /&gt; * actually use some more of the optimization doublly linked lists gives you&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * ListNode&lt;br /&gt; * &lt;br /&gt; * -The workhorse of the LinkedList Class&lt;br /&gt; * &lt;br /&gt; * Provides a doublely linked potencial to other list nodes&lt;br /&gt; * Provides recursion for relative position Node lookups&lt;br /&gt; * Provides automatic linking of next and previous nodes&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class ListNode&lt;br /&gt;{&lt;br /&gt; /**&lt;br /&gt;  * Blank constructor&lt;br /&gt;  */&lt;br /&gt; public ListNode()&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Purposeful constructor:&lt;br /&gt;  * passes data, and previous node, allows you to build node lists, easily by chaining&lt;br /&gt;  */&lt;br /&gt; public ListNode(Object pData,ListNode pPrevious)&lt;br /&gt; {&lt;br /&gt;  mData = pData;&lt;br /&gt;  if (pPrevious != null) //since you can pass null to it&lt;br /&gt;  {&lt;br /&gt;   pPrevious.setNext(this); //automatic hook up&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private Object mData; // stores the Object of value here&lt;br /&gt;&lt;br /&gt; //Accessors to the Data Object&lt;br /&gt; public Object getData()&lt;br /&gt; {&lt;br /&gt;  return mData;&lt;br /&gt; }&lt;br /&gt; public void setData(Object obj)&lt;br /&gt; {&lt;br /&gt;  mData = obj;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; private ListNode mNext; // stores link to the next node in the list&lt;br /&gt; //accessor to the Next reference&lt;br /&gt; public ListNode getNext()&lt;br /&gt; {&lt;br /&gt;  return mNext;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Automatic linking on setNext&lt;br /&gt;  * -set the mNext field's data&lt;br /&gt;  * but also will automaticly link the "nextNodes previous link to this Node's&lt;br /&gt;  */&lt;br /&gt; public void setNext(ListNode pNode)&lt;br /&gt; {&lt;br /&gt;  mNext = pNode;&lt;br /&gt;  if (mNext != null)&lt;br /&gt;  {&lt;br /&gt;   mNext.mPrevious = this; //internal auto link MUST USE INTERNAL, If you use mNext.setPrevious infinite loop become evident&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private ListNode mPrevious;&lt;br /&gt; //public accessor to Previous Link&lt;br /&gt; public ListNode getPrevious()&lt;br /&gt; {&lt;br /&gt;  return mPrevious;&lt;br /&gt; }&lt;br /&gt;  /**&lt;br /&gt;   * Automatic linking on setPrevious&lt;br /&gt;   * -set the mPrevious field's data&lt;br /&gt;   * but also will automaticly link the "previousNodes next link to this Node's&lt;br /&gt;   */&lt;br /&gt; public void setPrevious(ListNode pNode)&lt;br /&gt; {&lt;br /&gt;  mPrevious = pNode;&lt;br /&gt;  if (mPrevious != null)&lt;br /&gt;  {&lt;br /&gt;   mPrevious.mNext = this; //internal auto link MUST USE INTERNAL, If you use mPrevious.setNext infinite loop become evident&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt; * Recurisve GetNext&lt;br /&gt; * will return the node that is relativePos offset from this node only in the forward direction &lt;br /&gt; */&lt;br /&gt; public ListNode getNextRecurisive(int relaitivePos)&lt;br /&gt; {&lt;br /&gt;  if (relaitivePos &lt;= 0) // if pos =0 return self&lt;br /&gt;  {&lt;br /&gt;   return this;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   ListNode next = this.getNext(); //move to the next node&lt;br /&gt;   if (next != null)&lt;br /&gt;   {&lt;br /&gt;    return next.getNextRecurisive(relaitivePos - 1); //Let it count the rest of the way&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    throw new IndexOutOfBoundsException("Recursive search for rel pos could not find a node soon enough");    &lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;public class LinkedList&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; private ListNode mHeaderNode = new ListNode();&lt;br /&gt; private ListNode mLastNode;&lt;br /&gt; private int mNumItems = 0;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Constructor, sets up the default last node&lt;br /&gt;  */&lt;br /&gt; public LinkedList()&lt;br /&gt; {&lt;br /&gt;  mLastNode = mHeaderNode; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt; * Add is your basic add operation&lt;br /&gt; *   Adds to the end of the list, using the last node optimization&lt;br /&gt;*    the setNext function automaticly links in the previous links. &lt;br /&gt;*  &lt;br /&gt; */&lt;br /&gt; public void add(Object obj)&lt;br /&gt; {&lt;br /&gt;  ListNode node = new ListNode(obj,null);&lt;br /&gt;  mLastNode.setNext(node);&lt;br /&gt;  mLastNode = node; //update the last node optimization&lt;br /&gt;  mNumItems++;&lt;br /&gt; }&lt;br /&gt; /** add overload -&gt; Insert&lt;br /&gt;  *   Inserts a Object in the list node at any position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public void add(int pos, Object obj)&lt;br /&gt; {&lt;br /&gt;  if (pos == mNumItems)&lt;br /&gt;  {&lt;br /&gt;   //special case adding at the end of the list&lt;br /&gt;   add(obj); // use the regular add&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  IsPositionInBoundsOf(pos); //Insure the pos is a vaild pos&lt;br /&gt;  ListNode node = getNode(pos);//node I am inserting at&lt;br /&gt;  ListNode newNode = new ListNode(obj, node.getPrevious());&lt;br /&gt;  // hook up new node to node that was behind current node&lt;br /&gt;  newNode.setNext(node);  &lt;br /&gt;  // hook up old node, to the new position&lt;br /&gt;  mNumItems++;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Contains&lt;br /&gt;  * Returns true if LinkedList Contains a certain object&lt;br /&gt;  * Object.equals is our comparer method of choice&lt;br /&gt;  * &lt;br /&gt;  * other wise false&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public boolean contains(Object obj)&lt;br /&gt; {&lt;br /&gt;  ListNode node = mHeaderNode.getNext(); //get the first node in the list&lt;br /&gt;  &lt;br /&gt;  while (node != null) // go through till the end of the list&lt;br /&gt;  {&lt;br /&gt;   if (node.getData() != null) // check so you don't get a null ref exception&lt;br /&gt;   {&lt;br /&gt;    if (node.getData().equals(obj)) // use equals so.. ref type weird data types.. cough STRINGS don't hang us up&lt;br /&gt;    {&lt;br /&gt;     return true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    // if null was passed we want to return true if the obj is null&lt;br /&gt;    if (obj == null) return true; &lt;br /&gt;   }&lt;br /&gt;   node = node.getNext(); // increment up to the next node&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * IsPositionInBoundsOf&lt;br /&gt;  * Returns true if pos would return a valid node in this list, if not, it will throw and indexOutOfBoundsException&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; protected boolean IsPositionInBoundsOf(int pos)&lt;br /&gt; {&lt;br /&gt;  if (pos &gt; mNumItems - 1)&lt;br /&gt;  {&lt;br /&gt;   throw new IndexOutOfBoundsException(pos + " Is out of the bounds of the List");&lt;br /&gt;  }&lt;br /&gt;  return true;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * get&lt;br /&gt;  * Returns The object of a node at a certain position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public Object get(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos); // insure pos is accurate&lt;br /&gt;&lt;br /&gt;  ListNode node = getNode(pos); //grab the node&lt;br /&gt;   &lt;br /&gt;  return node.getData(); //return the data ; null is ok&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * INTERNAL METHOD&lt;br /&gt;  * getNode(pos)&lt;br /&gt;  * Returns the list node at a certain position&lt;br /&gt;  * &lt;br /&gt;  * does a recursive search for the specified position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; protected ListNode getNode(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos);&lt;br /&gt;  return mHeaderNode.getNextRecurisive(pos + 1); // +1 because of header node&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * isEmpty&lt;br /&gt;  * returns true if their are 0 items in this list&lt;br /&gt;  * otherwise false&lt;br /&gt;  */&lt;br /&gt; public boolean isEmpty()&lt;br /&gt; {&lt;br /&gt;  return mHeaderNode.getNext() == null;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * remove(pos)&lt;br /&gt;  * Returns the object at the pos you are removeing from&lt;br /&gt;  * Remove the last node, will re update the lastnode reference&lt;br /&gt;  * &lt;br /&gt;  * deincrements the count in list&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public Object remove(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos);&lt;br /&gt;  ListNode deletednode = getNode(pos);&lt;br /&gt;  if (deletednode == this.mLastNode) //last node special case&lt;br /&gt;  {&lt;br /&gt;   this.mLastNode = deletednode.getPrevious(); // just patch up the last node reference&lt;br /&gt;  }&lt;br /&gt;  deletednode.getPrevious().setNext(deletednode.getNext()); //patch the whole you just made&lt;br /&gt;  &lt;br /&gt;  mNumItems--;&lt;br /&gt;  return deletednode.getData(); &lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * size&lt;br /&gt;  * Returns the number of items in this list&lt;br /&gt;  */&lt;br /&gt; public int size()&lt;br /&gt; {&lt;br /&gt;  return mNumItems;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //DEBUG Methods&lt;br /&gt; //remove these methods&lt;br /&gt; /**&lt;br /&gt;   * Prints out the entire list of objects in list&lt;br /&gt;   */&lt;br /&gt; //public void printList()&lt;br /&gt; //{&lt;br /&gt; //    System.out.println("&lt;LIST PRINT OUT&gt;");&lt;br /&gt; //    for (int i = 0; i &lt; mNumItems; i++)&lt;br /&gt; //    {&lt;br /&gt; //        System.out.println(get(i));&lt;br /&gt; //    }&lt;br /&gt; //    System.out.println("&lt;/LIST PRINT OUT&gt;");&lt;br /&gt; //}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3179473194000154289?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/3179473194000154289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=3179473194000154289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3179473194000154289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3179473194000154289'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/double-linked-list-in-java.html' title='Double Linked List in Java'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-1819253454486946450</id><published>2008-12-21T14:50:00.000-08:00</published><updated>2008-12-21T14:55:57.261-08:00</updated><title type='text'>Priority Queue in Java using ArrayList</title><content type='html'>&lt;pre&gt;&lt;br /&gt;class PriorityQueue {&lt;br /&gt;&lt;br /&gt;    private ArrayList maxHeap;&lt;br /&gt;&lt;br /&gt;    public PriorityQueue () {&lt;br /&gt;        maxHeap = new ArrayList();&lt;br /&gt;        maxHeap.add(null);   //to fill element 0&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean empty () {&lt;br /&gt;        return maxHeap.size() == 1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void insert (Comparable p) {&lt;br /&gt; if (p==null) return;&lt;br /&gt; maxHeap.add(p);&lt;br /&gt; int index = maxHeap.size()-1;&lt;br /&gt; swapWithParent(index);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt; private void swapWithParent(int index)&lt;br /&gt; {&lt;br /&gt;  int parentindex = index/2;&lt;br /&gt;  if (parentindex==0) return;&lt;br /&gt;  if (p.compareTo(maxHeap.get(parentindex)) &gt; 0)&lt;br /&gt;  {&lt;br /&gt;   //swap them&lt;br /&gt;   Comparable p = maxHeap.get(index);&lt;br /&gt;   maxHeap.set(index,maxHeap.get(parentindex));&lt;br /&gt;   maxHeap.set(parentindex,p);&lt;br /&gt;   swapWithParent(parentindex);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1819253454486946450?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/1819253454486946450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=1819253454486946450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1819253454486946450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1819253454486946450'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2008/12/priority-queue-in-java-using-arraylist.html' title='Priority Queue in Java using ArrayList'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-6680256743806029834</id><published>2007-10-24T14:22:00.001-07:00</published><updated>2007-10-24T14:22:53.422-07:00</updated><title type='text'>7bit UART TX Transmitter</title><content type='html'>&lt;pre&gt;module uart_tx (output sd, output busy, input [6:0] data, input wr, rst, clk);&lt;br /&gt;  reg [3:0] state, next_state;&lt;br /&gt;  reg [9:0] shifter;&lt;br /&gt;&lt;br /&gt;  parameter S_IDLE = 4'd0, S_BIT_START = 4'd1, S_BIT_P = 4'd9, S_BIT_STOP = 4'd10;&lt;br /&gt;&lt;br /&gt;// continuous assignments&lt;br /&gt;  assign busy = (state != S_IDLE);&lt;br /&gt;  assign sd = shifter[0];&lt;br /&gt;&lt;br /&gt;// synchronous behavior(s)&lt;br /&gt;always @ (posedge clk) begin   &lt;br /&gt; if(rst) begin&lt;br /&gt;  state &lt;= S_IDLE;&lt;br /&gt;  shifter &lt;= 10'b11_1111_1111;&lt;br /&gt; end&lt;br /&gt; else begin&lt;br /&gt;  state &lt;= next_state;   // update state&lt;br /&gt;  if(wr)     // load new frame&lt;br /&gt;   shifter &lt;= {1'b1, ~(^(data)), data, 1'b0}; // could leave stop bit off!&lt;br /&gt;  else     // shift current frame&lt;br /&gt;   shifter &lt;= {1'b1, shifter[9:1]}; // shift in idle channel&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;// next state logic&lt;br /&gt;always @ (state, wr) begin&lt;br /&gt; case (state)&lt;br /&gt; S_IDLE:&lt;br /&gt;  if(wr) next_state = S_BIT_START;&lt;br /&gt;  else next_state = S_IDLE;&lt;br /&gt; S_BIT_STOP:&lt;br /&gt;  next_state = S_IDLE;&lt;br /&gt; default:&lt;br /&gt;  next_state = state + 4'd1;&lt;br /&gt; endcase&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6680256743806029834?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/6680256743806029834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=6680256743806029834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6680256743806029834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6680256743806029834'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/10/7bit-uart-tx-transmitter.html' title='7bit UART TX Transmitter'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-2652330474565099021</id><published>2007-10-24T14:20:00.000-07:00</published><updated>2007-10-24T14:21:35.594-07:00</updated><title type='text'>16bit BCD adder</title><content type='html'>sometimes you just want a BCD adder instead of a binary adder.  here is a 16bit one that works.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//put the cla and #1 adders together to make them easier to merge&lt;br /&gt;module bcdadd4(&lt;br /&gt;   output co,&lt;br /&gt;   output [15:0] s,   &lt;br /&gt;   input [15:0] a,b,&lt;br /&gt;   input cin);&lt;br /&gt;   wire p_up,g_up;&lt;br /&gt;   wire [3:0] p,g;&lt;br /&gt;   wire [3:0] carry;&lt;br /&gt;&lt;br /&gt;   pfa_bcd add[3:0](.p(p),.g(g),.s(s),.a(a),.b(b),.cin({carry[2:0], cin}));&lt;br /&gt;&lt;br /&gt;   cla localcla(.p_up(p_up),.g_up(g_up),.cout(carry),.p(p),.g(g),.cin(cin));&lt;br /&gt;&lt;br /&gt;   assign co = carry[3];&lt;br /&gt;endmodule&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;module pfa_bcd(output reg p, g, output reg[3:0] s, input cin, input[3:0] a, b);&lt;br /&gt;   always @(*) begin&lt;br /&gt;      s &lt;= (a+b+cin) % 10;&lt;br /&gt;      p &lt;= (a+b == 9);&lt;br /&gt;      g &lt;= (a+b &gt; 9);           &lt;br /&gt;   end  &lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-2652330474565099021?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/2652330474565099021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=2652330474565099021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/2652330474565099021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/2652330474565099021'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/10/16bit-bcd-adder.html' title='16bit BCD adder'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-3048326852902764077</id><published>2007-10-24T14:12:00.001-07:00</published><updated>2007-10-24T14:13:46.621-07:00</updated><title type='text'>16bit register file: 2 read &amp; 2 write ports</title><content type='html'>This is a beautiful piece of code :-)&lt;br /&gt;&lt;pre&gt;module reg_file(output [15:0] read1data, read2data, input [15:0] write1data, write2data, input [2:0] read1regsel, read2regsel, write1regsel, write2regsel, input clk, rst, write1, write2);&lt;br /&gt;    wire [7:0] reg_final_write, reg1_write, reg2_write;&lt;br /&gt;    wire [127:0] write_final_data;&lt;br /&gt;    wire [127:0] regfileout;&lt;br /&gt;    mux16b_8_1 muxAB [1:0] ({read1data, read2data}, {read1regsel, read2regsel}, {regfileout, regfileout}); //select 2 registers to read&lt;br /&gt;    &lt;br /&gt;    decoder_3_to_8 decoder(reg1_write, write1regsel, write1);   //select which register to write to&lt;br /&gt;    decoder_3_to_8 decoder2(reg2_write, write2regsel, write2);   //select which register to write to&lt;br /&gt;    mux16b_2_1 writeportselector [7:0] (write_final_data, reg2_write, write1data, write2data);&lt;br /&gt;    &lt;br /&gt;    assign reg_final_write = reg1_write | reg2_write;&lt;br /&gt;    &lt;br /&gt;    reg16bit reg_16wide [7:0] (regfileout, write_final_data, clk, rst, reg_final_write);   //registers    &lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;//sel = 0 out = a&lt;br /&gt;module mux16b_2_1(output [15:0] out, input sel, input [15:0] a, b);&lt;br /&gt;  assign out = (sel) ? b : a;&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module mux16b_8_1(output [15:0] out, input [2:0] sel, input [127:0] in);&lt;br /&gt;  assign out = &lt;br /&gt;  (sel == 3'b000) ? in[15:0]:&lt;br /&gt;  (sel == 3'b001) ? in[31:16]:&lt;br /&gt;  (sel == 3'b010) ? in[47:32]:&lt;br /&gt;  (sel == 3'b011) ? in[63:48]:&lt;br /&gt;  (sel == 3'b100) ? in[79:64]:&lt;br /&gt;  (sel == 3'b101) ? in[95:80]:&lt;br /&gt;  (sel == 3'b110) ? in[111:96]: in[127:112];&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module decoder_3_to_8(output [7:0] out, input [2:0] in, input en);&lt;br /&gt;  assign out =(en == 1'b0) ? 8'd0:&lt;br /&gt;  (in == 3'b000) ? 8'd1:&lt;br /&gt;  (in == 3'b001) ? 8'd2:&lt;br /&gt;  (in == 3'b010) ? 8'd4:&lt;br /&gt;  (in == 3'b011) ? 8'd8:&lt;br /&gt;  (in == 3'b100) ? 8'd16:&lt;br /&gt;  (in == 3'b101) ? 8'd32:&lt;br /&gt;  (in == 3'b110) ? 8'd64: 8'd128;&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module reg16bit(output [15:0] dataout, input [15:0] datain, input clk, rst, en);&lt;br /&gt;  wire [15:0] regin;&lt;br /&gt;  assign regin = en ? datain: dataout;&lt;br /&gt;  dff dff_array [15:0](dataout, regin, clk, rst);&lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3048326852902764077?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/3048326852902764077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=3048326852902764077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3048326852902764077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/3048326852902764077'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/10/16bit-register-file-2-read-2-write.html' title='16bit register file: 2 read &amp; 2 write ports'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-2330329778924553019</id><published>2007-10-24T14:07:00.000-07:00</published><updated>2007-10-24T14:11:52.745-07:00</updated><title type='text'>16bit comparer from 2bit comparer-s</title><content type='html'>Here is a cool idea, you can string a 2 bit comparer's together to make a big one... purely academic :-)&lt;br /&gt;&lt;pre&gt;module compare_2bit(output A_eq_B, A_lt_B, A_gt_B, input [1:0] A, B, input A_eq_B_in, A_lt_B_in, A_gt_B_in);&lt;br /&gt;&lt;br /&gt;  assign A_eq_B = (A == B) &amp; A_eq_B_in;&lt;br /&gt;  assign A_gt_B = (A==B) ? A_gt_B_in : A &gt; B; &lt;br /&gt;  assign A_lt_B = (A==B) ? A_lt_B_in : (A &lt; B);  &lt;br /&gt;  &lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module compare_16bit(output X_eq_Y, X_lt_Y, X_gt_Y, input [15:0] X, Y);&lt;br /&gt;    &lt;br /&gt;    wire[7:0] eq, lt, gt;&lt;br /&gt;    compare_2bit cp [7:0] (eq, lt, gt, X, Y, {eq[6:0],1'b1}, {lt[6:0],1'b0}, {gt[6:0],1'b0});&lt;br /&gt;    &lt;br /&gt;    assign X_eq_Y = eq[7];&lt;br /&gt;    assign X_lt_Y = lt[7];&lt;br /&gt;    assign X_gt_Y = gt[7];&lt;br /&gt;    &lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-2330329778924553019?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/2330329778924553019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=2330329778924553019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/2330329778924553019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/2330329778924553019'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/10/16bit-comparer-from-2bit-comparer-s.html' title='16bit comparer from 2bit comparer-s'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-1404503533415778876</id><published>2007-10-24T13:50:00.000-07:00</published><updated>2008-12-11T03:26:00.809-08:00</updated><title type='text'>Webbased Server monitoring Munin</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s1600-h/loadaverge.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s320/loadaverge.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5125012897815572354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://munin.projects.linpro.no/"&gt;Munin&lt;/a&gt; An easy way to keep track of how your servers are doing from a web front.  Really clean install, and works on multitudes of servers at once.  &lt;br /&gt;How to set it up: &lt;a href="http://www.howtoforge.com/server_monitoring_monit_munin"&gt;How to set up Munin&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1404503533415778876?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/1404503533415778876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=1404503533415778876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1404503533415778876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/1404503533415778876'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/10/webbased-server-monitoring-munin.html' title='Webbased Server monitoring Munin'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s72-c/loadaverge.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-8434522258829842153</id><published>2007-09-25T23:29:00.000-07:00</published><updated>2007-09-25T23:38:05.305-07:00</updated><title type='text'>Must Have Tools for Windows XP</title><content type='html'>&lt;a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx"&gt;CmdHere&lt;/a&gt; Power Toy&lt;br /&gt;Allows you to right click anywhere in Windows Explore and open a cmd prompt at that location&lt;br /&gt;&lt;br /&gt;&lt;a href="http://desktop.google.com/"&gt;Google Desktop &lt;/a&gt;&lt;br /&gt;Actually enables you to find your documents&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ruby-lang.org/en/downloads/"&gt;Ruby &lt;/a&gt;&lt;br /&gt;Programmers swiss army knife (made in Japan)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt;Tortoise SVN&lt;/a&gt;&lt;br /&gt;life without source control is just dangerous&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ceruleanstudios.com/"&gt;Trillian&lt;/a&gt;&lt;br /&gt;Stay connected with people &lt;br /&gt;&lt;br /&gt;&lt;a href="http://realtimesoft.com/ultramon/"&gt;UltraMon&lt;/a&gt;&lt;br /&gt;You always need more then one monitor, ultramon makes multi-monitors a joy&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;Putty&lt;/a&gt;&lt;br /&gt;What can you do without SSH&lt;br /&gt;&lt;br /&gt;&lt;a href="http://winscp.net/eng/index.php"&gt;WinSCP&lt;/a&gt;&lt;br /&gt;Windows Explorer over SSH (just handy)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-8434522258829842153?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/8434522258829842153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=8434522258829842153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8434522258829842153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/8434522258829842153'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/09/must-have-tools-for-windows-xp.html' title='Must Have Tools for Windows XP'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-6322040547414064953</id><published>2007-09-25T23:22:00.001-07:00</published><updated>2008-12-11T03:26:00.979-08:00</updated><title type='text'>ModelSim is exiting with code 211.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w06EQQEN_dI/Rvn7hvSXp8I/AAAAAAAAAs4/G7e1IFbulgs/s1600-h/211+error.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_w06EQQEN_dI/Rvn7hvSXp8I/AAAAAAAAAs4/G7e1IFbulgs/s320/211+error.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5114395408903677890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ModelSim PE can crash on simulation for a 211 error.  This error is a license error, caused by ModelSim trying to use some feature that shouldn't work on the Personal Edition.  &lt;br /&gt;&lt;b&gt;Solution: Use ModelSim SE&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6322040547414064953?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/6322040547414064953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=6322040547414064953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6322040547414064953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6322040547414064953'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/09/modelsim-is-exiting-with-code-211.html' title='ModelSim is exiting with code 211.'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w06EQQEN_dI/Rvn7hvSXp8I/AAAAAAAAAs4/G7e1IFbulgs/s72-c/211+error.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-6948814971670581396</id><published>2007-09-25T23:20:00.000-07:00</published><updated>2007-09-25T23:21:50.327-07:00</updated><title type='text'>Verilog 3 to 8 decoder and 1 to 8 demux RTL</title><content type='html'>&lt;pre&gt;&lt;br /&gt;module decoder3_8(&lt;br /&gt;   output [7:0] out,&lt;br /&gt;   input [2:0] sel);&lt;br /&gt;   &lt;br /&gt;  assign out = ( sel == 3'b000) ? 8'b1111_1110 :&lt;br /&gt;               ( sel == 3'b001) ? 8'b1111_1101 :&lt;br /&gt;               ( sel == 3'b010) ? 8'b1111_1011 :&lt;br /&gt;               ( sel == 3'b011) ? 8'b1111_0111 :&lt;br /&gt;               ( sel == 3'b100) ? 8'b1110_1111 :&lt;br /&gt;               ( sel == 3'b101) ? 8'b1101_1111 :&lt;br /&gt;               ( sel == 3'b110) ? 8'b1011_1111 :&lt;br /&gt;               ( sel == 3'b111) ? 8'b0111_1111 :&lt;br /&gt;                                8'b1111_1111;&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module demux1_8 (&lt;br /&gt;   output[7:0] sig_out,&lt;br /&gt;   input[2:0] sel,&lt;br /&gt;   input sig_in);&lt;br /&gt;   &lt;br /&gt;   wire[7:0] selout;&lt;br /&gt;&lt;br /&gt;   decoder3_8 selector(selout, sel);   &lt;br /&gt;&lt;br /&gt;   or finalor[7:0](sig_out, selout, sig_in);&lt;br /&gt;   &lt;br /&gt;endmodule&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6948814971670581396?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/6948814971670581396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=6948814971670581396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6948814971670581396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/6948814971670581396'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/09/verilog-3-to-8-decoder-and-1-to-8-demux.html' title='Verilog 3 to 8 decoder and 1 to 8 demux RTL'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-495644103355424.post-5138893235325688818</id><published>2007-09-25T23:19:00.000-07:00</published><updated>2007-09-25T23:20:08.326-07:00</updated><title type='text'>Structural  16bit CLA adder in Verilog</title><content type='html'>A whole 16 bit adder&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;module pfa(&lt;br /&gt;   output  p, g, s,&lt;br /&gt;   input   a, b, cin);&lt;br /&gt;   xor #1 sumer(s, a, b, cin);&lt;br /&gt;   xor #1 proper(p, a, b);&lt;br /&gt;   and #1 gener(g, a, b);&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;//cla module 4 bit&lt;br /&gt;module cla(&lt;br /&gt;   output   p_up, g_up,&lt;br /&gt;   output [3:0]  cout,  // assumed [3:1] was typo becuase it made design less elegant&lt;br /&gt;   input  [3:0]  p, g,&lt;br /&gt;   input cin);&lt;br /&gt; &lt;br /&gt;   //assign p_up = &amp;(p);&lt;br /&gt;   and #1 (p_up, p);&lt;br /&gt;   wire p3g2, p3p2g1, p3p2p1g0, p3p2p1p0cin;&lt;br /&gt;   &lt;br /&gt;   and #1(p3g2,p[3],g[2]);&lt;br /&gt;   and #1(p3p2g1,p[3],p[2],g[1]);&lt;br /&gt;   and #1(p3p2p1g0,p[3],p[2],p[1],g[0]);&lt;br /&gt;   &lt;br /&gt;   and #1(p3p2p1p0cin,p[3],p[2],p[1],p[0],cin);&lt;br /&gt;   &lt;br /&gt;   //assign g_up = g[3] | p[3]&amp;g[2] | p[3]&amp;p[2]&amp;g[1] | p[3]&amp;p[2]&amp;p[1]&amp;g[0];&lt;br /&gt;   or #1 (g_up,g[3],p3g2,p3p2g1,p3p2p1g0);&lt;br /&gt;   &lt;br /&gt;   //assign cout[3] = g[3] | p[3]&amp;g[2] | p[3]&amp;p[2]&amp;g[1] | p[3]&amp;p[2]&amp;p[1]&amp;g[0] | p[3]&amp;p[2]&amp;p[1]&amp;p[0]&amp;cin;&lt;br /&gt;   or #1(cout[3],g[3],p3g2,p3p2g1,p3p2p1g0,p3p2p1p0cin);&lt;br /&gt;   &lt;br /&gt;   wire p2g1,p2p1g0,p2p1p0cin,p1g0,p1p0cin,p0cin;&lt;br /&gt;   &lt;br /&gt;   and #1(p2g1,p[2],g[1]);&lt;br /&gt;   and #1(p2p1g0,p[2],p[1],g[0]);&lt;br /&gt;   and #1(p2p1p0cin,p[2],p[1],p[0],cin);&lt;br /&gt;   and #1(p1g0,p[1],g[0]);&lt;br /&gt;   and #1(p1p0cin,p[1],p[0],cin);&lt;br /&gt;   and #1(p0cin,p[0],cin);&lt;br /&gt;   &lt;br /&gt;   //assign cout[2] = g[2] | p[2]&amp;g[1] | p[2]&amp;p[1]&amp;g[0] | p[2]&amp;p[1]&amp;p[0]&amp;cin;&lt;br /&gt;   or #1(cout[2], g[2],p2g1,p2p1g0,p2p1p0cin);&lt;br /&gt;   &lt;br /&gt;   //assign cout[1] = g[1] | p[1]&amp;g[0] | p[1]&amp;p[0]&amp;cin;&lt;br /&gt;   or #1(cout[1],g[1],p1g0,p1p0cin);&lt;br /&gt;   &lt;br /&gt;   //assign cout[0] = g[0] | p[0]&amp;cin;&lt;br /&gt;   or  #1(cout[0],g[0],p0cin);&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;//put the cla and #1 adders together to make them easier to merge&lt;br /&gt;module adder4_cla(&lt;br /&gt;   output co,&lt;br /&gt;   output [3:0] s,&lt;br /&gt;   output p_up,g_up,&lt;br /&gt;   input [3:0] a,b,&lt;br /&gt;   input cin);&lt;br /&gt;&lt;br /&gt;   wire [3:0] p,g;&lt;br /&gt;   wire [3:0] carry;&lt;br /&gt;   &lt;br /&gt;   pfa add[3:0](.p(p),.g(g),.s(s),.a(a),.b(b),.cin({carry[2:0], cin}));&lt;br /&gt;&lt;br /&gt;   cla localcla(.p_up(p_up),.g_up(g_up),.cout(carry),.p(p),.g(g),.cin(cin));&lt;br /&gt;&lt;br /&gt;   assign co = carry[3];&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module add16(   &lt;br /&gt;   output co,&lt;br /&gt;   output [15:0] s,&lt;br /&gt;   input [15:0] a,b,&lt;br /&gt;   input cin);&lt;br /&gt;&lt;br /&gt;   wire [3:0] carry, p, g;&lt;br /&gt;   wire p_up, g_up;&lt;br /&gt;&lt;br /&gt;   wire c1,c2,c3,c4;&lt;br /&gt;&lt;br /&gt;   adder4_cla add1 (.co(c1),.s(s[3:0]),.p_up(p[0]),.g_up(g[0]),.a(a[3:0]),.b(b[3:0]),.cin(cin));&lt;br /&gt;   adder4_cla add2 (.co(c2),.s(s[7:4]),.p_up(p[1]),.g_up(g[1]),.a(a[7:4]),.b(b[7:4]),.cin(carry[0]));&lt;br /&gt;   adder4_cla add3 (.co(c3),.s(s[11:8]),.p_up(p[2]),.g_up(g[2]),.a(a[11:8]),.b(b[11:8]),.cin(carry[1]));&lt;br /&gt;   adder4_cla add4 (.co(c4),.s(s[15:12]),.p_up(p[3]),.g_up(g[3]),.a(a[15:12]),.b(b[15:12]),.cin(carry[2]));&lt;br /&gt;&lt;br /&gt;   cla finalcla(.p_up(p_up),.g_up(g_up),.cout(carry),.p(p),.g(g),.cin(cin));&lt;br /&gt;&lt;br /&gt;   assign co = carry[3];&lt;br /&gt;endmodule&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-5138893235325688818?l=trixy.justinkbeck.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trixy.justinkbeck.com/feeds/5138893235325688818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=495644103355424&amp;postID=5138893235325688818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5138893235325688818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/495644103355424/posts/default/5138893235325688818'/><link rel='alternate' type='text/html' href='http://trixy.justinkbeck.com/2007/09/structural-16bit-cla-adder-in-verilog.html' title='Structural  16bit CLA adder in Verilog'/><author><name>Justin Beck</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17657903077408638880'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>