Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > fab8ebd060c0efe39b960438443f403f > files > 19

linsmith-0.99.12-2.fc12.x86_64.rpm

#!/usr/bin/tclsh

set el_filt {<([a-zA-Z0-9]+)>([^<]+)</([a-zA-Z0-9]+)>}

proc save_comp {} {
  global outf elem
  if {$elem(element) == 0} {			;# 'Discrete'
    if {$elem(iscap) == 0} {			;# Inductance
      puts $outf "  <element>0</element>"
      puts $outf "  <val2>$elem(val)</val2>"
    } else {					;# Capacitor
      puts $outf "  <element>1</element>"
      puts $outf "  <val1>$elem(val)</val1>"
    }
  } else {
    puts $outf "  <element>[expr $elem(element)+3]</element>"
    puts $outf "  <val1>$elem(val)</val1>"
  }
  puts $outf "  <connection>[expr $elem(connection) % 256]</connection>"
  foreach typ {useloss z0 vf loss1 mhz1 loss2 mhz2} {
    puts $outf "  <$typ>$elem($typ)</$typ>"
  }
}


if {$argc != 2} {
  puts "Converts old (0.8.x) circuit files into the new (0.9.x) format."
  puts "Usage:"
  puts "          conv0809 oldfile newfile"
  puts ""
  exit
}

set infn [lindex $argv 0]
set outfn [lindex $argv 1]

set inf [open $infn r]
set outf [open $outfn w]

set mode COPY
while {![eof $inf]} {
  set line [gets $inf]
  switch $mode {
    COPY {
      puts $outf $line
      if {[regexp "<element>" $line]} {
        set mode ELEM
      }
    }
    ELEM {
      if {[regexp $el_filt $line dummy entry val exit]} {
        if {$entry == $exit} {
          set elem($entry) $val
        }
      } else {
        if {[regexp "</element>" $line]} {
          save_comp
          puts $outf $line
          set mode COPY
        }
      }
    } 
  }
}

close $inf
close $outf