Merge branch 'master' into clarion

This commit is contained in:
Arfon Smith
2015-04-10 15:06:33 -05:00
197 changed files with 24743 additions and 266 deletions

45
.gitmodules vendored
View File

@@ -397,9 +397,6 @@
[submodule "vendor/grammars/pascal.tmbundle"]
path = vendor/grammars/pascal.tmbundle
url = https://github.com/textmate/pascal.tmbundle
[submodule "vendor/grammars/perl.tmbundle"]
path = vendor/grammars/perl.tmbundle
url = https://github.com/textmate/perl.tmbundle
[submodule "vendor/grammars/php-smarty.tmbundle"]
path = vendor/grammars/php-smarty.tmbundle
url = https://github.com/textmate/php-smarty.tmbundle
@@ -618,3 +615,45 @@
[submodule "vendor/grammars/SublimeClarion"]
path = vendor/grammars/SublimeClarion
url = https://github.com/fushnisoft/SublimeClarion
[submodule "vendor/grammars/oracle.tmbundle"]
path = vendor/grammars/oracle.tmbundle
url = https://github.com/mulander/oracle.tmbundle.git
[submodule "vendor/grammars/BrightScript.tmbundle"]
path = vendor/grammars/BrightScript.tmbundle
url = https://github.com/cmink/BrightScript.tmbundle
[submodule "vendor/grammars/Stylus"]
path = vendor/grammars/Stylus
url = https://github.com/billymoon/Stylus
[submodule "vendor/grammars/asciidoc.tmbundle"]
path = vendor/grammars/asciidoc.tmbundle
url = https://github.com/zuckschwerdt/asciidoc.tmbundle
[submodule "vendor/grammars/sublime-text-pig-latin"]
path = vendor/grammars/sublime-text-pig-latin
url = https://github.com/goblindegook/sublime-text-pig-latin
[submodule "vendor/grammars/Lean.tmbundle"]
path = vendor/grammars/Lean.tmbundle
url = https://github.com/leanprover/Lean.tmbundle
[submodule "vendor/grammars/ampl"]
path = vendor/grammars/ampl
url = https://github.com/ampl/sublime-ampl
[submodule "vendor/grammars/openscad.tmbundle"]
path = vendor/grammars/openscad.tmbundle
url = https://github.com/tbuser/openscad.tmbundle
[submodule "vendor/grammars/sublime-varnish"]
path = vendor/grammars/sublime-varnish
url = https://github.com/brandonwamboldt/sublime-varnish
[submodule "vendor/grammars/xc.tmbundle"]
path = vendor/grammars/xc.tmbundle
url = https://github.com/graymalkin/xc.tmbundle
[submodule "vendor/grammars/perl.tmbundle"]
path = vendor/grammars/perl.tmbundle
url = https://github.com/textmate/perl.tmbundle
[submodule "vendor/grammars/sublime-netlinx"]
path = vendor/grammars/sublime-netlinx
url = https://github.com/amclain/sublime-netlinx
[submodule "vendor/grammars/Sublime-Red"]
path = vendor/grammars/Sublime-Red
url = https://github.com/Oldes/Sublime-Red
[submodule "vendor/grammars/jflex.tmbundle"]
path = vendor/grammars/jflex.tmbundle
url = https://github.com/jflex-de/jflex.tmbundle.git

View File

@@ -1,4 +1,3 @@
sudo: false
before_install: script/travis/before_install
rvm:
- 1.9.3

View File

@@ -37,7 +37,7 @@ Assuming your code is being detected as the right language, in most cases this i
You can also try to fix the bug yourself and submit a Pull Request. [TextMate's documentation](http://manual.macromates.com/en/language_grammars) offers a good introduction on how to work with TextMate-compatible grammars. You can test grammars using [Lightshow](https://github-lightshow.herokuapp.com).
Once the bug has been fixed upstream, please let us know and we'll pick it up for GitHub.
Once the bug has been fixed upstream, we'll pick it up for GitHub in the next release of Linguist.
## Testing

View File

@@ -26,7 +26,7 @@ Linguist supports a number of different custom overrides strategies for language
### Using gitattributes
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, and `linguist-vendored`.
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, and `linguist-vendored`. `.gitattributes` will be used to determine language statistics, but will not be used to syntax highlight files. To manually set syntax highlighting, use [Vim or Emacs modelines](#using-emacs-and-vim-modelines).
```
$ cat .gitattributes
@@ -35,7 +35,7 @@ $ cat .gitattributes
Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language. By default, Linguist treats all of the paths defined in [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository. Vendored files are also hidden by default in diffs on github.com.
Use the `linguist-vendored` attribute to vendor or un-vendor paths.
Use the `linguist-vendored` attribute to vendor or un-vendor paths. Please note, overriding the vendored (or un-vendored) status of a file only affects the language statistics for the repository and not the behavior in diffs on github.com.
```
$ cat .gitattributes

View File

@@ -2,10 +2,8 @@
# linguist — detect language type for a file, or, given a directory, determine language breakdown
# usage: linguist <path> [<--breakdown>]
require 'linguist/file_blob'
require 'linguist/language'
require 'linguist/repository'
#
require 'linguist'
require 'rugged'
path = ARGV[0] || Dir.pwd

View File

@@ -14,13 +14,14 @@ Gem::Specification.new do |s|
s.executables << 'linguist'
s.add_dependency 'charlock_holmes', '~> 0.7.3'
s.add_dependency 'escape_utils', '~> 1.0.1'
s.add_dependency 'escape_utils', '~> 1.1.0'
s.add_dependency 'mime-types', '>= 1.19'
s.add_dependency 'rugged', '~> 0.22.0b4'
s.add_dependency 'rugged', '~> 0.23.0b1'
s.add_development_dependency 'minitest', '>= 5.0'
s.add_development_dependency 'mocha'
s.add_development_dependency 'pry'
s.add_development_dependency 'rake'
s.add_development_dependency 'yajl-ruby'
s.add_development_dependency 'color-proximity', '~> 0.2.1'
end

View File

@@ -26,6 +26,9 @@ vendor/grammars/Alloy.tmbundle:
- source.alloy
vendor/grammars/AutoHotkey/:
- source.ahk
vendor/grammars/BrightScript.tmbundle/:
- source.brightauthorproject
- source.brightscript
vendor/grammars/CLIPS-sublime:
- source.clips
vendor/grammars/ColdFusion:
@@ -60,6 +63,8 @@ vendor/grammars/JSyntax/:
- source.j
vendor/grammars/Julia.tmbundle:
- source.julia
vendor/grammars/Lean.tmbundle:
- source.lean
vendor/grammars/LiveScript.tmbundle:
- source.livescript
vendor/grammars/Modelica/:
@@ -88,6 +93,8 @@ vendor/grammars/Slash.tmbundle:
vendor/grammars/Stata.tmbundle:
- source.mata
- source.stata
vendor/grammars/Stylus/:
- source.stylus
vendor/grammars/Sublime-Coq:
- source.coq
vendor/grammars/Sublime-HTTP:
@@ -106,6 +113,8 @@ vendor/grammars/Sublime-QML:
- source.qml
vendor/grammars/Sublime-REBOL:
- source.rebol
vendor/grammars/Sublime-Red:
- source.red
vendor/grammars/Sublime-SQF-Language:
- source.sqf
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
@@ -138,6 +147,8 @@ vendor/grammars/actionscript3-tmbundle:
- text.xml.flex-config
vendor/grammars/ada.tmbundle:
- source.ada
vendor/grammars/ampl:
- source.ampl
vendor/grammars/ant.tmbundle:
- text.xml.ant
vendor/grammars/antlr.tmbundle:
@@ -147,6 +158,8 @@ vendor/grammars/apache.tmbundle:
- source.apache-config.mod_perl
vendor/grammars/applescript.tmbundle:
- source.applescript
vendor/grammars/asciidoc.tmbundle/:
- text.html.asciidoc
vendor/grammars/asp.tmbundle:
- source.asp
- text.html.asp
@@ -284,6 +297,8 @@ vendor/grammars/javadoc.tmbundle:
- text.html.javadoc
vendor/grammars/javascript-objective-j.tmbundle:
- source.js.objj
vendor/grammars/jflex.tmbundle:
- source.jflex
vendor/grammars/jquery-tmbundle:
- source.js.jquery
vendor/grammars/json.tmbundle:
@@ -376,12 +391,17 @@ vendor/grammars/ooc.tmbundle:
- source.ooc
vendor/grammars/opa.tmbundle:
- source.opa
vendor/grammars/openscad.tmbundle/:
- source.scad
vendor/grammars/oracle.tmbundle:
- source.plsql.oracle
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
- source.oz
vendor/grammars/pascal.tmbundle:
- source.pascal
vendor/grammars/perl.tmbundle:
vendor/grammars/perl.tmbundle/:
- source.perl
- source.perl.6
vendor/grammars/php-smarty.tmbundle:
- source.smarty
vendor/grammars/php.tmbundle:
@@ -461,6 +481,9 @@ vendor/grammars/sublime-idris:
- source.idris
vendor/grammars/sublime-mask:
- source.mask
vendor/grammars/sublime-netlinx:
- source.netlinx
- source.netlinx.erb
vendor/grammars/sublime-nginx:
- source.nginx
vendor/grammars/sublime-nix:
@@ -481,9 +504,14 @@ vendor/grammars/sublime-tea:
- source.tea
vendor/grammars/sublime-text-ox/:
- source.ox
vendor/grammars/sublime-text-pig-latin/:
- source.pig_latin
vendor/grammars/sublime-varnish:
- source.varnish.vcl
vendor/grammars/sublime_cobol:
- source.acucobol
- source.cobol
- source.jcl
- source.opencobol
vendor/grammars/sublime_man_page_support:
- source.man
@@ -513,6 +541,8 @@ vendor/grammars/verilog.tmbundle:
- source.verilog
vendor/grammars/x86-assembly-textmate-bundle:
- source.asm.x86
vendor/grammars/xc.tmbundle/:
- source.xc
vendor/grammars/xml.tmbundle:
- text.xml
- text.xml.xsl

View File

@@ -6,3 +6,15 @@ require 'linguist/repository'
require 'linguist/samples'
require 'linguist/shebang'
require 'linguist/version'
class << Linguist
attr_accessor :instrumenter
def instrument(*args, &bk)
if instrumenter
instrumenter.instrument(*args, &bk)
else
yield if block_given?
end
end
end

View File

@@ -99,7 +99,7 @@ module Linguist
elsif name.nil?
"attachment"
else
"attachment; filename=#{EscapeUtils.escape_url(File.basename(name))}"
"attachment; filename=#{EscapeUtils.escape_url(name)}"
end
end
@@ -233,7 +233,7 @@ module Linguist
#
# Return true or false
def vendored?
name =~ VendoredRegexp ? true : false
path =~ VendoredRegexp ? true : false
end
documentation_paths = YAML.load_file(File.expand_path("../documentation.yml", __FILE__))
@@ -248,7 +248,7 @@ module Linguist
#
# Return true or false
def documentation?
name =~ DocumentationRegexp ? true : false
path =~ DocumentationRegexp ? true : false
end
# Public: Get each line of data
@@ -316,7 +316,7 @@ module Linguist
#
# Return true or false
def generated?
@_generated ||= Generated.generated?(name, lambda { data })
@_generated ||= Generated.generated?(path, lambda { data })
end
# Public: Detects the Language of the blob.

View File

@@ -7,10 +7,14 @@
# Please add additional test coverage to
# `test/test_blob.rb#test_documentation` if you make any changes.
## Documentation Conventions ##
## Documentation directories ##
- ^docs?/
- ^Documentation/
- (^|/)[Dd]ocumentation/
- (^|/)javadoc/
- ^man/
## Documentation files ##
- (^|/)CONTRIBUTING(\.|$)
- (^|/)COPYING(\.|$)

View File

@@ -3,7 +3,7 @@ require 'linguist/blob_helper'
module Linguist
# A FileBlob is a wrapper around a File object to make it quack
# like a Grit::Blob. It provides the basic interface: `name`,
# `data`, and `size`.
# `data`, `path` and `size`.
class FileBlob
include BlobHelper
@@ -14,43 +14,50 @@ module Linguist
#
# Returns a FileBlob.
def initialize(path, base_path = nil)
@path = path
@name = base_path ? path.sub("#{base_path}/", '') : path
@fullpath = path
@path = base_path ? path.sub("#{base_path}/", '') : path
end
# Public: Filename
#
# Examples
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb").name
# FileBlob.new("/path/to/linguist/lib/linguist.rb").path
# # => "/path/to/linguist/lib/linguist.rb"
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb",
# "/path/to/linguist").name
# "/path/to/linguist").path
# # => "lib/linguist.rb"
#
# Returns a String
attr_reader :name
attr_reader :path
# Public: Read file permissions
#
# Returns a String like '100644'
def mode
File.stat(@path).mode.to_s(8)
File.stat(@fullpath).mode.to_s(8)
end
# Public: File name
#
# Returns a String
def name
File.basename(@fullpath)
end
# Public: Read file contents.
#
# Returns a String.
def data
File.read(@path)
File.read(@fullpath)
end
# Public: Get byte size
#
# Returns an Integer.
def size
File.size(@path)
File.size(@fullpath)
end
# Public: Get file extension.
@@ -67,7 +74,7 @@ module Linguist
#
# Returns an Array
def extensions
basename, *segments = File.basename(name).split(".")
basename, *segments = name.downcase.split(".")
segments.map.with_index do |segment, index|
"." + segments[index..-1].join(".")

View File

@@ -58,10 +58,13 @@ module Linguist
godeps? ||
generated_by_zephir? ||
minified_files? ||
source_map? ||
compiled_coffeescript? ||
generated_parser? ||
generated_net_docfile? ||
generated_postscript? ||
compiled_cython_file? ||
generated_protocol_buffer_go? ||
generated_protocol_buffer? ||
generated_jni_header? ||
vcr_cassette?
@@ -94,6 +97,20 @@ module Linguist
end
end
# Internal: Is the blob a generated source map?
#
# Source Maps usually have .css.map or .js.map extensions. In case they
# are not following the name convention, detect them based on the content.
#
# Returns true or false.
def source_map?
return false unless extname.downcase == '.map'
name =~ /(\.css|\.js)\.map$/i || # Name convention
lines[0] =~ /^{"version":\d+,/ || # Revision 2 and later begin with the version number
lines[0] =~ /^\/\*\* Begin line maps\. \*\*\/{/ # Revision 1 begins with a magic comment
end
# Internal: Is the blob of JS generated by CoffeeScript?
#
# CoffeeScript is meant to output JS that would be difficult to
@@ -202,6 +219,13 @@ module Linguist
creator.include?("ImageMagick")
end
def generated_protocol_buffer_go?
return false unless extname == '.go'
return false unless lines.count > 1
return lines[0].include?("Code generated by protoc-gen-go")
end
# Internal: Is the blob a C++, Java or Python source file generated by the
# Protocol Buffer compiler?
#
@@ -262,5 +286,18 @@ module Linguist
# VCR Cassettes have "recorded_with: VCR" in the second last line.
return lines[-2].include?("recorded_with: VCR")
end
# Internal: Is this a compiled C/C++ file from Cython?
#
# Cython-compiled C/C++ files typically contain:
# /* Generated by Cython x.x.x on ... */
# on the first line.
#
# Return true or false
def compiled_cython_file?
return false unless ['.c', '.cpp'].include? extname
return false unless lines.count > 1
return lines[0].include?("Generated by Cython")
end
end
end

View File

@@ -33,7 +33,7 @@ module Linguist
# disambiguate "Perl", "Prolog" do |data|
# if data.include?("use strict")
# Language["Perl"]
# elsif data.include?(":-")
# elsif /^[^#]+:-/.match(data)
# Language["Prolog"]
# end
# end
@@ -94,23 +94,27 @@ module Linguist
Language["Perl6"]
elsif data.match(/use strict|use\s+v?5\./)
Language["Perl"]
elsif data.include?(":-")
elsif /^[^#]+:-/.match(data)
Language["Prolog"]
end
end
disambiguate "ECL", "Prolog" do |data|
if data.include?(":-")
if /^[^#]+:-/.match(data)
Language["Prolog"]
elsif data.include?(":=")
Language["ECL"]
end
end
disambiguate "IDL", "Prolog" do |data|
if data.include?(":-")
disambiguate "IDL", "Prolog", "INI", "QMake" do |data|
if /^[^#]+:-/.match(data)
Language["Prolog"]
else
elsif data.include?("last_client=")
Language["INI"]
elsif data.include?("HEADERS") && data.include?("SOURCES")
Language["QMake"]
elsif /^\s*function[ \w,]+$/.match(data)
Language["IDL"]
end
end
@@ -160,7 +164,7 @@ module Linguist
end
end
disambiguate "FORTRAN", "Forth" do |data|
disambiguate "FORTRAN", "Forth", "Formatted" do |data|
if /^: /.match(data)
Language["Forth"]
elsif /^([c*][^a-z]| (subroutine|program)\s|\s*!)/i.match(data)
@@ -168,27 +172,33 @@ module Linguist
end
end
disambiguate "F#", "Forth", "GLSL" do |data|
disambiguate "F#", "Forth", "GLSL", "Filterscript" do |data|
if /^(: |new-device)/.match(data)
Language["Forth"]
elsif /^\s*(#light|import|let|module|namespace|open|type)/.match(data)
Language["F#"]
elsif /^\s*(#include|#pragma|precision|uniform|varying|void)/.match(data)
elsif /^\s*(#version|precision|uniform|varying|vec[234])/.match(data)
Language["GLSL"]
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
Language["Filterscript"]
end
end
disambiguate "M", "Mathematica", "Matlab", "Mercury", "Objective-C" do |data|
disambiguate "Limbo", "M", "MUF", "Mathematica", "Matlab", "Mercury", "Objective-C" do |data|
if ObjectiveCRegex.match(data)
Language["Objective-C"]
elsif data.include?(":- module")
Language["Mercury"]
elsif /^: /.match(data)
Language["MUF"]
elsif /^\s*;/.match(data)
Language["M"]
elsif /^\s*\(\*/.match(data)
Language["Mathematica"]
elsif /^\s*%/.match(data)
Language["Matlab"]
elsif /^\w+\s*:\s*module\s*{/.match(data)
Language["Limbo"]
end
end
@@ -229,5 +239,55 @@ module Linguist
Language["Text"]
end
end
disambiguate "PLSQL", "SQLPL", "PLpgSQL", "SQL" do |data|
if /^\\i\b|AS \$\$|LANGUAGE '+plpgsql'+/i.match(data) || /SECURITY (DEFINER|INVOKER)/i.match(data) || /BEGIN( WORK| TRANSACTION)?;/i.match(data)
#Postgres
Language["PLpgSQL"]
elsif /(alter module)|(language sql)|(begin( NOT)+ atomic)/i.match(data) || /signal SQLSTATE '[0-9]+'/i.match(data)
#IBM db2
Language["SQLPL"]
elsif /pragma|\$\$PLSQL_|XMLTYPE|sysdate|systimestamp|\.nextval|connect by|AUTHID (DEFINER|CURRENT_USER)/i.match(data) || /constructor\W+function/i.match(data)
#Oracle
Language["PLSQL"]
elsif ! /begin|boolean|package|exception/i.match(data)
#Generic SQL
Language["SQL"]
end
end
disambiguate "D", "DTrace", "Makefile" do |data|
if /^module /.match(data)
Language["D"]
elsif /^((dtrace:::)?BEGIN|provider |#pragma (D (option|attributes)|ident)\s)/.match(data)
Language["DTrace"]
elsif /(\/.*:( .* \\)$| : \\$|^ : |: \\$)/.match(data)
Language["Makefile"]
end
end
disambiguate "OCaml", "Standard ML" do |data|
if /(^\s*module)|let rec |match\s+(\S+\s)+with/.match(data)
Language["OCaml"]
elsif /=> |case\s+(\S+\s)+of/.match(data)
Language["Standard ML"]
end
end
disambiguate "NL", "NewLisp" do |data|
if /^g3 /.match(data)
Language["NL"]
else
Language["NewLisp"]
end
end
disambiguate "Rust", "RenderScript" do |data|
if data.include?("^(use |fn |mod |pub |macro_rules|impl|#!?\[)")
Language["Rust"]
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
Language["RenderScript"]
end
end
end
end

View File

@@ -73,7 +73,7 @@ module Linguist
raise ArgumentError, "Extension is missing a '.': #{extension.inspect}"
end
@extension_index[extension] << language
@extension_index[extension.downcase] << language
end
language.interpreters.each do |interpreter|
@@ -105,19 +105,31 @@ module Linguist
# Bail early if the blob is binary or empty.
return nil if blob.likely_binary? || blob.binary? || blob.empty?
# Call each strategy until one candidate is returned.
STRATEGIES.reduce([]) do |languages, strategy|
candidates = strategy.call(blob, languages)
if candidates.size == 1
return candidates.first
elsif candidates.size > 1
# More than one candidate was found, pass them to the next strategy.
candidates
else
# No candiates were found, pass on languages from the previous strategy.
languages
Linguist.instrument("linguist.detection", :blob => blob) do
# Call each strategy until one candidate is returned.
languages = []
returning_strategy = nil
STRATEGIES.each do |strategy|
returning_strategy = strategy
candidates = Linguist.instrument("linguist.strategy", :blob => blob, :strategy => strategy, :candidates => languages) do
strategy.call(blob, languages)
end
if candidates.size == 1
languages = candidates
break
elsif candidates.size > 1
# More than one candidate was found, pass them to the next strategy.
languages = candidates
else
# No candidates, try the next strategy
end
end
end.first
Linguist.instrument("linguist.detected", :blob => blob, :strategy => returning_strategy, :language => languages.first)
languages.first
end
end
# Public: Get all Languages
@@ -191,7 +203,7 @@ module Linguist
# Returns all matching Languages or [] if none were found.
def self.find_by_extension(extname)
extname = ".#{extname}" unless extname.start_with?(".")
@extension_index[extname]
@extension_index[extname.downcase]
end
# DEPRECATED
@@ -528,8 +540,8 @@ module Linguist
if extnames = extensions[name]
extnames.each do |extname|
if !options['extensions'].index { |x| x.end_with? extname }
warn "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml" unless extname == '.script!'
if !options['extensions'].index { |x| x.downcase.end_with? extname.downcase }
warn "#{name} has a sample with extension (#{extname.downcase}) that isn't explicitly defined in languages.yml" unless extname == '.script!'
options['extensions'] << extname
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -14,13 +14,15 @@ module Linguist
attr_reader :repository
attr_reader :oid
attr_reader :name
attr_reader :path
attr_reader :mode
def initialize(repo, oid, name, mode = nil)
alias :name :path
def initialize(repo, oid, path, mode = nil)
@repository = repo
@oid = oid
@name = name
@path = path
@mode = mode
end
@@ -49,7 +51,7 @@ module Linguist
return @language if defined?(@language)
@language = if lang = git_attributes['linguist-language']
Language.find_by_name(lang)
Language.find_by_alias(lang)
else
super
end

View File

@@ -9,21 +9,21 @@
- CSS
- Clojure
- CoffeeScript
- Common Lisp
- Diff
- Emacs Lisp
- Erlang
- Go
- HTML
- Haskell
- Java
- JavaScript
- Lua
- Matlab
- Objective-C
- PHP
- Perl
- Python
- R
- Ruby
- SQL
- Scala
- Scheme
- Shell
- Swift
- TeX
- VimL

View File

@@ -23,17 +23,20 @@ module Linguist
# First line must start with #!
return unless shebang && shebang.start_with?("#!")
# Get the parts of the shebang without the #!
tokens = shebang.sub(/^#!\s*/, '').strip.split(' ')
s = StringScanner.new(shebang)
# There was nothing after the #!
return if tokens.empty?
return unless path = s.scan(/^#!\s*\S+/)
# Get the name of the interpreter
script = File.basename(tokens.first)
# Keep going
script = path.split('/').last
# Get next argument if interpreter was /usr/bin/env
script = tokens[1] if script == 'env'
# if /usr/bin/env type shebang then walk the string
if script == 'env'
s.scan(/\s+/)
s.scan(/.*=[^\s]+\s+/) # skip over variable arguments e.g. foo=bar
script = s.scan(/\S+/)
end
# Interpreter was /usr/bin/env with no arguments
return unless script
@@ -41,6 +44,9 @@ module Linguist
# "python2.6" -> "python2"
script.sub! /(\.\d+)$/, ''
# #! perl -> perl
script.sub! /^#!\s*/, ''
# Check for multiline shebang hacks that call `exec`
if script == 'sh' &&
data.lines.first(5).any? { |l| l.match(/exec (\w+).+\$0.+\$@/) }

View File

@@ -1,7 +1,7 @@
module Linguist
module Strategy
class Modeline
EmacsModeline = /-\*-\s*mode:\s*(\w+);?\s*-\*-/i
EmacsModeline = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i
VimModeline = /\/\*\s*vim:\s*set\s*(?:ft|filetype)=(\w+):\s*\*\//i
# Public: Detects language based on Vim and Emacs modelines

View File

@@ -22,8 +22,10 @@ module Linguist
# Start state on token, ignore anything till the next newline
SINGLE_LINE_COMMENTS = [
'//', # C
'--', # Ada, Haskell, AppleScript
'#', # Ruby
'%', # Tex
'"', # Vim
]
# Start state on opening token, ignore anything until the closing
@@ -130,6 +132,9 @@ module Linguist
# extract_shebang("#!/usr/bin/env node")
# # => "node"
#
# extract_shebang("#!/usr/bin/env A=B foo=bar awk -f")
# # => "awk"
#
# Returns String token or nil it couldn't be parsed.
def extract_shebang(data)
s = StringScanner.new(data)
@@ -138,6 +143,7 @@ module Linguist
script = path.split('/').last
if script == 'env'
s.scan(/\s+/)
s.scan(/.*=[^\s]+\s+/)
script = s.scan(/\S+/)
end
script = script[/[^\d]+/, 0] if script

View File

@@ -24,6 +24,9 @@
- (^|/)config.guess$
- (^|/)config.sub$
# Linters
- cpplint.py
# Node dependencies
- node_modules/
@@ -143,6 +146,9 @@
## Python ##
# Sphinx
- (^|/)docs?/_?(build|themes?|templates?|static)/
# django
- (^|/)admin_media/
@@ -221,7 +227,7 @@
- ^readme$
# Test fixtures
- ^[Tt]est/fixtures/
- ^[Tt]ests?/fixtures/
# PhoneGap/Cordova
- (^|/)cordova([^.]*)\.js$
@@ -233,7 +239,7 @@
# Vagrant
- ^Vagrantfile$
# .DS_Store's
# .DS_Stores
- .[Dd][Ss]_[Ss]tore$
# R packages
@@ -251,3 +257,9 @@
# ProGuard
- proguard.pro
- proguard-rules.pro
# PuPHPet
- ^puphpet/
# Android Google APIs
- (^|/)\.google_apis/

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.4.0"
VERSION = "4.5.4"
end

25
samples/AMPL/toy.ampl Normal file
View File

@@ -0,0 +1,25 @@
# A toy knapsack problem from the LocalSolver docs written in AMPL.
set I;
param Value{I};
param Weight{I};
param KnapsackBound;
var Take{I} binary;
maximize TotalValue: sum{i in I} Take[i] * Value[i];
s.t. WeightLimit: sum{i in I} Take[i] * Weight[i] <= KnapsackBound;
data;
param:
I: Weight Value :=
0 10 1
1 60 10
2 30 15
3 40 40
4 30 60
5 20 90
6 20 100
7 2 15;
param KnapsackBound := 102;

195
samples/Brainfuck/factor.b Normal file
View File

@@ -0,0 +1,195 @@
* factor an arbitrarily large positive integer
*
* Copyright (C) 1999 by Brian Raiter
* under the GNU General Public License
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-
*
* read in the number
*
<<<<<<<<<+
[-[>>>>>>>>>>][-]<<<<<<<<<<[[->>>>>>>>>>+<<<<<<<<<<]<<<<<<<<<<]
>>>>>>>>>>,----------]
>>>>>>>>>>[------------------------------------->>>>>>>>>->]
<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
*
* display the number and initialize the loop variable to two
*
[>++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------<<<<<<<<<<<]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------------------------.[-]
>>>>>>>>>>>>++<<<<+
*
* the main loop
*
[ [-]>>
*
* make copies of the number and the loop variable
*
[>>>>[-]>[-]>[-]>[-]
>[-]>[-]
<<<<<<<[->>>+>+<<<<]>>>>>>>>]
<<<<<<<<<<[>>>>>>[-<<<<+>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>[->>>+>>+<<<<<]>>>>>>>>>]
<<<<<<<<<<[>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>
*
* divide the number by the loop variable
*
[>>>[-]>>>[-]>[-]>>>] initialize
<<<<<<<<<<[<<<<<<<<<<]
>>>>>>>>>[-]>>>>>>>+<<<<<<<<[+]+
[ ->> double divisor until above dividend
[>>>>>>[->++<]>>>>]<<<<<<<<<<
[>>>>>>>>[-]>[-]
<<<<[->>>++<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
[->--------->>>>>>>>>+<<<<<<<<<<[->+<]]]]]]]]]]]>>]
<<<<<<<<<<[>>>>>>>>>[-<+<<<+>>>>]<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>
[-<--------->>>>>>>>>>>+<<<<<<<<<<[-<+>]]]]]]]]]]]>>>]
<<<<<<<<<<
[>>>>[->>>+>>+<<<<<]<<<<<<<<<<<<<<]
>>>>>>>>>>[>>>>>>>[-<<<+>>>]>>>]<<<<<<<<<<
[>>>>>>>>[->-<]>
[<<<<<<<<<[<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<]
>>>>>>>>>>>>>>>>>>>]
<<<<<<<<<<<<<<<<<<<]
>>>>>>>>>[+[+[+[+[+[+[+[+[+[+[[-]<+>]]]]]]]]]]]<
]
>>>>>>>>
[ subtract divisor from dividend
<<<<<<
[>>>>>>>>[-]>[-]<<<<<[->>>+>+<<<<]>>>>>>]<<<<<<<<<<
[>>>>>>>>[-<<<<+>>>>]<<<[->>>+>+<<<<]<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>>[-<<<<+>>>>]>]<<<<<<<<<<
[>>>>>>>>[-<->]<<<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<
[++++++++++[+>-<]>>>>>>>>>>-<<<<<<<<<<]]]]]]]]]]]>>>]
>>>>>>>+
[ if difference is nonnegative then
[-]<<<<<<<<<<<<<<<<< replace dividend and increment quotient
[>>>>[-]>>>>[-<<<<+>>>>]<<[->>+<<]<<<<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[->+<<<+>>]>>]<<<<<<<<<<
[>>>[->>>>>>+<<<<<<]<<<<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>>[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<+>>>>>>
[-<<<<<<+>>>>>>[-<<<<<<--------->>>>>>>>>>>>>>>>+<<<<<<<<<<
[-<<<<<<+>>>>>>]]]]]]]]]]]>]
>>>>>>>
] halve divisor and loop until zero
<<<<<<<<<<<<<<<<<[<<<<<<<<<<]>>>>>>>>>>
[>>>>>>>>[-]<<[->+<]<[->>>+<<<]>>>>>]<<<<<<<<<<
[+>>>>>>>[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>[-<<<<<<<->>>>>>+>
[-<<<<<<<+>>>>>>>]]]]]]]]]<<<<<<<
[->>>>>>>+<<<<<<<]-<<<<<<<<<<]
>>>>>>>
[-<<<<<<<<<<<+>>>>>>>>>>>]
>>>[>>>>>>>[-<<<<<<<<<<<+++++>>>>>>>>>>>]>>>]<<<<<<<<<<
[+>>>>>>>>[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>[-<<<<<<<<->>>>>+>>>
[-<<<<<<<<+>>>>>>>>]]]]]]]]]<<<<<<<<
[->>>>>>>>+<<<<<<<<]-<<<<<<<<<<]
>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>
[>>>>>>>>[-<<<<<<<<<<<<<+++++>>>>>>>>>>>>>]>>]<<<<<<<<<<
[<<<<<<<<<<]>>>>>>>>>>
>>>>>>
]
<<<<<<
*
* make copies of the loop variable and the quotient
*
[>>>[->>>>+>+<<<<<]>>>>>>>]
<<<<<<<<<<
[>>>>>>>[-<<<<+>>>>]<<<<<[->>>>>+>>+<<<<<<<]<<<<<<<<<<<<]
>>>>>>>>>>[>>>>>>>[-<<<<<+>>>>>]>>>]<<<<<<<<<<
*
* break out of the loop if the quotient is larger than the loop variable
*
[>>>>>>>>>[-<->]<
[<<<<<<<<
[<<[-]>>>>>>>>>>[-<<<<<<<<<<+>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<]
>>>>>>>>[>-<[+[+[+[+[+[+[+[+[+[[-]>+<]]]]]]]]]]]>+
[ [-]
*
* partially increment the loop variable
*
<[-]+>>>>+>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<
*
* examine the remainder for nonzero digits
*
[<<<<<<[<<<<[<<<<<<<<<<]>>>>+<<<<<<<<<<]<<<<]
>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>>]<<<<<<<<<<[<<<<<<<<<<]
>>>>-
[ [+]
*
* decrement the loop variable and replace the number with the quotient
*
>>>>>>>>-<<[>[-]>>[-<<+>>]>>>>>>>]<<<<<<<<<<
*
* display the loop variable
*
[+>>[>>>>>>>>+>>]<<-<<<<<<<<<<]-
[>>++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------<<<<<<<<<<<<]
++++++++++++++++++++++++++++++++.[-]>>>>
]
*
* normalize the loop variable
*
>>>>>>
[>>[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>+<<<<<
[->>>>>+<<<<<[->>>>>--------->>>>>+<<<<<<<<<<
[->>>>>+<<<<<]]]]]]]]]]]>>>>>>>>]
<<<<<<<<<<[>>>>>>>[-<<<<<+>>>>>]<<<<<<<<<<<<<<<<<]
>>>>>>>>>
]<
]>>
*
* display the number and end
*
[>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
[>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<]
++++++++++.

View File

@@ -0,0 +1,13 @@
# Calculate and output all fibonacci numbers under 100
+++++++++++
>+>>>>++++++++++++++++++++++++++++++++++++++++++++
>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>
+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-
<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++
+++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++
++++++++++++++++++++++++++++++++++++++++++++.[-]<<
<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]

View File

@@ -0,0 +1,4 @@
// More complex version of hello world
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>
>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.

View File

@@ -0,0 +1,3 @@
// Hello World
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

View File

@@ -0,0 +1,30 @@
# ROT13 cipher
-,+[ Read first character and start outer character reading loop
-[ Skip forward if character is 0
>>++++[>++++++++<-] Set up divisor (32) for division loop
(MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
<+<-[ Set up dividend (x minus 1) and enter division loop
>+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward
<[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient
<<<<<- Decrement dividend
] End division loop
]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag
>--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag
++++++++++++<[ If flag then set up divisor (13) for second division loop
(MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
>-[>+>>] Reduce divisor; Normal case: increase remainder
>[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient
<<<<<- Decrease dividend
] End division loop
>>[<+>-] Add remainder back to divisor to get a useful 13
>[ Skip forward if quotient was 0
-[ Decrement quotient and skip forward if quotient was 1
-<<[-]>> Zero quotient and divisor if quotient was 2
]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1
]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0
] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
<[-] Clear remainder from first division if second division was skipped
<.[-] Output ROT13ed character from copy and clear it
<-,+ Read next character
] End character reading loop

2310
samples/C/filenames/script Executable file

File diff suppressed because it is too large Load Diff

166
samples/C/pqiv.h Normal file
View File

@@ -0,0 +1,166 @@
/**
* pqiv
*
* Copyright (c) 2013-2014, Phillip Berndt
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
// This file contains the definition of files, image types and
// the plugin infrastructure. It should be included in file type
// handlers.
#ifndef _PQIV_H_INCLUDED
#define _PQIV_H_INCLUDED
#include <glib.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include "lib/bostree.h"
#ifndef PQIV_VERSION
#define PQIV_VERSION "2.3"
#endif
#define FILE_FLAGS_ANIMATION (guint)(1)
#define FILE_FLAGS_MEMORY_IMAGE (guint)(1<<1)
// The structure for images {{{
typedef struct file_type_handler_struct_t file_type_handler_t;
typedef struct {
// File type
const file_type_handler_t *file_type;
// Special flags
// FILE_FLAGS_ANIMATION -> Animation functions are invoked
// Set by file type handlers
// FILE_FLAGS_MEMORY_IMAGE -> File lives in memory
guint file_flags;
// The file name to display and to sort by
gchar *display_name;
// The URI or file name of the file
gchar *file_name;
// If the file is a memory image, the actual image data
GBytes *file_data;
// The file monitor structure is used for inotify-watching of
// the files
GFileMonitor *file_monitor;
// This flag stores whether this image is currently loaded
// and valid. i.e. if it is set, you can assume that
// private_data contains a representation of the image;
// if not, you can NOT assume that it does not.
gboolean is_loaded;
// Cached image size
guint width;
guint height;
// File-type specific data, allocated and freed by the file type handlers
void *private;
} file_t;
// }}}
// Definition of the built-in file types {{{
// If you want to implement your own file type, you'll have to implement the
// following functions and a non-static initialization function named
// file_type_NAME_initializer that fills a file_type_handler_t with pointers to
// the functions. Store the file in backends/NAME.c and adjust the Makefile to
// add the required libraries if your backend is listed in the $(BACKENDS)
// variable.
typedef enum { PARAMETER, RECURSION, INOTIFY, BROWSE_ORIGINAL_PARAMETER, FILTER_OUTPUT } load_images_state_t;
// Allocation function: Allocate the ->private structure within a file and add the
// image(s) to the list of available images via load_images_handle_parameter_add_file()
// If an image is not to be loaded for any reason, the file structure should be
// deallocated using file_free()
// Returns a pointer to the first added image
// Optional, you can also set the pointer to this function to NULL.
typedef BOSNode *(*file_type_alloc_fn_t)(load_images_state_t state, file_t *file);
// Deallocation, if a file is removed from the images list. Free the ->private structure.
// Only called if ->private is non-NULL.
typedef void (*file_type_free_fn_t)(file_t *file);
// Actually load a file into memory
typedef void (*file_type_load_fn_t)(file_t *file, GInputStream *data, GError **error_pointer);
// Unload a file
typedef void (*file_type_unload_fn_t)(file_t *file);
// Animation support: Initialize memory for animations, return ms until first frame
// Optional, you can also set the pointer to this function to NULL.
typedef double (*file_type_animation_initialize_fn_t)(file_t *file);
// Animation support: Advance to the next frame, return ms until next frame
// Optional, you can also set the pointer to this function to NULL.
typedef double (*file_type_animation_next_frame_fn_t)(file_t *file);
// Draw the current view to a cairo context
typedef void (*file_type_draw_fn_t)(file_t *file, cairo_t *cr);
struct file_type_handler_struct_t {
// All files will be filtered with this filter. If it lets it pass,
// a handler is assigned to a file. If none do, the file is
// discarded if it was found during directory traversal or
// loaded using the first image backend if it was an explicit
// parameter.
GtkFileFilter *file_types_handled;
// Pointers to the functions defined above
file_type_alloc_fn_t alloc_fn;
file_type_free_fn_t free_fn;
file_type_load_fn_t load_fn;
file_type_unload_fn_t unload_fn;
file_type_animation_initialize_fn_t animation_initialize_fn;
file_type_animation_next_frame_fn_t animation_next_frame_fn;
file_type_draw_fn_t draw_fn;
};
// Initialization function: Tell pqiv about a backend
typedef void (*file_type_initializer_fn_t)(file_type_handler_t *info);
// pqiv symbols available to plugins {{{
// Global cancellable that should be used for every i/o operation
extern GCancellable *image_loader_cancellable;
// Current scale level. For backends that don't support cairo natively.
extern gdouble current_scale_level;
// Load a file from disc/memory/network
GInputStream *image_loader_stream_file(file_t *file, GError **error_pointer);
// Add a file to the list of loaded files
// Should be called at least once in a file_type_alloc_fn_t, with the state being
// forwarded unaltered.
BOSNode *load_images_handle_parameter_add_file(load_images_state_t state, file_t *file);
// Load all data from an input stream into memory, conveinience function
GBytes *g_input_stream_read_completely(GInputStream *input_stream, GCancellable *cancellable, GError **error_pointer);
// Free a file
void file_free(file_t *file);
// }}}
// File type handlers, used in the initializer and file type guessing
extern file_type_handler_t file_type_handlers[];
/* }}} */
#endif

View File

@@ -0,0 +1,15 @@
;; from: https://github.com/boot-clj/boot#configure-task-options
(set-env!
:source-paths #{"src"}
:dependencies '[[me.raynes/conch "0.8.0"]])
(task-options!
pom {:project 'my-project
:version "0.1.0"}
jar {:manifest {"Foo" "bar"}})
(deftask build
"Build my project."
[]
(comp (pom) (jar) (install)))

318
samples/D/mpq.d Normal file
View File

@@ -0,0 +1,318 @@
/*
* mpq.d -- D programming language module for libmpq
*
* Copyright (c) 2008 Georg Lukas <georg@op-co.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* This module is written to support Phobos. Patches to allow binding to
* Tango are welcome.
*/
module mpq;
/* the following pragma does not work on DMD/Linux, generates a warning on
* GDC/Linux and has not been tested on Windows. Commented out for now. */
// pragma(lib, "libmpq");
import std.string; // for format() and toStringz()
import std.traits; // for ParameterTypeTuple!()
/* XXX: this assumes that libmpq is compiled with Large File Support on */
alias long off_t;
/* libmpq error return values */
const LIBMPQ_ERROR_OPEN = -1; /* open error on file. */
const LIBMPQ_ERROR_CLOSE = -2; /* close error on file. */
const LIBMPQ_ERROR_SEEK = -3; /* lseek error on file. */
const LIBMPQ_ERROR_READ = -4; /* read error on file. */
const LIBMPQ_ERROR_WRITE = -5; /* write error on file. */
const LIBMPQ_ERROR_MALLOC = -6; /* memory allocation error. */
const LIBMPQ_ERROR_FORMAT = -7; /* format errror. */
const LIBMPQ_ERROR_NOT_INITIALIZED = -8; /* init() wasn't called. */
const LIBMPQ_ERROR_SIZE = -9; /* buffer size is to small. */
const LIBMPQ_ERROR_EXIST = -10; /* file or block does not exist in archive. */
const LIBMPQ_ERROR_DECRYPT = -11; /* we don't know the decryption seed. */
const LIBMPQ_ERROR_UNPACK = -12; /* error on unpacking file. */
/** libmpq internal meta-data for an archive */
extern struct mpq_archive_s;
extern(C) {
/* libmpq__generic information about library. */
char *libmpq__version();
/* libmpq__generic mpq archive information. */
int libmpq__archive_open(mpq_archive_s **mpq_archive, char *mpq_filename, off_t archive_offset);
int libmpq__archive_close(mpq_archive_s *mpq_archive);
int libmpq__archive_packed_size(mpq_archive_s *mpq_archive, off_t *packed_size);
int libmpq__archive_unpacked_size(mpq_archive_s *mpq_archive, off_t *unpacked_size);
int libmpq__archive_offset(mpq_archive_s *mpq_archive, off_t *offset);
int libmpq__archive_version(mpq_archive_s *mpq_archive, uint *version_);
int libmpq__archive_files(mpq_archive_s *mpq_archive, uint *files);
/* libmpq__generic file processing functions. */
int libmpq__file_packed_size(mpq_archive_s *mpq_archive, uint file_number, off_t *packed_size);
int libmpq__file_unpacked_size(mpq_archive_s *mpq_archive, uint file_number, off_t *unpacked_size);
int libmpq__file_offset(mpq_archive_s *mpq_archive, uint file_number, off_t *offset);
int libmpq__file_blocks(mpq_archive_s *mpq_archive, uint file_number, uint *blocks);
int libmpq__file_encrypted(mpq_archive_s *mpq_archive, uint file_number, uint *encrypted);
int libmpq__file_compressed(mpq_archive_s *mpq_archive, uint file_number, uint *compressed);
int libmpq__file_imploded(mpq_archive_s *mpq_archive, uint file_number, uint *imploded);
int libmpq__file_number(mpq_archive_s *mpq_archive, char *filename, uint *number);
int libmpq__file_read(mpq_archive_s *mpq_archive, uint file_number, ubyte *out_buf, off_t out_size, off_t *transferred);
/* libmpq__generic block processing functions. */
int libmpq__block_open_offset(mpq_archive_s *mpq_archive, uint file_number);
int libmpq__block_close_offset(mpq_archive_s *mpq_archive, uint file_number);
int libmpq__block_unpacked_size(mpq_archive_s *mpq_archive, uint file_number, uint block_number, off_t *unpacked_size);
int libmpq__block_read(mpq_archive_s *mpq_archive, uint file_number, uint block_number, ubyte *out_buf, off_t out_size, off_t *transferred);
}
/** exception class for failed libmpq calls */
class MPQException : Exception {
const string[] Errors = [
"unknown error",
"open error on file",
"close error on file",
"lseek error on file",
"read error on file",
"write error on file",
"memory allocation error",
"format errror",
"init() wasn't called",
"buffer size is to small",
"file or block does not exist in archive",
"we don't know the decryption seed",
"error on unpacking file"];
public int errno;
this(char[] fnname = "unknown_function", int errno = 0) {
this.errno = errno;
if (-errno >= Errors.length)
errno = 0;
super(std.string.format("Error in %s(): %s (%d)",
fnname, Errors[-errno], errno));
}
}
/** template to wrap function calls and throw exceptions in case of error
*
* thanks for the idea to while(nan) blog,
* http://while-nan.blogspot.com/2007/06/wrapping-functions-for-fun-and-profit.html
*
* use: MPQ_CHECKERR(libmpq__archive_open)(&m, "foo.mpq", -1);
* returns the retval of archive_open on success;
* throws an MPQException on failure.
*
* @param Fn libmpq__function reference
* @param args libmpq__function parameters
* @return return value of libmpq__function on success
* @throw MPQException on error
*/
int MPQ_CHECKERR(alias Fn)(ParameterTypeTuple!(Fn) args)
{
int result = Fn(args);
if (result < 0) {
/* XXX: relying on non-specified stringof() behaviour */
throw new MPQException((&Fn).stringof[2..$], result);
}
return result;
}
/** mixin alias to wrap library functions into MPQ_CHECKERR.
*
* alias mpq.func_name(...) to MPQ_CHECKERR(libmpq__func_name)(...)
* @param func_name name of the function to be wrapped
*/
template MPQ_FUNC(char[] func_name) {
const char[] MPQ_FUNC = "alias MPQ_CHECKERR!(libmpq__" ~ func_name ~ ") " ~ func_name ~ ";";
}
alias libmpq__version libversion; /* must be direct alias because it returns char*, not error int */
mixin(MPQ_FUNC!("archive_open"));
mixin(MPQ_FUNC!("archive_close"));
mixin(MPQ_FUNC!("archive_packed_size"));
mixin(MPQ_FUNC!("archive_unpacked_size"));
mixin(MPQ_FUNC!("archive_offset"));
mixin(MPQ_FUNC!("archive_version"));
mixin(MPQ_FUNC!("archive_files"));
mixin(MPQ_FUNC!("file_packed_size"));
mixin(MPQ_FUNC!("file_unpacked_size"));
mixin(MPQ_FUNC!("file_offset"));
mixin(MPQ_FUNC!("file_blocks"));
mixin(MPQ_FUNC!("file_encrypted"));
mixin(MPQ_FUNC!("file_compressed"));
mixin(MPQ_FUNC!("file_imploded"));
mixin(MPQ_FUNC!("file_number"));
mixin(MPQ_FUNC!("file_read"));
mixin(MPQ_FUNC!("block_open_offset"));
mixin(MPQ_FUNC!("block_close_offset"));
mixin(MPQ_FUNC!("block_unpacked_size"));
mixin(MPQ_FUNC!("block_read"));
/** getter function named name for returning archive_* single values:
*
* <type> Archive.<name>() { return libmpq__archive_<name>() }
*
* @param type return type for the original function reference
* @param name name of the original function
* @param name2 name for the prototype (defaults to name, used for "version")
* @return getter function mixin
*/
template MPQ_A_GET(char[] type, char[] name, char[] name2 = name) {
const char[] MPQ_A_GET = type ~ " " ~ name2 ~ "() { " ~
type ~ " ret; " ~
"archive_" ~ name ~ "(m, &ret); return ret;" ~
"}";
}
/** wrapper class for an MPQ Archive
*
* syntax: auto a = new mpq.Archive("somefile.mpq");
*/
class Archive {
mpq_archive_s *m;
File listfile;
char[][] listfiledata;
this(char[] archivename, off_t offset = -1) {
archive_open(&m, toStringz(archivename), offset);
}
mixin(MPQ_A_GET!("off_t", "packed_size"));
mixin(MPQ_A_GET!("off_t", "unpacked_size"));
mixin(MPQ_A_GET!("off_t", "offset"));
mixin(MPQ_A_GET!("uint", "version", "version_"));
mixin(MPQ_A_GET!("uint", "files"));
~this() {
archive_close(m);
}
mpq_archive_s* archive() {
return m;
}
File opIndex(char[] fname) {
return new File(this, fname);
}
File opIndex(int fno) {
return new File(this, fno);
}
char[][] filelist() {
try {
if (!listfile) {
listfile = this["(listfile)"];
listfiledata = (cast(char[])listfile.read()).splitlines();
}
return listfiledata;
} catch (MPQException e) {
return [];
}
}
/+uint filenumber(char[] filename) {
try {
if (!listfile) {
listfile = this["(listfile)"];
listfiledata = (cast(char[])listfile.read()).splitlines();
}
return listfiledata;
} catch (MPQException e) {
return [];
}
}+/
}
/** getter function named name for returning file_* single values:
*
* <type> File.<name>() { return libmpq__file_<name>() }
*
* @param type return type for the original function reference
* @param name name of the original function
* @param name2 name for the prototype (defaults to name, used for "version")
* @return getter function mixin
*/
template MPQ_F_GET(char[] type, char[] name, char[] name2 = name) {
const char[] MPQ_F_GET = type ~ " " ~ name2 ~ "() { " ~
type ~ " ret; " ~
"file_" ~ name ~ "(am, fileno, &ret); " ~
"return ret;" ~
"}";
}
/** wrapper class for a single file in an MPQ Archive
*
* syntax:
* auto a = new mpq.Archive("somefile.mpq");
* auto f = a["(listfile)"];
* auto f2 = a[0];
* auto f3 = new File(a, "(listfile)");
*/
class File {
Archive a;
mpq_archive_s* am;
char[] filename;
uint fileno;
this(Archive a, int fileno) {
this.a = a;
this.am = a.archive();
if (fileno >= a.files) {
throw new MPQException(format("File(%d)", fileno),
LIBMPQ_ERROR_EXIST);
}
this.filename = format("file%04d.xxx", fileno);
this.fileno = fileno;
}
this(Archive a, char[] filename) {
this.a = a;
this.am = a.archive();
this.filename = filename;
/* this line will throw an exception when the file is not there */
mpq.file_number(am, toStringz(filename), &this.fileno);
}
mixin(MPQ_F_GET!("off_t", "packed_size"));
mixin(MPQ_F_GET!("off_t", "unpacked_size"));
mixin(MPQ_F_GET!("off_t", "offset"));
mixin(MPQ_F_GET!("uint", "blocks"));
mixin(MPQ_F_GET!("uint", "encrypted"));
mixin(MPQ_F_GET!("uint", "compressed"));
mixin(MPQ_F_GET!("uint", "imploded"));
uint no() { return fileno; }
char[] name() { return filename; }
ubyte[] read() {
ubyte[] content;
content.length = this.unpacked_size();
off_t trans;
mpq.file_read(am, fileno, content.ptr, content.length, &trans);
content.length = trans;
return content;
}
}

23
samples/DTrace/counts.d Normal file
View File

@@ -0,0 +1,23 @@
/*
* This software is in the public domain.
*
* $Id: counts.d 10510 2005-08-15 01:46:19Z kateturner $
*/
#pragma D option quiet
self int tottime;
BEGIN {
tottime = timestamp;
}
php$target:::function-entry
@counts[copyinstr(arg0)] = count();
}
END {
printf("Total time: %dus\n", (timestamp - tottime) / 1000);
printf("# calls by function:\n");
printa("%-40s %@d\n", @counts);
}

View File

@@ -0,0 +1,73 @@
/* -*- Mode: dtrace-script; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Copyright (C) 2007 Sun Microsystems, Inc. All Rights Reserved.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* javascript provider probes
*
* function-entry (filename, classname, funcname)
* function-info (filename, classname, funcname, lineno,
* runfilename, runlineno)
* function-args (filename, classname, funcname, argc, argv, argv0,
* argv1, argv2, argv3, argv4)
* function-rval (filename, classname, funcname, lineno, rval, rval0)
* function-return (filename, classname, funcname)
* object-create-start (filename, classname)
* object-create (filename, classname, *object, rlineno)
* object-create-done (filename, classname)
* object-finalize (NULL, classname, *object)
* execute-start (filename, lineno)
* execute-done (filename, lineno)
*/
provider javascript {
probe function__entry(char *, char *, char *);
probe function__info(char *, char *, char *, int, char *, int);
probe function__args(char *, char *, char *, int, void *, void *, void *,
void *, void *, void *);
probe function__rval(char *, char *, char *, int, void *, void *);
probe function__return(char *, char *, char *);
probe object__create__start(char *, char *);
probe object__create__done(char *, char *);
/* XXX must use unsigned longs here instead of uintptr_t for OS X
(Apple radar: 5194316 & 5565198) */
probe object__create(char *, char *, unsigned long, int);
probe object__finalize(char *, char *, unsigned long);
probe execute__start(char *, int);
probe execute__done(char *, int);
};
/*
#pragma D attributes Unstable/Unstable/Common provider mozilla provider
#pragma D attributes Private/Private/Unknown provider mozilla module
#pragma D attributes Private/Private/Unknown provider mozilla function
#pragma D attributes Unstable/Unstable/Common provider mozilla name
#pragma D attributes Unstable/Unstable/Common provider mozilla args
*/

93
samples/DTrace/probes.d Normal file
View File

@@ -0,0 +1,93 @@
/* ----------
* DTrace probes for PostgreSQL backend
*
* Copyright (c) 2006-2009, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/backend/utils/probes.d,v 1.11 2009/04/02 20:59:10 momjian Exp $
* ----------
*/
/*
* Typedefs used in PostgreSQL.
*
* NOTE: Do not use system-provided typedefs (e.g. uintptr_t, uint32_t, etc)
* in probe definitions, as they cause compilation errors on Mac OS X 10.5.
*/
#define LocalTransactionId unsigned int
#define LWLockId int
#define LWLockMode int
#define LOCKMODE int
#define BlockNumber unsigned int
#define Oid unsigned int
#define ForkNumber int
#define bool char
provider postgresql {
probe transaction__start(LocalTransactionId);
probe transaction__commit(LocalTransactionId);
probe transaction__abort(LocalTransactionId);
probe lwlock__acquire(LWLockId, LWLockMode);
probe lwlock__release(LWLockId);
probe lwlock__wait__start(LWLockId, LWLockMode);
probe lwlock__wait__done(LWLockId, LWLockMode);
probe lwlock__condacquire(LWLockId, LWLockMode);
probe lwlock__condacquire__fail(LWLockId, LWLockMode);
probe lock__wait__start(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE);
probe lock__wait__done(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE);
probe query__parse__start(const char *);
probe query__parse__done(const char *);
probe query__rewrite__start(const char *);
probe query__rewrite__done(const char *);
probe query__plan__start();
probe query__plan__done();
probe query__execute__start();
probe query__execute__done();
probe query__start(const char *);
probe query__done(const char *);
probe statement__status(const char *);
probe sort__start(int, bool, int, int, bool);
probe sort__done(bool, long);
probe buffer__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid, bool, bool);
probe buffer__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, bool, bool, bool);
probe buffer__flush__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe buffer__flush__done(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe buffer__checkpoint__start(int);
probe buffer__checkpoint__sync__start();
probe buffer__checkpoint__done();
probe buffer__sync__start(int, int);
probe buffer__sync__written(int);
probe buffer__sync__done(int, int, int);
probe buffer__write__dirty__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe buffer__write__dirty__done(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe deadlock__found();
probe checkpoint__start(int);
probe checkpoint__done(int, int, int, int, int);
probe clog__checkpoint__start(bool);
probe clog__checkpoint__done(bool);
probe subtrans__checkpoint__start(bool);
probe subtrans__checkpoint__done(bool);
probe multixact__checkpoint__start(bool);
probe multixact__checkpoint__done(bool);
probe twophase__checkpoint__start();
probe twophase__checkpoint__done();
probe smgr__md__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int);
probe smgr__md__write__start(ForkNumber, BlockNumber, Oid, Oid, Oid);
probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int);
probe xlog__insert(unsigned char, unsigned char);
probe xlog__switch();
probe wal__buffer__write__dirty__start();
probe wal__buffer__write__dirty__done();
};

View File

@@ -0,0 +1,44 @@
note
description : "nino application root class"
date : "$Date$"
revision : "$Revision$"
class
APPLICATION
inherit
ARGUMENTS
HTTP_SERVER_SHARED_CONFIGURATION
create
make
feature {NONE} -- Initialization
make
-- Run application.
local
l_server : HTTP_SERVER
l_cfg: HTTP_SERVER_CONFIGURATION
l_http_handler : HTTP_HANDLER
do
create l_cfg.make
l_cfg.http_server_port := 9_000
l_cfg.document_root := default_document_root
set_server_configuration (l_cfg)
debug ("nino")
l_cfg.set_is_verbose (True)
end
create l_server.make (l_cfg)
create {APPLICATION_CONNECTION_HANDLER} l_http_handler.make (l_server)
l_server.setup (l_http_handler)
end
feature -- Access
default_document_root: STRING = "webroot"
end

View File

@@ -0,0 +1,82 @@
class
BOOK_COLLECTION
create
make
feature {NONE} -- Initialization
make (a_name: STRING_32)
-- Create a book collection with `a_name' as `name'.
do
set_name (a_name)
create book_index.make (10)
ensure
name_set: name = a_name
end
feature -- Access
name: STRING_32
-- Name.
books: LIST [BOOK]
-- collection of book.
do
create {LINKED_LIST [BOOK]} Result.make
across
book_index as it
loop
Result.append (it.item)
end
end
books_by_author (a_author: STRING_32): LIST [BOOK]
-- Books wrote by `a_author' in this collection.
do
if attached book_index [a_author] as l_result then
Result := l_result
else
create {LINKED_LIST [BOOK]} Result.make
end
end
feature -- Change
set_name (a_name: STRING_32)
-- Set `name' with `a_name'.
do
name := a_name
ensure
name_set: name = a_name
end
add_book (a_book: BOOK)
-- Extend collection with `a_book'.
local
l: detachable LIST [BOOK]
do
l := book_index.at (a_book.author.name)
if l = Void then
create {LINKED_LIST [BOOK]} l.make
book_index.put (l, a_book.author.name)
end
l.force (a_book)
end
add_books (book_list: like books)
-- Append collection with `book_list'.
do
across
book_list as it
loop
add_book (it.item)
end
end
feature {NONE} -- Implementation
book_index: HASH_TABLE [LIST [BOOK], STRING_32]
-- Association of author name and its books.
end -- class BOOK_COLLECTION

View File

@@ -0,0 +1,41 @@
note
description: "Git checkout command."
author: "Olivier Ligot"
class
GIT_CHECKOUT_COMMAND
inherit
GIT_COMMAND
create
make,
make_master
feature {NONE} -- Initialization
make (a_branch: STRING)
-- Checkout the branch `a_branch'.
do
initialize
arguments.force_last (a_branch)
branch := a_branch
ensure
branch_set: branch = a_branch
end
make_master
-- Checkout the master branch.
do
make ("master")
end
feature -- Access
branch: STRING
-- Branch to checkout
name: STRING = "checkout"
-- Git subcommand name
end

View File

@@ -0,0 +1,10 @@
%{"cowboy": {:hex, :cowboy, "1.0.0"},
"cowlib": {:hex, :cowlib, "1.0.1"},
"hackney": {:hex, :hackney, "0.14.3"},
"hound": {:hex, :hound, "0.6.0"},
"httpoison": {:hex, :httpoison, "0.5.0"},
"idna": {:hex, :idna, "1.0.1"},
"phoenix": {:hex, :phoenix, "0.10.0"},
"plug": {:hex, :plug, "0.11.1"},
"poison": {:hex, :poison, "1.3.1"},
"ranch": {:hex, :ranch, "1.0.0"}}

View File

@@ -0,0 +1,260 @@
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 ft=erlang et
%% This is a sample rebar.conf file that shows examples of some of rebar's
%% options.
%% == Core ==
%% Extend list of always recursive commands
{recursive_cmds, []}.
%% Check required ERTS or OTP release version
{require_erts_vsn, ".*"}.
{require_otp_vsn, ".*"}.
{require_min_otp_vsn, ".*"}.
%% Additional library directories to add to the code path
{lib_dirs, []}.
%% == Erlang Compiler ==
%% Erlang files to compile before the rest. Rebar automatically compiles
%% parse_transforms and custom behaviours before anything other than the files
%% in this list.
{erl_first_files, ["src/mymib1.erl", "src/mymib2.erl"]}.
%% Erlang compiler options
{erl_opts, [no_debug_info,
{i, "myinclude"},
{src_dirs, ["src", "src2", "src3"]},
{platform_define,
"(linux|solaris|freebsd|darwin)", 'HAVE_SENDFILE'},
{platform_define, "(linux|freebsd)", 'BACKLOG', 128},
{platform_define, "R13", 'old_inets'}]}.
%% MIB Options?
{mib_opts, []}.
%% SNMP mibs to compile first?
{mib_first_files, []}.
%% leex options
{xrl_opts, []}.
%% leex files to compile first
{xrl_first_files, []}.
%% yecc options
{yrl_opts, []}.
%% yecc files to compile first
{yrl_first_files, []}.
%% == EDoc ==
%% EDoc options
{edoc_opts, []}.
%% == Port Compiler ==
%% Port compilation environment variables. See rebar_port_compiler.erl for
%% more info. Default is `[]'
{port_env, [{"CFLAGS", "$CFLAGS -Ifoo"},
{"freebsd", "LDFLAGS", "$LDFLAGS -lfoo"}]}.
%% port_specs
%% List of filenames or wildcards to be compiled. May also contain a tuple
%% consisting of a regular expression to be applied against the system
%% architecture as a filter.
{port_specs, [{"priv/so_name.so", ["c_src/*.c"]},
{"linux", "priv/hello_linux", ["c_src/hello_linux.c"]},
{"linux", "priv/hello_linux", ["c_src/*.c"], [{env, []}]}]}.
%% == escriptize ==
{escript_name, "application"}.
{escript_incl_apps, []}.
{escript_shebang, "#!/usr/bin/env escript\n"}.
{escript_comment, "%%\n"}.
{escript_emu_args, "%%! -pa application/application/ebin\n"}.
%% == LFE Compiler ==
%% LFE files to compile before the rest
{lfe_first_files, []}.
%% Options for the LFE compiler: reuse {erl_opts, []}
%% == ErlyDTL Compiler ==
%% Options for the ErlyDTL compiler
{erlydtl_opts, []}.
%% == Proto compiler ==
{proto_opts, [
{compiler, protobuffs},
{src_dirs, ["src"]}
]}.
%% Available compilers for protocol buffer files (*.proto):
%% protobuffs (default)
%% gpb
%% Optional src_dirs which is a list of directories where
%% to look for .proto files, default is src
%% Options for the gpb protocol buffer compiler,
%% if selected by the proto_compiler option
{gpb_opts, []}.
%% == EUnit ==
%% Options for eunit:test()
{eunit_opts, []}.
%% Additional compile options for eunit. erl_opts is also used
{eunit_compile_opts, []}.
%% Same as erl_first_files, but used only when running 'eunit'
{eunit_first_files, []}.
%% == Cover ==
%% Whether to enable coverage reporting. Default is `false'
{cover_enabled, false}.
%% Whether to print coverage report to console. Default is `false'
{cover_print_enabled, false}.
%% Whether to export coverage report to file. Default is `false'
{cover_export_enabled, false}.
%% == Common Test ==
%% Override the default "test" directory in which SUITEs are located
{ct_dir, "itest"}.
%% Override the default "logs" directory in which SUITEs are logged
{ct_log_dir, "test/logs"}.
%% Option to pass extra parameters when launching Common Test
{ct_extra_params, "-boot start_sasl -s myapp"}.
%% Option to use short names (i.e., -sname test) when starting ct
{ct_use_short_names, true}.
%% == QuickCheck ==
%% If qc_mod is unspecified, rebar tries to detect Triq or EQC
{qc_opts, [{qc_mod, module()}, Options]}.
%% Additional compile options for qc. erl_opts is also used
{qc_compile_opts, []}.
%% Same as erl_first_files, but used only when running 'qc'
{qc_first_files, []}.
%% == Cleanup ==
%% Which files to cleanup
{clean_files, ["file", "file2"]}.
%% == OTP Applications ==
%% Enable validation of the OTP app module list. Default is 'true'
{validate_app_modules, true}.
%% == Dependencies ==
%% Where to put any downloaded dependencies. Default is "deps"
{deps_dir, "deps"}.
%% What dependencies we have, dependencies can be of 3 forms, an application
%% name as an atom, eg. mochiweb, a name and a version (from the .app file), or
%% an application name, a version and the SCM details on how to fetch it (SCM
%% type, location and revision).
%% Rebar currently supports git, hg, bzr, svn, rsync, fossil, and p4.
{deps, [app_name,
{rebar, "1.0.*"},
{rebar, ".*",
{git, "git://github.com/rebar/rebar.git"}},
{rebar, ".*",
{git, "git://github.com/rebar/rebar.git", "Rev"}},
{rebar, "1.0.*",
{git, "git://github.com/rebar/rebar.git", {branch, "master"}}},
{rebar, "1.0.0",
{git, "git://github.com/rebar/rebar.git", {tag, "1.0.0"}}},
%% Dependencies can be marked as 'raw'. Rebar does not require
%% such dependencies to have a standard Erlang/OTP layout
%% which assumes the presence of either
%% "src/dependency_name.app.src" or "ebin/dependency_name.app"
%% files.
%%
%% 'raw' dependencies can still contain 'rebar.config' and
%% even can have the proper OTP directory layout, but they
%% won't be compiled.
%%
%% Only a subset of rebar commands will be executed on the
%% 'raw' subdirectories: get-deps, update-deps, check-deps,
%% list-deps and delete-deps.
{rebar, "",
{git, "git://github.com/rebar/rebar.git", {branch, "master"}},
[raw]},
{app_name, ".*", {hg, "https://www.example.org/url"}},
{app_name, ".*", {rsync, "Url"}},
{app_name, ".*", {svn, "https://www.example.org/url"}},
{app_name, ".*", {svn, "svn://svn.example.org/url"}},
{app_name, ".*", {bzr, "https://www.example.org/url", "Rev"}},
{app_name, ".*", {fossil, "https://www.example.org/url"}},
{app_name, ".*", {fossil, "https://www.example.org/url", "Vsn"}},
{app_name, ".*", {p4, "//depot/subdir/app_dir"}}]}.
%% == Subdirectories ==
%% Subdirectories?
{sub_dirs, ["dir1", "dir2"]}.
%% == Plugins ==
%% Plugins you wish to include.
%% These can include any module on the code path, including deps.
%% Alternatively, plugins can be placed as source files in the plugin_dir, in
%% which case they will be compiled and loaded dynamically at runtime.
{plugins, [plugin1, plugin2]}.
%% Override the directory in which plugin sources can be found.
%% Defaults to ./plugins
{plugin_dir, "some_other_directory"}.
%% == Pre/Post Command Hooks ==
{pre_hooks, [{clean, "./prepare_package_files.sh"},
{"linux", compile, "c_src/build_linux.sh"},
{compile, "escript generate_headers"},
{compile, "escript check_headers"}]}.
{post_hooks, [{clean, "touch file1.out"},
{"freebsd", compile, "c_src/freebsd_tweaks.sh"},
{eunit, "touch file2.out"},
{compile, "touch postcompile.out"}]}.
%% == xref ==
{xref_warnings, false}.
%% optional extra paths to include in xref:set_library_path/2.
%% specified relative location of rebar.config.
%% e.g. {xref_extra_paths,["../gtknode/src"]}
{xref_extra_paths,[]}.
%% xref checks to run
{xref_checks, [undefined_function_calls, undefined_functions,
locals_not_used, exports_not_used,
deprecated_function_calls, deprecated_functions]}.
%% Optional custom xref queries (xref manual has details) specified as
%% {xref_queries, [{query_string(), expected_query_result()},...]}
%% The following for example removes all references to mod:*foo/4
%% functions from undefined external function calls as those are in a
%% generated module
{xref_queries,
[{"(XC - UC) || (XU - X - B"
" - (\"mod\":\".*foo\"/\"4\"))",[]}]}.

View File

@@ -0,0 +1,158 @@
%% THIS FILE IS GENERATED. DO NOT EDIT IT MANUALLY %%
{sub_dirs,["rel","apps/riak"]}.
{require_otp_vsn,"R16|17"}.
{cover_enabled,true}.
{lib_dirs,["apps/riak"]}.
{erl_opts,[debug_info,fail_on_warning]}.
{eunit_opts,[verbose]}.
{erlydtl_opts,[{compiler_options,[report,return,debug_info]}]}.
{deps,[{rebar_lock_deps_plugin,".*",
{git,"git://github.com/seth/rebar_lock_deps_plugin.git",
"7a5835029c42b8138325405237ea7e8516a84800"}},
{node_package,".*",
{git,"git://github.com/basho/node_package.git",
"a829631eccebe3c1d7657a0075584f55bf342977"}},
{goldrush,".*",
{git,"git://github.com/DeadZen/goldrush.git",
"71e63212f12c25827e0c1b4198d37d5d018a7fec"}},
{lager,".*",
{git,"git://github.com/basho/lager.git",
"b6b6cebcb27ccff8acc59ae775acebc2f52e4926"}},
{syslog,".*",
{git,"git://github.com/Vagabond/erlang-syslog.git",
"918c9b453e0811b24f2c99b35b712b0ef9f29c7e"}},
{lager_syslog,".*",
{git,"git://github.com/basho/lager_syslog.git",
"fa2e7e3daee0d0a59dadb820fd3381eac4a65770"}},
{cluster_info,".*",
{git,"git://github.com/basho/cluster_info.git",
"e231144ca32dc83317be3360a4a259c73826b08a"}},
{sidejob,".*",
{git,"git://github.com/basho/sidejob.git",
"c5aabba2d7daa80c340e110902bbcfcb552ccdcf"}},
{erlang_js,".*",
{git,"git://github.com/basho/erlang_js.git",
"07467d899ab90a2b719ad19ab0be0048c1c8d873"}},
{meck,".*",
{git,"git://github.com/basho/meck.git",
"dde759050eff19a1a80fd854d7375174b191665d"}},
{getopt,".*",
{git,"git://github.com/jcomellas/getopt.git",
"659a28f4145bc9843598972854299dc4ea77e4cb"}},
{neotoma,".*",
{git,"git://github.com/seancribbs/neotoma.git",
"760928ec8870da02eb11bccb501e2700925d06c6"}},
{cuttlefish,".*",
{git,"git://github.com/basho/cuttlefish.git",
"c92c8325aeaea6b6ba7516bbd434f8e408f87d60"}},
{bitcask,".*",
{git,"git://github.com/basho/bitcask.git",
"c74d0c43fdefdd435f7621ddf1fc2995b5bd123c"}},
{eper,".*",
{git,"git://github.com/basho/eper.git",
"7222ecaebceb5422e74a9c1503043bbc6036f6b7"}},
{edown,".*",
{git,"git://github.com/uwiger/edown.git",
"d62ec85281e451a46ba30045917c119d65b72a84"}},
{sext,".*",
{git,"git://github.com/basho/sext.git",
"846b9cc22456287a572efd4c924203d77778670f"}},
{poolboy,".*",
{git,"git://github.com/basho/poolboy.git",
"8bb45fbc715c5f493642a1cc572ec7017d0d5fa3"}},
{basho_stats,".*",
{git,"git://github.com/basho/basho_stats.git",
"19c532af235ae675439d491b329c55c2f9b02deb"}},
{riak_sysmon,".*",
{git,"git://github.com/basho/riak_sysmon.git",
"26a58bcaba96d07df885f7b3db4d4306f995ce14"}},
{eleveldb,".*",
{git,"git://github.com/basho/eleveldb.git",
"0e4e4e7cf3ddc26523a77f853ea9409c1707b26c"}},
{riak_ensemble,".*",
{git,"git://github.com/basho/riak_ensemble",
"78dc8f623353a212ca3cf12236d1e9ac824bde16"}},
{pbkdf2,".*",
{git,"git://github.com/basho/erlang-pbkdf2.git",
"7076584f5377e98600a7e2cb81980b2992fb2f71"}},
{parse_trans,".*",
{git,"git://github.com/uwiger/parse_trans.git",
"82cc00264aa1bad8fc5c0739b7541feb4a843432"}},
{bear,".*",
{git,"git://github.com/basho/bear.git",
"da820a13c607c3f816ee8b83c587266da5389761"}},
{folsom,".*",
{git,"git://github.com/basho/folsom.git",
"72944523b6467c9f7add5f1c96dd5020424a2681"}},
{setup,".*",
{git,"git://github.com/uwiger/setup.git",
"51ee7c9f64d2bbe9dcbb58c278e8fbfd4d0ca5e2"}},
{exometer_core,".*",
{git,"git://github.com/basho/exometer_core.git",
"b47a5d65d9500c2b8f6ccc50e34005503589ef77"}},
{clique,".*",
{git,"git://github.com/basho/clique.git",
"3af4db8ea0f74aca42f6713446dcd5915c795a74"}},
{riak_core,".*",
{git,"git://github.com/basho/riak_core.git",
"044c4e7f8dbfe8c49c45f2f7090adff4cd5aba50"}},
{riak_pipe,".*",
{git,"git://github.com/basho/riak_pipe.git",
"3c0abc7ba301d57940c5a9c5de368b70429c28ff"}},
{protobuffs,".*",
{git,"git://github.com/basho/erlang_protobuffs.git",
"f88fc3c6881687432ddd5546b3c7b08009dfb26f"}},
{riak_pb,".*",
{git,"git://github.com/basho/riak_pb.git",
"78c50efa698f33f7d6ab1c7f5fa4666ec03b46b4"}},
{mochiweb,".*",
{git,"git://github.com/basho/mochiweb.git",
"ade2a9b29a11034eb550c1d79b4f991bf5ca05ba"}},
{webmachine,".*",
{git,"git://github.com/basho/webmachine.git",
"7677c240f4a7ed020f4bab48278224966bb42311"}},
{riak_api,".*",
{git,"git://github.com/basho/riak_api.git",
"2781e66796903bc6847bffcf71a6ba7a05d69275"}},
{riak_dt,".*",
{git,"git://github.com/basho/riak_dt.git",
"f7981d4ad7407ddc085f133f204dd71bf9d50c56"}},
{eunit_formatters,".*",
{git,"git://github.com/seancribbs/eunit_formatters",
"96b6ced4d45ba641cbf2c8a8ae9b350dd300bc10"}},
{riak_kv,".*",
{git,"git://github.com/basho/riak_kv.git",
"404619cb57574cd43e2dc0dc0453884ec6732a99"}},
{merge_index,".*",
{git,"git://github.com/basho/merge_index.git",
"b701dde5c28956c3b629411e5ff7e50cbb5cb4b3"}},
{riak_search,".*",
{git,"git://github.com/basho/riak_search.git",
"8fe4a8c020a74c52ee877bf6dd410824b4f79f8b"}},
{erlydtl,".*",
{git,"git://github.com/evanmiller/erlydtl.git",
"d20b53f04837a1053ed18987f645cb60eae82453"}},
{riak_control,".*",
{git,"git://github.com/basho/riak_control.git",
"09073ce672260e1ec0ba3999fabed7f319624ba1"}},
{riaknostic,".*",
{git,"git://github.com/basho/riaknostic.git",
"101d95bddff4b70afcd1dd5442b8c6651887e0a4"}},
{kvc,".*",
{git,"git://github.com/etrepum/kvc.git",
"5565fe51857747662410cc3c06362ebcf48a2f04"}},
{ibrowse,".*",
{git,"git://github.com/cmullaparthi/ibrowse.git",
"e8ae353c16d4f0897abb9f80025b52925b974dd1"}},
{yokozuna,".*",
{git,"git://github.com/basho/yokozuna.git",
"5868266b11f131d14c85495e50f899f3fe8158ba"}},
{canola,".*",
{git,"git://github.com/basho/canola.git",
"9bdfee88fce20b3a01b7003696b53eb21913d6fb"}},
{riak_auth_mods,".*",
{git,"git://github.com/basho/riak_auth_mods.git",
"31b8b30e6c215418522eaa615264ae9769a87410"}}]}.
{plugins,[rebar_lock_deps_plugin]}.

View File

@@ -0,0 +1,16 @@
[{<<"goldrush">>,
{git,"git://github.com/DeadZen/goldrush.git",
{ref,"71e63212f12c25827e0c1b4198d37d5d018a7fec"}},
1},
{<<"riak_dt">>,
{git,"git://github.com/helium/riak_dt.git",
{ref,"15d66cb26c2028c1ad1271c359b1d5da213825c3"}},
0},
{<<"lager">>,
{git,"git://github.com/basho/lager.git",
{ref,"d33ccf3b69de09a628fe38b4d7981bb8671b8a4f"}},
0},
{<<"eleveldb">>,
{git,"git://github.com/helium/eleveldb.git",
{ref,"29a5360dc0365b3330dd0cd45b0b8166f3b854be"}},
0}].

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ip.rsh"
static rs_matrix4x4 Mat;
void init() {
rsMatrixLoadIdentity(&Mat);
}
void setMatrix(rs_matrix4x4 m) {
Mat = m;
}
uchar4 __attribute__((kernel)) root(uchar4 in) {
float4 f = convert_float4(in);
f = rsMatrixMultiply(&Mat, f);
f = clamp(f, 0.f, 255.f);
return convert_uchar4(f);
}

View File

@@ -0,0 +1,18 @@
#pragma version(1)
#pragma rs java_package_name(foo)
int __attribute__((kernel)) root(uint32_t ain) {
return 0;
}
void __attribute__((kernel)) in_only(uint32_t ain) {
}
int __attribute__((kernel)) out_only() {
return 0;
}
int __attribute__((kernel)) everything(uint32_t ain, uint32_t x, uint32_t y) {
return 0;
}

View File

@@ -0,0 +1,919 @@
ACCEPTABLE LEFT PRIMERS
1-based # self self hair- qual-
# sequence start ln N GC% Tm any_th end_th pin lity
0 tgctagctaggcgatgctag 411 20 0 55.00 60.028 23.16 23.16 38.59 0.028
1 actgatacgcgatgctagct 476 20 0 50.00 59.957 17.69 1.35 0.00 0.043
2 gatcgatgctagctaggcga 405 20 0 55.00 60.100 16.30 16.30 0.00 0.100
3 tcgatcgatgctagctaggc 403 20 0 55.00 60.100 18.63 8.45 0.00 0.100
4 tagctgatcgatcgtagcgg 565 20 0 55.00 60.101 25.02 17.36 0.00 0.101
5 gctgactgatcgatcgatgc 113 20 0 55.00 59.826 24.08 17.09 35.21 0.174
6 tatcatctctgcgcgatcga 361 20 0 50.00 59.747 22.07 1.72 38.48 0.253
7 agctaggcgatgctagctag 415 20 0 55.00 59.742 17.46 17.46 41.54 0.258
8 ctagctaggcgatgctagct 413 20 0 55.00 59.742 18.68 17.35 43.53 0.258
9 ggcgatctagctagctgact 583 20 0 55.00 59.671 17.44 7.44 37.58 0.329
10 tcgatgctagctaggcgatg 407 20 0 55.00 60.382 14.03 0.00 0.00 0.382
11 gctgatcgatcgatgctagc 398 20 0 55.00 59.618 25.97 24.79 35.21 0.382
12 gctagctgatcgatcgatgc 394 20 0 55.00 59.618 24.08 21.09 35.21 0.382
13 atcatctctgcgcgatcgat 362 20 0 50.00 60.382 22.07 5.02 38.48 0.382
14 gactgatacgcgatgctagc 475 20 0 55.00 59.551 8.61 8.61 0.00 0.449
15 atcgatgctagctaggcgat 406 20 0 50.00 59.452 18.43 18.43 0.00 0.548
16 gctagctgactgatacgcga 468 20 0 55.00 60.589 16.29 0.00 0.00 0.589
17 agctagctgactgatacgcg 467 20 0 55.00 60.590 17.99 3.89 0.00 0.590
18 atgctagctaggcgatgcta 410 20 0 50.00 59.375 10.59 8.91 0.00 0.625
19 ctatcatctctgcgcgatcg 360 20 0 55.00 59.347 12.19 12.19 39.07 0.653
20 gatgctagctaggcgatgct 409 20 0 55.00 60.668 7.01 7.53 0.00 0.668
21 gctactatcatctctgcgcg 356 20 0 55.00 59.273 0.00 0.00 0.00 0.727
22 cgtagcggcgatctagctag 577 20 0 60.00 60.791 15.64 15.64 37.58 0.791
23 cggcgatctagctagctgac 582 20 0 60.00 61.003 14.84 7.25 38.70 1.003
24 gctagctgatcgatcgtagc 563 20 0 55.00 58.995 23.70 23.70 0.00 1.005
25 gatcgatcgatgtgcggcta 81 20 0 55.00 61.006 19.16 0.00 41.65 1.006
26 atcgatcgatgtgcggctag 82 20 0 55.00 61.008 29.65 0.00 41.65 1.008
27 gctgactgatacgcgatgc 472 19 0 57.89 60.025 0.00 0.00 0.00 1.025
28 agctagctgatcatcgatgct 190 21 0 47.62 60.035 17.99 11.09 0.00 1.035
29 gctagctagctgactgatcga 105 21 0 52.38 60.037 34.38 0.00 46.11 1.037
30 tcatctctgcgcgatcgat 363 19 0 52.63 59.946 22.07 0.12 38.48 1.054
31 atcatctctgcgcgatcga 362 19 0 52.63 59.946 22.07 1.72 38.48 1.054
32 atcgatcgatgtgcggcta 82 19 0 52.63 59.945 29.65 0.00 41.65 1.055
33 gtagcggcgatctagctagc 578 20 0 60.00 61.071 16.97 7.15 39.86 1.071
34 gctagctgactgatcgatcg 109 20 0 55.00 58.924 16.84 13.89 0.00 1.076
35 gctgatcgatcgatgtgcg 78 19 0 57.89 60.097 29.87 18.15 42.69 1.097
36 tatcatctctgcgcgatcgat 361 21 0 47.62 60.172 22.07 11.47 38.48 1.172
37 gctagctagctgatcgatcga 390 21 0 52.38 60.172 34.38 22.52 46.11 1.172
38 gctagctagctgatcgatcga 70 21 0 52.38 60.172 34.38 22.52 46.11 1.172
39 catctctgcgcgatcgatg 364 19 0 57.89 59.810 13.74 13.74 38.48 1.190
40 tcgtagcggcgatctagcta 576 20 0 55.00 61.231 11.55 9.27 36.40 1.231
41 actgatacgcgatgctagcta 476 21 0 47.62 59.765 17.69 3.08 0.00 1.235
42 actgatcgatcgatgctagct 117 21 0 47.62 59.763 23.29 11.70 35.21 1.237
43 agctagctgatcgatcgatgt 73 21 0 47.62 59.763 17.99 2.62 35.21 1.237
44 tagcggcgatctagctagct 579 20 0 55.00 61.243 23.74 23.74 46.60 1.243
45 cgtagcggcgatctagcta 577 19 0 57.89 59.729 11.55 9.27 37.58 1.271
46 ctagctgatcgatcgtagcg 564 20 0 55.00 58.727 25.02 15.05 0.00 1.273
47 tagcggcgatctagctagc 579 19 0 57.89 59.725 16.97 9.14 39.86 1.275
48 catcgatcgatgcatgcatg 442 20 0 50.00 58.722 37.80 23.31 44.93 1.278
49 tcatctctgcgcgatcgatg 363 20 0 55.00 61.279 18.01 18.01 38.48 1.279
50 gctagctagctgatcgatcg 559 20 0 55.00 58.714 34.38 11.90 46.11 1.286
51 gctagctagctgatcgatcg 390 20 0 55.00 58.714 34.38 11.90 46.11 1.286
52 gctagctagctgatcgatcg 70 20 0 55.00 58.714 34.38 11.90 46.11 1.286
53 agcatcggattagctagctga 3 21 0 47.62 59.689 28.29 20.88 0.00 1.311
54 agctgatcgatcgtagcgg 566 19 0 57.89 60.315 25.02 17.36 0.00 1.315
55 cggcgatctagctagctga 582 19 0 57.89 59.650 21.57 16.66 38.70 1.350
56 ctagctgatcgatcgatgtgc 75 21 0 52.38 59.643 31.83 30.04 35.21 1.357
57 gctagctgatcgatcgatgtg 74 21 0 52.38 59.643 12.06 6.93 35.21 1.357
58 gctagctaggcgatgctagc 412 20 0 60.00 61.357 30.41 30.41 46.19 1.357
59 tagctagctgactgatacgcg 466 21 0 52.38 60.373 28.29 3.89 0.00 1.373
60 gctagctgactgatcgatcga 109 21 0 52.38 60.374 22.52 22.52 0.00 1.374
61 agctagctgactgatcgatcg 108 21 0 52.38 60.374 17.99 13.89 0.00 1.374
62 cgatcgatgctagctaggcg 404 20 0 60.00 61.409 15.59 9.14 0.00 1.409
63 gctagctagctgactgatcg 105 20 0 55.00 58.563 34.38 1.84 46.11 1.437
64 atgctagctaggcgatgct 410 19 0 52.63 59.561 10.59 7.53 0.00 1.439
65 agctagctgatcgatcgtagc 562 21 0 52.38 60.441 26.87 26.87 0.00 1.441
66 gctagctagctgatcgatcgt 559 21 0 52.38 60.441 34.38 2.65 46.11 1.441
67 tagctaggcgatgctagctag 414 21 0 52.38 59.559 18.42 17.46 42.44 1.441
68 ctagctaggcgatgctagcta 413 21 0 52.38 59.559 18.69 17.64 42.44 1.441
69 tagctgatcgatcgatgtgc 76 20 0 50.00 58.558 31.83 30.04 35.21 1.442
70 gatgctagctaggcgatgcta 409 21 0 52.38 60.444 9.82 8.91 0.00 1.444
71 atgctagctaggcgatgctag 410 21 0 52.38 60.444 23.16 23.16 38.59 1.444
72 gctagctgatcatcgatgct 191 20 0 50.00 58.539 16.29 12.14 0.00 1.461
73 agctagctgatcatcgatgc 190 20 0 50.00 58.539 21.42 9.22 0.00 1.461
74 gctgactgatacgcgatgct 472 20 0 55.00 61.494 2.33 0.00 0.00 1.494
75 agctgactgatacgcgatgc 471 20 0 55.00 61.494 3.47 0.00 0.00 1.494
76 ggcgatctagctagctgacta 583 21 0 52.38 59.491 17.44 5.40 37.58 1.509
77 gatcgatgctagctaggcgat 405 21 0 52.38 60.510 21.61 21.61 0.00 1.510
78 atcgatcgatgctagctaggc 402 21 0 52.38 60.510 29.65 8.45 33.56 1.510
79 ctgatcgatcgatgtgcgg 79 19 0 57.89 59.447 15.54 5.83 41.65 1.553
80 agctgatcgatcgatgtgcg 77 20 0 55.00 61.556 31.92 20.26 42.69 1.556
81 cgatcatcgatgctagctagc 548 21 0 52.38 59.444 34.89 34.89 46.99 1.556
82 tagctaggcgatgctagcta 414 20 0 50.00 58.433 19.37 17.81 42.44 1.567
83 agctagctactgatcgatgct 303 21 0 47.62 59.415 17.56 11.51 0.00 1.585
84 tcgatcgatgtgcggctag 83 19 0 57.89 60.606 18.63 0.00 41.65 1.606
85 gactgatcgatcgatgctagc 116 21 0 52.38 59.378 15.86 8.45 35.21 1.622
86 agctagctgactgatcgatca 260 21 0 47.62 59.347 26.99 26.99 35.44 1.653
87 ctgactgatacgcgatgctag 473 21 0 52.38 59.312 1.70 0.00 0.00 1.688
88 ctagctgactgatacgcgatg 469 21 0 52.38 59.312 0.00 0.00 0.00 1.688
89 gctactatcatctctgcgcga 356 21 0 52.38 60.707 2.71 2.71 0.00 1.707
90 agctactatcatctctgcgcg 355 21 0 52.38 60.709 0.00 0.00 0.00 1.709
91 actatcatctctgcgcgatc 359 20 0 50.00 58.270 4.99 0.00 0.00 1.730
92 actgatcgatcgatgctagc 117 20 0 50.00 58.270 23.29 13.61 35.21 1.730
93 gctagctgatcgatcgatgt 74 20 0 50.00 58.270 14.29 2.62 35.21 1.730
94 ctatcatctctgcgcgatcga 360 21 0 52.38 60.771 22.07 1.72 38.48 1.771
95 atcgatgctagctaggcgatg 406 21 0 52.38 60.779 21.16 4.37 0.00 1.779
96 tgactgatacgcgatgctag 474 20 0 50.00 58.207 1.70 0.00 0.00 1.793
97 ctgactgatacgcgatgcta 473 20 0 50.00 58.207 2.33 0.00 0.00 1.793
98 tagctgactgatacgcgatg 470 20 0 50.00 58.207 0.00 0.00 0.00 1.793
99 ctgactgatcgatcgatgct 114 20 0 50.00 58.197 26.44 12.40 35.21 1.803
100 agctgactgatcgatcgatg 112 20 0 50.00 58.197 23.05 13.21 35.21 1.803
101 tcggattagctagctgatgc 7 20 0 50.00 58.176 17.46 17.46 40.05 1.824
102 gcatcggattagctagctga 4 20 0 50.00 58.176 28.29 20.88 0.00 1.824
103 agcatcggattagctagctg 3 20 0 50.00 58.171 28.29 10.80 0.00 1.829
104 gatgctagctaggcgatgc 409 19 0 57.89 59.141 4.18 0.00 0.00 1.859
105 ctgatacgcgatgctagctag 477 21 0 52.38 59.113 17.46 17.46 0.00 1.887
106 gctagctgactgatacgcg 468 19 0 57.89 59.086 8.21 3.89 0.00 1.914
107 ctctgcgcgatcgatgctag 367 20 0 60.00 61.946 21.94 18.16 38.48 1.946
108 tctgcgcgatcgatgctag 368 19 0 57.89 60.966 21.94 18.16 38.48 1.966
109 ctctgcgcgatcgatgcta 367 19 0 57.89 60.966 26.61 17.10 38.48 1.966
110 cgatgctagctaggcgatgc 408 20 0 60.00 61.968 11.09 0.00 0.00 1.968
111 gactgatacgcgatgctagct 475 21 0 52.38 60.975 17.69 1.35 0.00 1.975
112 gctagctgactgatacgcgat 468 21 0 52.38 60.975 8.21 0.00 0.00 1.975
113 tgatacgcgatgctagctag 478 20 0 50.00 57.994 17.46 17.46 0.00 2.006
114 ctgatacgcgatgctagcta 477 20 0 50.00 57.994 17.69 3.08 0.00 2.006
115 cgcgatcgatgctagctagc 372 20 0 60.00 62.011 34.89 34.89 43.67 2.011
116 gcgcgatcgatgctagctag 371 20 0 60.00 62.011 21.66 17.46 38.48 2.011
117 ctgatcgatcgatgctagct 399 20 0 50.00 57.983 19.70 2.01 35.21 2.017
118 agctgatcgatcgatgctag 397 20 0 50.00 57.983 27.33 18.05 34.69 2.017
119 ctagctgatcgatcgatgct 395 20 0 50.00 57.983 33.87 33.38 38.16 2.017
120 agctagctgatcgatcgatg 393 20 0 50.00 57.983 21.99 11.03 35.21 2.017
121 ctgatcgatcgatgctagct 118 20 0 50.00 57.983 19.70 2.01 35.21 2.017
122 agctagctgatcgatcgatg 73 20 0 50.00 57.983 21.99 11.03 35.21 2.017
123 catcggattagctagctgatgc 5 22 0 50.00 59.982 24.41 24.41 40.05 2.018
124 gcatcggattagctagctgatg 4 22 0 50.00 59.982 27.81 27.81 33.28 2.018
125 tcgatgctagctaggcgat 407 19 0 52.63 58.964 14.03 3.01 0.00 2.036
126 atcgatgctagctaggcga 406 19 0 52.63 58.964 16.30 16.30 0.00 2.036
127 actatcatctctgcgcgatcg 359 21 0 52.38 61.037 12.19 12.19 39.07 2.037
128 gcgcgatcgatgctagcta 371 19 0 57.89 61.037 21.66 3.08 38.48 2.037
129 gctgatcgatcgatgctagct 398 21 0 52.38 61.044 27.88 12.70 35.21 2.044
130 agctgatcgatcgatgctagc 397 21 0 52.38 61.044 27.33 27.90 34.69 2.044
131 gctagctgatcgatcgatgct 394 21 0 52.38 61.044 33.87 33.38 38.16 2.044
132 agctagctgatcgatcgatgc 393 21 0 52.38 61.044 24.08 21.09 35.21 2.044
133 cgcgatcgatgctagctag 372 19 0 57.89 58.947 22.07 17.46 38.48 2.053
134 tcgtagcggcgatctagc 576 18 0 61.11 59.936 4.70 0.00 36.40 2.064
135 cgtagcggcgatctagct 577 18 0 61.11 59.935 11.03 11.03 37.58 2.065
136 gcggcgatctagctagct 581 18 0 61.11 59.933 23.74 23.74 38.05 2.067
137 agcggcgatctagctagc 580 18 0 61.11 59.933 16.97 7.15 39.86 2.067
138 ctagctgactgatacgcgat 469 20 0 50.00 57.918 1.43 0.00 0.00 2.082
139 ctagctgatcgatcgtagcgg 564 21 0 57.14 61.096 20.31 16.15 0.00 2.096
140 agctactatcatctctgcgc 355 20 0 50.00 57.898 0.00 0.00 0.00 2.102
141 gctagctactgatcgatgct 304 20 0 50.00 57.898 11.51 11.51 0.00 2.102
142 agctagctactgatcgatgc 303 20 0 50.00 57.898 17.56 1.76 0.00 2.102
143 agcatcggattagctagctgat 3 22 0 45.45 60.108 17.84 15.13 0.00 2.108
144 tgctagctaggcgatgcta 411 19 0 52.63 58.881 17.69 8.91 0.00 2.119
145 aagcatcggattagctagctg 2 21 0 47.62 58.879 28.29 10.80 0.00 2.121
146 tctgcgcgatcgatgcta 368 18 0 55.56 59.857 26.61 16.13 38.48 2.143
147 cgatgctagctaggcgatg 408 19 0 57.89 58.856 11.09 0.00 0.00 2.144
148 agctagctgatcatcgatgcta 190 22 0 45.45 59.845 17.99 13.09 0.00 2.155
149 tagctagctgatcatcgatgct 189 22 0 45.45 59.845 16.29 15.30 0.00 2.155
150 atcgatcgatgtgcggct 82 18 0 55.56 60.166 29.65 4.36 41.65 2.166
151 gctagctgactgatcgatca 261 20 0 50.00 57.829 26.99 26.99 35.44 2.171
152 tagctagctgactgatcgatcg 107 22 0 50.00 60.174 28.29 13.89 0.00 2.174
153 agctgatcatcatcgatgct 515 20 0 45.00 57.788 11.25 0.72 40.32 2.212
154 agctagctgactgatcgatcat 260 22 0 45.45 59.778 26.67 18.02 36.62 2.222
155 tgactgatacgcgatgctagc 474 21 0 52.38 61.238 8.61 8.61 0.00 2.238
156 gctgactgatacgcgatgcta 472 21 0 52.38 61.238 2.33 0.00 0.00 2.238
157 tagctgactgatacgcgatgc 470 21 0 52.38 61.238 3.47 0.00 0.00 2.238
158 tagctagctgatcgatcgtagc 561 22 0 50.00 60.238 26.87 26.87 0.00 2.238
159 gctagctagctgatcgatcgta 559 22 0 50.00 60.238 34.38 3.07 46.11 2.238
160 tgatcgatcgatgctagctagg 400 22 0 50.00 60.239 26.44 6.29 35.21 2.239
161 gctgactgatcgatcgatgct 113 21 0 52.38 61.244 26.44 12.40 35.21 2.244
162 agctgactgatcgatcgatgc 112 21 0 52.38 61.244 24.08 19.43 35.21 2.244
163 gatcgatcgatgtgcggct 81 19 0 57.89 61.263 19.16 0.00 41.65 2.263
164 gctgatcatcgatgctactagc 195 22 0 50.00 59.727 18.08 16.44 45.61 2.273
165 gctagctgatcatcgatgctac 191 22 0 50.00 59.727 9.57 5.47 0.00 2.273
166 gatcgatcgatgtgcggc 81 18 0 61.11 59.714 18.10 0.95 41.65 2.286
167 ctagctagctgactgatacgc 465 21 0 52.38 58.703 14.90 0.00 0.00 2.297
168 tagctgatcgatcgatgtgcg 76 21 0 52.38 61.299 31.92 20.26 42.69 2.299
169 agctgatcgatcgatgtgc 77 19 0 52.63 58.698 31.83 30.04 35.21 2.302
170 gctgatcatcatcgatgctagc 516 22 0 50.00 60.302 10.80 10.34 40.32 2.302
171 gctagctgatcatcatcgatgc 512 22 0 50.00 60.302 21.42 7.40 40.32 2.302
172 aagcatcggattagctagctga 2 22 0 45.45 60.306 28.29 20.88 0.00 2.306
173 gatcgatcgtagcggcga 570 18 0 61.11 60.318 13.01 8.51 45.59 2.318
174 atcggattagctagctgatgc 6 21 0 47.62 58.673 17.46 17.46 40.05 2.327
175 gcatcggattagctagctgat 4 21 0 47.62 58.673 17.84 15.13 0.00 2.327
176 gcggcgatctagctagctg 581 19 0 63.16 61.329 17.07 8.17 38.05 2.329
177 tgctagtgatgcatgctagt 24 20 0 45.00 57.636 24.96 11.17 35.89 2.364
178 ctactatcatctctgcgcga 357 20 0 50.00 57.636 2.71 2.71 0.00 2.364
179 actagctagctgactgatacgc 464 22 0 50.00 60.368 21.52 0.00 0.00 2.368
180 gctagctagctgatcatcga 187 20 0 50.00 57.613 34.38 0.24 46.11 2.387
181 tctctgcgcgatcgatgcta 366 20 0 55.00 62.413 26.61 17.10 38.48 2.413
182 tgatcgatcgatgctagctagt 119 22 0 45.45 59.586 26.44 5.69 35.21 2.414
183 actgatcgatcgatgctagcta 117 22 0 45.45 59.586 23.29 7.65 35.21 2.414
184 tagctagctgatcgatcgatgt 72 22 0 45.45 59.586 14.29 2.62 35.21 2.414
185 agctaggcgatgctagcta 415 19 0 52.63 58.572 17.69 3.08 41.54 2.428
186 tagctaggcgatgctagct 414 19 0 52.63 58.572 17.35 17.35 43.53 2.428
187 gatcgatcgatgctagctagg 401 21 0 52.38 58.567 23.89 6.29 35.21 2.433
188 gctagctagctgactgatcgat 105 22 0 50.00 60.434 34.38 0.00 46.11 2.434
189 gatcgatgctagctaggcg 405 19 0 57.89 58.563 15.59 9.02 0.00 2.437
190 cgatcgatgctagctaggc 404 19 0 57.89 58.563 14.87 8.45 0.00 2.437
191 tagctagctgactgatacgc 466 20 0 50.00 57.549 28.29 0.00 0.00 2.451
192 agctagctgactgatcgatc 260 20 0 50.00 57.536 19.32 19.32 0.00 2.464
193 agctagctgactgatcgatc 108 20 0 50.00 57.536 19.32 19.32 0.00 2.464
194 aaagcatcggattagctagctg 1 22 0 45.45 59.524 28.29 10.80 0.00 2.476
195 gctgactgatcgatcatcatgc 265 22 0 50.00 60.493 25.66 25.12 41.77 2.493
196 tagctactatcatctctgcgcg 354 22 0 50.00 60.495 0.00 0.00 0.00 2.495
197 ctgatcgatcgatgtgcggc 79 20 0 60.00 62.497 15.54 4.15 41.65 2.497
198 gctgatcgatcgatgtgcgg 78 20 0 60.00 62.497 29.87 22.23 41.65 2.497
199 tcgtagcggcgatctagct 576 19 0 57.89 61.503 11.03 11.03 36.40 2.503
200 agcggcgatctagctagct 580 19 0 57.89 61.519 23.74 23.74 42.96 2.519
201 ctagctagctgatcatcgatgc 188 22 0 50.00 59.470 21.42 9.22 0.00 2.530
202 gctagctagctgatcatcgatg 187 22 0 50.00 59.470 34.38 20.23 46.11 2.530
203 tcatctctgcgcgatcga 363 18 0 55.56 59.468 22.07 0.00 38.48 2.532
204 tcgatcgatgtgcggcta 83 18 0 55.56 59.465 18.63 0.00 41.65 2.535
205 tgatcgatcgatgtgcggc 80 19 0 57.89 61.549 21.27 8.44 41.65 2.549
206 ctagctaggcgatgctagctag 413 22 0 54.55 60.561 22.99 22.99 46.84 2.561
207 gctagctagctgatcgatcgat 390 22 0 50.00 60.561 34.38 30.53 46.11 2.561
208 gctagctagctgatcgatcgat 70 22 0 50.00 60.561 34.38 30.53 46.11 2.561
209 ctgcgcgatcgatgctag 369 18 0 61.11 59.415 19.79 13.97 38.48 2.585
210 aagcatcggattagctagct 2 20 0 45.00 57.413 23.74 23.74 0.00 2.587
211 gctagctgatcatcgatgcta 191 21 0 47.62 58.410 16.61 13.09 0.00 2.590
212 tagctagctgatcatcgatgc 189 21 0 47.62 58.410 21.42 9.22 0.00 2.590
213 actgatacgcgatgctagc 476 19 0 52.63 58.407 8.61 8.61 0.00 2.593
214 gctagctgactgatcgatcatc 261 22 0 50.00 59.406 23.93 21.92 36.62 2.594
215 atcgatcgatgctagctagg 402 20 0 50.00 57.396 29.65 6.29 33.56 2.604
216 atctctgcgcgatcgatgc 365 19 0 57.89 61.618 22.01 22.01 38.48 2.618
217 tgatcgatcgtagcggcg 569 18 0 61.11 60.621 20.58 0.86 0.00 2.621
218 atcatctctgcgcgatcgatg 362 21 0 52.38 61.633 18.01 18.01 38.48 2.633
219 agctagctgatcgatcgtag 562 20 0 50.00 57.344 17.99 16.86 0.00 2.656
220 ctagctagctgatcgatcgt 560 20 0 50.00 57.344 16.40 2.65 0.00 2.656
221 gctagctgactgatcgatcat 261 21 0 47.62 58.339 26.67 18.02 36.62 2.661
222 ctgatcgatcgtagcggcg 568 19 0 63.16 61.664 14.21 0.86 0.00 2.664
223 ctgactgatacgcgatgct 473 19 0 52.63 58.330 2.33 0.00 0.00 2.670
224 agctgactgatacgcgatg 471 19 0 52.63 58.330 0.00 0.00 0.00 2.670
225 gctagctgatcgatcgtagcg 563 21 0 57.14 61.676 24.18 16.49 0.00 2.676
226 ctagctgactgatcgatcga 110 20 0 50.00 57.276 22.52 22.52 0.00 2.724
227 agctagctactgatcgatgcta 303 22 0 45.45 59.252 17.56 12.23 0.00 2.748
228 tagctagctactgatcgatgct 302 22 0 45.45 59.252 27.80 11.51 0.00 2.748
229 gactgatacgcgatgctagcta 475 22 0 50.00 60.751 17.69 3.08 0.00 2.751
230 actgatacgcgatgctagctag 476 22 0 50.00 60.752 17.46 17.46 0.00 2.752
231 gactgatcgatcgatgctagct 116 22 0 50.00 60.753 18.04 9.56 35.21 2.753
232 gctagctgactgatcgatcgat 109 22 0 50.00 60.753 30.53 30.53 37.90 2.753
233 tgcgcgatcgatgctagcta 370 20 0 55.00 62.756 26.61 9.85 38.48 2.756
234 gcggcgatctagctagctga 581 20 0 60.00 62.765 21.57 16.66 38.70 2.765
235 agcggcgatctagctagctg 580 20 0 60.00 62.771 17.07 8.17 44.87 2.771
236 ctactatcatctctgcgcgatc 357 22 0 50.00 59.220 4.99 0.00 0.00 2.780
237 tatcatctctgcgcgatcg 361 19 0 52.63 58.199 12.19 12.19 39.07 2.801
238 tactatcatctctgcgcgatcg 358 22 0 50.00 60.811 12.19 12.19 39.07 2.811
239 tagctagctgactgatcgatca 259 22 0 45.45 59.187 28.29 26.99 35.44 2.813
240 gctgatcgatcgatgctagcta 398 22 0 50.00 60.816 27.88 12.57 35.21 2.816
241 tagctgatcgatcgatgctagc 396 22 0 50.00 60.816 30.84 27.90 36.80 2.816
242 gctagctgatcgatcgatgcta 394 22 0 50.00 60.816 34.11 32.56 36.80 2.816
243 tagctagctgatcgatcgatgc 392 22 0 50.00 60.816 24.08 21.09 35.21 2.816
244 gctaggcgatgctagctag 416 19 0 57.89 58.179 17.46 17.46 35.42 2.821
245 ctagctaggcgatgctagc 413 19 0 57.89 58.179 18.68 9.44 36.95 2.821
246 gctagctaggcgatgctag 412 19 0 57.89 58.179 23.16 23.16 38.59 2.821
247 catctctgcgcgatcgatgc 364 20 0 60.00 62.823 22.01 22.01 38.48 2.823
248 aaagcatcggattagctagct 1 21 0 42.86 58.168 23.74 23.74 0.00 2.832
249 ctgactgatcgatcgatgctag 114 22 0 50.00 59.155 22.81 19.44 35.21 2.845
250 ctagctgactgatcgatcgatg 110 22 0 50.00 59.155 23.05 13.21 35.21 2.845
251 tactatcatctctgcgcgatc 358 21 0 47.62 58.155 4.99 0.00 0.00 2.845
252 gctagctactgatcgatgctac 304 22 0 50.00 59.151 8.57 4.26 0.00 2.849
253 ctactatcatctctgcgcgat 357 21 0 47.62 58.150 4.99 2.52 0.00 2.850
254 agctgatcatcgatgctact 194 20 0 45.00 57.134 17.14 8.95 0.00 2.866
255 gctagctagctgatcatcgat 187 21 0 47.62 58.132 34.38 0.00 46.11 2.868
256 ctgatacgcgatgctagct 477 19 0 52.63 58.107 17.69 1.35 0.00 2.893
257 ggcgatctagctagctgac 583 19 0 57.89 58.106 14.84 7.25 37.58 2.894
258 tgactgatcgatcgatgctag 115 21 0 47.62 58.084 22.81 19.44 35.21 2.916
259 ctgactgatcgatcgatgcta 114 21 0 47.62 58.084 26.44 14.64 35.21 2.916
260 tagctgactgatcgatcgatg 111 21 0 47.62 58.084 23.05 13.21 35.21 2.916
261 actgatcgatcatcatgctagc 269 22 0 45.45 59.071 26.67 8.61 41.77 2.929
262 agctgactgatcgatcatca 264 20 0 45.00 57.064 26.49 26.49 39.98 2.936
263 ctagctagctgatcgatcga 391 20 0 50.00 57.060 22.52 22.52 0.00 2.940
264 ctagctagctgatcgatcga 71 20 0 50.00 57.060 22.52 22.52 0.00 2.940
265 gatcgatcgatgtgcggctag 81 21 0 57.14 61.947 19.16 0.00 41.65 2.947
266 tgctagctaggcgatgct 411 18 0 55.56 59.050 17.69 7.53 0.00 2.950
267 gctgatcgatcgtagcggc 567 19 0 63.16 61.960 20.49 19.38 0.00 2.960
268 cgatcgatgtgcggctag 84 18 0 61.11 59.032 10.82 0.00 41.65 2.968
269 tgatcgatcgatgtgcggct 80 20 0 55.00 62.987 22.21 0.00 41.65 2.987
270 ctgactgatcgatcatcatgct 266 22 0 45.45 59.004 20.99 6.82 41.77 2.996
271 agctgactgatcgatcatcatg 264 22 0 45.45 59.004 22.70 19.51 41.77 2.996
272 agctagctgactgatacgcga 467 21 0 52.38 62.000 17.99 0.00 0.00 3.000
273 tgactgatcgatcgatgctagc 115 22 0 50.00 61.008 18.17 12.52 35.21 3.008
274 gctgactgatcgatcgatgcta 113 22 0 50.00 61.008 26.44 14.64 35.21 3.008
275 tagctgactgatcgatcgatgc 111 22 0 50.00 61.008 24.08 19.43 35.21 3.008
276 agctagctgatcgatcgatgtg 73 22 0 50.00 61.010 17.99 6.93 35.21 3.010
277 ctgatcgatcgatgctagctag 399 22 0 50.00 58.963 19.70 17.46 35.21 3.037
278 ctagctgatcgatcgatgctag 395 22 0 50.00 58.963 37.86 37.86 43.17 3.037
279 ctagctagctgatcgatcgatg 391 22 0 50.00 58.963 21.99 11.03 35.21 3.037
280 ctgatcgatcgatgctagctag 118 22 0 50.00 58.963 19.70 17.46 35.21 3.037
281 ctagctagctgatcgatcgatg 71 22 0 50.00 58.963 21.99 11.03 35.21 3.037
282 gactgatcgatcatcatgctagc 268 23 0 47.83 60.053 24.51 9.03 41.77 3.053
283 gctagtgatgcatgctagtagtg 25 23 0 47.83 59.929 24.96 10.54 0.00 3.071
284 gctactatcatctctgcgcgat 356 22 0 50.00 61.073 4.99 2.52 0.00 3.073
285 gtagcggcgatctagctag 578 19 0 57.89 57.903 15.64 15.64 37.58 3.097
286 tgactgatcgatcatcatgct 267 21 0 42.86 57.900 26.79 12.28 41.77 3.100
287 ctagctactatcatctctgcgc 353 22 0 50.00 58.892 0.00 0.00 0.00 3.108
288 gctagctactatcatctctgcg 352 22 0 50.00 58.892 8.21 0.00 0.00 3.108
289 ctagctagctactgatcgatgc 301 22 0 50.00 58.892 14.00 1.76 0.00 3.108
290 gctagctagctactgatcgatg 300 22 0 50.00 58.892 34.38 7.78 46.11 3.108
291 catcgatcgatgctagtatgct 325 22 0 45.45 58.885 37.80 10.02 44.93 3.115
292 tgatcgatcgatgctagctag 400 21 0 47.62 57.879 26.44 17.46 35.21 3.121
293 ctgatcgatcgatgctagcta 399 21 0 47.62 57.879 19.70 3.77 35.21 3.121
294 tagctgatcgatcgatgctag 396 21 0 47.62 57.879 34.03 27.12 36.80 3.121
295 ctagctgatcgatcgatgcta 395 21 0 47.62 57.879 34.11 32.56 36.80 3.121
296 tagctagctgatcgatcgatg 392 21 0 47.62 57.879 21.99 11.03 35.21 3.121
297 tgatcgatcgatgctagctag 119 21 0 47.62 57.879 26.44 17.46 35.21 3.121
298 ctgatcgatcgatgctagcta 118 21 0 47.62 57.879 19.70 3.77 35.21 3.121
299 tagctagctgatcgatcgatg 72 21 0 47.62 57.879 21.99 11.03 35.21 3.121
300 gatcgatcgatgctagctagt 120 21 0 47.62 57.878 23.89 3.56 35.21 3.122
301 ctatcatctctgcgcgatcgat 360 22 0 50.00 61.132 22.07 11.47 38.48 3.132
302 tgatcgatcgtagcggcga 569 19 0 57.89 62.144 20.58 8.51 45.59 3.144
303 tcgtagcggcgatctagctag 576 21 0 57.14 62.173 15.64 15.64 36.40 3.173
304 tactagctagctgactgatacgc 463 23 0 47.83 60.176 13.17 0.00 0.00 3.176
305 ctgatcatcatcgatgctagct 517 22 0 45.45 58.807 17.69 1.76 40.32 3.193
306 agctgatcatcatcgatgctag 515 22 0 45.45 58.807 5.93 2.76 40.32 3.193
307 ctagctgatcatcatcgatgct 513 22 0 45.45 58.807 14.14 8.34 40.32 3.193
308 agctagctgatcatcatcgatg 511 22 0 45.45 58.807 20.23 20.23 41.48 3.193
309 ctgatcgatcatcatgctagct 270 22 0 45.45 58.807 26.67 0.00 41.77 3.193
310 ctagctgactgatcgatcgat 110 21 0 47.62 57.806 30.53 30.53 37.90 3.194
311 ttagctagctgactgatcgatca 258 23 0 43.48 59.798 28.29 26.99 35.44 3.202
312 tagctactatcatctctgcgc 354 21 0 47.62 57.798 0.00 0.00 0.00 3.202
313 gctagctactgatcgatgcta 304 21 0 47.62 57.798 12.99 12.23 0.00 3.202
314 tagctagctactgatcgatgc 302 21 0 47.62 57.798 27.80 1.76 0.00 3.202
315 tctctgcgcgatcgatgc 366 18 0 61.11 61.229 22.01 22.01 38.48 3.229
316 ctctgcgcgatcgatgct 367 18 0 61.11 61.232 26.61 0.00 38.48 3.232
317 agctagctactatcatctctgcg 351 23 0 47.83 60.238 17.56 0.00 0.00 3.238
318 ctagctagctactgatcgatgct 301 23 0 47.83 60.238 14.00 11.51 0.00 3.238
319 ctgatcgatcgtagcggc 568 18 0 61.11 58.727 14.21 0.00 0.00 3.273
320 gctgatcgatcgtagcgg 567 18 0 61.11 58.727 20.49 15.03 0.00 3.273
321 agctaggcgatgctagct 415 18 0 55.56 58.725 17.69 13.00 39.84 3.275
322 tgctagtgatgcatgctagtagt 24 23 0 43.48 60.302 24.96 12.98 35.89 3.302
323 gcgcgatcgatgctagct 371 18 0 61.11 61.306 21.66 1.35 38.48 3.306
324 tgatcatcatcgatgctagct 518 21 0 42.86 57.691 17.69 1.76 40.32 3.309
325 agctgatcatcatcgatgcta 515 21 0 42.86 57.691 0.24 0.00 40.32 3.309
326 tagctgatcatcatcgatgct 514 21 0 42.86 57.691 14.14 8.34 40.32 3.309
327 tgatcgatcatcatgctagct 271 21 0 42.86 57.691 27.48 0.00 37.38 3.309
328 ctagctagctgactgatacgcg 465 22 0 54.55 61.313 14.90 3.89 0.00 3.313
329 tgctagtgatgcatgctagtag 24 22 0 45.45 58.673 24.96 19.76 35.89 3.327
330 gctagtgatgcatgctagtagt 25 22 0 45.45 58.672 24.96 12.98 0.00 3.328
331 tagctagctgatcatcgatgcta 189 23 0 43.48 59.671 17.82 15.89 0.00 3.329
332 agctagctgactgatacgc 467 19 0 52.63 57.642 17.99 0.00 0.00 3.358
333 tatcatctctgcgcgatcgatg 361 22 0 50.00 61.383 18.01 18.01 38.48 3.383
334 agctgactgatcgatcatcat 264 21 0 42.86 57.616 26.31 18.90 41.77 3.384
335 actagctagctgatcatcatcga 508 23 0 43.48 59.607 22.43 0.00 0.00 3.393
336 tagctagctgactgatcgatcat 259 23 0 43.48 59.607 28.29 18.02 36.62 3.393
337 gatgctagctaggcgatgctag 409 22 0 54.55 61.393 23.16 23.16 38.59 3.393
338 cggcgatctagctagctgact 582 21 0 57.14 62.394 17.44 7.44 38.70 3.394
339 ctagctagctgatcgatcgat 391 21 0 47.62 57.600 30.53 30.53 37.90 3.400
340 ctagctagctgatcgatcgat 71 21 0 47.62 57.600 30.53 30.53 37.90 3.400
341 actgatcgatcatcatgctagct 269 23 0 43.48 60.428 26.67 4.70 41.77 3.428
342 ctagctagctgactgatcgatc 106 22 0 50.00 58.567 19.32 19.32 0.00 3.433
343 ctgactgatcgatcatcatgc 266 21 0 47.62 57.562 20.99 12.19 41.77 3.438
344 gctgactgatcgatcatcatg 265 21 0 47.62 57.562 22.70 19.51 41.77 3.438
345 gatcgatcgatgctagctaggc 401 22 0 54.55 61.448 23.89 8.45 35.21 3.448
346 gtgatgcatgctagtagtgatgt 29 23 0 43.48 59.551 11.60 0.00 0.00 3.449
347 tgctagtgatgcatgctagta 24 21 0 42.86 57.546 24.96 21.25 35.89 3.454
348 tagcggcgatctagctagctg 579 21 0 57.14 62.457 18.98 9.30 45.57 3.457
349 gtagcggcgatctagctagct 578 21 0 57.14 62.458 23.74 23.74 46.60 3.458
350 tagctgatcgatcgtagcg 565 19 0 52.63 57.539 25.02 11.96 0.00 3.461
351 gctagctagctactgatcgat 300 21 0 47.62 57.517 34.38 0.00 46.11 3.483
352 agctagctactgatcgatgctac 303 23 0 47.83 60.487 17.56 7.81 0.00 3.487
353 atcgatcgatgctagtatgct 326 21 0 42.86 57.502 29.65 2.17 33.56 3.498
354 agctactgatcgatgctacatc 307 22 0 45.45 58.484 7.41 0.00 37.97 3.516
355 agtgatgcatgctagtagtga 28 21 0 42.86 57.471 0.00 0.00 0.00 3.529
356 gactgatcgatcgatgctagcta 116 23 0 47.83 60.546 18.04 4.19 35.21 3.546
357 ctgatcgatcgatgctagctagt 118 23 0 47.83 60.547 22.18 3.56 35.21 3.547
358 actgatcgatcgatgctagctag 117 23 0 47.83 60.547 23.29 17.46 35.21 3.547
359 ctagctagctgatcgatcgatgt 71 23 0 47.83 60.547 14.29 2.62 35.21 3.547
360 catcgatcgatgctagtatgc 325 21 0 47.62 57.452 37.80 0.00 44.93 3.548
361 tagctagctgactgatcgatc 259 21 0 47.62 57.451 28.29 19.32 0.00 3.549
362 tagctagctgactgatcgatc 107 21 0 47.62 57.451 28.29 19.32 0.00 3.549
363 ctagctagctgactgatcgat 106 21 0 47.62 57.445 14.90 0.00 0.00 3.555
364 tcgatgctagctaggcga 407 18 0 55.56 58.427 15.59 13.52 0.00 3.573
365 tgatcgatcgatgctagctagta 119 23 0 43.48 59.424 26.44 18.77 35.21 3.576
366 ctgcgcgatcgatgctagc 369 19 0 63.16 62.586 20.26 12.12 38.48 3.586
367 agctagctgatcatcatcgat 511 21 0 42.86 57.405 17.99 0.00 0.00 3.595
368 tgcgcgatcgatgctagc 370 18 0 61.11 61.605 26.61 17.77 38.48 3.605
369 ctagctagctgatcgatcgtag 560 22 0 50.00 58.387 16.86 16.86 0.00 3.613
370 actagctagctgactgatacg 464 21 0 47.62 57.384 21.52 2.77 0.00 3.616
371 ctagctgactgatacgcga 469 19 0 52.63 57.370 16.29 0.00 0.00 3.630
372 gctactagctagctgactgat 461 21 0 47.62 57.360 15.96 3.00 44.92 3.640
373 ctgatcatcatcgatgctagc 517 21 0 47.62 57.358 8.61 8.61 40.32 3.642
374 gctgatcatcatcgatgctag 516 21 0 47.62 57.358 5.93 2.76 40.32 3.642
375 ctagctgatcatcatcgatgc 513 21 0 47.62 57.358 21.42 7.40 40.32 3.642
376 gctagctgatcatcatcgatg 512 21 0 47.62 57.358 20.23 20.23 41.48 3.642
377 ctgatcgatcatcatgctagc 270 21 0 47.62 57.358 26.67 8.61 41.77 3.642
378 agctactgatcgatgctacat 307 21 0 42.86 57.344 7.41 0.00 0.00 3.656
379 tgatcgatcgatgtgcggcta 80 21 0 52.38 62.663 22.21 0.24 41.65 3.663
380 atctctgcgcgatcgatg 365 18 0 55.56 58.327 12.03 4.19 38.48 3.673
381 catctctgcgcgatcgat 364 18 0 55.56 58.327 22.07 1.26 38.48 3.673
382 atcatctctgcgcgatcg 362 18 0 55.56 58.327 12.19 12.19 39.07 3.673
383 aagcatcggattagctagctgat 2 23 0 43.48 60.682 17.84 15.13 0.00 3.682
384 agtgatgcatgctagtagtgatg 28 23 0 43.48 59.299 7.49 7.49 0.00 3.701
385 gatcgatgctagctaggcgatg 405 22 0 54.55 61.702 24.26 6.24 0.00 3.702
386 atctctgcgcgatcgatgcta 365 21 0 52.38 62.723 26.61 17.10 38.48 3.723
387 tagctagctgactgatacgcga 466 22 0 50.00 61.730 28.29 0.00 0.00 3.730
388 tagctagctgatcgatcgtag 561 21 0 47.62 57.269 16.86 16.86 0.00 3.731
389 ctagctagctgatcgatcgta 560 21 0 47.62 57.269 11.68 3.07 0.00 3.731
390 tcgatcgatgctagctagtag 122 21 0 47.62 57.269 18.63 2.63 0.00 3.731
391 gctagctactgatcgatgctaca 304 23 0 47.83 60.734 11.21 0.06 0.00 3.734
392 agctagctgactgatcgatcatc 260 23 0 47.83 60.736 23.93 21.92 36.62 3.736
393 agctagctgactgatcgatcga 108 22 0 50.00 61.737 22.52 22.52 0.00 3.737
394 tctctgcgcgatcgatgct 366 19 0 57.89 62.740 26.61 0.00 38.48 3.740
395 tgatgcatgctagtagtgatgt 30 22 0 40.91 58.256 11.60 0.00 0.00 3.744
396 tgatcgatcgatgtgcgg 80 18 0 55.56 58.244 21.27 0.00 41.65 3.756
397 cgatcgatgctagctaggcga 404 21 0 57.14 62.770 16.30 16.30 0.00 3.770
398 tcgatcgatgctagctaggcg 403 21 0 57.14 62.770 18.63 11.67 0.00 3.770
399 atcgatcgatgcatgcatg 443 19 0 47.37 57.226 29.65 23.31 37.30 3.774
400 catcgatcgatgcatgcat 442 19 0 47.37 57.226 37.80 33.45 44.93 3.774
401 actagctagctgatcatcatcg 508 22 0 45.45 58.219 22.43 3.40 0.00 3.781
402 ctgatcatcgatgctactagct 196 22 0 45.45 58.219 10.86 0.00 45.92 3.781
403 agctgatcatcgatgctactag 194 22 0 45.45 58.219 13.67 9.68 0.00 3.781
404 ctagctgatcatcgatgctact 192 22 0 45.45 58.219 14.85 7.80 0.00 3.781
405 tttagctagctgactgatcga 257 21 0 42.86 57.216 0.38 0.00 0.00 3.784
406 tagctagctgatcgatcgatgtg 72 23 0 47.83 60.793 10.14 4.94 35.21 3.793
407 gctagctagctgatcatcatct 146 22 0 45.45 58.203 34.38 0.00 46.11 3.797
408 ctagctagctgatcatcgatgct 188 23 0 47.83 60.799 16.29 15.30 0.00 3.799
409 agctagctactatcatcgatcga 429 23 0 43.48 59.170 22.52 22.52 0.00 3.830
410 ttagctagctgactgatcgatc 258 22 0 45.45 58.159 28.29 19.32 0.00 3.841
411 ctagctgactgatcgatcatca 262 22 0 45.45 58.155 26.49 26.49 39.98 3.845
412 aaagcatcggattagctagctga 1 23 0 43.48 60.870 28.29 20.88 0.00 3.870
413 agctgactgatacgcgatgct 471 21 0 52.38 62.876 7.57 2.13 0.00 3.876
414 tagctagctactgatcgatgcta 302 23 0 43.48 59.102 27.80 12.23 0.00 3.898
415 tcatcatcgatgctagctagt 521 21 0 42.86 57.067 22.18 3.56 40.32 3.933
416 tcgatcatcatgctagctact 274 21 0 42.86 57.067 0.00 0.00 0.00 3.933
417 tgatcatcgatgctactagct 197 21 0 42.86 57.067 17.14 0.00 45.92 3.933
418 agctgatcatcgatgctacta 194 21 0 42.86 57.067 17.14 4.89 0.00 3.933
419 tagctgatcatcgatgctact 193 21 0 42.86 57.067 14.85 7.80 0.00 3.933
420 tcgatcgatgctagtatgctag 327 22 0 45.45 58.044 18.63 13.77 46.09 3.956
421 gcgatctagctagctgact 584 19 0 52.63 57.034 17.44 7.44 0.00 3.966
422 gctactgatcgatgctacatc 308 21 0 47.62 57.028 2.44 0.00 37.97 3.972
423 cggcgatctagctagctg 582 18 0 61.11 58.018 17.07 8.17 37.58 3.982
424 gctagctgactgatcgatcatca 261 23 0 47.83 60.983 26.49 26.49 39.98 3.983
425 actatcatctctgcgcgat 359 19 0 47.37 57.015 4.99 2.52 0.00 3.985
426 catcggattagctagctgatg 5 21 0 47.62 57.003 23.69 23.29 0.00 3.997
427 tagctgactgatcgatcatca 263 21 0 42.86 57.000 26.49 26.49 39.98 4.000
428 actagctagctgatcatcatcgat 508 24 0 41.67 59.995 22.43 0.00 0.00 4.005
429 agtgatgcatgctagtagtgat 28 22 0 40.91 57.984 0.00 0.00 0.00 4.016
430 ctagctagctgatcatcatcga 509 22 0 45.45 57.958 11.68 0.00 0.00 4.042
431 gctgatcatcgatgctactagct 195 23 0 47.83 61.046 20.91 5.24 45.92 4.046
432 agctgatcatcgatgctactagc 194 23 0 47.83 61.046 20.78 20.78 45.61 4.046
433 gctagctgatcatcgatgctact 191 23 0 47.83 61.046 12.59 8.92 0.00 4.046
434 agctagctgatcatcgatgctac 190 23 0 47.83 61.046 17.99 7.99 0.00 4.046
435 tagctagctactatcatctctgcg 350 24 0 45.83 60.058 27.80 0.00 0.00 4.058
436 ctagctagctactgatcgatgcta 301 24 0 45.83 60.058 14.00 12.23 0.00 4.058
437 agctactatcatctctgcgcga 355 22 0 50.00 62.058 2.71 2.71 0.00 4.058
438 gctatttagctagctgactgatcg 253 24 0 45.83 60.060 7.27 0.00 46.11 4.060
439 tgatcgatcatcatgctagctac 271 23 0 43.48 58.931 27.48 0.00 37.38 4.069
440 gtgatgcatgctagtagtgatg 29 22 0 45.45 57.921 7.49 7.49 0.00 4.079
441 ctagctagctgactgatcgatcg 106 23 0 52.17 61.091 16.84 13.89 0.00 4.091
442 ctagctactgatcgatgctaca 305 22 0 45.45 57.898 13.79 1.61 0.00 4.102
443 cggcgatctagctagctgacta 582 22 0 54.55 62.109 17.44 5.40 38.70 4.109
444 atgctagctaggcgatgc 410 18 0 55.56 57.890 10.59 0.00 0.00 4.110
445 ctgatcgatcatcatgctagctac 270 24 0 45.83 59.882 26.67 0.00 41.77 4.118
446 gctactagctagctgatcatca 505 22 0 45.45 57.879 14.37 0.00 44.92 4.121
447 gctactagctagctgatcatca 208 22 0 45.45 57.879 14.37 0.00 44.92 4.121
448 ctgactgatacgcgatgctagc 473 22 0 54.55 62.128 8.61 8.61 0.00 4.128
449 gctgactgatacgcgatgctag 472 22 0 54.55 62.128 1.70 0.00 0.00 4.128
450 ctagctgactgatacgcgatgc 469 22 0 54.55 62.128 3.47 0.00 0.00 4.128
451 gctagctgactgatacgcgatg 468 22 0 54.55 62.128 8.21 0.00 0.00 4.128
452 tgactgatcgatcatcatgctag 267 23 0 43.48 58.866 26.79 18.40 41.77 4.134
453 ctgactgatcgatcatcatgcta 266 23 0 43.48 58.866 20.99 8.89 41.77 4.134
454 tagctgactgatcgatcatcatg 263 23 0 43.48 58.866 22.70 19.51 41.77 4.134
455 ctagctagctgatcgatcgtagc 560 23 0 52.17 61.151 26.87 26.87 0.00 4.151
456 gctagctagctgatcgatcgtag 559 23 0 52.17 61.151 34.38 16.86 46.11 4.151
457 ctgatcgatcgatgctagctagg 399 23 0 52.17 61.158 22.67 6.29 35.21 4.158
458 gatcgatcgatgctagctagtag 120 23 0 47.83 58.829 23.89 2.63 35.21 4.171
459 ttagctagctgactgatcgatcat 258 24 0 41.67 60.177 28.29 18.02 36.62 4.177
460 ctgactgatcgatcatcatgctag 266 24 0 45.83 59.822 20.99 12.80 41.77 4.178
461 ctagctgactgatcgatcatcatg 262 24 0 45.83 59.822 22.70 19.51 41.77 4.178
462 ctagctgatcgatcgatgtgcg 75 22 0 54.55 62.180 31.92 20.85 42.69 4.180
463 tttagctagctgactgatcgatc 257 23 0 43.48 58.807 19.32 19.32 0.00 4.193
464 tgactgatcgatcatcatgcta 267 22 0 40.91 57.803 26.79 13.11 41.77 4.197
465 gctagctactatcatcgatcga 430 22 0 45.45 57.783 22.52 22.52 0.00 4.217
466 gatcgatcgatgctagctagta 120 22 0 45.45 57.783 23.89 18.77 35.21 4.217
467 agctagctactatcatcgatcg 429 22 0 45.45 57.777 17.56 9.87 0.00 4.223
468 atcgatcgatgctagctagtag 121 22 0 45.45 57.777 29.65 2.63 33.56 4.223
469 tgatcatcatcgatgctagctagt 518 24 0 41.67 60.238 22.18 3.56 40.32 4.238
470 tgatcgatcatcatgctagctact 271 24 0 41.67 60.238 27.48 0.00 37.38 4.238
471 actgatcgatcatcatgctagcta 269 24 0 41.67 60.238 26.67 2.76 41.77 4.238
472 catcgatcgatgctagtatgcta 325 23 0 43.48 58.753 37.80 6.23 44.93 4.247
473 tttagctagctgactgatcgat 257 22 0 40.91 57.736 0.38 0.00 0.00 4.264
474 atttagctagctgactgatcga 256 22 0 40.91 57.736 4.16 0.00 0.00 4.264
475 cgcgatcgatgctagcta 372 18 0 55.56 57.717 22.07 3.08 38.48 4.283
476 catcgatcgatgctagtatgctag 325 24 0 45.83 59.708 37.80 16.01 44.93 4.292
477 tagctagctactgatcgatgctac 302 24 0 45.83 60.297 27.80 7.81 0.00 4.297
478 agcatcggattagctagctgatg 3 23 0 47.83 61.299 27.81 27.81 33.28 4.299
479 agctagctgactgatacgcgat 467 22 0 50.00 62.317 17.99 0.00 0.00 4.317
480 tgatcatcatcgatgctagctag 518 23 0 43.48 58.678 17.46 17.46 40.32 4.322
481 ctgatcatcatcgatgctagcta 517 23 0 43.48 58.678 17.69 2.41 40.32 4.322
482 tagctgatcatcatcgatgctag 514 23 0 43.48 58.678 9.90 2.76 40.32 4.322
483 ctagctgatcatcatcgatgcta 513 23 0 43.48 58.678 14.58 9.63 40.32 4.322
484 tagctagctgatcatcatcgatg 510 23 0 43.48 58.678 20.23 20.23 41.48 4.322
485 ctgatcgatcatcatgctagcta 270 23 0 43.48 58.678 26.67 2.76 41.77 4.322
486 gatcatcatcgatgctagctagt 519 23 0 43.48 58.677 22.18 3.56 40.32 4.323
487 gatcgatcatcatgctagctact 272 23 0 43.48 58.677 21.11 0.00 0.00 4.323
488 gctagctagctgactgatcgatc 105 23 0 52.17 61.341 34.38 19.32 46.11 4.341
489 tgatcgatcgatgctagctagtag 119 24 0 45.83 60.356 26.44 2.63 35.21 4.356
490 ctgatcgatcgatgctagctagta 118 24 0 45.83 60.356 22.18 18.77 35.21 4.356
491 ctgatcatcatcgatgctagctag 517 24 0 45.83 59.644 17.46 17.46 40.32 4.356
492 ctagctgatcatcatcgatgctag 513 24 0 45.83 59.644 19.54 18.30 42.07 4.356
493 ctagctagctgatcatcatcgatg 509 24 0 45.83 59.644 20.23 20.23 41.48 4.356
494 tttagctagctgactgatcgatca 257 24 0 41.67 60.358 26.99 26.99 35.44 4.358
495 actatcatctctgcgcgatcga 359 22 0 50.00 62.365 22.07 1.72 38.48 4.365
496 agctgatcgatcgtagcg 566 18 0 55.56 57.634 25.02 11.96 0.00 4.366
497 gctactagctagctgactgatac 461 23 0 47.83 58.626 15.96 1.42 44.92 4.374
498 agctgatcgatcgatgctagct 397 22 0 50.00 62.388 30.32 30.32 38.42 4.388
499 agctagctgatcgatcgatgct 393 22 0 50.00 62.388 33.87 33.38 38.16 4.388
500 ctagctgactgatcgatcatcat 262 23 0 43.48 58.612 26.31 20.43 41.77 4.388
501 agctagctactatcatctctgc 351 22 0 45.45 57.608 17.56 0.00 0.00 4.392
502 ctagctactatcatctctgcgcg 353 23 0 52.17 61.393 0.00 0.00 0.00 4.393
503 tgatcatcatcgatgctagcta 518 22 0 40.91 57.602 17.69 3.08 40.32 4.398
504 tagctgatcatcatcgatgcta 514 22 0 40.91 57.602 15.95 9.16 40.32 4.398
505 tgatcgatcatcatgctagcta 271 22 0 40.91 57.602 27.48 3.08 37.38 4.398
506 atcatcatcgatgctagctagt 520 22 0 40.91 57.595 22.18 3.56 40.32 4.405
507 atcgatcatcatgctagctact 273 22 0 40.91 57.595 0.00 0.00 0.00 4.405
508 agctagctactatcatcgatcgat 429 24 0 41.67 59.573 25.37 25.37 35.13 4.427
509 gctagctgatcgatcgatgtgc 74 22 0 54.55 62.443 31.83 30.04 35.21 4.443
510 tagctgactgatcgatcatcat 263 22 0 40.91 57.531 26.31 20.43 41.77 4.469
511 tagctagctgactgatcgatcga 107 23 0 47.83 61.487 28.29 22.52 0.00 4.487
512 atcgatcgatgctagtatgctag 326 23 0 43.48 58.501 29.65 13.77 46.09 4.499
513 ctagtgatgcatgctagtagtga 26 23 0 43.48 58.483 20.00 1.46 0.00 4.517
514 tagctagctgactgatcgatcatc 259 24 0 45.83 60.536 28.29 21.92 36.62 4.536
515 tactagctagctgatcatcatcga 507 24 0 41.67 59.449 0.00 0.00 0.00 4.551
516 gctagctagctactatcatcga 426 22 0 45.45 57.437 34.38 0.00 46.11 4.563
517 tgactgatacgcgatgctagct 474 22 0 50.00 62.569 17.69 1.35 0.00 4.569
518 agctgactgatacgcgatgcta 471 22 0 50.00 62.569 7.57 0.00 0.00 4.569
519 tagctgactgatacgcgatgct 470 22 0 50.00 62.569 10.87 8.44 0.00 4.569
520 atcgatcgatgctagtatgcta 326 22 0 40.91 57.423 29.65 0.00 33.56 4.577
521 ctagctagctgatcatcatcgat 509 23 0 43.48 58.422 11.68 0.00 0.00 4.578
522 agctgactgatcgatcgatgct 112 22 0 50.00 62.580 26.44 23.13 35.21 4.580
523 ctagctagctgatcatcgatgcta 188 24 0 45.83 60.596 16.78 15.81 0.00 4.596
524 gtgatgcatgctagtagtgatgta 29 24 0 41.67 59.398 11.60 8.84 0.00 4.602
525 gctgatcatcatcgatgctagct 516 23 0 47.83 61.603 20.15 8.14 40.32 4.603
526 agctgatcatcatcgatgctagc 515 23 0 47.83 61.603 20.04 19.26 40.32 4.603
527 gctagctgatcatcatcgatgct 512 23 0 47.83 61.603 14.14 8.34 40.32 4.603
528 agctagctgatcatcatcgatgc 511 23 0 47.83 61.603 21.42 7.40 40.32 4.603
529 tagtgatgcatgctagtagtga 27 22 0 40.91 57.391 0.01 0.00 0.00 4.609
530 ctactagctagctgactgatacg 462 23 0 47.83 58.387 3.12 0.00 0.00 4.613
531 tagctactgatcgatgctacatc 306 23 0 43.48 58.368 13.79 0.00 37.97 4.632
532 gactgatacgcgatgctagctag 475 23 0 52.17 61.633 17.46 17.46 0.00 4.633
533 ctagctactgatcgatgctacat 305 23 0 43.48 58.364 13.79 0.09 0.00 4.636
534 gctagctactatcatctctgcgc 352 23 0 52.17 61.644 8.21 0.00 0.00 4.644
535 gctagctagctactgatcgatgc 300 23 0 52.17 61.644 34.38 12.71 46.11 4.644
536 gctactagctagctgatcatcat 505 23 0 43.48 58.350 14.37 0.00 44.92 4.650
537 gctactagctagctgatcatcat 208 23 0 43.48 58.350 14.37 0.00 44.92 4.650
538 ctagctactgatcgatgctacatc 305 24 0 45.83 59.349 13.79 0.00 37.97 4.651
539 gctactagctagctgatcatcatc 505 24 0 45.83 59.343 14.37 0.00 44.92 4.657
540 gctactagctagctgatcatcatc 208 24 0 45.83 59.343 14.37 0.00 44.92 4.657
541 gctgatcatcatctagctagtagc 154 24 0 45.83 59.343 15.25 15.25 45.79 4.657
542 tagctagctgatcatcatcgat 510 22 0 40.91 57.329 10.14 0.00 0.00 4.671
543 ctactatcatctctgcgcgatcg 357 23 0 52.17 61.686 12.19 12.19 39.07 4.686
544 tactagctagctgactgatacg 463 22 0 45.45 57.310 13.17 0.00 0.00 4.690
545 gctgatcgatcgatgctagctag 398 23 0 52.17 61.697 27.88 18.22 35.21 4.697
546 ctagctgatcgatcgatgctagc 395 23 0 52.17 61.697 38.64 35.38 43.05 4.697
547 gctagctgatcgatcgatgctag 394 23 0 52.17 61.697 41.07 41.07 46.89 4.697
548 ctagctagctgatcgatcgatgc 391 23 0 52.17 61.697 24.08 21.09 35.21 4.697
549 gctagctagctgatcgatcgatg 390 23 0 52.17 61.697 34.38 11.03 46.11 4.697
550 gctagctagctgatcgatcgatg 70 23 0 52.17 61.697 34.38 11.03 46.11 4.697
551 gctactagctagctgactgata 461 22 0 45.45 57.286 15.96 3.69 44.92 4.714
552 gatcgatcatcatgctagctac 272 22 0 45.45 57.284 21.11 0.00 0.00 4.716
553 cgatgctagctaggcgat 408 18 0 55.56 57.277 10.81 3.01 0.00 4.723
554 atcgatgctagctaggcg 406 18 0 55.56 57.277 15.59 9.02 0.00 4.723
555 tagctactgatcgatgctacat 306 22 0 40.91 57.270 13.79 0.09 0.00 4.730
556 gctagctactatcatcgatcgat 430 23 0 43.48 58.251 25.37 25.37 35.13 4.749
557 tgcatgctagtagtgatgtatacg 33 24 0 41.67 59.224 20.79 0.00 0.00 4.776
558 gcatgctagtagtgatgtatacgt 34 24 0 41.67 59.223 11.60 0.00 0.00 4.777
559 atttagctagctgactgatcgatc 256 24 0 41.67 59.219 19.32 19.32 0.00 4.781
560 gactgatcgatcatcatgctag 268 22 0 45.45 57.215 24.51 15.87 41.77 4.785
561 atttagctagctgactgatcgat 256 23 0 39.13 58.215 4.16 0.00 0.00 4.785
562 gctgactgatcgatcatcatgct 265 23 0 47.83 61.788 27.72 15.10 41.77 4.788
563 agctgactgatcgatcatcatgc 264 23 0 47.83 61.788 27.74 27.74 41.77 4.788
564 tagctactatcatctctgcgcga 354 23 0 47.83 61.796 2.71 2.71 0.00 4.796
565 gctgatcatcgatgctactagcta 195 24 0 45.83 60.834 20.91 7.37 45.92 4.834
566 tagctgatcatcgatgctactagc 193 24 0 45.83 60.834 20.78 20.78 45.61 4.834
567 gctagctgatcatcgatgctacta 191 24 0 45.83 60.834 11.65 8.83 0.00 4.834
568 tagctagctgatcatcgatgctac 189 24 0 45.83 60.834 17.82 12.06 0.00 4.834
569 tagtgatgcatgctagtagtgatg 27 24 0 41.67 59.155 11.56 7.49 0.00 4.845
570 agtgatgcatgctagtagtgatgt 28 24 0 41.67 60.846 11.60 0.00 0.00 4.846
571 tgatgcatgctagtagtgatgta 30 23 0 39.13 58.147 11.60 8.84 0.00 4.853
572 ctgactgatcgatcgatgctagc 114 23 0 52.17 61.878 18.17 12.52 35.21 4.878
573 gctgactgatcgatcgatgctag 113 23 0 52.17 61.878 22.81 19.44 35.21 4.878
574 ctagctgactgatcgatcgatgc 110 23 0 52.17 61.878 24.08 19.43 35.21 4.878
575 gctagctgactgatcgatcgatg 109 23 0 52.17 61.878 23.05 13.21 35.21 4.878
576 tcatcatcgatgctagctagtag 521 23 0 43.48 58.114 2.81 0.00 40.32 4.886
577 tactagctagctgatcatcatcg 507 23 0 43.48 58.114 0.00 0.00 0.00 4.886
578 tcgatcatcatgctagctactag 274 23 0 43.48 58.114 0.00 0.00 37.62 4.886
579 tgatcatcgatgctactagctag 197 23 0 43.48 58.114 20.04 20.04 45.92 4.886
580 ctgatcatcgatgctactagcta 196 23 0 43.48 58.114 10.86 0.00 45.92 4.886
581 tagctgatcatcgatgctactag 193 23 0 43.48 58.114 13.67 9.68 0.00 4.886
582 ctagctgatcatcgatgctacta 192 23 0 43.48 58.114 11.65 8.83 0.00 4.886
583 ctactagctagctgatcatcatcg 506 24 0 45.83 59.110 1.08 0.00 0.00 4.890
584 ctgatcatcgatgctactagctag 196 24 0 45.83 59.110 20.04 20.04 45.92 4.890
585 ctagctgatcatcgatgctactag 192 24 0 45.83 59.110 15.68 15.68 0.00 4.890
586 gctagctagctgatcatcatctag 146 24 0 45.83 59.102 34.38 13.13 44.71 4.898
587 gctagctagctgatcatcatcta 146 23 0 43.48 58.097 34.38 0.00 46.11 4.903
588 ctagtgatgcatgctagtagtg 26 22 0 45.45 57.072 20.00 3.96 0.00 4.928
589 gctactatcatctctgcgcgatc 356 23 0 52.17 61.936 4.99 0.00 0.00 4.936
590 gctgatcgatcgatgtgc 78 18 0 55.56 57.052 29.71 26.38 35.21 4.948
591 tagctagctactatcatcgatcga 428 24 0 41.67 59.031 27.80 22.52 0.00 4.969
592 agctagctgatcgatcgtagcg 562 22 0 54.55 62.971 27.20 18.31 0.00 4.971
593 tgactgatacgcgatgct 474 18 0 50.00 57.028 2.33 0.00 0.00 4.972
594 gatcatcatcgatgctagctag 519 22 0 45.45 57.019 17.46 17.46 40.32 4.981
595 tcatcatcgatgctagctagta 521 22 0 40.91 57.005 22.18 18.77 40.32 4.995
596 tcgatcatcatgctagctacta 274 22 0 40.91 57.005 0.00 0.00 0.00 4.995
597 tgatcatcgatgctactagcta 197 22 0 40.91 57.005 17.14 1.01 45.92 4.995
598 tagctgatcatcgatgctacta 193 22 0 40.91 57.005 12.62 8.42 0.00 4.995
599 tagctagctgactgatacgcgat 466 23 0 47.83 62.044 28.29 0.00 0.00 5.044
600 ctagctagctactatcatcgatcga 427 25 0 44.00 59.949 27.80 22.52 0.00 5.051
601 agctagctgactgatcgatcgat 108 23 0 47.83 62.053 30.53 30.53 37.90 5.053
602 ctactagctagctgactgatacgc 462 24 0 50.00 61.062 3.61 0.00 0.00 5.062
603 gctactagctagctgactgatacg 461 24 0 50.00 61.062 14.37 0.00 44.92 5.062
604 tgatcatcatcgatgctagctagta 518 25 0 40.00 60.062 22.18 18.77 40.32 5.062
605 tgatcgatcatcatgctagctacta 271 25 0 40.00 60.062 27.48 0.00 37.38 5.062
606 ctagtgatgcatgctagtagtgatg 26 25 0 44.00 60.064 20.00 7.49 0.00 5.064
607 gctagctagctactatcatcgatc 426 24 0 45.83 58.932 34.38 4.20 46.11 5.068
608 gctagctactgatcgatgctacat 304 24 0 45.83 61.072 11.21 0.00 0.00 5.072
609 gctagctagctactatcatcgat 426 23 0 43.48 57.922 34.38 0.00 46.11 5.078
610 ctagtgatgcatgctagtagtgat 26 24 0 41.67 58.911 20.00 4.64 0.00 5.089
611 tactatcatctctgcgcgatcga 358 23 0 47.83 62.092 22.07 1.72 38.48 5.092
612 agctgatcgatcgatgctagcta 397 23 0 47.83 62.111 31.26 14.51 40.03 5.111
613 tagctgatcgatcgatgctagct 396 23 0 47.83 62.111 33.22 33.22 42.08 5.111
614 agctagctgatcgatcgatgcta 393 23 0 47.83 62.111 34.11 32.56 36.80 5.111
615 tagctagctgatcgatcgatgct 392 23 0 47.83 62.111 33.87 33.38 38.16 5.111
616 tagtgatgcatgctagtagtgat 27 23 0 39.13 57.886 11.56 0.00 0.00 5.114
617 tactagctagctgatcatcatcgat 507 25 0 40.00 59.828 0.00 0.00 0.00 5.172
618 gctagctagctgatcatcgatgc 187 23 0 52.17 62.193 34.38 9.22 46.11 5.193
619 gctagtgatgcatgctagtagtga 25 24 0 45.83 61.195 24.96 4.57 0.00 5.195
620 aaagcatcggattagctagctgat 1 24 0 41.67 61.209 17.84 15.13 0.00 5.209
621 gtgatgcatgctagtagtgatgtat 29 25 0 40.00 59.774 1.07 1.07 0.00 5.226
622 ctatcatctctgcgcgatcgatg 360 23 0 52.17 62.227 18.01 18.01 38.48 5.227
623 tgactgatacgcgatgctagcta 474 23 0 47.83 62.287 17.69 3.08 0.00 5.287
624 tagctgactgatacgcgatgcta 470 23 0 47.83 62.287 12.64 9.09 0.00 5.287
625 tgctagtagtgatgtatacgtagct 37 25 0 40.00 59.713 9.37 8.73 0.00 5.287
626 tgactgatcgatcgatgctagct 115 23 0 47.83 62.296 20.19 11.59 35.21 5.296
627 agctgactgatcgatcgatgcta 112 23 0 47.83 62.296 26.44 14.64 35.21 5.296
628 tagctgactgatcgatcgatgct 111 23 0 47.83 62.296 31.98 30.27 35.21 5.296
629 ctagctagctactatcatcgatcg 427 24 0 45.83 58.703 12.49 9.87 0.00 5.297
630 tagctagctactatcatcgatcg 428 23 0 43.48 57.691 27.80 9.87 0.00 5.309
631 gactgatcgatcatcatgctagct 268 24 0 45.83 61.313 24.51 7.81 41.77 5.313
632 gctagctgactgatcgatcatcat 261 24 0 45.83 61.313 26.31 20.43 41.77 5.313
633 ctatttagctagctgactgatcga 254 24 0 41.67 58.679 0.00 0.00 0.00 5.321
634 gcatgctagtagtgatgtatacg 34 23 0 43.48 57.659 11.60 0.00 0.00 5.341
635 tatttagctagctgactgatcga 255 23 0 39.13 57.650 0.00 0.00 0.00 5.350
636 ctactagctagctgatcatcatcga 506 25 0 44.00 60.352 1.08 0.00 0.00 5.352
637 agctactatcatctctgcgcgat 355 23 0 47.83 62.360 4.99 2.52 0.00 5.360
638 gctgatcatcatcgatgctagcta 516 24 0 45.83 61.370 20.15 8.49 40.32 5.370
639 tagctgatcatcatcgatgctagc 514 24 0 45.83 61.370 20.04 19.26 40.32 5.370
640 gctagctgatcatcatcgatgcta 512 24 0 45.83 61.370 14.58 9.63 40.32 5.370
641 tagctagctgatcatcatcgatgc 510 24 0 45.83 61.370 21.42 7.40 40.32 5.370
642 atgcatgctagtagtgatgtatacg 32 25 0 40.00 59.604 11.70 0.00 0.00 5.396
643 tgatgcatgctagtagtgatgtat 30 24 0 37.50 58.592 12.66 12.66 0.00 5.408
644 gactgatcgatcgatgctagctag 116 24 0 50.00 61.409 18.04 17.46 35.21 5.409
645 gctatttagctagctgactgatc 253 23 0 43.48 57.572 7.27 0.00 46.11 5.428
646 tgctagtgatgcatgctagtagtg 24 24 0 45.83 61.434 24.96 10.54 35.89 5.434
647 ctagctagctactatcatctctgc 349 24 0 45.83 58.562 27.80 0.00 0.00 5.438
648 gctagctagctactatcatctctg 348 24 0 45.83 58.562 34.38 6.79 46.11 5.438
649 gatcatcatcgatgctagctagta 519 24 0 41.67 58.557 22.18 18.77 40.32 5.443
650 gatcgatcatcatgctagctacta 272 24 0 41.67 58.557 21.11 0.00 0.00 5.443
651 atcatcatcgatgctagctagtag 520 24 0 41.67 58.554 2.13 0.00 40.32 5.446
652 atcgatcatcatgctagctactag 273 24 0 41.67 58.554 0.00 0.00 37.62 5.446
653 tagctagctactatcatctctgc 350 23 0 43.48 57.527 27.80 0.00 0.00 5.473
654 atcatcatcgatgctagctagta 520 23 0 39.13 57.514 22.18 18.77 40.32 5.486
655 atcgatcatcatgctagctacta 273 23 0 39.13 57.514 0.00 0.00 0.00 5.486
656 gatcatcatcgatgctagctagtag 519 25 0 44.00 59.494 0.21 0.00 40.32 5.506
657 gatcgatcatcatgctagctactag 272 25 0 44.00 59.494 21.11 0.00 37.62 5.506
658 actagctagctgatcatcatctact 211 25 0 40.00 59.471 22.43 6.99 0.00 5.529
659 tgactgatcgatcatcatgctagc 267 24 0 45.83 61.547 26.79 14.13 41.77 5.547
660 gctgactgatcgatcatcatgcta 265 24 0 45.83 61.547 27.72 16.42 41.77 5.547
661 tagctgactgatcgatcatcatgc 263 24 0 45.83 61.547 27.74 27.74 41.77 5.547
662 tgctagtagtgatgtatacgtagc 37 24 0 41.67 58.446 4.93 4.93 0.00 5.554
663 ctagctagctgactgatacgcga 465 23 0 52.17 62.571 14.90 0.00 0.00 5.571
664 tagctagctactatcatcgatcgat 428 25 0 40.00 59.423 27.80 25.37 35.13 5.577
665 gctactagctagctgatcatcatct 208 25 0 44.00 60.585 14.37 0.00 44.92 5.585
666 agctgatcatcatctagctagtagc 153 25 0 44.00 60.585 15.25 15.25 40.45 5.585
667 ctagctagctgatcgatcgatgtg 71 24 0 50.00 61.642 11.68 4.94 35.21 5.642
668 agtgatgcatgctagtagtgatgta 28 25 0 40.00 60.646 11.60 8.84 0.00 5.646
669 tagtgatgcatgctagtagtgatgt 27 25 0 40.00 60.646 11.60 0.00 0.00 5.646
670 actatcatctctgcgcgatcgat 359 23 0 47.83 62.652 22.07 11.47 38.48 5.652
671 ctatttagctagctgactgatcg 254 23 0 43.48 57.339 0.00 0.00 0.00 5.661
672 tagctagctgatcgatcgtagcg 561 23 0 52.17 62.677 27.20 18.31 0.00 5.677
673 gcatcggattagctagctgatgc 4 23 0 52.17 62.687 34.10 34.10 41.15 5.687
674 tgcatgctagtagtgatgtatacgt 33 25 0 40.00 60.700 20.79 0.00 0.00 5.700
675 tttagctagctgactgatcgatcat 257 25 0 40.00 60.702 26.67 18.02 36.62 5.702
676 atttagctagctgactgatcgatca 256 25 0 40.00 60.702 26.99 26.99 35.44 5.702
677 gctagctagctactatcatctct 348 23 0 43.48 57.266 34.38 0.00 46.11 5.734
678 aagcatcggattagctagctgatg 2 24 0 45.83 61.794 27.81 27.81 33.28 5.794
679 agtgatgtatacgtagctagtagc 44 24 0 41.67 58.201 15.25 15.25 45.79 5.799
680 gctagtagtgatgtatacgtagct 38 24 0 41.67 58.201 5.92 5.92 0.00 5.799
681 tagctagctgactgatcgatcgat 107 24 0 45.83 61.800 30.53 30.53 37.90 5.800
682 actagctagctgactgatacgcg 464 23 0 52.17 62.816 21.52 3.89 0.00 5.816
683 actagctagctgatcatcatctac 211 24 0 41.67 58.178 22.43 0.00 0.00 5.822
684 tagctgatcgatcgatgctagcta 396 24 0 45.83 61.857 34.98 33.55 41.05 5.857
685 tagctagctgatcgatcgatgcta 392 24 0 45.83 61.857 34.11 32.56 36.80 5.857
686 tatttagctagctgactgatcgat 255 24 0 37.50 58.112 1.68 0.00 0.00 5.888
687 gcatgctagtagtgatgtatacgta 34 25 0 40.00 59.089 11.60 0.00 0.00 5.911
688 tatttagctagctgactgatcgatc 255 25 0 40.00 59.084 19.32 19.32 0.00 5.916
689 ctatttagctagctgactgatcgat 254 25 0 40.00 59.082 0.00 0.00 0.00 5.918
690 ctagctagctactatcatctctgcg 349 25 0 48.00 60.920 27.80 5.75 0.00 5.920
691 tgatcgatcgatgctagctaggc 400 23 0 52.17 62.955 26.44 12.49 35.21 5.955
692 agctagctactgatcgatgctaca 303 24 0 45.83 61.988 17.56 3.03 0.00 5.988
693 tgactgatcgatcgatgctagcta 115 24 0 45.83 62.034 20.19 11.16 35.21 6.034
694 tagctgactgatcgatcgatgcta 111 24 0 45.83 62.034 33.43 30.74 35.21 6.034
695 catgctagtagtgatgtatacgtagc 35 26 0 42.31 59.961 4.93 4.93 0.00 6.039
696 gcatgctagtagtgatgtatacgtag 34 26 0 42.31 59.961 11.60 0.00 0.00 6.039
697 actgatcgatcgatgctagctagt 117 24 0 45.83 62.039 23.29 15.07 35.21 6.039
698 ctatttagctagctgactgatcgatc 254 26 0 42.31 59.960 19.32 19.32 0.00 6.040
699 ttagctagctgactgatcgatcatc 258 25 0 44.00 61.041 28.29 21.92 36.62 6.041
700 atgctagtagtgatgtatacgtagct 36 26 0 38.46 60.068 9.37 8.73 0.00 6.068
701 ctagctagctgatcatcatctact 212 24 0 41.67 57.930 11.68 6.99 0.00 6.070
702 ctactagctagctgatcatcatct 209 24 0 41.67 57.930 1.08 0.00 0.00 6.070
703 agctgatcatcatctagctagtag 153 24 0 41.67 57.930 7.49 3.73 40.45 6.070
704 ctagctgatcatcatctagctagt 151 24 0 41.67 57.930 21.70 5.56 46.15 6.070
705 tagctactatcatctctgcgcgat 354 24 0 45.83 62.096 4.99 2.52 0.00 6.096
706 gactgatcgatcatcatgctagcta 268 25 0 44.00 61.099 24.51 4.57 41.77 6.099
707 ctgatcatcatcgatgctagctagt 517 25 0 44.00 61.101 22.18 3.56 40.32 6.101
708 actagctagctgatcatcatcgatg 508 25 0 44.00 61.101 22.43 20.23 41.48 6.101
709 ctgatcgatcatcatgctagctact 270 25 0 44.00 61.101 26.67 0.00 41.77 6.101
710 atgctagtagtgatgtatacgtagc 36 25 0 40.00 58.855 4.93 4.93 0.00 6.145
711 ctagctagctactgatcgatgctac 301 25 0 48.00 61.145 14.00 7.81 0.00 6.145
712 gctagctagctactatcatctctgc 348 25 0 48.00 61.152 34.38 11.74 46.11 6.152
713 agctagctgatcatcatctactatca 214 26 0 38.46 59.840 17.99 0.00 0.00 6.160
714 ctgatcgatcgatgctagctagtag 118 25 0 48.00 61.197 19.70 5.49 35.21 6.197
715 agctagctgactgatcgatcatca 260 24 0 45.83 62.232 26.49 26.49 39.98 6.232
716 gctagctagctactatcatcgatcg 426 25 0 48.00 61.252 34.38 9.87 46.11 6.252
717 gctatttagctagctgactgatcga 253 25 0 44.00 61.268 7.27 0.00 46.11 6.268
718 ctagctagctactatcatcgatcgat 427 26 0 42.31 60.291 27.80 25.37 35.13 6.291
719 agctgatcatcgatgctactagct 194 24 0 45.83 62.294 24.11 23.60 45.92 6.294
720 agctagctgatcatcgatgctact 190 24 0 45.83 62.294 17.99 10.88 0.00 6.294
721 ctagctagctgactgatcgatcga 106 24 0 50.00 62.312 22.52 22.52 0.00 6.312
722 actgatcgatcatcatgctagctac 269 25 0 44.00 61.328 26.67 0.00 41.77 6.328
723 tgatgcatgctagtagtgatgtatac 30 26 0 38.46 59.623 9.19 6.43 0.00 6.377
724 gtgatgcatgctagtagtgatgtata 29 26 0 38.46 59.623 4.23 0.00 0.00 6.377
725 tactatcatctctgcgcgatcgat 358 24 0 45.83 62.379 22.07 11.47 38.48 6.379
726 gctagctgatcatcatctactatca 215 25 0 40.00 58.607 8.21 0.00 0.00 6.393
727 gctactagctagctgatcatcatcta 208 26 0 42.31 60.404 14.37 0.00 44.92 6.404
728 tagctgatcatcatctagctagtagc 152 26 0 42.31 60.404 15.25 15.25 41.48 6.404
729 tgctagtagtgatgtatacgtagcta 37 26 0 38.46 59.564 10.00 8.05 0.00 6.436
730 gatgcatgctagtagtgatgtatacg 31 26 0 42.31 60.453 7.40 0.00 0.00 6.453
731 tagtgatgcatgctagtagtgatgta 27 26 0 38.46 60.461 11.60 8.84 0.00 6.461
732 gctagtgatgcatgctagtagtgat 25 25 0 44.00 61.506 24.96 8.51 0.00 6.506
733 tgcatgctagtagtgatgtatacgta 33 26 0 38.46 60.515 20.79 0.00 0.00 6.515
734 tatttagctagctgactgatcgatca 255 26 0 38.46 60.516 26.99 26.99 35.44 6.516
735 tgatgcatgctagtagtgatgtata 30 25 0 36.00 58.479 4.13 0.00 0.00 6.521
736 tactagctagctgactgatacgcg 463 24 0 50.00 62.538 13.17 3.89 0.00 6.538
737 ctagctactatcatctctgcgcga 353 24 0 50.00 62.603 2.71 2.71 0.00 6.603
738 agctagctgatcatcatctactatc 214 25 0 40.00 58.369 17.99 0.00 0.00 6.631
739 agctagctgatcatcatctactat 214 24 0 37.50 57.345 17.99 0.00 0.00 6.655
740 gctactagctagctgatcatcatcg 505 25 0 48.00 61.656 14.37 0.00 44.92 6.656
741 gctgatcatcgatgctactagctag 195 25 0 48.00 61.656 20.91 20.04 45.92 6.656
742 ctagctgatcatcgatgctactagc 192 25 0 48.00 61.656 20.78 20.78 45.61 6.656
743 gctagctgatcatcgatgctactag 191 25 0 48.00 61.656 20.13 20.13 0.00 6.656
744 ctagctagctgatcatcgatgctac 188 25 0 48.00 61.656 17.82 12.06 0.00 6.656
745 actagctagctgatcatcatctacta 211 26 0 38.46 59.328 22.43 8.11 0.00 6.672
746 tactagctagctgatcatcatctact 210 26 0 38.46 59.328 6.99 6.99 0.00 6.672
747 ctactagctagctgatcatcatcgat 506 26 0 42.31 60.681 1.08 0.00 0.00 6.681
748 tagctagctactgatcgatgctaca 302 25 0 44.00 61.746 27.80 5.02 0.00 6.746
749 gtagtgatgtatacgtagctagtagc 42 26 0 42.31 59.249 15.25 15.25 45.79 6.751
750 actgatcgatcgatgctagctagta 117 25 0 44.00 61.797 23.29 18.77 35.21 6.797
751 gatgcatgctagtagtgatgtatac 31 25 0 40.00 58.175 20.79 1.70 0.00 6.825
752 agctgatcatcatcgatgctagct 515 24 0 45.83 62.835 23.00 22.41 41.74 6.835
753 agctagctgatcatcatcgatgct 511 24 0 45.83 62.835 17.99 8.34 40.32 6.835
754 ctagctagctgactgatacgcgat 465 24 0 50.00 62.838 14.90 0.00 0.00 6.838
755 atgcatgctagtagtgatgtatac 32 24 0 37.50 57.161 11.70 0.53 0.00 6.839
756 agctagctactatcatctctgcgc 351 24 0 50.00 62.858 17.56 0.00 0.00 6.858
757 gctagctagctactgatcgatgct 300 24 0 50.00 62.858 34.38 11.51 46.11 6.858
758 ctactatcatctctgcgcgatcga 357 24 0 50.00 62.878 22.07 1.72 38.48 6.878
759 gctagctactgatcgatgctacatc 304 25 0 48.00 61.879 11.21 4.40 37.97 6.879
760 tagtgatgtatacgtagctagtagc 43 25 0 40.00 58.104 15.25 15.25 45.79 6.896
761 gctagtagtgatgtatacgtagcta 38 25 0 40.00 58.104 7.24 5.34 0.00 6.896
762 tgatcatcatcgatgctagctagtag 518 26 0 42.31 60.902 14.93 0.00 40.32 6.902
763 ctgatcatcatcgatgctagctagta 517 26 0 42.31 60.902 22.18 18.77 40.32 6.902
764 tactagctagctgatcatcatcgatg 507 26 0 42.31 60.902 20.23 20.23 41.48 6.902
765 tgatcgatcatcatgctagctactag 271 26 0 42.31 60.902 27.48 0.00 37.38 6.902
766 ctgatcgatcatcatgctagctacta 270 26 0 42.31 60.902 26.67 1.37 41.77 6.902
767 agctgatcgatcgatgctagctag 397 24 0 50.00 62.904 31.26 19.90 40.03 6.904
768 ctagctgatcgatcgatgctagct 395 24 0 50.00 62.904 35.51 33.22 43.05 6.904
769 agctagctgatcgatcgatgctag 393 24 0 50.00 62.904 41.07 41.07 46.89 6.904
770 ctagctagctgatcgatcgatgct 391 24 0 50.00 62.904 33.87 33.38 38.16 6.904
771 tactagctagctgatcatcatctac 210 25 0 40.00 58.081 0.00 0.00 0.00 6.919
772 gctagctgatcatcatctactatc 215 24 0 41.67 57.062 8.21 0.00 0.00 6.938
773 agtgatgcatgctagtagtgatgtat 28 26 0 38.46 60.969 1.07 1.07 0.00 6.969
774 gctagtagtgatgtatacgtagctag 38 26 0 42.31 59.027 8.99 8.99 0.00 6.973
775 tagctagctgactgatcgatcatca 259 25 0 44.00 61.981 28.29 26.49 39.98 6.981
776 ctactagctagctgatcatcatctac 209 26 0 42.31 59.015 1.08 0.00 0.00 6.985
777 agtagtgatgtatacgtagctagt 41 24 0 37.50 57.012 8.68 8.68 0.00 6.988
778 gctagctgatcatcatctactatcat 215 26 0 38.46 59.001 8.21 0.00 0.00 6.999
779 agctgatcatcatctactatcatca 218 25 0 36.00 57.993 0.00 0.00 0.00 7.007
780 atgcatgctagtagtgatgtatacgt 32 26 0 38.46 61.018 11.70 0.00 0.00 7.018
781 atttagctagctgactgatcgatcat 256 26 0 38.46 61.022 26.67 18.02 36.62 7.022
782 agctgatcatcgatgctactagcta 194 25 0 44.00 62.040 24.59 9.79 45.92 7.040
783 tagctgatcatcgatgctactagct 193 25 0 44.00 62.040 27.00 27.00 45.92 7.040
784 agctagctgatcatcgatgctacta 190 25 0 44.00 62.040 17.99 11.59 0.00 7.040
785 tagctagctgatcatcgatgctact 189 25 0 44.00 62.040 17.55 15.53 0.00 7.040
786 atgctagtagtgatgtatacgtagcta 36 27 0 37.04 59.911 10.00 8.05 0.00 7.089
787 gctagctgatcatcatctactatcatc 215 27 0 40.74 59.861 8.21 0.00 0.00 7.139
788 ctagctagctgatcatcatctacta 212 25 0 40.00 57.842 11.68 8.11 0.00 7.158
789 ctactagctagctgatcatcatcta 209 25 0 40.00 57.842 1.08 0.00 0.00 7.158
790 tagctgatcatcatctagctagtag 152 25 0 40.00 57.842 13.40 3.73 41.48 7.158
791 ctagctgatcatcatctagctagta 151 25 0 40.00 57.842 21.70 7.13 46.15 7.158
792 gctgatcatcatcgatgctagctag 516 25 0 48.00 62.165 20.15 17.46 40.32 7.165
793 ctagctgatcatcatcgatgctagc 513 25 0 48.00 62.165 19.27 19.26 41.96 7.165
794 gctagctgatcatcatcgatgctag 512 25 0 48.00 62.165 23.70 23.70 45.51 7.165
795 ctagctagctgatcatcatcgatgc 509 25 0 48.00 62.165 21.42 7.40 40.32 7.165
796 agctagctgatcatcatctactatcat 214 27 0 37.04 60.181 17.99 0.00 0.00 7.181
797 ctactagctagctgatcatcatctact 209 27 0 40.74 60.181 6.99 6.99 0.00 7.181
798 ctagctgatcatcatctagctagtag 151 26 0 42.31 58.789 21.70 10.73 46.15 7.211
799 aaagcatcggattagctagctgatg 1 25 0 44.00 62.249 27.81 27.81 33.28 7.249
800 agctagctactgatcgatgctacat 303 25 0 44.00 62.272 17.56 6.16 0.00 7.272
801 tagctagctgatcatcatctactatca 213 27 0 37.04 59.689 8.31 0.00 0.00 7.311
802 actagctagctgatcatcatctactat 211 27 0 37.04 59.688 22.43 2.36 0.00 7.312
803 ctgactgatcgatcatcatgctagc 266 25 0 48.00 62.333 20.99 8.86 41.77 7.333
804 gctgactgatcgatcatcatgctag 265 25 0 48.00 62.333 27.72 21.73 41.77 7.333
805 ctagctgactgatcgatcatcatgc 262 25 0 48.00 62.333 27.74 27.74 41.77 7.333
806 gctagctgactgatcgatcatcatg 261 25 0 48.00 62.333 22.70 19.51 41.77 7.333
807 tgctagtagtgatgtatacgtagctag 37 27 0 40.74 60.395 8.99 8.99 0.00 7.395
808 agtagtgatgtatacgtagctagtagc 41 27 0 40.74 60.395 15.25 15.25 45.79 7.395
809 gctagtagtgatgtatacgtagctagt 38 27 0 40.74 60.395 15.55 15.55 0.00 7.395
810 ctagtgatgcatgctagtagtgatgt 26 26 0 42.31 61.460 20.00 0.00 0.00 7.460
811 gctgatcatcatctactatcatcatca 219 27 0 37.04 59.533 0.00 0.00 0.00 7.467
812 agctagctgactgatcgatcatcat 260 25 0 44.00 62.507 26.31 20.43 41.77 7.507
813 tttagctagctgactgatcgatcatc 257 26 0 42.31 61.507 23.93 21.92 36.62 7.507
814 catgctagtagtgatgtatacgtag 35 25 0 40.00 57.441 4.74 0.00 0.00 7.559
815 agctgatcatcatcgatgctagcta 515 25 0 44.00 62.561 23.50 10.90 43.19 7.561
816 tagctgatcatcatcgatgctagct 514 25 0 44.00 62.561 26.21 26.21 44.79 7.561
817 agctagctgatcatcatcgatgcta 511 25 0 44.00 62.561 17.99 9.63 40.32 7.561
818 tagctagctgatcatcatcgatgct 510 25 0 44.00 62.561 14.14 10.38 40.32 7.561
819 gctatttagctagctgactgatcgat 253 26 0 42.31 61.564 7.27 0.00 46.11 7.564
820 ctagctagctgactgatcgatcgat 106 25 0 48.00 62.579 30.53 30.53 37.90 7.579
821 agctgatcatcatctactatcatcat 218 26 0 34.62 58.415 0.00 0.00 0.00 7.585
822 tagctagctactatcatctctgcgc 350 25 0 48.00 62.587 27.80 0.00 0.00 7.587
823 gctagctagctactgatcgatgcta 300 25 0 48.00 62.587 34.38 12.23 46.11 7.587
824 tgctagtgatgcatgctagtagtga 24 25 0 44.00 62.622 24.96 13.57 35.89 7.622
825 tagctgatcgatcgatgctagctag 396 25 0 48.00 62.632 33.71 21.46 41.05 7.632
826 ctagctgatcgatcgatgctagcta 395 25 0 48.00 62.632 35.51 32.61 43.05 7.632
827 tagctagctgatcgatcgatgctag 392 25 0 48.00 62.632 41.07 41.07 46.89 7.632
828 ctagctagctgatcgatcgatgcta 391 25 0 48.00 62.632 34.11 32.56 36.80 7.632
829 gtgatgcatgctagtagtgatgtatac 29 27 0 40.74 60.659 9.56 7.17 0.00 7.659
830 agctgatcatcatctactatcatcatc 218 27 0 37.04 59.314 0.00 0.00 0.00 7.686
831 tagctagctgatcatcatctactat 213 25 0 36.00 57.279 8.31 0.00 0.00 7.721
832 tagctagctgatcatcatctactatc 213 26 0 38.46 58.269 8.31 0.00 0.00 7.731
833 tgactgatcgatcatcatgctagct 267 25 0 44.00 62.733 26.79 10.55 41.77 7.733
834 agctgactgatcgatcatcatgcta 264 25 0 44.00 62.733 30.60 18.10 41.77 7.733
835 tagctgactgatcgatcatcatgct 263 25 0 44.00 62.733 32.31 32.31 41.77 7.733
836 ctagctagctgatcatcatctactat 212 26 0 38.46 58.265 9.41 0.00 0.00 7.735
837 agtgatgcatgctagtagtgatgtata 28 27 0 37.04 60.779 4.23 0.00 0.00 7.779
838 tagtgatgcatgctagtagtgatgtat 27 27 0 37.04 60.779 11.56 0.00 0.00 7.779
839 tgactgatcgatcgatgctagctag 115 25 0 48.00 62.800 20.19 17.46 35.21 7.800
840 ctgactgatcgatcgatgctagcta 114 25 0 48.00 62.800 20.19 11.97 35.21 7.800
841 tagctgactgatcgatcgatgctag 111 25 0 48.00 62.800 31.45 26.34 35.21 7.800
842 ctagctgactgatcgatcgatgcta 110 25 0 48.00 62.800 31.54 29.68 35.21 7.800
843 tagctagctgactgatcgatcgatg 107 25 0 48.00 62.800 28.29 13.21 35.21 7.800
844 gactgatcgatcgatgctagctagt 116 25 0 48.00 62.802 22.18 12.64 35.21 7.802
845 tactagctagctgatcatcatctacta 210 27 0 37.04 59.196 8.79 8.11 0.00 7.804
846 tagctgatcatcgatgctactagcta 193 26 0 42.31 61.805 28.86 27.39 45.92 7.805
847 tagctagctgatcatcgatgctacta 189 26 0 42.31 61.805 18.93 16.03 0.00 7.805
848 atgcatgctagtagtgatgtatacgta 32 27 0 37.04 60.828 11.70 0.00 0.00 7.828
849 tatttagctagctgactgatcgatcat 255 27 0 37.04 60.831 26.67 18.02 36.62 7.831
850 ctagctagctgatcatcatctactatc 212 27 0 40.74 59.162 9.41 0.06 0.00 7.838
851 tagctactatcatctctgcgcgatc 354 25 0 48.00 62.854 0.00 0.00 0.00 7.854
852 gctgatcatcatctactatcatcat 219 25 0 36.00 57.142 0.00 0.00 0.00 7.858
853 ctagctactatcatctctgcgcgat 353 25 0 48.00 62.859 4.99 2.52 0.00 7.859
854 gctgatcatcatctactatcatcatc 219 26 0 38.46 58.126 0.00 0.00 0.00 7.874
855 tagctagctactgatcgatgctacat 302 26 0 42.31 62.028 27.80 3.08 0.00 8.028
856 agtagtgatgtatacgtagctagtag 41 26 0 38.46 57.950 9.92 1.30 0.00 8.050
857 ctagtagtgatgtatacgtagctagt 39 26 0 38.46 57.950 15.52 15.52 0.00 8.050
858 catgctagtagtgatgtatacgtagct 35 27 0 40.74 61.089 9.37 8.73 0.00 8.089
859 gactgatcgatcatcatgctagctac 268 26 0 46.15 62.094 24.51 8.36 41.77 8.094
860 tagctgatcatcatctactatcatca 217 26 0 34.62 57.906 0.00 0.00 0.00 8.094
861 ctagctgatcatcatctactatcatca 216 27 0 37.04 58.826 0.00 0.00 0.00 8.174
862 ctagctgatcatcatctagctagtagc 151 27 0 44.44 61.196 21.70 15.25 46.15 8.196
863 tagctagctgactgatcgatcatcat 259 26 0 42.31 62.255 28.29 20.43 41.77 8.255
864 ctagtgatgcatgctagtagtgatgta 26 27 0 40.74 61.255 20.00 8.84 0.00 8.255
865 tgcatgctagtagtgatgtatacgtag 33 27 0 40.74 61.300 20.79 0.00 0.00 8.300
866 ctatttagctagctgactgatcgatca 254 27 0 40.74 61.304 26.99 26.99 35.44 8.304
867 tagctgatcatcatcgatgctagcta 514 26 0 42.31 62.307 28.23 26.63 43.19 8.307
868 tagctagctgatcatcatcgatgcta 510 26 0 42.31 62.307 14.58 11.03 40.32 8.307
869 gctagctagctactatcatcgatcga 426 26 0 46.15 62.381 34.38 22.52 46.11 8.381
870 gctactagctagctgatcatcatctac 208 27 0 44.44 61.407 14.37 0.00 44.92 8.407
871 ttagctagctgactgatcgatcatca 258 26 0 42.31 62.416 28.29 26.49 39.98 8.416
872 tgactgatcgatcatcatgctagcta 267 26 0 42.31 62.472 26.79 11.24 41.77 8.472
873 tagctgactgatcgatcatcatgcta 263 26 0 42.31 62.472 33.83 32.61 41.77 8.472
874 actgatcgatcatcatgctagctact 269 26 0 42.31 62.478 26.67 0.00 41.77 8.478
875 gctagtgatgcatgctagtagtgatg 25 26 0 46.15 62.484 24.96 9.07 0.00 8.484
876 ctagctagctactgatcgatgctaca 301 26 0 46.15 62.503 14.00 5.87 0.00 8.503
877 gactgatcgatcgatgctagctagta 116 26 0 46.15 62.543 22.18 18.77 35.21 8.543
878 actgatcgatcgatgctagctagtag 117 26 0 46.15 62.548 23.29 12.42 35.21 8.548
879 ctagctgatcatcatctactatcatc 216 26 0 38.46 57.395 0.00 0.00 0.00 8.605
880 ctgatcatcatcgatgctagctagtag 517 27 0 44.44 61.665 10.30 1.36 40.32 8.665
881 ctactagctagctgatcatcatcgatg 506 27 0 44.44 61.665 20.23 20.23 41.48 8.665
882 ctgatcgatcatcatgctagctactag 270 27 0 44.44 61.665 26.67 8.14 41.77 8.665
883 tagctgatcatcatctactatcatcat 217 27 0 33.33 58.315 0.00 0.00 0.00 8.685
884 tgatgcatgctagtagtgatgtatacg 30 27 0 40.74 61.778 9.81 0.00 0.00 8.778
885 gatgcatgctagtagtgatgtatacgt 31 27 0 40.74 61.779 7.40 0.00 0.00 8.779
886 gctactagctagctgatcatcatcga 505 26 0 46.15 62.779 14.37 0.00 44.92 8.779
887 agctgatcatcgatgctactagctag 194 26 0 46.15 62.784 24.59 20.04 45.92 8.784
888 ctagctgatcatcgatgctactagct 192 26 0 46.15 62.784 27.00 27.00 45.92 8.784
889 agctagctgatcatcgatgctactag 190 26 0 46.15 62.784 20.13 20.13 0.00 8.784
890 ctagctagctgatcatcgatgctact 188 26 0 46.15 62.784 17.55 15.53 0.00 8.784
891 atttagctagctgactgatcgatcatc 256 27 0 40.74 61.785 23.93 21.92 36.62 8.785
892 tctactatcatcatcatctactagct 230 26 0 34.62 57.155 0.00 0.00 0.00 8.845
893 tgctagtgatgcatgctagtagtgat 24 26 0 42.31 62.874 24.96 8.51 35.89 8.874
894 ctgatcatcatctactatcatcatca 220 26 0 34.62 57.026 0.00 0.00 0.00 8.974
895 agctagctactgatcgatgctacatc 303 26 0 46.15 62.999 17.56 7.89 37.97 8.999
896 tagtagtgatgtatacgtagctagtag 40 27 0 37.04 57.869 16.78 1.30 0.00 9.131
897 ctagtagtgatgtatacgtagctagta 39 27 0 37.04 57.869 16.85 15.97 0.00 9.131
898 actgatcgatcatcatgctagctacta 269 27 0 40.74 62.236 26.67 1.37 41.77 9.236
899 gcatgctagtagtgatgtatacgtagc 34 27 0 44.44 62.283 11.60 4.93 0.00 9.283
900 gctatttagctagctgactgatcgatc 253 27 0 44.44 62.291 19.32 19.32 46.11 9.291
901 atctactatcatcatcatctactagct 229 27 0 33.33 57.592 0.00 0.00 0.00 9.408
902 catctactatcatcatcatctactagc 228 27 0 37.04 57.549 0.00 0.00 0.00 9.451
903 tgatcatcatctactatcatcatcatc 221 27 0 33.33 57.467 0.00 0.00 0.00 9.533
904 tagctgatcatcgatgctactagctag 193 27 0 44.44 62.534 27.70 20.04 45.92 9.534
905 ctagctgatcatcgatgctactagcta 192 27 0 44.44 62.534 27.76 26.73 45.92 9.534
906 tagctagctgatcatcgatgctactag 189 27 0 44.44 62.534 20.13 20.13 0.00 9.534
907 ctagctagctgatcatcgatgctacta 188 27 0 44.44 62.534 17.74 15.95 0.00 9.534
908 ctgatcatcatctactatcatcatcat 220 27 0 33.33 57.462 0.00 0.00 0.00 9.538
909 gctagctagctactatcatcgatcgat 426 27 0 44.44 62.627 34.38 25.37 46.11 9.627
910 ttagctagctgactgatcgatcatcat 258 27 0 40.74 62.665 28.29 20.43 41.77 9.665
911 tagctagctactgatcgatgctacatc 302 27 0 44.44 62.742 27.80 7.89 37.97 9.742
912 ctagctagctactgatcgatgctacat 301 27 0 44.44 62.747 14.00 2.51 0.00 9.747
913 gatcatcatctactatcatcatcatct 222 27 0 33.33 57.242 0.00 0.00 0.00 9.758
914 tttagctagctgactgatcgatcatca 257 27 0 40.74 62.820 26.49 26.49 39.98 9.820
915 tctactatcatcatcatctactagcta 230 27 0 33.33 57.100 0.00 0.00 0.00 9.900

File diff suppressed because it is too large Load Diff

1157
samples/Go/api.pb.go Normal file

File diff suppressed because it is too large Load Diff

114
samples/Haskell/HsColour.hs Normal file
View File

@@ -0,0 +1,114 @@
-- | This is a library which colourises Haskell code.
-- It currently has six output formats:
--
-- * ANSI terminal codes
--
-- * LaTeX macros
--
-- * HTML 3.2 with font tags
--
-- * HTML 4.01 with external CSS.
--
-- * XHTML 1.0 with internal CSS.
--
-- * mIRC chat client colour codes.
--
module Language.Haskell.HsColour (Output(..), ColourPrefs(..),
hscolour) where
import Language.Haskell.HsColour.Colourise (ColourPrefs(..))
import qualified Language.Haskell.HsColour.TTY as TTY
import qualified Language.Haskell.HsColour.HTML as HTML
import qualified Language.Haskell.HsColour.CSS as CSS
import qualified Language.Haskell.HsColour.ACSS as ACSS
import qualified Language.Haskell.HsColour.InlineCSS as ICSS
import qualified Language.Haskell.HsColour.LaTeX as LaTeX
import qualified Language.Haskell.HsColour.MIRC as MIRC
import Data.List(mapAccumL, isPrefixOf)
import Data.Maybe
import Language.Haskell.HsColour.Output
--import Debug.Trace
-- | Colourise Haskell source code with the given output format.
hscolour :: Output -- ^ Output format.
-> ColourPrefs -- ^ Colour preferences (for formats that support them).
-> Bool -- ^ Whether to include anchors.
-> Bool -- ^ Whether output document is partial or complete.
-> String -- ^ Title for output.
-> Bool -- ^ Whether input document is literate haskell or not
-> String -- ^ Haskell source code.
-> String -- ^ Coloured Haskell source code.
hscolour output pref anchor partial title False =
(if partial then id else top'n'tail output title) .
hscolour' output pref anchor
hscolour output pref anchor partial title True =
(if partial then id else top'n'tail output title) .
concatMap chunk . joinL . classify . inlines
where
chunk (Code c) = hscolour' output pref anchor c
chunk (Lit c) = c
-- | The actual colourising worker, despatched on the chosen output format.
hscolour' :: Output -- ^ Output format.
-> ColourPrefs -- ^ Colour preferences (for formats that support them)
-> Bool -- ^ Whether to include anchors.
-> String -- ^ Haskell source code.
-> String -- ^ Coloured Haskell source code.
hscolour' TTY pref _ = TTY.hscolour pref
hscolour' (TTYg tt) pref _ = TTY.hscolourG tt pref
hscolour' MIRC pref _ = MIRC.hscolour pref
hscolour' LaTeX pref _ = LaTeX.hscolour pref
hscolour' HTML pref anchor = HTML.hscolour pref anchor
hscolour' CSS _ anchor = CSS.hscolour anchor
hscolour' ICSS pref anchor = ICSS.hscolour pref anchor
hscolour' ACSS _ anchor = ACSS.hscolour anchor
-- | Choose the right headers\/footers, depending on the output format.
top'n'tail :: Output -- ^ Output format
-> String -- ^ Title for output
-> (String->String) -- ^ Output transformer
top'n'tail TTY _ = id
top'n'tail (TTYg _) _ = id
top'n'tail MIRC _ = id
top'n'tail LaTeX title = LaTeX.top'n'tail title
top'n'tail HTML title = HTML.top'n'tail title
top'n'tail CSS title = CSS.top'n'tail title
top'n'tail ICSS title = ICSS.top'n'tail title
top'n'tail ACSS title = CSS.top'n'tail title
-- | Separating literate files into code\/comment chunks.
data Lit = Code {unL :: String} | Lit {unL :: String} deriving (Show)
-- Re-implementation of 'lines', for better efficiency (but decreased laziness).
-- Also, importantly, accepts non-standard DOS and Mac line ending characters.
-- And retains the trailing '\n' character in each resultant string.
inlines :: String -> [String]
inlines s = lines' s id
where
lines' [] acc = [acc []]
lines' ('\^M':'\n':s) acc = acc ['\n'] : lines' s id -- DOS
--lines' ('\^M':s) acc = acc ['\n'] : lines' s id -- MacOS
lines' ('\n':s) acc = acc ['\n'] : lines' s id -- Unix
lines' (c:s) acc = lines' s (acc . (c:))
-- | The code for classify is largely stolen from Language.Preprocessor.Unlit.
classify :: [String] -> [Lit]
classify [] = []
classify (x:xs) | "\\begin{code}"`isPrefixOf`x
= Lit x: allProg xs
where allProg [] = [] -- Should give an error message,
-- but I have no good position information.
allProg (x:xs) | "\\end{code}"`isPrefixOf`x
= Lit x: classify xs
allProg (x:xs) = Code x: allProg xs
classify (('>':x):xs) = Code ('>':x) : classify xs
classify (x:xs) = Lit x: classify xs
-- | Join up chunks of code\/comment that are next to each other.
joinL :: [Lit] -> [Lit]
joinL [] = []
joinL (Code c:Code c2:xs) = joinL (Code (c++c2):xs)
joinL (Lit c :Lit c2 :xs) = joinL (Lit (c++c2):xs)
joinL (any:xs) = any: joinL xs

View File

@@ -0,0 +1,71 @@
update=Sun 15 Feb 2015 01:10:10 PM EST
last_client=eeschema
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=
UseCmpFile=1
PadDrill=0.6
PadDrillOvalY=0.6
PadSizeH=1.5
PadSizeV=1.5
PcbTextSizeV=1.5
PcbTextSizeH=1.5
PcbTextThickness=0.3
ModuleTextSizeV=1
ModuleTextSizeH=1
ModuleTextSizeThickness=0.15
SolderMaskClearance=0
SolderMaskMinWidth=0
DrawSegmentWidth=0.2
BoardOutlineThickness=0.09999999999999999
ModuleOutlineThickness=0.15
[pcbnew/libraries]
LibDir=
[general]
version=1
[eeschema]
version=1
PageLayoutDescrFile=
SubpartIdSeparator=0
SubpartFirstId=65
LibDir=/home/hschmale/KiCad/LibMods-3rdParty
NetFmtName=
RptD_X=0
RptD_Y=100
RptLab=1
LabSize=60
[eeschema/libraries]
LibName1=power
LibName2=device
LibName3=transistors
LibName4=conn
LibName5=linear
LibName6=regul
LibName7=74xx
LibName8=cmos4000
LibName9=adc-dac
LibName10=memory
LibName11=xilinx
LibName12=special
LibName13=microcontrollers
LibName14=dsp
LibName15=microchip
LibName16=analog_switches
LibName17=motorola
LibName18=texas
LibName19=intel
LibName20=audio
LibName21=interface
LibName22=digital-audio
LibName23=philips
LibName24=display
LibName25=cypress
LibName26=siliconi
LibName27=opto
LibName28=atmel
LibName29=contrib
LibName30=valves
LibName31=arduino_shieldsNCL
LibName32=con-usb-2
LibName33=2axispotwselect

742
samples/JFlex/LexScan.flex Normal file
View File

@@ -0,0 +1,742 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* JFlex 1.7.0-SNAPSHOT *
* Copyright (C) 1998-2015 Gerwin Klein <lsf@jflex.de> *
* All rights reserved. *
* *
* License: BSD *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package jflex;
import java_cup.runtime.Symbol;
import java.io.*;
import java.util.Stack;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import jflex.unicode.UnicodeProperties;
%%
%final
%public
%class LexScan
%implements sym, java_cup.runtime.Scanner
%function next_token
%type Symbol
%unicode
%column
%line
%eofclose
%state COMMENT, STATELIST, MACROS, REGEXPSTART
%state REGEXP, JAVA_CODE, STATES, STRING_CONTENT
%state CHARCLASS, COPY, REPEATEXP, EATWSPNL
%state CTOR_ARG, REGEXP_CODEPOINT_SEQUENCE
%state STRING_CODEPOINT_SEQUENCE, CHARCLASS_CODEPOINT
%inputstreamctor false
%cupdebug
%{
int balance = 0;
int commentbalance = 0;
int action_line = 0;
int bufferSize = 16384;
File file;
Stack<File> files = new Stack<File>();
StringBuilder userCode = new StringBuilder();
String classCode;
String initCode;
String initThrow;
String eofCode;
String eofThrow;
String lexThrow;
String eofVal;
String scanErrorException;
String cupSymbol = "sym";
StringBuilder actionText = new StringBuilder();
StringBuilder string = new StringBuilder();
private UnicodeProperties unicodeProperties;
boolean charCount;
boolean lineCount;
boolean columnCount;
boolean cupCompatible;
boolean cup2Compatible;
boolean cupDebug;
boolean isInteger;
boolean isIntWrap;
boolean isYYEOF;
boolean notUnix;
boolean isPublic;
boolean isFinal;
boolean isAbstract;
boolean bolUsed;
boolean standalone;
boolean debugOption;
boolean caseless;
boolean inclusive_states;
boolean eofclose;
boolean isASCII;
// TODO: In the version of JFlex after 1.6, the InputStream ctor
// TODO: will never be emitted, and this option will cease to exist.
boolean emitInputStreamCtor = Options.emitInputStreamCtor;
String isImplementing;
String isExtending;
String className = "Yylex";
String functionName;
String tokenType;
String visibility = "public";
List<String> ctorArgs = new ArrayList<String>();
List<String> ctorTypes = new ArrayList<String>();
LexicalStates states = new LexicalStates();
List<Action> actions = new ArrayList<Action>();
private int nextState;
boolean macroDefinition;
Timer t = new Timer();
// CharClasses.init() is delayed until UnicodeProperties.init() has been called,
// since the max char code won't be known until then.
private CharClasses charClasses = new CharClasses();
public CharClasses getCharClasses() {
return charClasses;
}
public int currentLine() {
return yyline;
}
public void setFile(File file) {
this.file = file;
}
private Symbol symbol(int type, Object value) {
return new Symbol(type, yyline, yycolumn, value);
}
private Symbol symbol(int type) {
return new Symbol(type, yyline, yycolumn);
}
// updates line and column count to the beginning of the first
// non whitespace character in yytext, but leaves yyline+yycolumn
// untouched
private Symbol symbol_countUpdate(int type, Object value) {
int lc = yyline;
int cc = yycolumn;
String text = yytext();
for (int i=0; i < text.length(); i++) {
char c = text.charAt(i);
if (c != '\n' && c != '\r' && c != ' ' && c != '\t' )
return new Symbol(type, lc, cc, value);
if (c == '\n') {
lc++;
cc = 0;
}
else
cc++;
}
return new Symbol(type, yyline, yycolumn, value);
}
private String makeMacroIdent() {
String matched = yytext().trim();
return matched.substring(1, matched.length()-1).trim();
}
public static String conc(Object a, Object b) {
if (a == null && b == null) return null;
if (a == null) return b.toString();
if (b == null) return a.toString();
return a.toString()+b.toString();
}
public static String concExc(Object a, Object b) {
if (a == null && b == null) return null;
if (a == null) return b.toString();
if (b == null) return a.toString();
return a.toString()+", "+b.toString();
}
public UnicodeProperties getUnicodeProperties() {
return unicodeProperties;
}
private void populateDefaultVersionUnicodeProperties() {
try {
unicodeProperties = new UnicodeProperties();
} catch (UnicodeProperties.UnsupportedUnicodeVersionException e) {
throw new ScannerException
(file, ErrorMessages.UNSUPPORTED_UNICODE_VERSION, yyline);
}
charClasses.init
(Options.jlex ? 127 : unicodeProperties.getMaximumCodePoint(), this);
}
private void includeFile(String filePath) {
File f = new File(file.getParentFile(), filePath);
if ( !f.canRead() )
throw new ScannerException(file,ErrorMessages.NOT_READABLE, yyline);
// check for cycle
if (files.search(f) > 0)
throw new ScannerException(file,ErrorMessages.FILE_CYCLE, yyline);
try {
yypushStream( new FileReader(f) );
files.push(file);
file = f;
Out.println("Including \""+file+"\"");
}
catch (FileNotFoundException e) {
throw new ScannerException(file,ErrorMessages.NOT_READABLE, yyline);
}
}
%}
%init{
states.insert("YYINITIAL", true);
%init}
Digit = [0-9]
HexDigit = [0-9a-fA-F]
OctDigit = [0-7]
Number = {Digit}+
HexNumber = \\ x {HexDigit} {2}
OctNumber = \\ [0-3]? {OctDigit} {1, 2}
// Unicode4 can encode chars only in the BMP with the 16 bits provided by its
// 4 hex digits.
Unicode4 = \\ u {HexDigit} {4}
// Unicode6 can encode all Unicode chars, both in the BMP and in the
// supplementary planes -- only 21 bits are required as of Unicode 5.0,
// but its six hex digits provide 24 bits.
Unicode6 = \\ U {HexDigit} {6}
// see http://www.unicode.org/unicode/reports/tr18/
WSP = [ \t\b]
WSPNL = [\u2028\u2029\u000A\u000B\u000C\u000D\u0085\t\b\ ]
NWSPNL = [^\u2028\u2029\u000A\u000B\u000C\u000D\u0085\t\b\ ]
NL = [\u2028\u2029\u000A\u000B\u000C\u000D\u0085] | \u000D\u000A
NNL = [^\u2028\u2029\u000A\u000B\u000C\u000D\u0085]
Ident = {IdentStart} {IdentPart}*
QualIdent = {Ident} ( {WSP}* "." {WSP}* {Ident} )*
QUIL = {QualIdent} ( {WSP}* "," {WSP}* {QualIdent} )*
Array = "[" {WSP}* "]"
ParamPart = {IdentStart}|{IdentPart}|"<"|">"|","|{WSP}|"&"|"?"|"."
GenParam = "<" {ParamPart}+ ">"
ClassT = {Ident} ({WSP}* {GenParam})?
QClassT = {QualIdent} ({WSP}* {GenParam})?
ArrType = ({GenParam} {WSP}*)? {QClassT} ({WSP}* {Array})*
IdentStart = [:jletter:]
IdentPart = [:jletterdigit:]
JFlexCommentChar = [^*/]|"/"+[^*/]|"*"+[^*/]
JFlexComment = {JFlexCommentChar}+
/* Java comments */
JavaComment = {TraditionalComment}|{EndOfLineComment}
TraditionalComment = "/*"{CommentContent}\*+"/"
EndOfLineComment = "//".*{NL}
CommentContent = ([^*]|\*+[^*/])*
StringCharacter = [^\u2028\u2029\u000A\u000B\u000C\u000D\u0085\"\\]
CharLiteral = \'([^\u2028\u2029\u000A\u000B\u000C\u000D\u0085\'\\]|{EscapeSequence})\'
StringLiteral = \"({StringCharacter}|{EscapeSequence})*\"
EscapeSequence = \\[^\u2028\u2029\u000A\u000B\u000C\u000D\u0085]|\\+u{HexDigit}{4}|\\[0-3]?{OctDigit}{1,2}
/* \\(b|t|n|f|r|\"|\'|\\|[0-3]?{OctDigit}{1,2}|u{HexDigit}{4}) */
JavaRest = [^\{\}\"\'/]|"/"[^*/]
JavaCode = ({JavaRest}|{StringLiteral}|{CharLiteral}|{JavaComment})+
DottedVersion = [1-9][0-9]*(\.[0-9]+){0,2}
%%
<YYINITIAL> {
"%%".*{NL}? {
t.start();
yybegin(MACROS);
macroDefinition = true;
return symbol(USERCODE,userCode);
}
.*{NL} | .+ { userCode.append(yytext()); }
<<EOF>> { return symbol(EOF); }
}
<MACROS> ("%{"|"%init{"|"%initthrow{"|"%eof{"|"%eofthrow{"|"%yylexthrow{"|"%eofval{").*{NL}
{ string.setLength(0); yybegin(COPY); }
<COPY> {
"%}".*{NL} { classCode = conc(classCode,string); yybegin(MACROS); }
"%init}".*{NL} { initCode = conc(initCode,string); yybegin(MACROS); }
"%initthrow}".*{NL} { initThrow = concExc(initThrow,string); yybegin(MACROS); }
"%eof}".*{NL} { eofCode = conc(eofCode,string); yybegin(MACROS); }
"%eofthrow}".*{NL} { eofThrow = concExc(eofThrow,string); yybegin(MACROS); }
"%yylexthrow}".*{NL} { lexThrow = concExc(lexThrow,string); yybegin(MACROS); }
"%eofval}".*{NL} { eofVal = string.toString(); yybegin(MACROS); }
.*{NL} { string.append(yytext()); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS); }
}
<MACROS> ^"%s" ("tate" "s"?)? {WSP}+ { inclusive_states = true; yybegin(STATELIST); }
<MACROS> ^"%x" ("state" "s"?)? {WSP}+ { inclusive_states = false; yybegin(STATELIST); }
<STATELIST> {
{Ident} { states.insert(yytext(),inclusive_states); }
([\ \t]*","[\ \t]*)|([\ \t]+) { }
{NL} { yybegin(MACROS); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS); }
}
<MACROS> {
"%char" { charCount = true; }
"%line" { lineCount = true; }
"%column" { columnCount = true; }
"%byaccj" { isInteger = true;
if (eofVal == null)
eofVal = "return 0;";
eofclose = true;
}
"%cup2" { cup2Compatible = true;
isImplementing = concExc(isImplementing, "Scanner");
lineCount = true;
columnCount = true;
if (functionName == null)
functionName = "readNextTerminal";
if (tokenType == null)
tokenType = "ScannerToken<? extends Object>";
if (eofVal == null)
eofVal = "return token(SpecialTerminals.EndOfInputStream);";
if (!Options.jlex) eofclose = true;
return symbol(UNICODE); // %unicode
}
"%cup" { cupCompatible = true;
isImplementing = concExc(isImplementing, "java_cup.runtime.Scanner");
if (functionName == null)
functionName = "next_token";
if (tokenType == null)
tokenType = "java_cup.runtime.Symbol";
if (eofVal == null)
eofVal = "return new java_cup.runtime.Symbol("+cupSymbol+".EOF);";
if (!Options.jlex) eofclose = true;
}
"%cupsym"{WSP}+{QualIdent} {WSP}* { cupSymbol = yytext().substring(8).trim();
if (cupCompatible) Out.warning(ErrorMessages.CUPSYM_AFTER_CUP, yyline); }
"%cupsym"{WSP}+{NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_CUPSYM, yyline); }
"%cupdebug" { cupDebug = true; }
"%eofclose"({WSP}+"true")? { eofclose = true; }
"%eofclose"({WSP}+"false") { eofclose = false; }
"%class"{WSP}+{ClassT} {WSP}* { className = yytext().substring(7).trim(); }
"%ctorarg"{WSP}+{ArrType}{WSP}+ { yybegin(CTOR_ARG); ctorTypes.add(yytext().substring(8).trim()); }
"%function"{WSP}+{Ident} {WSP}* { functionName = yytext().substring(10).trim(); }
"%type"{WSP}+{ArrType} {WSP}* { tokenType = yytext().substring(6).trim(); }
"%integer"|"%int" { isInteger = true; }
"%intwrap" { isIntWrap = true; }
"%yyeof" { isYYEOF = true; }
"%notunix" { notUnix = true; }
"%7bit" { isASCII = true; return symbol(ASCII); }
"%full"|"%8bit" { return symbol(FULL); }
"%16bit" { populateDefaultVersionUnicodeProperties();
return symbol(UNICODE);
}
"%unicode"({WSP}+{DottedVersion})? { String v = yytext().substring(8).trim();
if (v.length() == 0) {
populateDefaultVersionUnicodeProperties();
} else {
try {
unicodeProperties = new UnicodeProperties(v);
} catch (UnicodeProperties.UnsupportedUnicodeVersionException e) {
throw new ScannerException
(file, ErrorMessages.UNSUPPORTED_UNICODE_VERSION, yyline);
}
charClasses.init
(Options.jlex ? 127 : unicodeProperties.getMaximumCodePoint(), this);
}
return symbol(UNICODE);
}
"%caseless"|"%ignorecase" { caseless = true; }
"%implements"{WSP}+.* { isImplementing = concExc(isImplementing, yytext().substring(12).trim()); }
"%extends"{WSP}+{QClassT}{WSP}* { isExtending = yytext().substring(9).trim(); }
"%public" { isPublic = true; }
"%apiprivate" { visibility = "private"; Skeleton.makePrivate(); }
"%final" { isFinal = true; }
"%abstract" { isAbstract = true; }
"%debug" { debugOption = true; }
"%standalone" { standalone = true; isInteger = true; }
"%pack" { /* no-op - this is the only generation method */ }
"%include" {WSP}+ .* { includeFile(yytext().substring(9).trim()); }
"%buffer" {WSP}+ {Number} {WSP}* { bufferSize = Integer.parseInt(yytext().substring(8).trim()); }
"%buffer" {WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.NO_BUFFER_SIZE, yyline); }
"%initthrow" {WSP}+ {QUIL} {WSP}* { initThrow = concExc(initThrow,yytext().substring(11).trim()); }
"%initthrow" {WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_INITTHROW, yyline); }
"%eofthrow" {WSP}+ {QUIL} {WSP}* { eofThrow = concExc(eofThrow,yytext().substring(10).trim()); }
"%eofthrow" {WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_EOFTHROW, yyline); }
"%yylexthrow"{WSP}+ {QUIL} {WSP}* { lexThrow = concExc(lexThrow,yytext().substring(12).trim()); }
"%throws" {WSP}+ {QUIL} {WSP}* { lexThrow = concExc(lexThrow,yytext().substring(8).trim()); }
"%yylexthrow"{WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_YYLEXTHROW, yyline); }
"%throws" {WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_THROW, yyline); }
"%scanerror" {WSP}+ {QualIdent} {WSP}* { scanErrorException = yytext().substring(11).trim(); }
"%scanerror" {WSP}+ {NNL}* { throw new ScannerException(file,ErrorMessages.QUIL_SCANERROR, yyline); }
// TODO: In the version of JFlex after 1.6, the %inputstreamctor directive will become a no-op: the InputStream ctor will never be emitted.
"%inputstreamctor"({WSP}+"true")? { emitInputStreamCtor = true; }
"%inputstreamctor"{WSP}+"false" { emitInputStreamCtor = false; }
{Ident} { return symbol(IDENT, yytext()); }
"="{WSP}* { if (null == unicodeProperties && ! isASCII) {
populateDefaultVersionUnicodeProperties();
}
yybegin(REGEXP);
return symbol(EQUALS);
}
"/*" { nextState = MACROS; yybegin(COMMENT); }
{EndOfLineComment} { }
^"%%" {NNL}* { if (null == unicodeProperties && ! isASCII) {
populateDefaultVersionUnicodeProperties();
}
macroDefinition = false;
yybegin(REGEXPSTART);
return symbol(DELIMITER);
}
"%"{Ident} { throw new ScannerException(file,ErrorMessages.UNKNOWN_OPTION, yyline, yycolumn); }
"%" { throw new ScannerException(file,ErrorMessages.UNKNOWN_OPTION, yyline, yycolumn); }
^{WSP}+"%" { Out.warning(ErrorMessages.NOT_AT_BOL, yyline); yypushback(1); }
{WSP}+ { }
{NL}+ { }
<<EOF>> { if ( yymoreStreams() ) {
file = (File) files.pop();
yypopStream();
}
else
throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
}
}
<CTOR_ARG> {
{Ident} {WSP}* { yybegin(MACROS); ctorArgs.add(yytext().trim()); }
[^] { throw new ScannerException(file,ErrorMessages.CTOR_ARG,yyline,yycolumn); }
}
<REGEXPSTART> {
^ {WSP}* "%include" {WSP}+ .* { includeFile(yytext().trim().substring(9).trim()); }
{WSP}* "/*" { nextState = REGEXPSTART; yybegin(COMMENT); }
{WSP}* "<" { yybegin(STATES); return symbol_countUpdate(LESSTHAN, null); }
{WSP}* "}" { return symbol_countUpdate(RBRACE, null); }
{WSP}* "//" {NNL}* { }
{WSP}* "<<EOF>>" {WSPNL}* "{" { actionText.setLength(0); yybegin(JAVA_CODE);
Symbol s = symbol_countUpdate(EOFRULE, null);
action_line = s.left+1;
return s;
}
^ {WSP}* {NWSPNL} { yypushback(yylength()); yybegin(REGEXP); }
{WSP} | {NL} { }
}
<STATES> {
{Ident} { return symbol(IDENT, yytext()); }
"," { return symbol(COMMA); }
{WSPNL}+ { }
// "{" will be caught in REGEXP
">"{WSPNL}* { yybegin(REGEXP); return symbol(MORETHAN); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_STATES); }
}
<REGEXP> {
"<<EOF>>" {WSPNL}+ "{" { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(EOFRULE); }
"<<EOF>>" { throw new ScannerException(file,ErrorMessages.EOF_WO_ACTION); }
{WSPNL}*"|"{WSP}*$ { if (macroDefinition) {
yybegin(EATWSPNL);
return symbol(BAR);
}
else {
yybegin(REGEXPSTART);
return symbol(NOACTION);
}
}
// stategroup
"{" { yybegin(REGEXPSTART); return symbol(LBRACE); }
{WSPNL}*"|" { return symbol(BAR); }
{WSPNL}*\" { string.setLength(0); nextState = REGEXP; yybegin(STRING_CONTENT); }
{WSPNL}*"\\u{" { string.setLength(0); yybegin(REGEXP_CODEPOINT_SEQUENCE); }
{WSPNL}*"!" { return symbol(BANG); }
{WSPNL}*"~" { return symbol(TILDE); }
{WSPNL}*"(" { return symbol(OPENBRACKET); }
{WSPNL}*")" { return symbol(CLOSEBRACKET); }
{WSPNL}*"*" { return symbol(STAR); }
{WSPNL}*"+" { return symbol(PLUS); }
{WSPNL}*"?" { return symbol(QUESTION); }
{WSPNL}*"$" { return symbol(DOLLAR); }
{WSPNL}*"^" { bolUsed = true; return symbol(HAT); }
{WSPNL}*"." { return symbol(POINT); }
{WSPNL}*"\\R" { return symbol(NEWLINE); }
{WSPNL}*"[" { yybegin(CHARCLASS); return symbol(OPENCLASS); }
{WSPNL}*"/" { return symbol(LOOKAHEAD); }
{WSPNL}* "{" {WSP}* {Ident} {WSP}* "}" { return symbol_countUpdate(MACROUSE, makeMacroIdent()); }
{WSPNL}* "{" {WSP}* {Number} { yybegin(REPEATEXP);
return symbol(REPEAT,
new Integer(yytext().trim().substring(1).trim()));
}
{WSPNL}+ "{" { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(REGEXPEND); }
{NL} { if (macroDefinition) { yybegin(MACROS); } return symbol(REGEXPEND); }
{WSPNL}*"/*" { nextState = REGEXP; yybegin(COMMENT); }
{WSPNL}*"//"{NNL}* { }
{WSP}+ { }
<CHARCLASS> {
{WSPNL}*"[:jletter:]" { return symbol(JLETTERCLASS); }
{WSPNL}*"[:jletterdigit:]" { return symbol(JLETTERDIGITCLASS); }
{WSPNL}*"[:letter:]" { return symbol(LETTERCLASS); }
{WSPNL}*"[:uppercase:]" { return symbol(UPPERCLASS); }
{WSPNL}*"[:lowercase:]" { return symbol(LOWERCLASS); }
{WSPNL}*"[:digit:]" { return symbol(DIGITCLASS); }
{WSPNL}*"\\d" { return symbol(DIGITCLASS); }
{WSPNL}*"\\D" { return symbol(DIGITCLASSNOT); }
{WSPNL}*"\\s" { return symbol(WHITESPACECLASS); }
{WSPNL}*"\\S" { return symbol(WHITESPACECLASSNOT); }
{WSPNL}*"\\w" { return symbol(WORDCLASS); }
{WSPNL}*"\\W" { return symbol(WORDCLASSNOT); }
{WSPNL}*"\\p{"[^}]*"}" { String trimmedText = yytext().trim();
String propertyValue = trimmedText.substring(3,trimmedText.length()-1);
IntCharSet set = unicodeProperties.getIntCharSet(propertyValue);
if (null == set) {
throw new ScannerException(file,ErrorMessages.INVALID_UNICODE_PROPERTY, yyline, yycolumn + 3);
}
return symbol(UNIPROPCCLASS, set);
}
{WSPNL}*"\\P{"[^}]*"}" { String trimmedText = yytext().trim();
String propertyValue = trimmedText.substring(3,trimmedText.length()-1);
IntCharSet set = unicodeProperties.getIntCharSet(propertyValue);
if (null == set) {
throw new ScannerException(file,ErrorMessages.INVALID_UNICODE_PROPERTY, yyline, yycolumn + 3);
}
return symbol(UNIPROPCCLASSNOT, set);
}
}
. { return symbol(CHAR, yytext().codePointAt(0)); }
}
<EATWSPNL> {WSPNL}+ { yybegin(REGEXP); }
<REPEATEXP> {
"}" { yybegin(REGEXP); return symbol(RBRACE); }
"," {WSP}* {Number} { return symbol(REPEAT, new Integer(yytext().substring(1).trim())); }
{WSP}+ { }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP); }
}
<CHARCLASS> {
"{"{Ident}"}" { return symbol(MACROUSE, yytext().substring(1,yylength()-1)); }
"[" { balance++; return symbol(OPENCLASS); }
"]" { if (balance > 0) balance--; else yybegin(REGEXP); return symbol(CLOSECLASS); }
"^" { return symbol(HAT); }
"-" { return symbol(DASH); }
"--" { return symbol(DIFFERENCE); }
"&&" { return symbol(INTERSECTION); }
"||" { /* union is the default operation - '||' can be ignored */ }
"~~" { return symbol(SYMMETRICDIFFERENCE); }
"\\u{" { yybegin(CHARCLASS_CODEPOINT); }
// this is a hack to keep JLex compatibilty with char class
// expressions like [+-]
"-]" { yypushback(1); yycolumn--; return symbol(CHAR, (int)'-'); }
\" { string.setLength(0); nextState = CHARCLASS; yybegin(STRING_CONTENT); }
. { return symbol(CHAR, yytext().codePointAt(0)); }
\n { throw new ScannerException(file,ErrorMessages.EOL_IN_CHARCLASS,yyline,yycolumn); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP); }
}
<STRING_CONTENT> {
\" { yybegin(nextState); return symbol(STRING, string.toString()); }
\\\" { string.append('\"'); }
[^\"\\\u2028\u2029\u000A\u000B\u000C\u000D\u0085]+ { string.append(yytext()); }
{NL} { throw new ScannerException(file,ErrorMessages.UNTERMINATED_STR, yyline, yycolumn); }
{HexNumber} { string.append( (char) Integer.parseInt(yytext().substring(2,yylength()), 16)); }
{OctNumber} { string.append( (char) Integer.parseInt(yytext().substring(1,yylength()), 8)); }
{Unicode4} { string.append( (char) Integer.parseInt(yytext().substring(2,yylength()), 16)); }
{Unicode6} { int codePoint = Integer.parseInt(yytext().substring(2,yylength()), 16);
if (codePoint <= unicodeProperties.getMaximumCodePoint()) {
string.append(Character.toChars(codePoint));
} else {
throw new ScannerException(file,ErrorMessages.CODEPOINT_OUT_OF_RANGE, yyline, yycolumn+2);
}
}
"\\u{" { yybegin(STRING_CODEPOINT_SEQUENCE); }
\\b { string.append('\b'); }
\\n { string.append('\n'); }
\\t { string.append('\t'); }
\\f { string.append('\f'); }
\\r { string.append('\r'); }
\\. { string.append(yytext().substring(1, yytext().offsetByCodePoints(1, 1))); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_STRING); }
}
<REGEXP, CHARCLASS> {
{HexNumber} { return symbol(CHAR, Integer.parseInt(yytext().substring(2,yylength()), 16)); }
{OctNumber} { return symbol(CHAR, Integer.parseInt(yytext().substring(1,yylength()), 8)); }
{Unicode4} { return symbol(CHAR, Integer.parseInt(yytext().substring(2,yylength()), 16)); }
{Unicode6} { int codePoint = Integer.parseInt(yytext().substring(2,yylength()), 16);
if (codePoint <= unicodeProperties.getMaximumCodePoint()) {
return symbol(CHAR, codePoint);
} else {
throw new ScannerException(file,ErrorMessages.CODEPOINT_OUT_OF_RANGE, yyline, yycolumn+2);
}
}
\\b { return symbol(CHAR, (int)'\b'); }
\\n { return symbol(CHAR, (int)'\n'); }
\\t { return symbol(CHAR, (int)'\t'); }
\\f { return symbol(CHAR, (int)'\f'); }
\\r { return symbol(CHAR, (int)'\r'); }
\\. { return symbol(CHAR, yytext().codePointAt(1)); }
}
<JAVA_CODE> {
"{" { balance++; actionText.append('{'); }
"}" { if (balance > 0) {
balance--;
actionText.append('}');
}
else {
yybegin(REGEXPSTART);
Action a = new Action(actionText.toString(), action_line);
actions.add(a);
return symbol(ACTION, a);
}
}
{JavaCode} { actionText.append(yytext()); }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_ACTION, action_line-1); }
}
<COMMENT> {
"/"+ "*" { commentbalance++; }
"*"+ "/" { if (commentbalance > 0)
commentbalance--;
else
yybegin(nextState);
}
{JFlexComment} { /* ignore */ }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_COMMENT); }
}
<REGEXP_CODEPOINT_SEQUENCE> {
"}" { yybegin(REGEXP); return symbol(STRING, string.toString()); }
{HexDigit}{1,6} { int codePoint = Integer.parseInt(yytext(), 16);
if (codePoint <= unicodeProperties.getMaximumCodePoint()) {
string.append(Character.toChars(codePoint));
} else {
throw new ScannerException(file,ErrorMessages.CODEPOINT_OUT_OF_RANGE, yyline, yycolumn);
}
}
{WSPNL}+ { }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP); }
}
<STRING_CODEPOINT_SEQUENCE> { // Specialized form: newlines disallowed, and doesn't return a symbol
"}" { yybegin(STRING_CONTENT); }
{HexDigit}{1,6} { int codePoint = Integer.parseInt(yytext(), 16);
if (codePoint <= unicodeProperties.getMaximumCodePoint()) {
string.append(Character.toChars(codePoint));
} else {
throw new ScannerException(file, ErrorMessages.CODEPOINT_OUT_OF_RANGE, yyline, yycolumn);
}
}
{NL} { throw new ScannerException(file,ErrorMessages.UNTERMINATED_STR, yyline, yycolumn); }
{WSP}+ { }
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_STRING); }
}
<CHARCLASS_CODEPOINT> { // Specialized form: only one codepoint allowed, no whitespace allowed
{HexDigit}{1,6} "}" { int codePoint = Integer.parseInt(yytext().substring(0, yylength() - 1), 16);
if (codePoint <= unicodeProperties.getMaximumCodePoint()) {
yybegin(CHARCLASS);
return symbol(CHAR, codePoint);
} else {
throw new ScannerException(file, ErrorMessages.CODEPOINT_OUT_OF_RANGE, yyline, yycolumn);
}
}
<<EOF>> { throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP); }
}
. { throw new ScannerException(file,ErrorMessages.UNEXPECTED_CHAR, yyline, yycolumn); }
\R { throw new ScannerException(file,ErrorMessages.UNEXPECTED_NL, yyline, yycolumn); }
<<EOF>> { if ( yymoreStreams() ) {
file = (File) files.pop();
yypopStream();
}
else {
return symbol(EOF);
}
}

305
samples/JFlex/java.jflex Normal file
View File

@@ -0,0 +1,305 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright (C) 1998-2015 Gerwin Klein <lsf@jflex.de> *
* All rights reserved. *
* *
* License: BSD *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Java 1.2 language lexer specification */
/* Use together with unicode.flex for Unicode preprocesssing */
/* and java12.cup for a Java 1.2 parser */
/* Note that this lexer specification is not tuned for speed.
It is in fact quite slow on integer and floating point literals,
because the input is read twice and the methods used to parse
the numbers are not very fast.
For a production quality application (e.g. a Java compiler)
this could be optimized */
import java_cup.runtime.*;
%%
%public
%class Scanner
%implements sym
%unicode
%line
%column
%cup
%cupdebug
%{
StringBuilder string = new StringBuilder();
private Symbol symbol(int type) {
return new JavaSymbol(type, yyline+1, yycolumn+1);
}
private Symbol symbol(int type, Object value) {
return new JavaSymbol(type, yyline+1, yycolumn+1, value);
}
/**
* assumes correct representation of a long value for
* specified radix in scanner buffer from <code>start</code>
* to <code>end</code>
*/
private long parseLong(int start, int end, int radix) {
long result = 0;
long digit;
for (int i = start; i < end; i++) {
digit = Character.digit(yycharat(i),radix);
result*= radix;
result+= digit;
}
return result;
}
%}
/* main character classes */
LineTerminator = \r|\n|\r\n
InputCharacter = [^\r\n]
WhiteSpace = {LineTerminator} | [ \t\f]
/* comments */
Comment = {TraditionalComment} | {EndOfLineComment} |
{DocumentationComment}
TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/"
EndOfLineComment = "//" {InputCharacter}* {LineTerminator}?
DocumentationComment = "/*" "*"+ [^/*] ~"*/"
/* identifiers */
Identifier = [:jletter:][:jletterdigit:]*
/* integer literals */
DecIntegerLiteral = 0 | [1-9][0-9]*
DecLongLiteral = {DecIntegerLiteral} [lL]
HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8}
HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL]
HexDigit = [0-9a-fA-F]
OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15}
OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL]
OctDigit = [0-7]
/* floating point literals */
FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF]
DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}?
FLit1 = [0-9]+ \. [0-9]*
FLit2 = \. [0-9]+
FLit3 = [0-9]+
Exponent = [eE] [+-]? [0-9]+
/* string and character literals */
StringCharacter = [^\r\n\"\\]
SingleCharacter = [^\r\n\'\\]
%state STRING, CHARLITERAL
%%
<YYINITIAL> {
/* keywords */
"abstract" { return symbol(ABSTRACT); }
"boolean" { return symbol(BOOLEAN); }
"break" { return symbol(BREAK); }
"byte" { return symbol(BYTE); }
"case" { return symbol(CASE); }
"catch" { return symbol(CATCH); }
"char" { return symbol(CHAR); }
"class" { return symbol(CLASS); }
"const" { return symbol(CONST); }
"continue" { return symbol(CONTINUE); }
"do" { return symbol(DO); }
"double" { return symbol(DOUBLE); }
"else" { return symbol(ELSE); }
"extends" { return symbol(EXTENDS); }
"final" { return symbol(FINAL); }
"finally" { return symbol(FINALLY); }
"float" { return symbol(FLOAT); }
"for" { return symbol(FOR); }
"default" { return symbol(DEFAULT); }
"implements" { return symbol(IMPLEMENTS); }
"import" { return symbol(IMPORT); }
"instanceof" { return symbol(INSTANCEOF); }
"int" { return symbol(INT); }
"interface" { return symbol(INTERFACE); }
"long" { return symbol(LONG); }
"native" { return symbol(NATIVE); }
"new" { return symbol(NEW); }
"goto" { return symbol(GOTO); }
"if" { return symbol(IF); }
"public" { return symbol(PUBLIC); }
"short" { return symbol(SHORT); }
"super" { return symbol(SUPER); }
"switch" { return symbol(SWITCH); }
"synchronized" { return symbol(SYNCHRONIZED); }
"package" { return symbol(PACKAGE); }
"private" { return symbol(PRIVATE); }
"protected" { return symbol(PROTECTED); }
"transient" { return symbol(TRANSIENT); }
"return" { return symbol(RETURN); }
"void" { return symbol(VOID); }
"static" { return symbol(STATIC); }
"while" { return symbol(WHILE); }
"this" { return symbol(THIS); }
"throw" { return symbol(THROW); }
"throws" { return symbol(THROWS); }
"try" { return symbol(TRY); }
"volatile" { return symbol(VOLATILE); }
"strictfp" { return symbol(STRICTFP); }
/* boolean literals */
"true" { return symbol(BOOLEAN_LITERAL, true); }
"false" { return symbol(BOOLEAN_LITERAL, false); }
/* null literal */
"null" { return symbol(NULL_LITERAL); }
/* separators */
"(" { return symbol(LPAREN); }
")" { return symbol(RPAREN); }
"{" { return symbol(LBRACE); }
"}" { return symbol(RBRACE); }
"[" { return symbol(LBRACK); }
"]" { return symbol(RBRACK); }
";" { return symbol(SEMICOLON); }
"," { return symbol(COMMA); }
"." { return symbol(DOT); }
/* operators */
"=" { return symbol(EQ); }
">" { return symbol(GT); }
"<" { return symbol(LT); }
"!" { return symbol(NOT); }
"~" { return symbol(COMP); }
"?" { return symbol(QUESTION); }
":" { return symbol(COLON); }
"==" { return symbol(EQEQ); }
"<=" { return symbol(LTEQ); }
">=" { return symbol(GTEQ); }
"!=" { return symbol(NOTEQ); }
"&&" { return symbol(ANDAND); }
"||" { return symbol(OROR); }
"++" { return symbol(PLUSPLUS); }
"--" { return symbol(MINUSMINUS); }
"+" { return symbol(PLUS); }
"-" { return symbol(MINUS); }
"*" { return symbol(MULT); }
"/" { return symbol(DIV); }
"&" { return symbol(AND); }
"|" { return symbol(OR); }
"^" { return symbol(XOR); }
"%" { return symbol(MOD); }
"<<" { return symbol(LSHIFT); }
">>" { return symbol(RSHIFT); }
">>>" { return symbol(URSHIFT); }
"+=" { return symbol(PLUSEQ); }
"-=" { return symbol(MINUSEQ); }
"*=" { return symbol(MULTEQ); }
"/=" { return symbol(DIVEQ); }
"&=" { return symbol(ANDEQ); }
"|=" { return symbol(OREQ); }
"^=" { return symbol(XOREQ); }
"%=" { return symbol(MODEQ); }
"<<=" { return symbol(LSHIFTEQ); }
">>=" { return symbol(RSHIFTEQ); }
">>>=" { return symbol(URSHIFTEQ); }
/* string literal */
\" { yybegin(STRING); string.setLength(0); }
/* character literal */
\' { yybegin(CHARLITERAL); }
/* numeric literals */
/* This is matched together with the minus, because the number is too big to
be represented by a positive integer. */
"-2147483648" { return symbol(INTEGER_LITERAL, new Integer(Integer.MIN_VALUE)); }
{DecIntegerLiteral} { return symbol(INTEGER_LITERAL, new Integer(yytext())); }
{DecLongLiteral} { return symbol(INTEGER_LITERAL, new Long(yytext().substring(0,yylength()-1))); }
{HexIntegerLiteral} { return symbol(INTEGER_LITERAL, new Integer((int) parseLong(2, yylength(), 16))); }
{HexLongLiteral} { return symbol(INTEGER_LITERAL, new Long(parseLong(2, yylength()-1, 16))); }
{OctIntegerLiteral} { return symbol(INTEGER_LITERAL, new Integer((int) parseLong(0, yylength(), 8))); }
{OctLongLiteral} { return symbol(INTEGER_LITERAL, new Long(parseLong(0, yylength()-1, 8))); }
{FloatLiteral} { return symbol(FLOATING_POINT_LITERAL, new Float(yytext().substring(0,yylength()-1))); }
{DoubleLiteral} { return symbol(FLOATING_POINT_LITERAL, new Double(yytext())); }
{DoubleLiteral}[dD] { return symbol(FLOATING_POINT_LITERAL, new Double(yytext().substring(0,yylength()-1))); }
/* comments */
{Comment} { /* ignore */ }
/* whitespace */
{WhiteSpace} { /* ignore */ }
/* identifiers */
{Identifier} { return symbol(IDENTIFIER, yytext()); }
}
<STRING> {
\" { yybegin(YYINITIAL); return symbol(STRING_LITERAL, string.toString()); }
{StringCharacter}+ { string.append( yytext() ); }
/* escape sequences */
"\\b" { string.append( '\b' ); }
"\\t" { string.append( '\t' ); }
"\\n" { string.append( '\n' ); }
"\\f" { string.append( '\f' ); }
"\\r" { string.append( '\r' ); }
"\\\"" { string.append( '\"' ); }
"\\'" { string.append( '\'' ); }
"\\\\" { string.append( '\\' ); }
\\[0-3]?{OctDigit}?{OctDigit} { char val = (char) Integer.parseInt(yytext().substring(1),8);
string.append( val ); }
/* error cases */
\\. { throw new RuntimeException("Illegal escape sequence \""+yytext()+"\""); }
{LineTerminator} { throw new RuntimeException("Unterminated string at end of line"); }
}
<CHARLITERAL> {
{SingleCharacter}\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, yytext().charAt(0)); }
/* escape sequences */
"\\b"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\b');}
"\\t"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\t');}
"\\n"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\n');}
"\\f"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\f');}
"\\r"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\r');}
"\\\""\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\"');}
"\\'"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\'');}
"\\\\"\' { yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, '\\'); }
\\[0-3]?{OctDigit}?{OctDigit}\' { yybegin(YYINITIAL);
int val = Integer.parseInt(yytext().substring(1,yylength()-1),8);
return symbol(CHARACTER_LITERAL, (char)val); }
/* error cases */
\\. { throw new RuntimeException("Illegal escape sequence \""+yytext()+"\""); }
{LineTerminator} { throw new RuntimeException("Unterminated character literal at end of line"); }
}
/* error fallback */
[^] { throw new RuntimeException("Illegal character \""+yytext()+
"\" at line "+yyline+", column "+yycolumn); }
<<EOF>> { return symbol(EOF); }

714
samples/KiCad/Volume.sch Normal file
View File

@@ -0,0 +1,714 @@
EESchema Schematic File Version 2
LIBS:mfk_alps
LIBS:mfk_connector
LIBS:mfk_interface
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:special
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:Volume-AlpsRK16814MG-cache
EELAYER 27 0
EELAYER END
$Descr A 11000 8500
encoding utf-8
Sheet 1 1
Title "ALPS RK16816MG with H-bridge"
Date "4 apr 2015"
Rev ""
Comp "Mithat Konar"
Comment1 "Copyright (C) 2015 Mithat Konar"
Comment2 "CERN Open Hardware Licence v1.2"
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L SN754410 U1
U 1 1 550CA683
P 7600 4650
F 0 "U1" H 7600 5350 60 0000 C CNN
F 1 "SN754410" H 7600 4000 60 0000 C CNN
F 2 "mfk-DIP-16_AriesC84_e" H 7600 4650 60 0001 C CNN
F 3 "~" H 7600 4650 60 0000 C CNN
1 7600 4650
1 0 0 -1
$EndComp
$Comp
L DGND #PWR01
U 1 1 550CA83D
P 8450 5500
F 0 "#PWR01" H 8450 5500 40 0001 C CNN
F 1 "DGND" H 8450 5430 40 0000 C CNN
F 2 "" H 8450 5500 60 0000 C CNN
F 3 "" H 8450 5500 60 0000 C CNN
1 8450 5500
1 0 0 -1
$EndComp
$Comp
L DGND #PWR02
U 1 1 550CA86E
P 6600 5300
F 0 "#PWR02" H 6600 5300 40 0001 C CNN
F 1 "DGND" H 6600 5230 40 0000 C CNN
F 2 "" H 6600 5300 60 0000 C CNN
F 3 "" H 6600 5300 60 0000 C CNN
1 6600 5300
1 0 0 -1
$EndComp
Wire Wire Line
6900 4550 6600 4550
Wire Wire Line
6600 4550 6600 5300
Wire Wire Line
6900 4700 6600 4700
Connection ~ 6600 4700
Wire Wire Line
8300 4550 8450 4550
Wire Wire Line
8450 4250 8450 5500
Wire Wire Line
8300 4700 8450 4700
Connection ~ 8450 4700
Wire Wire Line
3900 4450 4600 4450
Wire Wire Line
4400 4450 4400 4400
Wire Wire Line
4600 4450 4600 4400
Wire Wire Line
4400 5250 4400 5500
Wire Wire Line
4600 5400 4600 5250
Wire Wire Line
5700 4200 5700 4150
Wire Wire Line
5700 4150 6150 4150
Wire Wire Line
6150 4400 6900 4400
Wire Wire Line
5700 4850 6900 4850
Wire Wire Line
5700 4800 5700 4850
Wire Wire Line
8300 4250 8450 4250
Connection ~ 8450 4550
Wire Wire Line
6400 4250 6900 4250
Wire Wire Line
6400 3250 6400 4250
Wire Wire Line
6750 3750 8450 3750
Wire Wire Line
8300 5000 8450 5000
Wire Wire Line
8300 4100 8700 4100
Wire Wire Line
6750 5150 6900 5150
$Comp
L C C1
U 1 1 550CAD46
P 8700 4350
F 0 "C1" H 8700 4450 40 0000 L CNN
F 1 "100n" H 8706 4265 40 0000 L CNN
F 2 "mfk-C_4.0_2.5_2.5_0.5" H 8738 4200 30 0001 C CNN
F 3 "~" H 8700 4350 60 0000 C CNN
1 8700 4350
1 0 0 -1
$EndComp
Wire Wire Line
8700 4100 8700 4150
$Comp
L DGND #PWR03
U 1 1 550CADFB
P 8700 4700
F 0 "#PWR03" H 8700 4700 40 0001 C CNN
F 1 "DGND" H 8700 4630 40 0000 C CNN
F 2 "" H 8700 4700 60 0000 C CNN
F 3 "" H 8700 4700 60 0000 C CNN
1 8700 4700
1 0 0 -1
$EndComp
Wire Wire Line
8700 4700 8700 4550
Text Label 6400 3250 3 50 ~ 0
VOL_UP
Text Label 6400 6150 1 50 ~ 0
VOL_DOWN
$Comp
L DGND #PWR04
U 1 1 550CB0E4
P 3150 2100
F 0 "#PWR04" H 3150 2100 40 0001 C CNN
F 1 "DGND" H 3150 2030 40 0000 C CNN
F 2 "" H 3150 2100 60 0000 C CNN
F 3 "" H 3150 2100 60 0000 C CNN
1 3150 2100
-1 0 0 -1
$EndComp
Wire Wire Line
3650 1350 3650 1800
Wire Wire Line
3100 2450 3850 2450
Text Label 3850 2450 2 50 ~ 0
VOL_UP
Wire Wire Line
3100 2650 3850 2650
Text Label 3850 2650 2 50 ~ 0
VOL_DOWN
$Comp
L PWR_FLAG #FLG05
U 1 1 550CB3B3
P 3400 2000
F 0 "#FLG05" H 3400 2095 30 0001 C CNN
F 1 "PWR_FLAG" H 3400 2180 30 0000 C CNN
F 2 "" H 3400 2000 60 0000 C CNN
F 3 "" H 3400 2000 60 0000 C CNN
1 3400 2000
-1 0 0 1
$EndComp
$Comp
L PWR_FLAG #FLG06
U 1 1 550CB3CC
P 3900 1650
F 0 "#FLG06" H 3900 1745 30 0001 C CNN
F 1 "PWR_FLAG" H 3900 1830 30 0000 C CNN
F 2 "" H 3900 1650 60 0000 C CNN
F 3 "" H 3900 1650 60 0000 C CNN
1 3900 1650
-1 0 0 -1
$EndComp
Wire Wire Line
3150 1900 3100 1900
Wire Wire Line
3150 1900 3150 2100
Wire Wire Line
3900 1650 3650 1650
Connection ~ 3650 1650
Wire Wire Line
3400 2000 3150 2000
Connection ~ 3150 2000
$Comp
L CONN_2 P4
U 1 1 550CCCA8
P 2750 2550
F 0 "P4" V 2700 2550 50 0000 C CNN
F 1 "CTRL" V 2800 2550 50 0000 C CNN
F 2 "mfk-TE_282834-2" H 2750 2550 60 0001 C CNN
F 3 "" H 2750 2550 60 0000 C CNN
1 2750 2550
-1 0 0 -1
$EndComp
Wire Wire Line
4150 3250 4150 3850
$Comp
L CONN_5 P1
U 1 1 550CCE69
P 2750 3450
F 0 "P1" V 2700 3450 50 0000 C CNN
F 1 "AB I/O" V 2800 3450 50 0000 C CNN
F 2 "mfk-TE_282834-5" H 2750 3450 60 0001 C CNN
F 3 "" H 2750 3450 60 0000 C CNN
1 2750 3450
-1 0 0 -1
$EndComp
Wire Wire Line
3150 3250 4150 3250
Wire Wire Line
4300 4100 4350 4100
Wire Wire Line
4350 4100 4350 3350
Wire Wire Line
4350 3350 3150 3350
Text Label 3150 3250 0 50 ~ 0
A_TOP
Text Label 3150 3350 0 50 ~ 0
A_WIPER
Text Label 3150 3550 0 50 ~ 0
B_TOP
Text Label 3150 3650 0 50 ~ 0
B_WIPER
$Comp
L CONN_5 P2
U 1 1 550CCF9F
P 2800 4800
F 0 "P2" V 2750 4800 50 0000 C CNN
F 1 "CD I/O" V 2850 4800 50 0000 C CNN
F 2 "mfk-TE_282834-5" H 2800 4800 60 0001 C CNN
F 3 "" H 2800 4800 60 0000 C CNN
1 2800 4800
-1 0 0 -1
$EndComp
Wire Wire Line
3200 4600 4150 4600
Wire Wire Line
3200 4700 3900 4700
Wire Wire Line
3200 4900 3700 4900
Wire Wire Line
5100 4950 5100 5700
Wire Wire Line
5100 4950 4950 4950
Wire Wire Line
3200 4800 3800 4800
Wire Wire Line
5000 4600 5000 5600
Wire Wire Line
5000 4600 4800 4600
Wire Wire Line
4800 4600 4800 4700
Wire Wire Line
4300 5400 4300 4950
Text Label 3200 4600 0 50 ~ 0
C_TOP
Wire Wire Line
3900 5400 4300 5400
Wire Wire Line
4400 5400 4600 5400
Wire Wire Line
3900 4700 3900 5400
$Comp
L RK16814MG RV1
U 1 1 550CA765
P 4500 4500
F 0 "RV1" H 5850 5250 50 0000 C CNN
F 1 "RK16814MG" H 5700 3600 50 0000 C CNN
F 2 "mfk-ALPS_RK16814MG" V 4800 4900 60 0001 C CNN
F 3 "~" V 4800 4900 60 0000 C CNN
1 4500 4500
1 0 0 -1
$EndComp
Wire Wire Line
4150 4600 4150 4700
Text Label 3200 4700 0 50 ~ 0
C_WIPER
Text Label 3200 4900 0 50 ~ 0
D_TOP
Text Label 3200 5000 0 50 ~ 0
D_WIPER
Wire Wire Line
3900 3450 3900 4450
Connection ~ 4400 4450
Connection ~ 4400 5400
Text Label 3150 3450 0 50 ~ 0
AB_COMMON
Wire Wire Line
3600 5000 3200 5000
Text Label 3200 4800 0 50 ~ 0
CD_COMMON
$Comp
L +5VD #PWR07
U 1 1 550CE6FC
P 7600 3650
F 0 "#PWR07" H 7600 3600 20 0001 C CNN
F 1 "+5VD" H 7600 3750 50 0000 C CNN
F 2 "" H 7600 3650 60 0000 C CNN
F 3 "" H 7600 3650 60 0000 C CNN
1 7600 3650
1 0 0 -1
$EndComp
$Comp
L +5VD #PWR08
U 1 1 550CE733
P 3650 1350
F 0 "#PWR08" H 3650 1300 20 0001 C CNN
F 1 "+5VD" H 3650 1450 50 0000 C CNN
F 2 "" H 3650 1350 60 0000 C CNN
F 3 "" H 3650 1350 60 0000 C CNN
1 3650 1350
-1 0 0 -1
$EndComp
Wire Wire Line
3900 3450 3150 3450
Wire Wire Line
4800 3850 4800 3550
Wire Wire Line
4800 3550 3150 3550
Wire Wire Line
4950 4100 5000 4100
Wire Wire Line
5000 4100 5000 3650
Wire Wire Line
5000 3650 3150 3650
Wire Wire Line
3600 5000 3600 5700
Wire Wire Line
3700 4900 3700 5600
Wire Wire Line
3800 4800 3800 5500
Wire Wire Line
3800 5500 4400 5500
Wire Wire Line
3700 5600 5000 5600
Wire Wire Line
3600 5700 5100 5700
$Bitmap
Pos 10300 6850
Scale 1.000000
Data
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00 5F 00 00 00 64 08 06 00 00 00 E0 F1 EC
9B 00 00 00 04 73 42 49 54 08 08 08 08 7C 08 64 88 00 00 00 09 70 48 59 73 00 00 07 6C 00 00 07
6C 01 9C F3 D5 25 00 00 13 B3 49 44 41 54 78 9C ED 9D 7B 7C 54 D5 B5 C7 BF EB CC 04 C2 43 1E 5A
45 D0 2A F6 FA 82 52 A0 6A D5 D6 5A B1 3E 69 21 27 40 A3 F6 E1 55 51 4E 78 5C B5 B4 DA 56 3F 7E
8A 69 BD D4 6A 6F 6F AB AD 90 13 90 48 3F B7 B6 E6 16 66 22 8A F6 65 44 AD AD A2 45 B4 A5 D6 17
88 12 15 5A 0C F2 CA 64 E6 AC FB C7 3E 93 49 86 10 66 92 7D 48 E8 E5 F7 F9 E4 33 AF BD D7 59 FB
77 76 F6 D9 7B ED B5 D6 16 55 E5 40 80 F8 C9 7B 80 59 05 14 5D A0 9E 3B 3B 6A 7D 6C C0 E9 69 05
8A C0 85 96 CB F5 38 E4 40 E8 F9 E2 27 0F 01 9A 00 29 A0 B8 02 83 D5 73 3F 88 56 AB EE E3 40 E9
F9 63 29 8C 78 C2 72 63 23 D4 C5 1A 0E 14 F2 C7 45 5C BE 47 70 A0 90 3F 3E E2 F2 3D 82 83 E4 F7
20 22 27 5F FC E4 67 C5 4F 5E DE 8D FA 31 60 4C 91 D5 C6 84 F5 BA 7A CD CB C5 4F 7E B6 AB F5 0B
45 A4 E4 8B 9F 2C 03 56 02 4B C5 4F AE 14 3F 39 A2 0B 62 4E 04 FA 15 59 A7 5F 58 AF 28 88 9F 1C
21 7E 72 25 B0 14 58 19 EA 1F 19 22 23 3F 54 BC 0E E8 13 7E 75 31 F0 92 F8 C9 CB 8A 14 75 4A 17
55 38 B5 98 C2 A1 5E 2F 61 F4 04 A3 77 5D 94 37 20 92 79 7E 07 C4 E7 E3 01 60 B6 7A EE 3F 3A 91
31 00 B8 0C A8 02 8E EA 82 1A 8D C0 AD C0 CF D5 73 B7 77 72 9D C3 80 7B 80 4B F6 52 24 05 54 A8
E7 D6 77 41 87 4E 61 9D FC 02 88 CF A2 11 98 A1 9E FB 50 5E FD 31 40 25 70 39 30 D8 82 4A 1F 00
3F 03 16 AA E7 BE 98 77 AD CF 03 35 C0 F0 7D C8 88 E4 06 58 25 BF 08 E2 DB 62 11 70 3B F0 49 60
26 70 96 35 85 F6 C4 53 C0 42 E0 69 E0 5B C0 35 45 D4 B5 7E 03 AC 91 DF 45 E2 0F 34 58 BD 01 36
1F B8 35 FC 6B 13 0F A6 7D 35 B6 84 D9 24 FF 4E 8B B2 7A 33 AC B5 D3 26 F9 3F 04 9E B4 28 AF 37
E2 49 4C 3B AD C0 F6 03 F7 23 C0 0B C0 40 6B 42 7B 0F B6 03 E3 D4 73 5F B7 25 D0 EA 22 2B 54 EC
06 9B 32 7B 11 6E B0 49 3C 44 B7 C8 5A 49 6E A5 F8 AF 80 47 D4 73 27 DA 16 1A 95 79 E1 6A 60 6B
44 B2 F7 37 B6 62 DA 63 1D 91 90 AF 9E BB 09 98 13 85 EC 1E C0 9C B0 3D D6 11 E9 1E AE F8 C9 06
E0 9C C8 2E 10 3D 1E 57 CF 9D 10 95 F0 A8 ED F9 F1 88 E5 47 8D 48 F5 8F AC E7 8B 9F 1C 07 AC 89
44 F8 FE C5 78 F5 DC 17 A2 10 1C 65 CF BF 2E 42 D9 FB 13 91 B5 23 AA A9 E6 61 C0 5B 40 A9 75 E1
39 BC 05 BC 0C 9C 04 1C 1D E1 75 76 03 47 77 B6 F7 D0 55 44 35 A6 CD C0 3E F1 29 E0 2E E0 31 E0
39 F5 DC 77 B3 3F 88 9F 1C 86 D9 B9 3A 17 D3 53 6D 1A F8 4A 31 ED B9 DD A2 4C 20 9A CD 94 18 F0
06 F0 61 8B 62 D7 00 57 A8 E7 AE 2D E0 FA 63 81 FB B0 EB C1 B0 11 38 4E 3D 37 63 51 66 24 63 FE
97 B1 4B FC 7C E0 F4 42 88 07 08 CB 9D 1E D6 B3 85 0F 63 DA 65 15 DD EA F9 E2 27 FB 03 1F C3 F4
B2 F1 18 4F B1 D3 81 2E BB 6D E4 A1 4E 3D 77 6F 7B AB FB 84 F8 C9 07 80 0A 4B BA 64 80 67 30 86
C3 35 E1 DF 8B EA B9 3B BB 2A B0 60 F2 C5 4F 96 00 E7 63 08 CE 92 7D 02 D1 CD 98 36 03 1F 55 CF
DD DC 55 01 E2 27 0F 07 FE 02 1C 6E 4D AB F6 08 80 57 C8 DD 8C 17 80 DF AA E7 B6 14 52 B9 98 07
EE 95 80 5F AC 76 DD C0 9C EE 10 0F A0 9E BB 59 FC E4 1C 8C B7 44 14 70 30 B3 AD 93 80 4B C3 EF
3C 0A DC ED 2A A6 D7 0E 28 4E AF 6E A1 51 3D B7 CE 86 A0 50 4E A3 0D 59 05 A2 60 9E 7A AB AF E6
EA 5E 2E CF 0A 7A 2B F9 CF F5 72 79 56 D0 5B C9 3F D8 F3 7B 10 7B 75 EF EB 25 F2 AC A0 B7 92 7F
5C 2F 97 67 05 BD 95 FC 13 7A B9 3C 2B E8 AD E4 5F 22 7E B2 D0 00 B8 4E 11 CA E9 F2 2A 39 4A 14
43 FE FE 0C AD 3C 1E B3 9A B6 81 F3 43 79 FB 0B 05 F3 54 CC 0A B7 16 78 8D 9C 0D 67 1C 30 1A E8
5B 8C 66 45 60 BE F8 C9 86 42 97 EA 1D 21 34 89 D8 34 B0 E5 A3 19 F8 2B C6 AC 90 B5 F9 3C 51 68
E5 82 C9 0F CD A9 0D E1 1F 00 E2 27 E3 C0 C9 E4 6E C6 29 C0 79 85 CA DC 07 4E C3 10 77 63 37 64
CC 0F E5 D8 C2 EF 80 E7 C9 91 FD 37 F5 DC 74 57 85 45 61 CF FF 09 F6 DC 46 14 F8 86 7A EE 0F BA
A0 C7 0D C0 1D 14 1E 3C BD 2F FC 54 3D F7 3F 2C C9 02 A2 21 7F 14 E6 5F D1 26 EE C5 84 11 35 17
70 FD BE 98 30 9F E9 96 75 18 AD 9E BB CE A6 C0 A8 F6 70 57 01 67 5B 16 FB 22 50 DE 99 BF 64 E8
A8 9B C0 EC 31 D8 C4 13 EA B9 9F B1 2C 33 B2 A9 66 14 A6 E7 8F 01 1F DD 47 99 8F 62 9F 78 88 C8
94 1E 15 F9 FF 8B 7D 5F CD B7 31 31 BD 9D 61 65 58 CE 26 B6 62 DA 63 1D 51 F9 6A EE C6 04 12 DB
84 BF AF 99 45 F8 BB ED 5E BA 34 6C 8F 75 44 B9 C2 B5 16 BB 04 A4 8B 90 57 13 96 B7 05 9B ED 68
87 C8 C8 57 CF FD 0B F6 86 9E 84 7A 6E 41 BB 51 61 B9 84 A5 EB 6E 0D DB 11 09 A2 0C FF BF 1C 18
6A 49 DC 3D 11 97 DF 1B 86 76 27 69 C7 BE 10 D5 54 F3 68 4C 1E 03 1B 11 E4 7F 53 CF 1D D5 05 1D
D6 61 56 DF DD 45 13 30 46 3D F7 2D 0B B2 DA C1 7A CF 0F AD 88 4B B0 43 3C C0 82 FD 5C 2F 1F 83
81 25 B6 AC AC 6D 11 C5 B0 33 1B 7B 16 C9 1D 18 D7 BF AE E0 BE B0 BE 0D 9C 8F 69 97 55 58 25 5F
FC E4 09 18 7B 8A 2D FC 5C 3D B7 A9 2B 15 C3 7A 3F B7 A8 CB 1D 61 FB AC C1 1A F9 A1 83 EC 52 A0
BF 2D 99 74 FF C1 69 EB C1 0B A6 5D 4B BB 93 C1 2A 1F 36 7B FE 37 80 33 2D CA FB A3 7A 6E B7 22
5B C2 FA 7F B4 A4 0F 98 F6 7D C3 96 30 9B E4 7F D5 A2 2C B0 D7 6B 6D F6 7E B0 D8 4E 9B E4 5F 81
D9 D9 B1 81 2D D8 F3 AF 7C 20 94 67 03 CD 98 76 5A 81 35 F2 D5 73 1F 01 CA 29 EE 06 28 F0 3F C0
43 79 DF DF 5B 88 ED BE 40 BD 9A 31 FB 01 6D F1 50 78 DD 62 16 39 CD 18 93 F6 23 36 F4 02 FB B9
17 8A B9 01 6F 02 E7 A9 E7 7E 45 3D 77 12 26 C3 D4 2A 8C DB 75 B5 4D BD 42 79 41 28 FF 2C F5 DC
49 EA B9 5F C1 6C 79 BE 59 40 7D EB C4 43 74 2B DC 8B 31 F6 95 BD 6D AE D7 02 D7 AB E7 6E EB A0
EE D1 51 AC 26 F7 26 57 FC E4 20 E0 C7 18 17 F8 8E 10 09 F1 10 6D 1C 6E 47 37 E0 3D C0 53 CF 4D
46 72 D1 6E 40 FC A4 8B 31 47 1F D1 E6 EB C8 88 87 68 AD 9A F9 43 50 02 63 23 E9 75 C4 03 84 7A
8D 21 67 11 8D 94 78 D8 0F F9 F3 C5 4F 7E 1A 18 6E 2B D8 61 7F 40 FC 64 05 26 40 23 D2 CC 59 07
C4 E1 05 FF AA E8 AD BE 9A FF 2F 70 90 FC 1E C4 41 F2 7B 10 07 C9 EF 41 1C 24 BF 07 71 90 FC 1E
44 1C 40 FC 15 FD 91 CC 6C 94 B3 50 FA 01 7F 42 32 0B D5 9B DA 08 20 8B 96 1D 4D 26 B6 08 61 23
E2 FC 08 74 2E AA 27 80 AE 25 16 FC 40 AF 9E BA 21 2B 50 40 A8 4E 4C C7 61 32 EA 0C 41 83 35 68
FC 4E 9D 39 A9 D5 93 4C AA 93 8F 20 A4 08 62 B3 88 65 6E 41 39 09 E1 61 E2 A9 FB F4 AA 8A 4E A3
CE A5 BA FE 34 24 98 08 72 2E E8 56 90 75 A4 A9 D6 D9 EE C6 D6 32 FE 8A 0F 41 7A 16 22 67 A2 64
10 79 9A DD 25 3F D5 6B 27 6E 33 ED A9 1F 4B 46 EF 40 58 AD 9E 7B 4B 6B BD 9A E5 E7 10 38 37 21
34 A8 E7 DE DE AE DD 8E DC 8D EA D7 51 8E 02 EA 29 49 DD AF 57 55 6C 96 EA E5 E3 10 67 16 30 0A
65 23 8E 3C CE A6 41 4B 74 DE 84 34 80 DC 5B 7F 08 69 FD 26 AA 9F 44 64 17 C8 E3 34 97 DC A5 D7
4E 6C 16 EE 7A 78 10 7D 53 7F 04 F2 3D 04 DE 45 63 67 6B E5 A4 57 C4 5F 71 32 64 D6 61 F6 44 1D
DA 1F A3 F1 0E 64 4E 69 BD 51 7E F2 7E CC A1 03 6D B1 0D 71 CE D7 19 93 9F 0D CB 28 C6 D0 B5 85
F6 CB F9 9D 88 73 BA CE 98 DC A1 AF 8C F8 89 AF 83 74 E4 2E BE 03 63 A4 FB 93 2C 4C 8C C4 91 A7
80 FC 23 42 5E 25 96 3A 43 AF AE F8 A7 2C 4C 4C C0 91 C7 50 1E D5 4A B7 35 FF A7 D4 D4 5F 86 EA
FD C0 2F D5 73 2F 6B D3 EE ED 61 BB C3 5D 3A D9 4C 26 7D 26 F1 F8 79 A8 2E 20 3F D1 87 EA EF E9
CB 34 00 52 F2 67 60 64 9E 2E 6B E9 D7 EF 53 0E A5 A9 9B 31 C4 6F 04 AE 47 F5 4B 18 8F E0 61 38
E9 FC A4 CD 03 80 DF A3 72 0E A2 97 62 6C 35 47 42 7C 96 51 3E 31 11 43 FC 1B 88 7C 11 62 A7 A2
F2 00 30 08 0D F2 DD 07 1D 60 13 C8 25 28 D3 41 5E 07 FA A3 C1 BC 0E C8 CD D2 73 63 D8 B8 EB 88
65 46 12 E8 19 20 FF 85 92 C0 73 9F 31 52 E5 76 0C F1 EB 40 AE 44 65 16 B0 1E 38 9E 74 C9 B7 F7
2E BB 53 0C 04 9E 04 BD 08 F8 1A 9A 71 D1 58 0B AA 3F 0C DB 51 8F 52 16 72 F2 32 48 23 A9 F7 76
90 92 2A 60 24 CA A3 08 67 A1 94 61 B8 1D CB AE 5D F3 E2 A8 5C 0C 0A AA DF D4 CA F2 FB 01 A4 7A
F9 5F 11 67 8D F9 2D 0F E9 92 6B 74 F6 E7 DE 01 90 9A E4 31 28 77 82 8E 36 A4 38 E5 A1 AC FF 56
CF FD 05 80 D4 26 2A 49 89 0B 9C 2C 0B 13 23 75 66 F9 FA 36 64 7E 4D BD B2 C7 CC 35 93 20 DC 0B
D2 E1 59 27 52 57 17 83 3E 31 20 4D 89 F3 2B 9D 5E BE 09 D8 80 49 C3 D2 16 46 67 0D AE D6 CA 29
4F 1B D9 0F 36 22 41 02 E9 A0 3D 85 41 09 B4 32 D4 FD D7 A6 ED F5 D7 A3 3A 10 58 AD 9E EB B6 EA
79 4F DD C3 CC AE D8 A1 A0 E2 27 CB 01 08 32 B3 B5 72 EA EB 21 67 71 94 65 C0 E7 E2 A0 E6 3C 12
47 73 21 F2 87 A6 5F 62 6B 9F 9D 40 7F F9 E9 F2 C3 28 29 C9 FE B2 2D 4B 7C 88 D7 C2 D7 21 A1 8E
C6 49 49 E4 02 F1 13 6D 49 FC 00 E8 4B 4C 8E C7 F4 42 80 16 1A FF FC 38 84 E7 C1 C4 32 BF 21 88
01 DA 61 E2 08 AD A8 C8 88 9F 5C 02 DC 48 5A D7 8B 9F 5C 0B F2 1E 12 AC 03 7E A6 33 CA D7 C8 CF
7E 3D 00 E3 67 93 61 67 3A B7 FF 2B 2D CF 84 23 43 57 CE 5E 01 F4 D5 F6 9D 06 50 0D 87 69 6D B7
11 A4 B3 2B B6 43 F8 1C 35 49 92 76 10 73 BE 2D 7E 68 AF 13 A7 4F B8 87 73 72 9C 6C C6 6F 4D B7
E6 2C 0B 1B BA 19 38 96 52 1D 48 2E B9 55 7B 37 0E 71 9A D0 00 90 AC D9 F8 D0 F0 75 72 87 D1 38
81 B4 8D 01 0B 74 DE BC A0 F5 53 AA 34 4D 7C 1F B1 6F 2D C1 F7 29 71 52 98 A8 93 53 CD 7F 99 4C
04 E6 C8 E2 FA 31 68 6B 24 E0 07 3A B7 62 57 AE E2 96 2D 30 2C 0D F4 97 AA 2A 87 61 C5 9E DE 27
C1 9E 5F 71 98 E1 D0 79 A3 C3 2A 01 43 71 10 60 00 48 6E EB 31 67 4B 8B C5 31 E9 50 8E 43 E2 E3
81 C7 01 4C 6F 77 8E 05 60 67 BF 77 E8 9B C9 46 70 1F 25 BE 5F A2 9E D7 12 0A 1A 19 4A 0C 6F 8A
FE 1D 64 0C 4A 99 56 BA 0F 16 D9 C2 7D 42 E7 4C F9 07 70 8B 54 55 7D 9B C3 3F 71 04 B1 F4 D1 88
7E 0B 98 46 9A CB 78 E7 CF F3 19 3E 3E 03 0C 91 C5 CB 8E 6D 9D 85 39 47 8C 25 20 0E 34 EA BC 79
81 D4 2C 57 54 40 F2 D2 91 69 11 E9 C9 94 97 C3 37 17 D2 91 63 D7 CC 49 9B F0 93 3B 00 A5 5F BF
23 F5 F2 0B F7 70 E0 72 00 13 66 A3 CE 54 F1 FD 12 01 A1 24 F6 C5 F0 F7 B7 F5 DA 89 CD ED CB 1F
99 3B 6F 56 35 FB FE 9F E1 6B F6 34 9E AB A4 AA CA 01 90 BB 57 0E 92 9A FA 2F 4B 5D 5D B7 32 FE
49 5D 5D 4C FC E4 0F C5 AF 3F 57 E7 CD 0B 74 F6 E7 DE D1 CA B2 D5 48 E8 1A 22 3A 3E FC 4F 5A 0F
40 10 AB 90 AA 2A 47 AA 1A E2 04 8E 09 82 96 B0 AD 69 CD 4E 4B 47 8B BF FC D3 90 1D 26 F4 2B 85
2B D4 9A C9 E4 62 59 58 FF F1 D6 AF 6B 12 57 4A F5 F2 71 6A C6 96 97 80 81 EC DA D9 9A 9F 4D 16
D7 1F 2F 7E FD E7 01 E2 A8 7E 0F 91 F3 80 EB 60 D8 17 F0 93 4D E4 A6 9D DF DB F3 AA FA 2B F1 93
7F 00 8E 6C 2D A7 84 B6 FA F8 4F 20 98 8D E8 14 86 8F 7F 53 AA EB 9F A2 AF 4E 44 39 84 F7 4B AE
10 B8 48 8B DB B4 CE 61 6B 89 07 CC 05 FD AA F8 C9 E7 50 5E 02 86 23 61 AE 66 D5 95 E1 EB F7 10
59 84 72 27 C3 C7 57 42 53 1F E0 18 F3 9B 98 F6 CC 9A FA 06 7E F2 AF C0 68 70 56 89 9F CC 4E B5
87 14 AC CF 0C 37 41 75 F2 09 84 B3 71 F4 79 F1 13 CF 83 F4 03 19 85 C8 56 59 52 77 12 D2 67 1E
CA 23 20 D5 E2 27 2A C1 79 37 9C 31 39 E2 27 6E 70 B4 B2 FC 77 66 AA C7 36 CC 14 6D 14 D0 02 F2
5D 1A D7 E4 3B 9B 6E 40 B9 1F 93 BF 32 7B 83 6E CF 0E 31 EA 4D DA 82 F2 05 4C B2 D1 A3 10 BD 04
38 04 78 0D 8D 7F AB CB C4 03 EA 95 2F 08 A7 72 1B 81 D3 10 AE 44 B8 08 78 15 B8 49 2B CB 17 03
50 59 7E 2F 22 37 63 76 A2 8E C7 10 BF 13 74 B6 7A 65 0F 81 79 52 40 6C 1A C8 4A F3 91 4F 82 B4
80 14 1C D5 A2 A0 48 E6 52 44 C3 9D 39 39 25 E4 64 13 2A 97 EA 55 15 9B 75 86 FB 28 AA D7 01 4D
E6 77 9D 08 38 A8 AC 20 D6 B2 A4 75 33 45 AA 1A E2 1C B9 6D 3C 4E 66 00 DB D3 CF B4 7D 60 B5 59
6C BC AC 9E 7B B2 F8 2B 8E 41 83 D1 68 E6 79 9D 39 E5 BD 7C C5 A4 AA 21 CE 51 EF 8F 23 23 23 70
82 97 99 31 E5 95 B6 C4 CB A2 07 CF 24 9D 09 74 66 F9 33 B9 6B F8 25 38 C3 4F 25 90 94 7A 93 9E
EF AC E1 66 E5 19 1F 43 09 6B 75 7A 59 87 E9 D5 E5 EE 95 7D 29 69 39 8D B8 64 08 1A 9F 6B 7D 4E
E5 97 5B 98 18 49 4C 8F A5 74 C0 6A B6 ED 28 A5 6F FC 04 44 B7 E8 D5 65 AF 4A 6D 43 29 E9 0F C6
93 49 EF D2 CA 29 7B CD A7 6C 64 30 8A 40 36 68 A5 BB 47 18 AC F8 75 83 71 FA 8C 25 23 03 C8 C4
D7 B4 4E D5 0B D9 C9 CA 27 7F 9F 15 22 80 D4 26 86 90 6A 51 F5 2A BA E4 38 DB 1B 71 40 A4 58 97
DA 86 52 52 B2 15 FA 34 13 6D 7E E6 FD 8A 83 56 CD 1E C4 41 F2 7B 10 5D 22 5F AA AA 1C 59 52 D7
69 96 56 A9 4D 0C 91 BB 57 0E EA F0 37 DF 2F 91 DA 86 D2 D6 B5 C0 E2 BA 43 F3 D7 01 02 22 F7 3C
7C 64 87 F5 EF 5E D9 57 6A 1B 4A 25 6F 19 2D BE 5F D2 D1 7A 42 6A 1B 4A A5 B6 A1 B4 7D D9 BA C1
E2 D7 75 18 BA D4 AA 5F 5D 5D 0C 40 16 3C 34 54 EE 5E B9 87 F7 9D DC 53 37 50 16 D5 0F EB 48 46
21 28 F6 81 FB 77 4C 00 C4 CD 40 7F 84 06 54 7F AC 5E 79 22 57 36 F9 25 CC FA E0 18 4C FE E1 35
C0 2A 88 CD 57 6F D2 96 B0 CC 2F 80 4B 41 6F 00 F9 22 26 FD FA 3F 81 85 78 EE 2D F8 89 5B 40 E6
62 A2 19 DF 46 E4 86 D0 D4 DB AC 9E 5B 2A 7E 72 35 70 2A 2A 17 6A 65 D9 6F DA 5C FB 15 60 10 8D
6B 86 67 4D 17 C6 FE AF CF 02 6F E1 B9 C7 50 9D 9C 86 70 27 C6 CC 1B 00 2F A0 BA 8A 4C 9F DB 5B
67 21 7E A2 D6 98 04 E4 D6 70 7A 78 06 F0 3E 48 AD 7A 65 73 A5 66 F9 89 E0 54 A3 9C 83 E9 00 9B
40 6E 56 AF AC A8 10 A6 62 7B FE 89 C0 6D 21 A9 01 CA 04 90 5F 49 75 FD 67 20 34 4B A0 B7 62 0E
13 58 0B FA 3C 66 EE 3B 17 49 77 10 A2 23 3F C0 E4 E8 69 02 06 A3 D2 80 9F 98 09 F2 1D 0C F1 DB
81 41 21 F1 6D B1 DC BC B4 AE B0 91 EA E5 E3 30 F3 FA 23 18 31 36 97 74 C3 E1 82 B0 6C 02 BF 6E
10 C2 77 30 1D E3 45 E0 59 E0 44 44 AE 27 D6 D2 81 4B BA DE 8A 21 BE C9 E8 21 0D E2 AF E8 8F 3A
BF 35 6D 67 1B C6 B8 38 02 B4 56 6A EA 8B CA 74 52 FC B0 23 7A 1B 3B 52 C3 08 F4 DF 30 C9 42 1D
24 B8 02 B2 B6 97 96 4F A0 72 AE 7A EE 38 F5 CA 4F 87 D8 28 20 85 CA 67 43 AB 63 5B AC 27 93 39
1E DE 3D 1C 47 4E 09 7B F1 55 E1 85 16 30 34 35 84 C6 C1 87 62 CE CC 6D A3 75 B0 CC 14 E1 A2 9C
5E B1 69 6D 0A B4 79 9F BD 41 CE 32 F5 2A 9A 48 A7 4E 07 39 5F 3D 77 AC 7A EE 99 94 A4 8E 03 76
21 9C 2D B5 89 FC 15 EE 26 34 76 22 8D 83 3F 84 06 A7 68 E5 E4 24 9A B9 16 63 AD 4C 40 6C 04 9E
7B 02 E6 1C 5F 50 BD 23 7F 28 EC 0C C5 92 BF 8B 98 73 87 CE AD D8 A5 33 CB D7 87 BB 38 80 B4 CE
FD D5 AB 68 D2 CA B2 55 B9 CF 93 DE C4 1C 66 10 63 FB EE FC E3 35 6A 74 D6 D4 D7 D5 F3 5A F4 9A
B2 30 3F BE 7C C8 68 26 4B B5 A2 22 A3 F3 26 A4 D1 A0 9D 7F BD 5E 33 65 1D F0 37 E0 63 E2 2F 0B
4F 71 D6 69 98 5E F8 07 94 29 02 62 7A 29 9F 02 FE C1 D0 E6 55 60 4C BE D9 3D 04 00 B3 6D 29 7F
07 A0 59 8F CD D3 6F A9 56 4E 7A 45 E7 4D 48 B7 59 64 9D 11 D6 5C A0 DE A4 9D 66 F1 F8 EE BD 98
5D B9 C3 A8 5E 51 70 3E B7 62 E7 F9 6F EA F4 B2 5C 02 B7 58 EC 2F 04 01 B4 D9 46 93 EA FA 99 88
7A 98 21 2A 2B DF 3C 04 63 4E 5E AF D0 0E 92 22 C9 40 50 48 A7 73 79 75 94 D7 F6 E8 4F AA CB 11
B9 09 8D 5D 20 FE 8A 67 80 D1 20 3F 42 78 0F D5 F9 2C 7A F0 0C 24 33 14 95 3E 40 BD 56 54 64 00
A4 A6 7E 3A 1A CC 01 39 11 C8 6E 54 18 FD 1C 69 7F 15 D1 97 F7 54 2F 1B 58 2D F5 E2 67 7D 7E 87
B5 91 D1 32 02 93 D6 7D 9F B0 BA C8 92 85 F5 67 E1 E8 02 60 37 CA B3 38 6A AC 9D 2A E7 51 F0 49
A1 6A 6C E7 71 CD CD 5A E2 DA 87 3D 2C EA CE 32 D0 9B CC D0 93 31 A6 60 47 1E 24 9D 7E 0F C7 99
4F 26 98 86 88 E9 14 62 86 29 59 94 38 15 95 C5 20 CD 08 AB 41 B7 84 FA 9D 0B 74 38 33 EB A0 95
A9 D0 52 F2 24 A2 7B 66 AA CD 50 F0 C1 36 76 57 B8 4E 30 03 04 54 2E 6A 3B F4 88 9F DC 44 E1 C7
B4 6E 07 86 41 EC 38 CC 89 40 90 89 7F 04 69 3F 2B D3 CA B2 D5 E2 27 37 62 02 94 47 03 EF F3 F6
21 AB 74 DE 84 B4 F8 C9 0D 88 4C 05 DD 0D 6C 67 77 A9 99 11 05 32 23 AC 5D A6 33 CA 7F DD 46 BF
37 28 98 7C 5D 07 8C 43 F5 7E F5 42 63 5E 17 61 79 91 E5 1C 11 4A FD B8 D4 D5 F5 11 90 70 53 7D
78 11 42 8C 8B 49 C0 8D E2 AF 38 46 16 2F 3B 16 D1 9B C2 DF F2 E7 C5 CB 31 DE 0F E3 81 47 B2 EE
1A C0 0A D0 8F 00 A3 51 79 B8 75 4F 42 B3 9E 12 72 5A 76 9D 20 7E FD B9 EC E9 5D D0 09 E4 29 F3
22 D7 C9 A2 07 CF 94 AA 86 B8 D4 D4 5F 26 7E B2 5E 16 D4 9F 54 44 3B 2D 93 AF 7A 5F F8 FA 23 B6
F6 79 1F 3F B9 1D 95 87 8B 93 21 3F 0E DF 4D 86 CC 06 32 B1 F5 E4 D2 09 B4 1F 93 03 5D DE E6 53
6E E7 4C 65 45 EB 7B 87 5C 19 D1 AC 07 C5 7F 92 6A DA 8A 9F FC 00 F4 F7 45 E9 37 B4 79 01 E8 B3
C0 58 82 E0 69 86 37 6D 0B A7 C2 93 89 E9 5D C5 88 2A 90 FC 74 0B B0 01 D5 F6 29 B4 D2 DA 8C F1
20 68 04 D0 4A F7 97 88 FE 3B B0 16 D3 4B DF 45 F4 36 CC D9 56 1B 42 39 80 6E 0E EB ED 71 D8 8B
56 96 2D 0B ED F6 7F C2 CC A3 57 85 CF 8C 0D E1 5F 0E 87 B5 3C 11 5E EB 0D 32 F1 5C 0A B0 54 C9
63 98 05 E1 6B C4 72 91 8E EA 95 27 8C 4B 0B 6B 30 6B 95 2D 08 DF 47 79 14 D8 40 20 A9 90 96 2D
E1 E7 3D C6 74 F3 E0 6E B9 00 E4 0E CC EC 2A 00 9E 03 F9 2E 43 53 93 3B E7 B1 3D FE 0F E4 2C B5
B8 3A B8 3B 5D 00 00 00 00 49 45 4E 44 AE 42 60 82 AC $EndBitmap
EndData
$EndBitmap
Wire Wire Line
5350 4600 5250 4600
Wire Wire Line
5350 4400 5250 4400
$Comp
L GND #PWR09
U 1 1 550CF9FF
P 5350 4700
F 0 "#PWR09" H 5350 4700 30 0001 C CNN
F 1 "GND" H 5350 4630 30 0001 C CNN
F 2 "" H 5350 4700 60 0000 C CNN
F 3 "" H 5350 4700 60 0000 C CNN
1 5350 4700
1 0 0 -1
$EndComp
Wire Wire Line
5350 4400 5350 4700
Connection ~ 5350 4600
Text Notes 5050 4800 0 40 ~ 0
chassis ground
$Comp
L GND #PWR010
U 1 1 550CFBE5
P 5350 6250
F 0 "#PWR010" H 5350 6250 30 0001 C CNN
F 1 "GND" H 5350 6180 30 0001 C CNN
F 2 "" H 5350 6250 60 0000 C CNN
F 3 "" H 5350 6250 60 0000 C CNN
1 5350 6250
1 0 0 -1
$EndComp
Text Notes 5150 6400 0 40 ~ 0
chassis ground
$Comp
L PWR_FLAG #FLG011
U 1 1 550CFBF4
P 5350 6150
F 0 "#FLG011" H 5350 6245 30 0001 C CNN
F 1 "PWR_FLAG" H 5350 6330 30 0000 C CNN
F 2 "" H 5350 6150 60 0000 C CNN
F 3 "" H 5350 6150 60 0000 C CNN
1 5350 6150
1 0 0 -1
$EndComp
Wire Wire Line
5350 6150 5350 6250
$Comp
L CONN_1 P5
U 1 1 550D1AD1
P 5000 6150
F 0 "P5" H 5080 6150 40 0000 L CNN
F 1 "GND" H 5000 6205 30 0001 C CNN
F 2 "mfk-AVA-20ga" H 5000 6150 60 0001 C CNN
F 3 "" H 5000 6150 60 0000 C CNN
1 5000 6150
-1 0 0 1
$EndComp
Wire Wire Line
5150 6150 5350 6150
$Comp
L C C2
U 1 1 550D2A54
P 6900 5500
F 0 "C2" H 6900 5600 40 0000 L CNN
F 1 "1u" H 6906 5415 40 0000 L CNN
F 2 "mfk-C_4.0_2.5_2.5_0.5" H 6938 5350 30 0001 C CNN
F 3 "TDK FK18X5R1A105K" H 6900 5500 60 0001 C CNN
1 6900 5500
1 0 0 -1
$EndComp
Wire Wire Line
6900 5150 6900 5300
$Comp
L DGND #PWR012
U 1 1 550D2ACA
P 6900 5800
F 0 "#PWR012" H 6900 5800 40 0001 C CNN
F 1 "DGND" H 6900 5730 40 0000 C CNN
F 2 "" H 6900 5800 60 0000 C CNN
F 3 "" H 6900 5800 60 0000 C CNN
1 6900 5800
1 0 0 -1
$EndComp
Wire Wire Line
6900 5800 6900 5700
NoConn ~ 8300 4400
NoConn ~ 8300 4850
Connection ~ 8450 5000
Wire Wire Line
8450 3750 8450 4100
Wire Wire Line
7600 3650 7600 3750
Connection ~ 7600 3750
Wire Wire Line
6900 4100 6750 4100
Wire Wire Line
6150 4150 6150 4400
Connection ~ 8450 4100
Wire Wire Line
8300 5150 8450 5150
Connection ~ 8450 5150
Wire Wire Line
6900 5000 6400 5000
Wire Wire Line
6400 5000 6400 6150
$Comp
L CONN_3 P3
U 1 1 551F2247
P 2750 1800
F 0 "P3" V 2700 1800 50 0000 C CNN
F 1 "PWR" V 2800 1800 40 0000 C CNN
F 2 "mfk-TE_282834-3" H 2750 1800 60 0001 C CNN
F 3 "" H 2750 1800 60 0000 C CNN
1 2750 1800
-1 0 0 -1
$EndComp
Wire Wire Line
3650 1800 3100 1800
Wire Wire Line
3100 1700 3350 1700
Wire Wire Line
3150 1250 3150 1700
Text Label 3150 1250 3 60 ~ 0
V_MOT
Wire Wire Line
6750 4100 6750 3750
Wire Wire Line
6750 5150 6750 6150
Text Label 6750 6150 1 60 ~ 0
V_MOT
$Comp
L PWR_FLAG #FLG013
U 1 1 551F243F
P 3350 1650
F 0 "#FLG013" H 3350 1745 30 0001 C CNN
F 1 "PWR_FLAG" H 3350 1830 30 0000 C CNN
F 2 "" H 3350 1650 60 0000 C CNN
F 3 "" H 3350 1650 60 0000 C CNN
1 3350 1650
-1 0 0 -1
$EndComp
Connection ~ 3150 1700
Wire Wire Line
3350 1700 3350 1650
$Comp
L JUMPER J1
U 1 1 552023B1
P 4750 1800
F 0 "J1" H 4750 1950 60 0000 C CNN
F 1 "PWR_BR" H 4750 1720 40 0000 C CNN
F 2 "mfk-SIL-2" H 4750 1800 60 0001 C CNN
F 3 "~" H 4750 1800 60 0000 C CNN
1 4750 1800
1 0 0 -1
$EndComp
$Comp
L +5VD #PWR014
U 1 1 552023F3
P 4400 1450
F 0 "#PWR014" H 4400 1400 20 0001 C CNN
F 1 "+5VD" H 4400 1550 50 0000 C CNN
F 2 "" H 4400 1450 60 0000 C CNN
F 3 "" H 4400 1450 60 0000 C CNN
1 4400 1450
-1 0 0 -1
$EndComp
Wire Wire Line
4450 1800 4400 1800
Wire Wire Line
4400 1800 4400 1450
Text Label 5100 1350 3 60 ~ 0
V_MOT
Wire Wire Line
5050 1800 5100 1800
Wire Wire Line
5100 1800 5100 1350
Text Notes 4000 2000 0 60 ~ 0
Use jumper to power motor from +5VD.
$EndSCHEMATC

View File

@@ -0,0 +1,69 @@
EESchema Schematic File Version 2
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:special
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:relays
LIBS:w_relay
LIBS:ultimate-temp-controller-cache
EELAYER 25 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 2
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Sheet
S 1400 2100 2150 2000
U 54E5B803
F0 "controller" 60
F1 "controller.sch" 60
F2 "TC+" I L 1400 2300 60
F3 "TC-" I L 1400 2400 60
F4 "VCC" I L 1400 3750 60
F5 "GND" I L 1400 3900 60
F6 "RS485A" I R 3550 3700 60
F7 "RS485B" I R 3550 3800 60
F8 "DRAIN" O R 3550 3300 60
F9 "+5V" O R 3550 2250 60
F10 "SDA" B R 3550 2350 60
F11 "SCL" B R 3550 2450 60
F12 "GND" O R 3550 2550 60
F13 "RELAY_NO" I R 3550 2850 60
F14 "RELAY_COM" I R 3550 3050 60
F15 "RELAY_NC" I R 3550 2950 60
$EndSheet
$EndSCHEMATC

75
samples/Lean/binary.lean Normal file
View File

@@ -0,0 +1,75 @@
/-
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Module: algebra.binary
Authors: Leonardo de Moura, Jeremy Avigad
General properties of binary operations.
-/
import logic.eq
open eq.ops
namespace binary
section
variable {A : Type}
variables (op₁ : A A A) (inv : A A) (one : A)
local notation a * b := op₁ a b
local notation a ⁻¹ := inv a
local notation 1 := one
definition commutative := a b, a * b = b * a
definition associative := a b c, (a * b) * c = a * (b * c)
definition left_identity := a, 1 * a = a
definition right_identity := a, a * 1 = a
definition left_inverse := a, a⁻¹ * a = 1
definition right_inverse := a, a * a⁻¹ = 1
definition left_cancelative := a b c, a * b = a * c b = c
definition right_cancelative := a b c, a * b = c * b a = c
definition inv_op_cancel_left := a b, a⁻¹ * (a * b) = b
definition op_inv_cancel_left := a b, a * (a⁻¹ * b) = b
definition inv_op_cancel_right := a b, a * b⁻¹ * b = a
definition op_inv_cancel_right := a b, a * b * b⁻¹ = a
variable (op₂ : A A A)
local notation a + b := op₂ a b
definition left_distributive := a b c, a * (b + c) = a * b + a * c
definition right_distributive := a b c, (a + b) * c = a * c + b * c
end
context
variable {A : Type}
variable {f : A A A}
variable H_comm : commutative f
variable H_assoc : associative f
infixl `*` := f
theorem left_comm : a b c, a*(b*c) = b*(a*c) :=
take a b c, calc
a*(b*c) = (a*b)*c : H_assoc
... = (b*a)*c : H_comm
... = b*(a*c) : H_assoc
theorem right_comm : a b c, (a*b)*c = (a*c)*b :=
take a b c, calc
(a*b)*c = a*(b*c) : H_assoc
... = a*(c*b) : H_comm
... = (a*c)*b : H_assoc
end
context
variable {A : Type}
variable {f : A A A}
variable H_assoc : associative f
infixl `*` := f
theorem assoc4helper (a b c d) : (a*b)*(c*d) = a*((b*c)*d) :=
calc
(a*b)*(c*d) = a*(b*(c*d)) : H_assoc
... = a*((b*c)*d) : H_assoc
end
end binary

70
samples/Lean/set.hlean Normal file
View File

@@ -0,0 +1,70 @@
-- Copyright (c) 2015 Jakob von Raumer. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Authors: Jakob von Raumer
-- Category of sets
import .basic types.pi trunc
open truncation sigma sigma.ops pi function eq morphism precategory
open equiv
namespace precategory
universe variable l
definition set_precategory : precategory.{l+1 l} (Σ (A : Type.{l}), is_hset A) :=
begin
fapply precategory.mk.{l+1 l},
intros, apply (a.1 → a_1.1),
intros, apply trunc_pi, intros, apply b.2,
intros, intro x, exact (a_1 (a_2 x)),
intros, exact (λ (x : a.1), x),
intros, apply funext.path_pi, intro x, apply idp,
intros, apply funext.path_pi, intro x, apply idp,
intros, apply funext.path_pi, intro x, apply idp,
end
end precategory
namespace category
universe variable l
local attribute precategory.set_precategory.{l+1 l} [instance]
definition set_category_equiv_iso (a b : (Σ (A : Type.{l}), is_hset A))
: (a ≅ b) = (a.1 ≃ b.1) :=
/-begin
apply ua, fapply equiv.mk,
intro H,
apply (isomorphic.rec_on H), intros (H1, H2),
apply (is_iso.rec_on H2), intros (H3, H4, H5),
fapply equiv.mk,
apply (isomorphic.rec_on H), intros (H1, H2),
exact H1,
fapply is_equiv.adjointify, exact H3,
exact sorry,
exact sorry,
end-/ sorry
definition set_category : category.{l+1 l} (Σ (A : Type.{l}), is_hset A) :=
/-begin
assert (C : precategory.{l+1 l} (Σ (A : Type.{l}), is_hset A)),
apply precategory.set_precategory,
apply category.mk,
assert (p : (λ A B p, (set_category_equiv_iso A B) ▹ iso_of_path p) = (λ A B p, @equiv_path A.1 B.1 p)),
apply is_equiv.adjointify,
intros,
apply (isomorphic.rec_on a_1), intros (iso', is_iso'),
apply (is_iso.rec_on is_iso'), intros (f', f'sect, f'retr),
fapply sigma.path,
apply ua, fapply equiv.mk, exact iso',
fapply is_equiv.adjointify,
exact f',
intros, apply (f'retr ▹ _),
intros, apply (f'sect ▹ _),
apply (@is_hprop.elim),
apply is_trunc_is_hprop,
intros,
end -/ sorry
end category

48
samples/Limbo/cat.b Normal file
View File

@@ -0,0 +1,48 @@
implement Cat;
include "sys.m";
sys: Sys;
include "draw.m";
Cat: module
{
init: fn(ctxt: ref Draw->Context, argv: list of string);
};
stdout: ref Sys->FD;
init(nil: ref Draw->Context, args: list of string)
{
sys = load Sys Sys->PATH;
stdout = sys->fildes(1);
args = tl args;
if(args == nil)
args = "-" :: nil;
for(; args != nil; args = tl args){
file := hd args;
if(file != "-"){
fd := sys->open(file, Sys->OREAD);
if(fd == nil){
sys->fprint(sys->fildes(2), "cat: cannot open %s: %r\n", file);
raise "fail:bad open";
}
cat(fd, file);
}else
cat(sys->fildes(0), "<stdin>");
}
}
cat(fd: ref Sys->FD, file: string)
{
buf := array[Sys->ATOMICIO] of byte;
while((n := sys->read(fd, buf, len buf)) > 0)
if(sys->write(stdout, buf, n) < n) {
sys->fprint(sys->fildes(2), "cat: write error: %r\n");
raise "fail:write error";
}
if(n < 0) {
sys->fprint(sys->fildes(2), "cat: error reading %s: %r\n", file);
raise "fail:read error";
}
}

26
samples/Limbo/lock.b Normal file
View File

@@ -0,0 +1,26 @@
implement Lock;
include "sys.m";
sys: Sys;
include "lock.m";
Semaphore.obtain(l: self ref Semaphore)
{
l.c <-= 0;
}
Semaphore.release(l: self ref Semaphore)
{
<-l.c;
}
Semaphore.new(): ref Semaphore
{
l := ref Semaphore;
l.c = chan[1] of int;
return l;
}
init()
{
}

13
samples/Limbo/lock.m Normal file
View File

@@ -0,0 +1,13 @@
Lock: module
{
PATH: con "/dis/lib/lock.dis";
Semaphore: adt {
c: chan of int;
obtain: fn(nil: self ref Semaphore);
release: fn(nil: self ref Semaphore);
new: fn(): ref Semaphore;
};
init: fn();
};

278
samples/MUF/39.m Normal file
View File

@@ -0,0 +1,278 @@
$include $lib/strings
$include $lib/match
lvar check-obj-addr
: check-next-loop (d -- )
dup not if pop exit then
dup exit? over thing? or
me @ 3 pick .controls and if
dup check-obj-addr @ execute
then
next check-next-loop
;
: check-contents (d -- )
contents check-next-loop
;
: check-exits (d -- )
exits check-next-loop
;
: exec-err (d mtypestr warnstr -- )
"On " 4 rotate unparseobj strcat
", in it's " strcat rot strcat
", " strcat swap strcat .tell
;
: can-linkto? (player object -- i)
dup "link_ok" flag? if pop pop 1 exit then
.controls
;
: check-exec (d mtype execstr -- )
dup "@" 1 strncmp if pop pop pop exit then
1 strcut swap pop
" " .split pop
dup "$" 1 strncmp not if
dup match ok? not if
" is not a known registered program." strcat
exec-err exit
then
dup match program? not if
" is not a program." strcat
exec-err exit
then
3 pick owner over match can-linkto? not if
" is not Link_OK." strcat
exec-err exit
then
else
dup number? not if
" is not a program dbref." strcat
"@" swap strcat exec-err exit
then
dup atoi dbref ok? not if
" is not a valid program reference." strcat
"@" swap strcat exec-err exit
then
dup atoi dbref program? not if
" is not a valid program reference." strcat
"@" swap strcat exec-err exit
then
3 pick owner over atoi dbref can-linkto? not if
" is not Link_OK." strcat
"@" swap strcat exec-err exit
then
then
pop pop pop
;
: missing-err ( d s -- )
swap unparseobj
" is missing an "
strcat swap strcat
" message." strcat .tell
;
: colon-err ( d s -- )
swap unparseobj
" has an unnecesary ':' at the start of its "
strcat swap strcat
" message." strcat .tell
;
: check-desc (d -- )
dup desc not if
"@description" missing-err
else
"@description" over
desc check-exec
then
;
: check-succ (d -- )
dup succ not if
"@success" missing-err
else
"@success" over
succ check-exec
then
;
: check-fail (d -- )
dup fail not if
"@fail" missing-err
else
"@fail" over
fail check-exec
then
;
: check-drop (d -- )
dup drop not if
"@drop" missing-err
else
"@drop" over
drop check-exec
then
;
: check-osucc (d -- )
dup osucc not if
"@osuccess" missing-err
else
dup osucc ":" 1 strncmp not if
"@osuccess" colon-err
else pop
then
then
;
: check-ofail (d -- )
dup ofail not if
"@ofail" missing-err
else
dup ofail ":" 1 strncmp not if
"@ofail" colon-err
else pop
then
then
;
: check-odrop (d -- )
dup odrop not if
"@odrop" missing-err
else
dup odrop ":" 1 strncmp not if
"@odrop" colon-err
else pop
then
then
;
$define islocked? (d -- i) getlockstr "*UNLOCKED*" stringcmp $enddef
: islocked_always? (d -- i)
getlockstr dup "#0" stringcmp not if pop 1 exit then
dup "#" STRsplit swap pop atoi
"#" swap intostr strcat
(lockstr "#dbref")
dup "&!" over strcat strcat
3 pick stringcmp not if pop pop 1 exit then
"&" over strcat strcat "!" swap strcat
stringcmp not if 1 exit then
0
;
: check-link ( d -- )
dup getlink not if
dup unparseobj " is unlinked." strcat .tell
else
dup getlink over location dbcmp if
dup islocked? not if
dup unparseobj
" is linked to it's location, but is unlocked."
strcat .tell
then
else (is not linked to it's location)
dup getlink program? if
dup dup owner swap getlink can-linkto? not if
dup unparseobj
" is linked to a program which is not Link_OK."
strcat .tell
then
then
then
then
pop
;
: check-room (d -- )
dup check-desc
dup islocked? if
dup islocked_always? not if
dup check-succ
then
dup check-fail
then
dup getlink if
dup check-drop
dup check-odrop
then
dup check-contents
check-exits
;
: check-exit ( d -- )
dup check-link
dup check-desc
dup getlink dup ok? if
program? not if
dup islocked_always? not if
dup check-succ
dup check-osucc
dup check-odrop
then
dup islocked? if
dup check-fail
dup check-ofail
then
then
else pop
then
pop
;
: check-thing ( d -- )
dup check-desc
dup islocked_always? not if
dup check-succ
dup check-osucc
then
dup islocked? if
dup check-fail
dup check-ofail
then
dup check-drop
dup check-odrop
check-exits
;
: check-player ( d -- )
dup check-desc
dup islocked_always? not if
dup check-succ
dup check-osucc
then
dup islocked? if
dup check-fail
dup check-ofail
then
dup check-contents
check-exits
;
: check-program ( d -- )
check-desc
;
: check-obj (d -- )
dup room? if check-room exit then
dup exit? if check-exit exit then
dup thing? if check-thing exit then
dup player? if check-player exit then
check-program
;
: main
'check-obj check-obj-addr !
.strip dup not if pop "here" then
.match_controlled
dup #-3 dbcmp if pop me @ getlink then
dup ok? not if pop exit then
check-obj
me @ "Check done." notify
;

275
samples/MUF/cmd-say.muf Normal file
View File

@@ -0,0 +1,275 @@
@program cmd-say.muf
1 1000 d
i
( cmd-say.muf by Natasha@HLM
Copyright 2002-2004 Natasha Snunkmeox. Copyright 2002-2004 Here Lie Monsters.
"@view $box/mit" for license information.
)
$author Natasha Snunkmeox <natmeox@neologasm.org>
$note Say for Fuzzball 6.
$version 1.0
$include $lib/ignore
$include $lib/strings
$include $lib/match
$def str_program "saypose"
$def prop_third "_prefs/say/third"
$def prop_quotes "_say/def/quotes"
$def prop_overb "_say/def/osay"
$def prop_verb "_say/def/say"
$def prop_split "_prefs/say/split"
$def prop_color "_prefs/say/color"
$def prop_meow "_prefs/say/meow"
lvar randomWord
lvar verb
lvar overb
lvar lquo
lvar rquo
lvar splitsay
: rtn-getThirdVerb[ var:overb -- ]
( Get the third-person verb. )
me @ prop_overb getpropstr dup if ( str strOverb )
strip dup dup "," instr not and if "," strcat then
else pop "says," then ( str strOverb )
me @ "%D %s" fmtstring overb @ ! ( str )
;
: rtn-getFirstVerb[ var:verb var:overb -- ]
me @ prop_third getpropstr .yes? not if ( str )
( Get the first-person verb. )
me @ prop_verb getpropstr dup if ( str strVerb )
strip dup dup "," instr not and if "," strcat then
else pop "say," then ( str strVerb )
splitsay @ if "you %s" else "You %s" then fmtstring ( str strVerb )
else overb @ @ then verb @ ! ( str )
;
: rtn-getQuotes[ var:lquo var:rquo -- ]
me @ prop_quotes getpropstr dup "%m" instr if ( strQuotes )
"%m" split ( strLquo strRquo )
else pop "\"" dup then ( strLquo strRquo )
rquo @ ! lquo @ ! ( )
;
: do-say ( str -- )
"" randomWord !
var who
var exclude
( Ignoring? Get 'em outta here. )
loc @ contents_array ( str arrHere )
dup me @ str_program array_get_ignorers ( str arrHere arrIgnorers )
dup exclude !
swap array_diff who !
( Anyone #meowing this player? Go ahead and notify before special formatting. )
who @ prop_meow me @ owner "*{%d}*" fmtstring array_filter_prop ( str arrMeow )
dup if ( str arrMeow )
dup who @ array_diff who ! ( str arrMeow )
dup exclude @ array_union exclude ! ( str arrMeow )
over ansi_strip ( str arrMeow str )
"\\b[A-Z0-9_]+\\b" "MEOW" REG_ALL regsub ( str arrMeow str' )
"\\b[A-Z0-9_][A-Za-z0-9_]*[a-z][A-Za-z0-9_]*\\b" "Meow" REG_ALL regsub ( str arrMeow str' )
"\\b[a-z_][A-Za-z0-9_]*\\b" "meow" REG_ALL regsub ( str arrMeow str' )
me @ "%D meows, \"%s\"" fmtstring ( str arrMeow str" )
1 array_make swap array_notify ( str )
else pop then ( str )
var msg
dup ",," instr ( str boolCommas )
me @ prop_split getpropstr .no? not ( str boolCommas boolSplitOK )
and if ( str )
",," split ( str- -str )
( User-supplied verb? )
dup ",," instr if
",," split ( str- strVerb -str )
swap dup if ( str- -str strVerb )
strip ( str- -str strVerb )
dup me @ name instr over tolower "%n" instr or if ( str- -str strVerb )
"%n" "%N" subst me @ name "%n" subst ( str- -str strVerb )
else
me @ swap "%s %D," fmtstring ( str- -str -str- )
then ( str- -str -str- )
dup "*[-!.,:;]" smatch not if "," strcat then ( str- -str -str- )
dup verb ! overb ! ( str- -str )
else pop then ( str- -str )
then ( str- -str )
2 array_make ( arrMsg )
1
else 0 then splitsay ! msg !
verb @ string? not if
overb rtn-getThirdVerb
verb overb rtn-getFirstVerb
then
lquo rquo rtn-getQuotes ( str )
( Say. )
msg @ string? if
rquo @ msg @ lquo @ ( strRquo strMsg strLquo )
"%s %s%s%s" ( strRquo strMsg strLquo strFormat )
4 dupn
verb @ swap fmtstring .tell ( strRquo strMsg strLquo strFormat )
overb @ swap fmtstring ( strOsay )
else
rquo @ msg @ array_vals pop ( strRquo strMsg strMsg2 )
swap dup "*[-!.,:;]" smatch not if "," strcat then swap ( strRquo strMsg strMsg2 )
( Only handle strMsg if there's no strMsg2. )
dup if ( strRquo strMsg strMsg2 )
swap ( strRquo strMsg2 strMsg )
lquo @ swap rquo @ swap lquo @ ( strRquo strMsg2 strLquo strRquo strMsg' strLquo )
"%s%s%s %s %s%s%s" ( strRquo strMsg2 strLquo strRquo strMsg' strLquo strFormat )
7
else ( strRquo strMsg strMsg2 )
pop lquo @ ( strRquo strMsg' strLquo )
"%s%s%s %s" ( strRquo strMsg' strLquo strFormat )
verb @ ",$" "." 0 regsub verb !
overb @ ",$" "." 0 regsub overb !
4
then ( ... strRquo strMsg strLquo strFormat intDepth )
dupn
verb @ -5 rotate fmtstring .tell ( ... strRquo strMsg strLquo strFormat )
overb @ -5 rotate fmtstring ( strOsay )
then ( strOsay )
( Is there color to avoid? )
dup "\[[" instr if
who @ prop_color "{n*|0}" array_filter_prop ( strOsay arrGreyed )
dup if ( strOsay arrGreyed )
over ansi_strip 1 array_make ( strOsay arrGreyed arrMsg )
over array_notify ( strOsay arrGreyed )
exclude @ array_union exclude ! ( strOsay )
else pop then ( strOsay )
then ( strOsay )
loc @ ( strOsay db )
exclude @ array_vals ( strOsay db dbExcludeN..dbExclude1 intN )
me @ swap ++ ( strOsay db dbGreyedN..dbGreyed1' intN' )
dup 3 + rotate ( db dbGreyedN..dbGreyed1 intN strOsay )
notify_exclude ( )
;
: do-help pop pop .showhelp ;
: do-ignore pop str_program cmd-ignore-add ;
: do-unignore pop str_program cmd-ignore-del ;
: do-third ( strY strZ -- )
pop pop ( )
me @ prop_third "yes" setprop
me @ "You will see your own says in the third person (\"%D says\")." fmtstring .tellgood
;
: do-unthird ( strY strZ -- )
pop pop ( )
me @ prop_third remove_prop
"You will see your own says in the second person (\"You say\")." .tellgood
;
: do-grey ( strY strZ -- )
pop pop ( )
me @ prop_color "no" setprop
me @ "You will not see color in any says. Note you will see color in your own says." fmtstring .tellgood
;
: do-ungrey ( strY strZ -- )
pop pop ( )
me @ prop_color remove_prop
"You will see color in says." .tellgood
;
: do-meow ( strY strZ -- )
pop ( strY )
dup if
.noisy_pmatch dup ok? not if pop exit then ( db )
me @ prop_meow 3 pick reflist_find if ( db )
"%D is already in your #meow list." fmtstring .tellbad exit ( )
then ( db )
me @ prop_meow 3 pick reflist_add ( db )
"%D added." fmtstring .tellgood
else
me @ prop_meow array_get_reflist ( arr )
"" swap foreach swap pop "%D %s" fmtstring repeat
"Your meowlist: " swap strcat .tellgood
then
;
: do-unmeow ( strY strZ -- )
pop ( strY )
.noisy_pmatch dup ok? not if pop exit then ( db )
me @ prop_meow 3 pick reflist_find not if ( db )
"%D is not in your #meow list." fmtstring .tellbad exit ( )
then ( db )
me @ prop_meow 3 pick reflist_del ( db )
"%D removed." fmtstring .tellgood
;
$define dict_commands {
"help" 'do-help
"ignore" 'do-ignore
"!ignore" 'do-unignore
"meow" 'do-meow
"!meow" 'do-unmeow
"third" 'do-third
"!third" 'do-unthird
"grey" 'do-grey
"gray" 'do-grey
"!grey" 'do-ungrey
"!gray" 'do-ungrey
}dict $enddef
: main ( str -- )
dup STRparse ( str strX strY strZ )
3 pick string? if 3 pick "#" stringpfx if ( str strX strY strZ )
pop pop pop ( str )
"#" split strcat ( str' )
do-say exit ( )
then then
3 pick int? if pop pop pop do-say exit then
4 rotate pop ( strX strY strZ )
rot dict_commands over array_getitem ( strY strZ strX ? )
dup address? if ( strY strZ strX adr )
swap pop ( strY strZ adr )
execute ( )
else pop ( strY strZ strX )
"I don't recognize the command '#%s'. Try 'say #help' for help, or using '##' to say something starting with '#'." fmtstring .tellbad ( strY strZ )
pop pop ( )
then ( )
;
.
c
q
lsedit #257=_help
.del 1 $
say <message>
."<message>
say #[!]ignore <names>
say #[!]third
say #[!]grey
say #[!]meow <names>
Speaks <message> to the room. Use #ignore <name> to not see <name>'s says, poses, and spoofs; use #meow <name> to see <name>'s says with all the words replaced with "meow." Use #third to see your own says in the third person (that is, "Puck says" instead of the normal "You say"). Use #grey to turn off color in others' says and poses.
Say supports a "split" say if you put two consecutive commas in your message. For example, if CobaltBlue typed '"Hello,,how are you?' everyone would see '"Hello," says CobaltBlue, "how are you?"' You can also specify an "ad-hoc" verb by putting a message with your name or '%N' between pairs of commas: '"Hello,,%N welcomes Weiran,,how are you?' would display '"Hello," CobaltBlue welcomes Weiran, "how are you?"'
.format 10=78
.format 8=78
.end

View File

@@ -0,0 +1,159 @@
# $NetBSD$
S= ${.CURDIR}/../../../../..
NOMAN=
PROG?= boot
NEWVERSWHAT?= "BIOS Boot"
VERSIONFILE?= ${.CURDIR}/../version
AFLAGS.biosboot.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:}
SOURCES?= biosboot.S boot2.c conf.c devopen.c exec.c
SRCS= ${SOURCES}
.if !make(depend)
SRCS+= vers.c
.endif
PIE_CFLAGS=
PIE_AFLAGS=
PIE_LDFLAGS=
.include <bsd.own.mk>
STRIPFLAG= # nothing
LIBCRT0= # nothing
LIBCRTI= # nothing
LIBCRTBEGIN= # nothing
LIBCRTEND= # nothing
LIBC= # nothing
BINDIR=/usr/mdec
BINMODE=444
.PATH: ${.CURDIR}/.. ${.CURDIR}/../../lib
LDFLAGS+= -nostdlib -Wl,-N -Wl,-e,boot_start
CPPFLAGS+= -I ${.CURDIR}/.. -I ${.CURDIR}/../../lib -I ${S}/lib/libsa
CPPFLAGS+= -I ${.OBJDIR}
# Make sure we override any optimization options specified by the user
COPTS= -Os
.if ${MACHINE_ARCH} == "x86_64"
LDFLAGS+= -Wl,-m,elf_i386
AFLAGS+= -m32
CPUFLAGS= -m32
LIBKERN_ARCH=i386
KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386"
.else
CPUFLAGS= -march=i386 -mtune=i386
.endif
CFLAGS+= -mno-sse -mno-sse2 -mno-sse3
COPTS+= -ffreestanding
CFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes
CPPFLAGS+= -nostdinc -D_STANDALONE
CPPFLAGS+= -I$S
CPPFLAGS+= -DSUPPORT_PS2
CPPFLAGS+= -DDIRECT_SERIAL
CPPFLAGS+= -DSUPPORT_SERIAL=boot_params.bp_consdev
CPPFLAGS+= -DCONSPEED=boot_params.bp_conspeed
CPPFLAGS+= -DCONSADDR=boot_params.bp_consaddr
CPPFLAGS+= -DCONSOLE_KEYMAP=boot_params.bp_keymap
CPPFLAGS+= -DSUPPORT_CD9660
CPPFLAGS+= -DSUPPORT_USTARFS
CPPFLAGS+= -DSUPPORT_DOSFS
CPPFLAGS+= -DSUPPORT_EXT2FS
#CPPFLAGS+= -DSUPPORT_MINIXFS3
CPPFLAGS+= -DPASS_BIOSGEOM
CPPFLAGS+= -DPASS_MEMMAP
#CPPFLAGS+= -DBOOTPASSWD
CPPFLAGS+= -DEPIA_HACK
#CPPFLAGS+= -DDEBUG_MEMSIZE
#CPPFLAGS+= -DBOOT_MSG_COM0
CPPFLAGS+= -DLIBSA_ENABLE_LS_OP
# The biosboot code is linked to 'virtual' address of zero and is
# loaded at physical address 0x10000.
# XXX The heap values should be determined from _end.
SAMISCCPPFLAGS+= -DHEAP_START=0x40000 -DHEAP_LIMIT=0x70000
SAMISCCPPFLAGS+= -DLIBSA_PRINTF_LONGLONG_SUPPORT
SAMISCMAKEFLAGS+= SA_USE_CREAD=yes # Read compressed kernels
SAMISCMAKEFLAGS+= SA_INCLUDE_NET=no # Netboot via TFTP, NFS
CPPFLAGS+= -Wno-pointer-sign
# CPPFLAGS+= -DBOOTXX_RAID1_SUPPORT
I386_STAND_DIR?= $S/arch/i386/stand
### find out what to use for libi386
I386DIR= ${I386_STAND_DIR}/lib
.include "${I386DIR}/Makefile.inc"
LIBI386= ${I386LIB}
### find out what to use for libsa
SA_AS= library
SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
SAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
.include "${S}/lib/libsa/Makefile.inc"
LIBSA= ${SALIB}
### find out what to use for libkern
KERN_AS= library
.include "${S}/lib/libkern/Makefile.inc"
LIBKERN= ${KERNLIB}
### find out what to use for libz
Z_AS= library
.include "${S}/lib/libz/Makefile.inc"
LIBZ= ${ZLIB}
LDSCRIPT ?= $S/arch/i386/conf/stand.ldscript
cleandir distclean: .WAIT cleanlibdir
cleanlibdir:
-rm -rf lib
LIBLIST= ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LIBSA}
# LIBLIST= ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA} ${LIBZ} ${LIBKERN}
CLEANFILES+= ${PROG}.tmp ${PROG}.map ${PROG}.sym vers.c
vers.c: ${VERSIONFILE} ${SOURCES} ${LIBLIST} ${.CURDIR}/../Makefile.boot
${HOST_SH} ${S}/conf/newvers_stand.sh ${VERSIONFILE} x86 ${NEWVERSWHAT}
# Anything that calls 'real_to_prot' must have a %pc < 0x10000.
# We link the program, find the callers (all in libi386), then
# explicitly pull in the required objects before any other library code.
${PROG}: ${OBJS} ${LIBLIST} ${.CURDIR}/../Makefile.boot
${_MKTARGET_LINK}
bb="$$( ${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -Wl,-cref \
${OBJS} ${LIBLIST} | ( \
while read symbol file; do \
[ -z "$$file" ] && continue; \
[ "$$symbol" = real_to_prot ] && break; \
done; \
while \
oifs="$$IFS"; \
IFS='()'; \
set -- $$file; \
IFS="$$oifs"; \
[ -n "$$2" ] && echo "${I386DST}/$$2"; \
read file rest && [ -z "$$rest" ]; \
do :; \
done; \
) )"; \
${CC} -o ${PROG}.sym ${LDFLAGS} -Wl,-Ttext,0 -T ${LDSCRIPT} \
-Wl,-Map,${PROG}.map -Wl,-cref ${OBJS} $$bb ${LIBLIST}
${OBJCOPY} -O binary ${PROG}.sym ${PROG}
.include <bsd.prog.mk>
KLINK_MACHINE= i386
.include <bsd.klinks.mk>

5
samples/Makefile/foo.o.d Normal file
View File

@@ -0,0 +1,5 @@
bar/foo.o: \
bar/foo.c \
bar/baz.h
bar/baz.h:

View File

@@ -0,0 +1,150 @@
(* ::Package:: *)
BeginPackage["Predicates`"];
(* ::Title:: *)
(*Predicates*)
(* ::Section::Closed:: *)
(*Fuzzy Logic*)
(* ::Subsection:: *)
(*Documentation*)
PossiblyTrueQ::usage="Returns True if the argument is not definitely False.";
PossiblyFalseQ::usage="Returns True if the argument is not definitely True.";
PossiblyNonzeroQ::usage="Returns True if and only if its argument is not definitely zero.";
(* ::Subsection:: *)
(*Implimentation*)
Begin["`Private`"];
PossiblyTrueQ[expr_]:=\[Not]TrueQ[\[Not]expr]
PossiblyFalseQ[expr_]:=\[Not]TrueQ[expr]
End[];
(* ::Section::Closed:: *)
(*Numbers and Lists*)
(* ::Subsection:: *)
(*Documentation*)
AnyQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for at least one element of the list.";
AnyElementQ::usage="Returns True if cond matches any element of L.";
AllQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for all elements of the list.";
AllElementQ::usage="Returns True if cond matches any element of L.";
AnyNonzeroQ::usage="Returns True if L is a list such that at least one element is definitely not zero.";
AnyPossiblyNonzeroQ::usage="Returns True if expr is a list such that at least one element is not definitely zero.";
RealQ::usage="Returns True if and only if the argument is a real number";
PositiveQ::usage="Returns True if and only if the argument is a positive real number";
NonnegativeQ::usage="Returns True if and only if the argument is a non-negative real number";
PositiveIntegerQ::usage="Returns True if and only if the argument is a positive integer";
NonnegativeIntegerQ::usage="Returns True if and only if the argument is a non-negative integer";
IntegerListQ::usage="Returns True if and only if the input is a list of integers.";
PositiveIntegerListQ::usage="Returns True if and only if the input is a list of positive integers.";
NonnegativeIntegerListQ::usage="Returns True if and only if the input is a list of non-negative integers.";
IntegerOrListQ::usage="Returns True if and only if the input is a list of integers or an integer.";
PositiveIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer.";
NonnegativeIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer.";
SymbolQ::usage="Returns True if argument is an unassigned symbol.";
SymbolOrNumberQ::usage="Returns True if argument is a number of has head 'Symbol'";
(* ::Subsection:: *)
(*Implimentation*)
Begin["`Private`"];
AnyQ[cond_, L_] := Fold[Or, False, cond /@ L]
AnyElementQ[cond_,L_]:=AnyQ[cond,Flatten[L]]
AllQ[cond_, L_] := Fold[And, True, cond /@ L]
AllElementQ[cond_, L_] := Fold[And, True, cond /@ L]
AnyNonzeroQ[L_]:=AnyElementQ[#!=0&,L]
PossiblyNonzeroQ[expr_]:=PossiblyTrueQ[expr!=0]
AnyPossiblyNonzeroQ[expr_]:=AnyElementQ[PossiblyNonzeroQ,expr]
RealQ[n_]:=TrueQ[Im[n]==0];
PositiveQ[n_]:=Positive[n];
PositiveIntegerQ[n_]:=PositiveQ[n]\[And]IntegerQ[n];
NonnegativeQ[n_]:=TrueQ[RealQ[n]&&n>=0];
NonnegativeIntegerQ[n_]:=NonnegativeQ[n]\[And]IntegerQ[n];
IntegerListQ[input_]:=ListQ[input]&&Not[MemberQ[IntegerQ/@input,False]];
IntegerOrListQ[input_]:=IntegerListQ[input]||IntegerQ[input];
PositiveIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[Positive[input],False]];
PositiveIntegerOrListQ[input_]:=PositiveIntegerListQ[input]||PositiveIntegerQ[input];
NonnegativeIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[NonnegativeIntegerQ[input],False]];
NonnegativeIntegerOrListQ[input_]:=NonnegativeIntegerListQ[input]||NonnegativeIntegerQ[input];
SymbolQ[a_]:=Head[a]===Symbol;
SymbolOrNumberQ[a_]:=NumericQ[a]||Head[a]===Symbol;
End[];
(* ::Section:: *)
(*Epilogue*)
EndPackage[];

View File

@@ -0,0 +1,17 @@
BeginTestSection["Untitled-5"]
VerificationTest[(* 1 *)
RotationMatrix[phi]
,
List[List[Cos[phi], Times[-1, Sin[phi]]], List[Sin[phi], Cos[phi]]]
]
VerificationTest[(* 2 *)
Times[1, Power[Plus[a, Times[-1, a]], -1]]
,
ComplexInfinity
,
{Power::infy}
]
EndTestSection[]

84
samples/NL/assign0.nl Normal file
View File

@@ -0,0 +1,84 @@
g3 0 1 0 # problem assign0
9 6 1 0 6 # vars, constraints, objectives, ranges, eqns
0 0 # nonlinear constraints, objectives
0 0 # network constraints: nonlinear, linear
0 0 0 # nonlinear vars in constraints, objectives, both
0 0 0 1 # linear network variables; functions; arith, flags
9 0 0 0 0 # discrete variables: binary, integer, nonlinear (b,c,o)
18 9 # nonzeros in Jacobian, gradients
0 0 # max name lengths: constraints, variables
0 0 0 0 0 # common exprs: b,c,o,c1,o1
C0
n0
C1
n0
C2
n0
C3
n0
C4
n0
C5
n0
O0 0
n0
r
4 1
4 1
4 1
4 1
4 1
4 1
b
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
k8
2
4
6
8
10
12
14
16
J0 3
0 1
1 1
2 1
J1 3
3 1
4 1
5 1
J2 3
6 1
7 1
8 1
J3 3
0 1
3 1
6 1
J4 3
1 1
4 1
7 1
J5 3
2 1
5 1
8 1
G0 9
0 1
1 3
2 3
3 2
4 3
5 3
6 3
7 3
8 2

2284
samples/NL/balassign0.nl Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,78 @@
(***********************************************************
Sample File
For testing syntax highlighting
************************************************************)
#if_not_defined Sample
#define Sample 1
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
<% global_constant_justify = 20 -%>
// Video Source Select Buttons
<%=
video_sources = {
BTN_VID_FOH_PC: { btn: 11, input: :VID_SRC_FOH_PC },
BTN_VID_STAGE_PC: { btn: 12, input: :VID_SRC_STAGE_PC },
BTN_VID_BLURAY: { btn: 13, input: :VID_SRC_BLURAY },
}
print_constant_hash video_sources.remap(:btn),
justify: global_constant_justify
%>
(***********************************************************)
(* INCLUDES GO BELOW *)
(***********************************************************)
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
// Video Source Select
<%=
justify group(video_sources.remap :input) { |name, input|
"[#{@dvTP}, #{name}] = (outputs[VID_DEST_PROJECTOR].input == #{input});"
}
%>
(***********************************************************)
(* THE MAINLINE GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)
#end_if

View File

@@ -0,0 +1,78 @@
(***********************************************************
Sample File
For testing syntax highlighting
************************************************************)
#if_not_defined Sample
#define Sample 1
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
<% global_constant_justify = 20 -%>
// Video Source Select Buttons
<%=
video_sources = {
BTN_VID_FOH_PC: { btn: 11, input: :VID_SRC_FOH_PC },
BTN_VID_STAGE_PC: { btn: 12, input: :VID_SRC_STAGE_PC },
BTN_VID_BLURAY: { btn: 13, input: :VID_SRC_BLURAY },
}
print_constant_hash video_sources.remap(:btn),
justify: global_constant_justify
%>
(***********************************************************)
(* INCLUDES GO BELOW *)
(***********************************************************)
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
// Video Source Select
<%=
justify group(video_sources.remap :input) { |name, input|
"[#{@dvTP}, #{name}] = (outputs[VID_DEST_PROJECTOR].input == #{input});"
}
%>
(***********************************************************)
(* THE MAINLINE GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)
#end_if

View File

@@ -0,0 +1,132 @@
(***********************************************************
Mock Projector
For testing syntax highlighting
************************************************************)
#if_not_defined MOCK_PROJECTOR
#define MOCK_PROJECTOR 1
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
dvPROJECTOR = 5001:1:0;
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
// Power States
POWER_STATE_ON = 0;
POWER_STATE_OFF = 1;
POWER_STATE_WARMING = 2;
POWER_STATE_COOLING = 3;
// Inputs
INPUT_HDMI = 0;
INPUT_VGA = 1;
INPUT_COMPOSITE = 2;
INPUT_SVIDEO = 3;
(***********************************************************)
(* INCLUDES GO BELOW *)
(***********************************************************)
#include 'amx-lib-log'
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
struct projector_t
{
integer power_state;
integer input;
integer lamp_hours;
}
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
volatile projector_t proj_1;
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
define_function initialize(projector_t self)
{
self.power_state = POWER_STATE_OFF;
self.input = INPUT_HDMI;
self.lamp_hours = 0;
}
define_function switch_input(projector_t self, integer input)
{
self.input = input;
print(LOG_LEVEL_INFO, "'Projector set to input: ', itoa(input)");
}
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
initialize(proj_1);
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
data_event[dvPROJECTOR]
{
string:
{
parse_message(data.text);
}
command: {}
online: {}
offline: {}
}
button_event[dvTP, BTN_HDMI]
button_event[dvTP, BTN_VGA]
button_event[dvTP, BTN_COMPOSITE]
button_event[dvTP, BTN_SVIDEO]
{
push:
{
switch (button.input.channel)
{
case BTN_HDMI: switch_input(proj_1, INPUT_HDMI);
case BTN_VGA: switch_input(proj_1, INPUT_VGA);
case BTN_COMPOSITE: switch_input(proj_1, INPUT_COMPOSITE);
case BTN_SVIDEO: switch_input(proj_1, INPUT_SVIDEO);
}
}
release: {}
}
(***********************************************************)
(* THE MAINLINE GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
[dvTP, BTN_POWER_ON] = (proj_1.power_state == POWER_STATE_ON);
[dvTP, BTN_POWER_OFF] = (proj_1.power_state == POWER_STATE_OFF);
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)
#end_if

View File

@@ -0,0 +1,158 @@
(***********************************************************
AMX VOLUME CONTROL
VOLUME ARRAY EXAMPLE
Website: https://sourceforge.net/projects/amx-lib-volume/
This application demonstrates the use of volume control
arrays using the amx-lib-volume library.
Volume control operation can be viewed by watching the
master's internal diagnostic output.
I/O PORT CONNECTIONS:
Ch 1: Volume Up Button
Ch 2: Volume Down Button
************************************************************
Copyright 2011, 2012, 2014 Alex McLain
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
************************************************************)
PROGRAM_NAME='volume array'
(***********************************************************)
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* REV HISTORY: *)
(***********************************************************)
(*
$History: See version control repository.
*)
(***********************************************************)
(* INCLUDES GO BELOW *)
(***********************************************************)
// Include the volume control library.
#include 'amx-lib-volume'
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
dvDebug = 0:0:0; // For debug output.
dvIO = 36000:1:0; // Volume up/down button connections.
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
// Volume control indexes.
MIC1 = 1; // Microphone 1.
MIC2 = 2; // Microphone 2.
MIC3 = 3; // Microphone 3.
MIC4 = 4; // Microphone 4.
WLS1 = 5; // Wireless mic 1.
WLS2 = 6; // Wireless mic 2.
IPOD = 7; // iPod input.
CD = 8; // CD player input.
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
// Define a volume control array for the input devices.
volume inputs[8];
(***********************************************************)
(* LATCHING DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_LATCHING
(***********************************************************)
(* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_MUTUALLY_EXCLUSIVE
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
(* EXAMPLE: DEFINE_FUNCTION <RETURN_TYPE> <NAME> (<PARAMETERS>) *)
(* EXAMPLE: DEFINE_CALL '<NAME>' (<PARAMETERS>) *)
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
// Initialize the array of volume controls.
volArrayInit(inputs, 0, VOL_UNMUTED, 10000, 20000, 5);
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
// Volume Up
button_event[dvIO, 1]
{
PUSH:
{
volArrayIncrement(inputs); // Increment the volume up a step.
send_string dvDebug, "'Volume Up MIC1: ', itoa(volGetLevel(inputs[MIC1]))";
send_string dvDebug, "'Volume Up MIC2: ', itoa(volGetLevel(inputs[MIC2]))";
send_string dvDebug, "'Volume Up MIC3: ', itoa(volGetLevel(inputs[MIC3]))";
send_string dvDebug, "'Volume Up MIC4: ', itoa(volGetLevel(inputs[MIC4]))";
send_string dvDebug, "'Volume Up WLS1: ', itoa(volGetLevel(inputs[WLS1]))";
send_string dvDebug, "'Volume Up WLS2: ', itoa(volGetLevel(inputs[WLS2]))";
send_string dvDebug, "'Volume Up IPOD: ', itoa(volGetLevel(inputs[IPOD]))";
send_string dvDebug, "'Volume Up CD: ', itoa(volGetLevel(inputs[CD]))";
}
}
// Volume Down
button_event[dvIO, 2]
{
PUSH:
{
volArrayDecrement(inputs); // Decrement the volume down a step.
send_string dvDebug, "'Volume Dn MIC1: ', itoa(volGetLevel(inputs[MIC1]))";
send_string dvDebug, "'Volume Dn MIC2: ', itoa(volGetLevel(inputs[MIC2]))";
send_string dvDebug, "'Volume Dn MIC3: ', itoa(volGetLevel(inputs[MIC3]))";
send_string dvDebug, "'Volume Dn MIC4: ', itoa(volGetLevel(inputs[MIC4]))";
send_string dvDebug, "'Volume Dn WLS1: ', itoa(volGetLevel(inputs[WLS1]))";
send_string dvDebug, "'Volume Dn WLS2: ', itoa(volGetLevel(inputs[WLS2]))";
send_string dvDebug, "'Volume Dn IPOD: ', itoa(volGetLevel(inputs[IPOD]))";
send_string dvDebug, "'Volume Dn CD: ', itoa(volGetLevel(inputs[CD]))";
}
}
(***********************************************************)
(* THE ACTUAL PROGRAM GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)

49
samples/NewLisp/queens.nl Normal file
View File

@@ -0,0 +1,49 @@
#!/usr/bin/env newlisp
(constant 'NUM 8)
(define (intersects? q1 q2)
(or
(= (q1 0) (q2 0))
(= (q1 1) (q2 1))
(= (abs (- (q1 0) (q2 0))) (abs (- (q1 1) (q2 1))))))
(define (variant? alist)
(set 'logic nil)
(cond
((= (length alist) 1) true)
((> (length alist) 1)
(while (> (length alist) 1)
(set 'q (pop alist -1))
(dolist (el alist)
(push
(intersects?
(list q (inc (length alist)))
(list el (+ 1 $idx)))
logic -1)))
(not (apply or logic)))))
(define (fork-by-line alist)
(let (res '())
(dolist (i (sequence 1 NUM))
(set 'tmp alist)
(push i tmp -1)
(setf res (push tmp res -1)))
res))
(define (find-variants num)
(let (res '())
(cond
((< num 1)
(begin (println "num < 1") (exit)))
((= num 1)
(dolist (i (sequence 1 NUM)) (push (list i) res -1)))
((> num 1)
(dolist (v (find-variants (dec num)))
(set 'passed (filter variant? (fork-by-line v)))
(if (not (empty? passed)) (extend res passed)))))
res))
(set 'solutions (find-variants NUM))
(println (length solutions))
;;(exit)

1344
samples/OCaml/cmdliner.ml Normal file

File diff suppressed because it is too large Load Diff

14
samples/OCaml/common.ml Normal file
View File

@@ -0,0 +1,14 @@
(*
* Copyright (c) 2013 Jeremy Yallop.
*
* This file is distributed under the terms of the MIT License.
* See the file LICENSE for details.
*)
let string_of format v =
let buf = Buffer.create 100 in
let fmt = Format.formatter_of_buffer buf in begin
format fmt v;
Format.pp_print_flush fmt ();
Buffer.contents buf
end

40
samples/OCaml/date.ml Normal file
View File

@@ -0,0 +1,40 @@
(*
* Copyright (c) 2013 Jeremy Yallop.
*
* This file is distributed under the terms of the MIT License.
* See the file LICENSE for details.
*)
open Ctypes
open PosixTypes
open Foreign
type tm
let tm = structure "tm"
let (-:) ty label = field tm label ty
let tm_sec = int -: "tm_sec" (* seconds *)
let tm_min = int -: "tm_min" (* minutes *)
let tm_hour = int -: "tm_hour" (* hours *)
let tm_mday = int -: "tm_mday" (* day of the month *)
let tm_mon = int -: "tm_mon" (* month *)
let tm_year = int -: "tm_year" (* year *)
let tm_wday = int -: "tm_wday" (* day of the week *)
let tm_yday = int -: "tm_yday" (* day in the year *)
let tm_isdst = int -: "tm_isdst" (* daylight saving time *)
let () = seal (tm : tm structure typ)
let time = foreign "time" ~check_errno:true (ptr time_t @-> returning time_t)
let asctime = foreign "asctime" (ptr tm @-> returning string)
let localtime = foreign "localtime" (ptr time_t @-> returning (ptr tm))
let () = begin
let timep = allocate_n ~count:1 time_t in
let time = time timep in
assert (time = !@timep);
let tm = localtime timep in
Printf.printf "tm.tm_mon = %d\n" (getf !@tm tm_mon);
Printf.printf "tm.tm_year = %d\n" (getf !@tm tm_year);
print_endline (asctime tm)
end

337
samples/OCaml/map.ml Normal file
View File

@@ -0,0 +1,337 @@
(***********************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the GNU Library General Public License, with *)
(* the special exception on linking described in file ../LICENSE. *)
(* *)
(***********************************************************************)
module type OrderedType =
sig
type t
val compare: t -> t -> int
end
module type S =
sig
type key
type +'a t
val empty: 'a t
val is_empty: 'a t -> bool
val mem: key -> 'a t -> bool
val add: key -> 'a -> 'a t -> 'a t
val singleton: key -> 'a -> 'a t
val remove: key -> 'a t -> 'a t
val merge:
(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val compare: ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal: ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter: (key -> 'a -> unit) -> 'a t -> unit
val fold: (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all: (key -> 'a -> bool) -> 'a t -> bool
val exists: (key -> 'a -> bool) -> 'a t -> bool
val filter: (key -> 'a -> bool) -> 'a t -> 'a t
val partition: (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal: 'a t -> int
val bindings: 'a t -> (key * 'a) list
val min_binding: 'a t -> (key * 'a)
val max_binding: 'a t -> (key * 'a)
val choose: 'a t -> (key * 'a)
val split: key -> 'a t -> 'a t * 'a option * 'a t
val find: key -> 'a t -> 'a
val map: ('a -> 'b) -> 'a t -> 'b t
val mapi: (key -> 'a -> 'b) -> 'a t -> 'b t
end
module Make(Ord: OrderedType) = struct
type key = Ord.t
type 'a t =
Empty
| Node of 'a t * key * 'a * 'a t * int
let height = function
Empty -> 0
| Node(_,_,_,_,h) -> h
let create l x d r =
let hl = height l and hr = height r in
Node(l, x, d, r, (if hl >= hr then hl + 1 else hr + 1))
let singleton x d = Node(Empty, x, d, Empty, 1)
let bal l x d r =
let hl = match l with Empty -> 0 | Node(_,_,_,_,h) -> h in
let hr = match r with Empty -> 0 | Node(_,_,_,_,h) -> h in
if hl > hr + 2 then begin
match l with
Empty -> invalid_arg "Map.bal"
| Node(ll, lv, ld, lr, _) ->
if height ll >= height lr then
create ll lv ld (create lr x d r)
else begin
match lr with
Empty -> invalid_arg "Map.bal"
| Node(lrl, lrv, lrd, lrr, _)->
create (create ll lv ld lrl) lrv lrd (create lrr x d r)
end
end else if hr > hl + 2 then begin
match r with
Empty -> invalid_arg "Map.bal"
| Node(rl, rv, rd, rr, _) ->
if height rr >= height rl then
create (create l x d rl) rv rd rr
else begin
match rl with
Empty -> invalid_arg "Map.bal"
| Node(rll, rlv, rld, rlr, _) ->
create (create l x d rll) rlv rld (create rlr rv rd rr)
end
end else
Node(l, x, d, r, (if hl >= hr then hl + 1 else hr + 1))
let empty = Empty
let is_empty = function Empty -> true | _ -> false
let rec add x data = function
Empty ->
Node(Empty, x, data, Empty, 1)
| Node(l, v, d, r, h) ->
let c = Ord.compare x v in
if c = 0 then
Node(l, x, data, r, h)
else if c < 0 then
bal (add x data l) v d r
else
bal l v d (add x data r)
let rec find x = function
Empty ->
raise Not_found
| Node(l, v, d, r, _) ->
let c = Ord.compare x v in
if c = 0 then d
else find x (if c < 0 then l else r)
let rec mem x = function
Empty ->
false
| Node(l, v, d, r, _) ->
let c = Ord.compare x v in
c = 0 || mem x (if c < 0 then l else r)
let rec min_binding = function
Empty -> raise Not_found
| Node(Empty, x, d, r, _) -> (x, d)
| Node(l, x, d, r, _) -> min_binding l
let rec max_binding = function
Empty -> raise Not_found
| Node(l, x, d, Empty, _) -> (x, d)
| Node(l, x, d, r, _) -> max_binding r
let rec remove_min_binding = function
Empty -> invalid_arg "Map.remove_min_elt"
| Node(Empty, x, d, r, _) -> r
| Node(l, x, d, r, _) -> bal (remove_min_binding l) x d r
let merge t1 t2 =
match (t1, t2) with
(Empty, t) -> t
| (t, Empty) -> t
| (_, _) ->
let (x, d) = min_binding t2 in
bal t1 x d (remove_min_binding t2)
let rec remove x = function
Empty ->
Empty
| Node(l, v, d, r, h) ->
let c = Ord.compare x v in
if c = 0 then
merge l r
else if c < 0 then
bal (remove x l) v d r
else
bal l v d (remove x r)
let rec iter f = function
Empty -> ()
| Node(l, v, d, r, _) ->
iter f l; f v d; iter f r
let rec map f = function
Empty ->
Empty
| Node(l, v, d, r, h) ->
let l' = map f l in
let d' = f d in
let r' = map f r in
Node(l', v, d', r', h)
let rec mapi f = function
Empty ->
Empty
| Node(l, v, d, r, h) ->
let l' = mapi f l in
let d' = f v d in
let r' = mapi f r in
Node(l', v, d', r', h)
let rec fold f m accu =
match m with
Empty -> accu
| Node(l, v, d, r, _) ->
fold f r (f v d (fold f l accu))
let rec for_all p = function
Empty -> true
| Node(l, v, d, r, _) -> p v d && for_all p l && for_all p r
let rec exists p = function
Empty -> false
| Node(l, v, d, r, _) -> p v d || exists p l || exists p r
(* Beware: those two functions assume that the added k is *strictly*
smaller (or bigger) than all the present keys in the tree; it
does not test for equality with the current min (or max) key.
Indeed, they are only used during the "join" operation which
respects this precondition.
*)
let rec add_min_binding k v = function
| Empty -> singleton k v
| Node (l, x, d, r, h) ->
bal (add_min_binding k v l) x d r
let rec add_max_binding k v = function
| Empty -> singleton k v
| Node (l, x, d, r, h) ->
bal l x d (add_max_binding k v r)
(* Same as create and bal, but no assumptions are made on the
relative heights of l and r. *)
let rec join l v d r =
match (l, r) with
(Empty, _) -> add_min_binding v d r
| (_, Empty) -> add_max_binding v d l
| (Node(ll, lv, ld, lr, lh), Node(rl, rv, rd, rr, rh)) ->
if lh > rh + 2 then bal ll lv ld (join lr v d r) else
if rh > lh + 2 then bal (join l v d rl) rv rd rr else
create l v d r
(* Merge two trees l and r into one.
All elements of l must precede the elements of r.
No assumption on the heights of l and r. *)
let concat t1 t2 =
match (t1, t2) with
(Empty, t) -> t
| (t, Empty) -> t
| (_, _) ->
let (x, d) = min_binding t2 in
join t1 x d (remove_min_binding t2)
let concat_or_join t1 v d t2 =
match d with
| Some d -> join t1 v d t2
| None -> concat t1 t2
let rec split x = function
Empty ->
(Empty, None, Empty)
| Node(l, v, d, r, _) ->
let c = Ord.compare x v in
if c = 0 then (l, Some d, r)
else if c < 0 then
let (ll, pres, rl) = split x l in (ll, pres, join rl v d r)
else
let (lr, pres, rr) = split x r in (join l v d lr, pres, rr)
let rec merge f s1 s2 =
match (s1, s2) with
(Empty, Empty) -> Empty
| (Node (l1, v1, d1, r1, h1), _) when h1 >= height s2 ->
let (l2, d2, r2) = split v1 s2 in
concat_or_join (merge f l1 l2) v1 (f v1 (Some d1) d2) (merge f r1 r2)
| (_, Node (l2, v2, d2, r2, h2)) ->
let (l1, d1, r1) = split v2 s1 in
concat_or_join (merge f l1 l2) v2 (f v2 d1 (Some d2)) (merge f r1 r2)
| _ ->
assert false
let rec filter p = function
Empty -> Empty
| Node(l, v, d, r, _) ->
(* call [p] in the expected left-to-right order *)
let l' = filter p l in
let pvd = p v d in
let r' = filter p r in
if pvd then join l' v d r' else concat l' r'
let rec partition p = function
Empty -> (Empty, Empty)
| Node(l, v, d, r, _) ->
(* call [p] in the expected left-to-right order *)
let (lt, lf) = partition p l in
let pvd = p v d in
let (rt, rf) = partition p r in
if pvd
then (join lt v d rt, concat lf rf)
else (concat lt rt, join lf v d rf)
type 'a enumeration = End | More of key * 'a * 'a t * 'a enumeration
let rec cons_enum m e =
match m with
Empty -> e
| Node(l, v, d, r, _) -> cons_enum l (More(v, d, r, e))
let compare cmp m1 m2 =
let rec compare_aux e1 e2 =
match (e1, e2) with
(End, End) -> 0
| (End, _) -> -1
| (_, End) -> 1
| (More(v1, d1, r1, e1), More(v2, d2, r2, e2)) ->
let c = Ord.compare v1 v2 in
if c <> 0 then c else
let c = cmp d1 d2 in
if c <> 0 then c else
compare_aux (cons_enum r1 e1) (cons_enum r2 e2)
in compare_aux (cons_enum m1 End) (cons_enum m2 End)
let equal cmp m1 m2 =
let rec equal_aux e1 e2 =
match (e1, e2) with
(End, End) -> true
| (End, _) -> false
| (_, End) -> false
| (More(v1, d1, r1, e1), More(v2, d2, r2, e2)) ->
Ord.compare v1 v2 = 0 && cmp d1 d2 &&
equal_aux (cons_enum r1 e1) (cons_enum r2 e2)
in equal_aux (cons_enum m1 End) (cons_enum m2 End)
let rec cardinal = function
Empty -> 0
| Node(l, _, _, r, _) -> cardinal l + 1 + cardinal r
let rec bindings_aux accu = function
Empty -> accu
| Node(l, v, d, r, _) -> bindings_aux ((v, d) :: bindings_aux accu r) l
let bindings s =
bindings_aux [] s
let choose = min_binding
end

2503
samples/OCaml/mirage.ml Normal file

File diff suppressed because it is too large Load Diff

125
samples/OCaml/reload.ml Normal file
View File

@@ -0,0 +1,125 @@
(***********************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 2000 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the Q Public License version 1.0. *)
(* *)
(***********************************************************************)
open Cmm
open Arch
open Reg
open Mach
(* Reloading for the AMD64 *)
(* Summary of instruction set constraints:
"S" means either stack or register, "R" means register only.
Operation Res Arg1 Arg2
Imove R S
or S R
Iconst_int S if 32-bit signed, R otherwise
Iconst_float R
Iconst_symbol (not PIC) S
Iconst_symbol (PIC) R
Icall_ind R
Itailcall_ind R
Iload R R R
Istore R R
Iintop(Icomp) R R S
or S S R
Iintop(Imul|Idiv|mod) R R S
Iintop(shift) S S R
Iintop(others) R R S
or S S R
Iintop_imm(Iadd, n)/lea R R
Iintop_imm(others) S S
Inegf...Idivf R R S
Ifloatofint R S
Iintoffloat R S
Ispecific(Ilea) R R R
Ispecific(Ifloatarithmem) R R R
Conditional branches:
Iinttest S R
or R S
Ifloattest R S (or S R if swapped test)
other tests S
*)
let stackp r =
match r.loc with
Stack _ -> true
| _ -> false
class reload = object (self)
inherit Reloadgen.reload_generic as super
method! reload_operation op arg res =
match op with
| Iintop(Iadd|Isub|Iand|Ior|Ixor|Icomp _|Icheckbound) ->
(* One of the two arguments can reside in the stack, but not both *)
if stackp arg.(0) && stackp arg.(1)
then ([|arg.(0); self#makereg arg.(1)|], res)
else (arg, res)
| Iintop_imm(Iadd, _) when arg.(0).loc <> res.(0).loc ->
(* This add will be turned into a lea; args and results must be
in registers *)
super#reload_operation op arg res
| Iintop(Idiv | Imod | Ilsl | Ilsr | Iasr)
| Iintop_imm(_, _) ->
(* The argument(s) and results can be either in register or on stack *)
(* Note: Idiv, Imod: arg(0) and res(0) already forced in regs
Ilsl, Ilsr, Iasr: arg(1) already forced in regs *)
(arg, res)
| Iintop(Imul) | Iaddf | Isubf | Imulf | Idivf ->
(* First argument (= result) must be in register, second arg
can reside in the stack *)
if stackp arg.(0)
then (let r = self#makereg arg.(0) in ([|r; arg.(1)|], [|r|]))
else (arg, res)
| Ifloatofint | Iintoffloat ->
(* Result must be in register, but argument can be on stack *)
(arg, (if stackp res.(0) then [| self#makereg res.(0) |] else res))
| Iconst_int n ->
if n <= 0x7FFFFFFFn && n >= -0x80000000n
then (arg, res)
else super#reload_operation op arg res
| Iconst_symbol _ ->
if !pic_code || !Clflags.dlcode
then super#reload_operation op arg res
else (arg, res)
| _ -> (* Other operations: all args and results in registers *)
super#reload_operation op arg res
method! reload_test tst arg =
match tst with
Iinttest cmp ->
(* One of the two arguments can reside on stack *)
if stackp arg.(0) && stackp arg.(1)
then [| self#makereg arg.(0); arg.(1) |]
else arg
| Ifloattest((Clt|Cle), _) ->
(* Cf. emit.mlp: we swap arguments in this case *)
(* First argument can be on stack, second must be in register *)
if stackp arg.(1)
then [| arg.(0); self#makereg arg.(1) |]
else arg
| Ifloattest((Ceq|Cne|Cgt|Cge), _) ->
(* Second argument can be on stack, first must be in register *)
if stackp arg.(0)
then [| self#makereg arg.(0); arg.(1) |]
else arg
| _ ->
(* The argument(s) can be either in register or on stack *)
arg
end
let fundecl f =
(new reload)#fundecl f

70
samples/OCaml/sigset.ml Normal file
View File

@@ -0,0 +1,70 @@
(*
* Copyright (c) 2013 Jeremy Yallop.
*
* This file is distributed under the terms of the MIT License.
* See the file LICENSE for details.
*)
open PosixTypes
open Ctypes
open Foreign
type t = sigset_t ptr
let t = ptr sigset_t
(* This function initializes the signal set set to exclude all of the defined
signals. It always returns 0. *)
let sigemptyset = foreign "sigemptyset" (ptr sigset_t @-> returning int)
let empty () =
let setp = allocate_n ~count:1 sigset_t in begin
ignore (sigemptyset setp);
setp
end
(* This function initializes the signal set set to include all of the defined
signals. Again, the return value is 0. *)
let sigfillset = foreign "sigfillset" (ptr sigset_t @-> returning int)
let full () =
let setp = allocate_n ~count:1 sigset_t in begin
ignore (sigfillset setp);
setp
end
(* This function adds the signal signum to the signal set set. All sigaddset
does is modify set; it does not block or unblock any signals.
The return value is 0 on success and -1 on failure. The following errno
error condition is defined for this function:
EINVAL The signum argument doesn't specify a valid signal.
*)
let sigaddset = foreign "sigaddset" ~check_errno:true
(ptr sigset_t @-> int @-> returning int)
let add set signal = ignore (sigaddset set signal)
(* This function removes the signal signum from the signal set set. All
sigdelset does is modify set; it does not block or unblock any signals.
The return value and error conditions are the same as for
sigaddset. *)
let sigdelset = foreign "sigdelset" ~check_errno:true
(ptr sigset_t @-> int @-> returning int)
let del set signal = ignore (sigdelset set signal)
(* The sigismember function tests whether the signal signum is a member of the
signal set set. It returns 1 if the signal is in the set, 0 if not, and -1 if
there is an error.
The following errno error condition is defined for this function:
EINVAL The signum argument doesn't specify a valid signal.
*)
let sigismember = foreign "sigismember" ~check_errno:true
(ptr sigset_t @-> int @-> returning int)
let mem set signal = sigismember set signal <> 0

810
samples/OCaml/uutf.ml Normal file
View File

@@ -0,0 +1,810 @@
(*---------------------------------------------------------------------------
Copyright 2012 Daniel C. Bünzli. All rights reserved.
Distributed under the BSD3 license, see license at the end of the file.
%%NAME%% release %%VERSION%%
---------------------------------------------------------------------------*)
let io_buffer_size = 65536 (* IO_BUFFER_SIZE 4.0.0 *)
let pp = Format.fprintf
let invalid_encode () = invalid_arg "expected `Await encode"
let invalid_bounds j l =
invalid_arg (Printf.sprintf "invalid bounds (index %d, length %d)" j l)
(* Unsafe string byte manipulations. If you don't believe the author's
invariants, replacing with safe versions makes everything safe in
the module. He won't be upset. *)
let unsafe_chr = Char.unsafe_chr
let unsafe_blit = String.unsafe_blit
let unsafe_array_get = Array.unsafe_get
let unsafe_byte s j = Char.code (String.unsafe_get s j)
let unsafe_set_byte s j byte = String.unsafe_set s j (Char.unsafe_chr byte)
(* Unicode characters *)
type uchar = int
let u_bom = 0xFEFF (* BOM. *)
let u_rep = 0xFFFD (* replacement character. *)
let is_uchar cp =
(0x0000 <= cp && cp <= 0xD7FF) || (0xE000 <= cp && cp <= 0x10FFFF)
let pp_cp ppf cp =
if cp < 0 || cp > 0x10FFFF then pp ppf "U+Invalid(%X)" cp else
if cp <= 0xFFFF then pp ppf "U+%04X" cp else
pp ppf "U+%X" cp
let cp_to_string cp = (* NOT thread safe. *)
pp Format.str_formatter "%a" pp_cp cp; Format.flush_str_formatter ()
(* Unicode encoding schemes *)
type encoding = [ `UTF_8 | `UTF_16 | `UTF_16BE | `UTF_16LE ]
type decoder_encoding = [ encoding | `US_ASCII | `ISO_8859_1 ]
let encoding_of_string s = match String.uppercase s with (* IANA names. *)
| "UTF-8" -> Some `UTF_8
| "UTF-16" -> Some `UTF_16
| "UTF-16LE" -> Some `UTF_16LE
| "UTF-16BE" -> Some `UTF_16BE
| "ANSI_X3.4-1968" | "ISO-IR-6" | "ANSI_X3.4-1986" | "ISO_646.IRV:1991"
| "ASCII" | "ISO646-US" | "US-ASCII" | "US" | "IBM367" | "CP367" | "CSASCII" ->
Some `US_ASCII
| "ISO_8859-1:1987" | "ISO-IR-100" | "ISO_8859-1" | "ISO-8859-1"
| "LATIN1" | "L1" | "IBM819" | "CP819" | "CSISOLATIN1" ->
Some `ISO_8859_1
| _ -> None
let encoding_to_string = function
| `UTF_8 -> "UTF-8" | `UTF_16 -> "UTF-16" | `UTF_16BE -> "UTF-16BE"
| `UTF_16LE -> "UTF-16LE" | `US_ASCII -> "US-ASCII"
| `ISO_8859_1 -> "ISO-8859-1"
(* Base character decoders. They assume enough data. *)
let malformed s j l = `Malformed (String.sub s j l)
let malformed_pair be hi s j l = (* missing or half low surrogate at eoi. *)
let bs1 = String.sub s j l in
let bs0 = String.create 2 in
let j0, j1 = if be then (0, 1) else (1, 0) in
unsafe_set_byte bs0 j0 (hi lsr 8);
unsafe_set_byte bs0 j1 (hi land 0xFF);
`Malformed (bs0 ^ bs1)
let r_us_ascii s j =
(* assert (0 <= j && j < String.length s); *)
let b0 = unsafe_byte s j in
if b0 <= 127 then `Uchar b0 else malformed s j 1
let r_iso_8859_1 s j =
(* assert (0 <= j && j < String.length s); *)
`Uchar (unsafe_byte s j)
let utf_8_len = [| (* uchar byte length according to first UTF-8 byte. *)
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;
0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;
0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;
0; 0; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2;
2; 2; 2; 2; 2; 2; 2; 2; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3;
4; 4; 4; 4; 4; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0 |]
let r_utf_8 s j l =
(* assert (0 <= j && 0 <= l && j + l <= String.length s); *)
match l with
| 1 -> `Uchar (unsafe_byte s j)
| 2 ->
let b0 = unsafe_byte s j in let b1 = unsafe_byte s (j + 1) in
if b1 lsr 6 != 0b10 then malformed s j l else
`Uchar (((b0 land 0x1F) lsl 6) lor (b1 land 0x3F))
| 3 ->
let b0 = unsafe_byte s j in let b1 = unsafe_byte s (j + 1) in
let b2 = unsafe_byte s (j + 2) in
let c = `Uchar (((b0 land 0x0F) lsl 12) lor
((b1 land 0x3F) lsl 6) lor
(b2 land 0x3F))
in
if b2 lsr 6 != 0b10 then malformed s j l else
begin match b0 with
| 0xE0 -> if b1 < 0xA0 || 0xBF < b1 then malformed s j l else c
| 0xED -> if b1 < 0x80 || 0x9F < b1 then malformed s j l else c
| _ -> if b1 lsr 6 != 0b10 then malformed s j l else c
end
| 4 ->
let b0 = unsafe_byte s j in let b1 = unsafe_byte s (j + 1) in
let b2 = unsafe_byte s (j + 2) in let b3 = unsafe_byte s (j + 3) in
let c = `Uchar (((b0 land 0x07) lsl 18) lor
((b1 land 0x3F) lsl 12) lor
((b2 land 0x3F) lsl 6) lor
(b3 land 0x3F))
in
if b3 lsr 6 != 0b10 || b2 lsr 6 != 0b10 then malformed s j l else
begin match b0 with
| 0xF0 -> if b1 < 0x90 || 0xBF < b1 then malformed s j l else c
| 0xF4 -> if b1 < 0x80 || 0x8F < b1 then malformed s j l else c
| _ -> if b1 lsr 6 != 0b10 then malformed s j l else c
end
| _ -> assert false
let r_utf_16 s j0 j1 = (* May return a high surrogate. *)
(* assert (0 <= j0 && 0 <= j1 && max j0 j1 < String.length s); *)
let b0 = unsafe_byte s j0 in let b1 = unsafe_byte s j1 in
let u = (b0 lsl 8) lor b1 in
if u < 0xD800 || u > 0xDFFF then `Uchar u else
if u > 0xDBFF then malformed s (min j0 j1) 2 else `Hi u
let r_utf_16_lo hi s j0 j1 = (* Combines [hi] with a low surrogate. *)
(* assert (0 <= j0 && 0 <= j1 && max j0 j1 < String.length s); *)
let b0 = unsafe_byte s j0 in
let b1 = unsafe_byte s j1 in
let lo = (b0 lsl 8) lor b1 in
if lo < 0xDC00 || lo > 0xDFFF
then malformed_pair (j0 < j1 (* true => be *)) hi s (min j0 j1) 2
else `Uchar ((((hi land 0x3FF) lsl 10) lor (lo land 0x3FF)) + 0x10000)
let r_encoding s j l = (* guess encoding with max. 3 bytes. *)
(* assert (0 <= j && 0 <= l && j + l <= String.length s) *)
let some i = if i < l then Some (unsafe_byte s (j + i)) else None in
match (some 0), (some 1), (some 2) with
| Some 0xEF, Some 0xBB, Some 0xBF -> `UTF_8 `BOM
| Some 0xFE, Some 0xFF, _ -> `UTF_16BE `BOM
| Some 0xFF, Some 0xFE, _ -> `UTF_16LE `BOM
| Some 0x00, Some p, _ when p > 0 -> `UTF_16BE (`ASCII p)
| Some p, Some 0x00, _ when p > 0 -> `UTF_16LE (`ASCII p)
| Some u, _, _ when utf_8_len.(u) <> 0 -> `UTF_8 `Decode
| Some _, Some _, _ -> `UTF_16BE `Decode
| Some _, None , None -> `UTF_8 `Decode
| None , None , None -> `UTF_8 `End
| None , Some _, _ -> assert false
| Some _, None , Some _ -> assert false
| None , None , Some _ -> assert false
(* Decode *)
type src = [ `Channel of in_channel | `String of string | `Manual ]
type nln = [ `ASCII of uchar | `NLF of uchar | `Readline of uchar ]
type decode = [ `Await | `End | `Malformed of string | `Uchar of uchar]
let pp_decode ppf = function
| `Uchar u -> pp ppf "@[`Uchar %a@]" pp_cp u
| `End -> pp ppf "`End"
| `Await -> pp ppf "`Await"
| `Malformed bs ->
let l = String.length bs in
pp ppf "@[`Malformed (";
if l > 0 then pp ppf "%02X" (Char.code (bs.[0]));
for i = 1 to l - 1 do pp ppf " %02X" (Char.code (bs.[i])) done;
pp ppf ")@]"
type decoder =
{ src : src; (* input source. *)
mutable encoding : decoder_encoding; (* decoded encoding. *)
nln : nln option; (* newline normalization (if any). *)
nl : int; (* newline normalization character. *)
mutable i : string; (* current input chunk. *)
mutable i_pos : int; (* input current position. *)
mutable i_max : int; (* input maximal position. *)
t : string; (* four bytes temporary buffer for overlapping reads. *)
mutable t_len : int; (* current byte length of [t]. *)
mutable t_need : int; (* number of bytes needed in [t]. *)
mutable removed_bom : bool; (* [true] if an initial BOM was removed. *)
mutable last_cr : bool; (* [true] if last char was CR. *)
mutable line : int; (* line number. *)
mutable col : int; (* column number. *)
mutable byte_count : int; (* byte count. *)
mutable count : int; (* char count. *)
mutable pp : (* decoder post-processor for BOM, position and nln. *)
decoder -> [ `Malformed of string | `Uchar of uchar ] -> decode;
mutable k : decoder -> decode } (* decoder continuation. *)
(* On decodes that overlap two (or more) [d.i] buffers, we use [t_fill] to copy
the input data to [d.t] and decode from there. If the [d.i] buffers are not
too small this is faster than continuation based byte per byte writes.
End of input (eoi) is signalled by [d.i_pos = 0] and [d.i_max = min_int]
which implies that [i_rem d < 0] is [true]. *)
let i_rem d = d.i_max - d.i_pos + 1 (* remaining bytes to read in [d.i]. *)
let eoi d = d.i <- ""; d.i_pos <- 0; d.i_max <- min_int (* set eoi in [d]. *)
let src d s j l = (* set [d.i] with [s]. *)
if (j < 0 || l < 0 || j + l > String.length s) then invalid_bounds j l else
if (l = 0) then eoi d else
(d.i <- s; d.i_pos <- j; d.i_max <- j + l - 1)
let refill k d = match d.src with (* get new input in [d.i] and [k]ontinue. *)
| `Manual -> d.k <- k; `Await
| `String _ -> eoi d; k d
| `Channel ic ->
let rc = input ic d.i 0 (String.length d.i) in
(src d d.i 0 rc; k d)
let t_need d need = d.t_len <- 0; d.t_need <- need
let rec t_fill k d = (* get [d.t_need] bytes (or less if eoi) in [i.t]. *)
let blit d l =
unsafe_blit d.i d.i_pos d.t d.t_len (* write pos. *) l;
d.i_pos <- d.i_pos + l; d.t_len <- d.t_len + l;
in
let rem = i_rem d in
if rem < 0 (* eoi *) then k d else
let need = d.t_need - d.t_len in
if rem < need then (blit d rem; refill (t_fill k) d) else (blit d need; k d)
let ret k v byte_count d = (* return post-processed [v]. *)
d.k <- k; d.byte_count <- d.byte_count + byte_count; d.pp d v
(* Decoders. *)
let rec decode_us_ascii d =
let rem = i_rem d in
if rem <= 0 then (if rem < 0 then `End else refill decode_us_ascii d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 1; ret decode_us_ascii (r_us_ascii d.i j) 1 d
let rec decode_iso_8859_1 d =
let rem = i_rem d in
if rem <= 0 then (if rem < 0 then `End else refill decode_iso_8859_1 d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 1; ret decode_iso_8859_1 (r_iso_8859_1 d.i j) 1 d
(* UTF-8 decoder *)
let rec t_decode_utf_8 d = (* decode from [d.t]. *)
if d.t_len < d.t_need
then ret decode_utf_8 (malformed d.t 0 d.t_len) d.t_len d
else ret decode_utf_8 (r_utf_8 d.t 0 d.t_len) d.t_len d
and decode_utf_8 d =
let rem = i_rem d in
if rem <= 0 then (if rem < 0 then `End else refill decode_utf_8 d) else
let need = unsafe_array_get utf_8_len (unsafe_byte d.i d.i_pos) in
if rem < need then (t_need d need; t_fill t_decode_utf_8 d) else
let j = d.i_pos in
if need = 0
then (d.i_pos <- d.i_pos + 1; ret decode_utf_8 (malformed d.i j 1) 1 d)
else (d.i_pos <- d.i_pos + need; ret decode_utf_8 (r_utf_8 d.i j need) need d)
(* UTF-16BE decoder *)
let rec t_decode_utf_16be_lo hi d = (* decode from [d.t]. *)
let bcount = d.t_len + 2 (* hi count *) in
if d.t_len < d.t_need
then ret decode_utf_16be (malformed_pair true hi d.t 0 d.t_len) bcount d
else ret decode_utf_16be (r_utf_16_lo hi d.t 0 1) bcount d
and t_decode_utf_16be d = (* decode from [d.t]. *)
if d.t_len < d.t_need
then ret decode_utf_16be (malformed d.t 0 d.t_len) d.t_len d
else decode_utf_16be_lo (r_utf_16 d.t 0 1) d
and decode_utf_16be_lo v d = match v with
| `Uchar _ | `Malformed _ as v -> ret decode_utf_16be v 2 d
| `Hi hi ->
let rem = i_rem d in
if rem < 2 then (t_need d 2; t_fill (t_decode_utf_16be_lo hi) d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 2;
ret decode_utf_16be (r_utf_16_lo hi d.i j (j + 1)) 4 d
and decode_utf_16be d =
let rem = i_rem d in
if rem <= 0 then (if rem < 0 then `End else refill decode_utf_16be d) else
if rem < 2 then (t_need d 2; t_fill t_decode_utf_16be d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 2; decode_utf_16be_lo (r_utf_16 d.i j (j + 1)) d
(* UTF-16LE decoder, same as UTF-16BE with byte swapped. *)
let rec t_decode_utf_16le_lo hi d = (* decode from [d.t]. *)
let bcount = d.t_len + 2 (* hi count *) in
if d.t_len < d.t_need
then ret decode_utf_16le (malformed_pair false hi d.t 0 d.t_len) bcount d
else ret decode_utf_16le (r_utf_16_lo hi d.t 1 0) bcount d
and t_decode_utf_16le d = (* decode from [d.t]. *)
if d.t_len < d.t_need
then ret decode_utf_16le (malformed d.t 0 d.t_len) d.t_len d
else decode_utf_16le_lo (r_utf_16 d.t 1 0) d
and decode_utf_16le_lo v d = match v with
| `Uchar _ | `Malformed _ as v -> ret decode_utf_16le v 2 d
| `Hi hi ->
let rem = i_rem d in
if rem < 2 then (t_need d 2; t_fill (t_decode_utf_16le_lo hi) d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 2;
ret decode_utf_16le (r_utf_16_lo hi d.i (j + 1) j) 4 d
and decode_utf_16le d =
let rem = i_rem d in
if rem <= 0 then (if rem < 0 then `End else refill decode_utf_16le d) else
if rem < 2 then (t_need d 2; t_fill t_decode_utf_16le d) else
let j = d.i_pos in
d.i_pos <- d.i_pos + 2; decode_utf_16le_lo (r_utf_16 d.i (j + 1) j) d
(* Encoding guessing. The guess is simple but starting the decoder
after is tedious, uutf's decoders are not designed to put bytes
back in the stream. *)
let guessed_utf_8 d = (* start decoder after `UTF_8 guess. *)
let b3 d = (* handles the third read byte. *)
let b3 = unsafe_byte d.t 2 in
match utf_8_len.(b3) with
| 0 -> ret decode_utf_8 (malformed d.t 2 1) 1 d
| n ->
d.t_need <- n; d.t_len <- 1; unsafe_set_byte d.t 0 b3;
t_fill t_decode_utf_8 d
in
let b2 d = (* handle second read byte. *)
let b2 = unsafe_byte d.t 1 in
let b3 = if d.t_len > 2 then b3 else decode_utf_8 (* decodes `End *) in
match utf_8_len.(b2) with
| 0 -> ret b3 (malformed d.t 1 1) 1 d
| 1 -> ret b3 (r_utf_8 d.t 1 1) 1 d
| n -> (* copy d.t.(1-2) to d.t.(0-1) and decode *)
d.t_need <- n;
unsafe_set_byte d.t 0 b2;
if (d.t_len < 3) then d.t_len <- 1 else
(d.t_len <- 2; unsafe_set_byte d.t 1 (unsafe_byte d.t 2); );
t_fill t_decode_utf_8 d
in
let b1 = unsafe_byte d.t 0 in (* handle first read byte. *)
let b2 = if d.t_len > 1 then b2 else decode_utf_8 (* decodes `End *) in
match utf_8_len.(b1) with
| 0 -> ret b2 (malformed d.t 0 1) 1 d
| 1 -> ret b2 (r_utf_8 d.t 0 1) 1 d
| 2 ->
if d.t_len < 2 then ret decode_utf_8 (malformed d.t 0 1) 1 d else
if d.t_len < 3 then ret decode_utf_8 (r_utf_8 d.t 0 2) 2 d else
ret b3 (r_utf_8 d.t 0 2) 2 d
| 3 ->
if d.t_len < 3
then ret decode_utf_8 (malformed d.t 0 d.t_len) d.t_len d
else ret decode_utf_8 (r_utf_8 d.t 0 3) 3 d
| 4 ->
if d.t_len < 3
then ret decode_utf_8 (malformed d.t 0 d.t_len) d.t_len d
else (d.t_need <- 4; t_fill t_decode_utf_8 d)
| n -> assert false
let guessed_utf_16 d be v = (* start decoder after `UTF_16{BE,LE} guess. *)
let decode_utf_16, t_decode_utf_16, t_decode_utf_16_lo, j0, j1 =
if be then decode_utf_16be, t_decode_utf_16be, t_decode_utf_16be_lo, 0, 1
else decode_utf_16le, t_decode_utf_16le, t_decode_utf_16le_lo, 1, 0
in
let b3 k d =
if d.t_len < 3 then decode_utf_16 d (* decodes `End *) else
begin (* copy d.t.(2) to d.t.(0) and decode. *)
d.t_need <- 2; d.t_len <- 1;
unsafe_set_byte d.t 0 (unsafe_byte d.t 2);
t_fill k d
end
in
match v with
| `BOM -> ret (b3 t_decode_utf_16) (`Uchar u_bom) 2 d
| `ASCII u -> ret (b3 t_decode_utf_16) (`Uchar u) 2 d
| `Decode ->
match r_utf_16 d.t j0 j1 with
| `Malformed _ | `Uchar _ as v -> ret (b3 t_decode_utf_16) v 2 d
| `Hi hi ->
if d.t_len < 3
then ret decode_utf_16 (malformed_pair be hi "" 0 0) d.t_len d
else (b3 (t_decode_utf_16_lo hi)) d
let guess_encoding d = (* guess encoding and start decoder. *)
let setup d = match r_encoding d.t 0 d.t_len with
| `UTF_8 r ->
d.encoding <- `UTF_8; d.k <- decode_utf_8;
begin match r with
| `BOM -> ret decode_utf_8 (`Uchar u_bom) 3 d
| `Decode -> guessed_utf_8 d
| `End -> `End
end
| `UTF_16BE r ->
d.encoding <- `UTF_16BE; d.k <- decode_utf_16be; guessed_utf_16 d true r
| `UTF_16LE r ->
d.encoding <- `UTF_16LE; d.k <- decode_utf_16le; guessed_utf_16 d false r
in
(t_need d 3; t_fill setup d)
(* Character post-processors. Used for BOM handling, newline
normalization and position tracking. The [pp_remove_bom] is only
used for the first character to remove a possible initial BOM and
handle UTF-16 endianness recognition. *)
let nline d = d.col <- 0; d.line <- d.line + 1 (* inlined. *)
let ncol d = d.col <- d.col + 1 (* inlined. *)
let ncount d = d.count <- d.count + 1 (* inlined. *)
let cr d b = d.last_cr <- b (* inlined. *)
let pp_remove_bom utf16 pp d = function(* removes init. BOM, handles UTF-16. *)
| `Uchar 0xFEFF (* BOM *) ->
if utf16 then (d.encoding <- `UTF_16BE; d.k <- decode_utf_16be);
d.removed_bom <- true; d.pp <- pp; d.k d
| `Uchar 0xFFFE (* BOM reversed from decode_utf_16be *) when utf16 ->
d.encoding <- `UTF_16LE; d.k <- decode_utf_16le;
d.removed_bom <- true; d.pp <- pp; d.k d
| `Malformed _ | `Uchar _ as v ->
d.removed_bom <- false; d.pp <- pp; d.pp d v
let pp_nln_none d = function
| `Uchar 0x000A (* LF *) as v ->
let last_cr = d.last_cr in
cr d false; ncount d; if last_cr then v else (nline d; v)
| `Uchar 0x000D (* CR *) as v -> cr d true; ncount d; nline d; v
| `Uchar (0x0085 | 0x000C | 0x2028 | 0x2029) (* NEL | FF | LS | PS *) as v ->
cr d false; ncount d; nline d; v
| `Uchar _ | `Malformed _ as v -> cr d false; ncount d; ncol d; v
let pp_nln_readline d = function
| `Uchar 0x000A (* LF *) ->
let last_cr = d.last_cr in
cr d false; if last_cr then d.k d else (ncount d; nline d; `Uchar d.nl)
| `Uchar 0x000D (* CR *) -> cr d true; ncount d; nline d; `Uchar d.nl
| `Uchar (0x0085 | 0x000C | 0x2028 | 0x2029) (* NEL | FF | LS | PS *) ->
cr d false; ncount d; nline d; `Uchar d.nl
| `Uchar _ | `Malformed _ as v -> cr d false; ncount d; ncol d; v
let pp_nln_nlf d = function
| `Uchar 0x000A (* LF *) ->
let last_cr = d.last_cr in
cr d false; if last_cr then d.k d else (ncount d; nline d; `Uchar d.nl)
| `Uchar 0x000D (* CR *) -> cr d true; ncount d; nline d; `Uchar d.nl
| `Uchar 0x0085 (* NEL *) -> cr d false; ncount d; nline d; `Uchar d.nl
| `Uchar (0x000C | 0x2028 | 0x2029) as v (* FF | LS | PS *) ->
cr d false; ncount d; nline d; v
| `Uchar _ | `Malformed _ as v -> cr d false; ncount d; ncol d; v
let pp_nln_ascii d = function
| `Uchar 0x000A (* LF *) ->
let last_cr = d.last_cr in
cr d false; if last_cr then d.k d else (ncount d; nline d; `Uchar d.nl)
| `Uchar 0x000D (* CR *) -> cr d true; ncount d; nline d; `Uchar d.nl
| `Uchar (0x0085 | 0x000C | 0x2028 | 0x2029) as v (* NEL | FF | LS | PS *) ->
cr d false; ncount d; nline d; v
| `Uchar _ | `Malformed _ as v -> cr d false; ncount d; ncol d; v
let decode_fun = function
| `UTF_8 -> decode_utf_8
| `UTF_16 -> decode_utf_16be (* see [pp_remove_bom]. *)
| `UTF_16BE -> decode_utf_16be
| `UTF_16LE -> decode_utf_16le
| `US_ASCII -> decode_us_ascii
| `ISO_8859_1 -> decode_iso_8859_1
let decoder ?nln ?encoding src =
let pp, nl = match nln with
| None -> pp_nln_none, 0x000A (* not used. *)
| Some (`ASCII nl) -> pp_nln_ascii, nl
| Some (`NLF nl) -> pp_nln_nlf, nl
| Some (`Readline nl) -> pp_nln_readline, nl
in
let encoding, k = match encoding with
| None -> `UTF_8, guess_encoding
| Some e -> (e :> decoder_encoding), decode_fun e
in
let i, i_pos, i_max = match src with
| `Manual -> "", 1, 0 (* implies src_rem d = 0. *)
| `Channel _ -> String.create io_buffer_size, 1, 0 (* idem. *)
| `String s -> s, 0, String.length s - 1
in
{ src = (src :> src); encoding; nln = (nln :> nln option); nl;
i; i_pos; i_max; t = String.create 4; t_len = 0; t_need = 0;
removed_bom = false; last_cr = false; line = 1; col = 0;
byte_count = 0; count = 0;
pp = pp_remove_bom (encoding = `UTF_16) pp; k }
let decode d = d.k d
let decoder_line d = d.line
let decoder_col d = d.col
let decoder_byte_count d = d.byte_count
let decoder_count d = d.count
let decoder_removed_bom d = d.removed_bom
let decoder_src d = d.src
let decoder_nln d = d.nln
let decoder_encoding d = d.encoding
let set_decoder_encoding d e =
d.encoding <- (e :> decoder_encoding); d.k <- decode_fun e
(* Encode *)
type dst = [ `Channel of out_channel | `Buffer of Buffer.t | `Manual ]
type encode = [ `Await | `End | `Uchar of uchar ]
type encoder =
{ dst : dst; (* output destination. *)
encoding : encoding; (* encoded encoding. *)
mutable o : string; (* current output chunk. *)
mutable o_pos : int; (* next output position to write. *)
mutable o_max : int; (* maximal output position to write. *)
t : string; (* four bytes buffer for overlapping writes. *)
mutable t_pos : int; (* next position to read in [t]. *)
mutable t_max : int; (* maximal position to read in [t]. *)
mutable k : (* encoder continuation. *)
encoder -> encode -> [ `Ok | `Partial ] }
(* On encodes that overlap two (or more) [e.o] buffers, we encode the
character to the temporary buffer [o.t] and continue with
[tmp_flush] to write this data on the different [e.o] buffers. If
the [e.o] buffers are not too small this is faster than
continuation based byte per byte writes. *)
let o_rem e = e.o_max - e.o_pos + 1 (* remaining bytes to write in [e.o]. *)
let dst e s j l = (* set [e.o] with [s]. *)
if (j < 0 || l < 0 || j + l > String.length s) then invalid_bounds j l;
e.o <- s; e.o_pos <- j; e.o_max <- j + l - 1
let partial k e = function `Await -> k e | `Uchar _ | `End -> invalid_encode ()
let flush k e = match e.dst with(* get free storage in [d.o] and [k]ontinue. *)
| `Manual -> e.k <- partial k; `Partial
| `Buffer b -> Buffer.add_substring b e.o 0 e.o_pos; e.o_pos <- 0; k e
| `Channel oc -> output oc e.o 0 e.o_pos; e.o_pos <- 0; k e
let t_range e max = e.t_pos <- 0; e.t_max <- max
let rec t_flush k e = (* flush [d.t] up to [d.t_max] in [d.i]. *)
let blit e l =
unsafe_blit e.t e.t_pos e.o e.o_pos l;
e.o_pos <- e.o_pos + l; e.t_pos <- e.t_pos + l
in
let rem = o_rem e in
let len = e.t_max - e.t_pos + 1 in
if rem < len then (blit e rem; flush (t_flush k) e) else (blit e len; k e)
(* Encoders. *)
let rec encode_utf_8 e v =
let k e = e.k <- encode_utf_8; `Ok in
match v with
| `Await -> k e
| `End -> flush k e
| `Uchar u as v ->
let rem = o_rem e in
if u <= 0x007F then
if rem < 1 then flush (fun e -> encode_utf_8 e v) e else
(unsafe_set_byte e.o e.o_pos u; e.o_pos <- e.o_pos + 1; k e)
else if u <= 0x07FF then
begin
let s, j, k =
if rem < 2 then (t_range e 1; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 2; e.o, j, k)
in
unsafe_set_byte s j (0xC0 lor (u lsr 6));
unsafe_set_byte s (j + 1) (0x80 lor (u land 0x3F));
k e
end
else if u <= 0xFFFF then
begin
let s, j, k =
if rem < 3 then (t_range e 2; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 3; e.o, j, k)
in
unsafe_set_byte s j (0xE0 lor (u lsr 12));
unsafe_set_byte s (j + 1) (0x80 lor ((u lsr 6) land 0x3F));
unsafe_set_byte s (j + 2) (0x80 lor (u land 0x3F));
k e
end
else
begin
let s, j, k =
if rem < 4 then (t_range e 3; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 4; e.o, j, k)
in
unsafe_set_byte s j (0xF0 lor (u lsr 18));
unsafe_set_byte s (j + 1) (0x80 lor ((u lsr 12) land 0x3F));
unsafe_set_byte s (j + 2) (0x80 lor ((u lsr 6) land 0x3F));
unsafe_set_byte s (j + 3) (0x80 lor (u land 0x3F));
k e
end
let rec encode_utf_16be e v =
let k e = e.k <- encode_utf_16be; `Ok in
match v with
| `Await -> k e
| `End -> flush k e
| `Uchar u ->
let rem = o_rem e in
if u < 0x10000 then
begin
let s, j, k =
if rem < 2 then (t_range e 1; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 2; e.o, j, k)
in
unsafe_set_byte s j (u lsr 8);
unsafe_set_byte s (j + 1) (u land 0xFF);
k e
end else begin
let s, j, k =
if rem < 4 then (t_range e 3; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 4; e.o, j, k)
in
let u' = u - 0x10000 in
let hi = (0xD800 lor (u' lsr 10)) in
let lo = (0xDC00 lor (u' land 0x3FF)) in
unsafe_set_byte s j (hi lsr 8);
unsafe_set_byte s (j + 1) (hi land 0xFF);
unsafe_set_byte s (j + 2) (lo lsr 8);
unsafe_set_byte s (j + 3) (lo land 0xFF);
k e
end
let rec encode_utf_16le e v = (* encode_uft_16be with bytes swapped. *)
let k e = e.k <- encode_utf_16le; `Ok in
match v with
| `Await -> k e
| `End -> flush k e
| `Uchar u ->
let rem = o_rem e in
if u < 0x10000 then
begin
let s, j, k =
if rem < 2 then (t_range e 1; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 2; e.o, j, k)
in
unsafe_set_byte s j (u land 0xFF);
unsafe_set_byte s (j + 1) (u lsr 8);
k e
end
else
begin
let s, j, k =
if rem < 4 then (t_range e 3; e.t, 0, t_flush k) else
let j = e.o_pos in (e.o_pos <- e.o_pos + 4; e.o, j, k)
in
let u' = u - 0x10000 in
let hi = (0xD800 lor (u' lsr 10)) in
let lo = (0xDC00 lor (u' land 0x3FF)) in
unsafe_set_byte s j (hi land 0xFF);
unsafe_set_byte s (j + 1) (hi lsr 8);
unsafe_set_byte s (j + 2) (lo land 0xFF);
unsafe_set_byte s (j + 3) (lo lsr 8);
k e
end
let encode_fun = function
| `UTF_8 -> encode_utf_8
| `UTF_16 -> encode_utf_16be
| `UTF_16BE -> encode_utf_16be
| `UTF_16LE -> encode_utf_16le
let encoder encoding dst =
let o, o_pos, o_max = match dst with
| `Manual -> "", 1, 0 (* implies o_rem e = 0. *)
| `Buffer _
| `Channel _ -> String.create io_buffer_size, 0, io_buffer_size - 1
in
{ dst = (dst :> dst); encoding = (encoding :> encoding); o; o_pos; o_max;
t = String.create 4; t_pos = 1; t_max = 0; k = encode_fun encoding}
let encode e v = e.k e (v :> encode)
let encoder_encoding e = e.encoding
let encoder_dst e = e.dst
(* Manual sources and destinations. *)
module Manual = struct
let src = src
let dst = dst
let dst_rem = o_rem
end
(* Strings folders and Buffer encoders *)
module String = struct
let encoding_guess s = match r_encoding s 0 (max (String.length s) 3) with
| `UTF_8 d -> `UTF_8, (d = `BOM)
| `UTF_16BE d -> `UTF_16BE, (d = `BOM)
| `UTF_16LE d -> `UTF_16LE, (d = `BOM)
type 'a folder =
'a -> int -> [ `Uchar of uchar | `Malformed of string ] -> 'a
let fold_utf_8 f acc s =
let rec loop acc f s i l =
if i = l then acc else
let need = unsafe_array_get utf_8_len (unsafe_byte s i) in
if need = 0 then loop (f acc i (malformed s i 1)) f s (i + 1) l else
let rem = l - i in
if rem < need then f acc i (malformed s i rem) else
loop (f acc i (r_utf_8 s i need)) f s (i + need) l
in
loop acc f s 0 (String.length s)
let fold_utf_16be f acc s =
let rec loop acc f s i l =
if i = l then acc else
let rem = l - i in
if rem < 2 then f acc i (malformed s i 1) else
match r_utf_16 s i (i + 1) with
| `Uchar _ | `Malformed _ as v -> loop (f acc i v) f s (i + 2) l
| `Hi hi ->
if rem < 4 then f acc i (malformed s i rem) else
loop (f acc i (r_utf_16_lo hi s (i + 2) (i + 3))) f s (i + 4) l
in
loop acc f s 0 (String.length s)
let fold_utf_16le f acc s = (* [fold_utf_16be], bytes swapped. *)
let rec loop acc f s i l =
if i = l then acc else
let rem = l - i in
if rem < 2 then f acc i (malformed s i 1) else
match r_utf_16 s (i + 1) i with
| `Uchar _ | `Malformed _ as v -> loop (f acc i v) f s (i + 2) l
| `Hi hi ->
if rem < 4 then f acc i (malformed s i rem) else
loop (f acc i (r_utf_16_lo hi s (i + 3) (i + 2))) f s (i + 4) l
in
loop acc f s 0 (String.length s)
end
module Buffer = struct
let add_utf_8 b u =
let w byte = Buffer.add_char b (unsafe_chr byte) in (* inlined. *)
if u <= 0x007F then
(w u)
else if u <= 0x07FF then
(w (0xC0 lor (u lsr 6));
w (0x80 lor (u land 0x3F)))
else if u <= 0xFFFF then
(w (0xE0 lor (u lsr 12));
w (0x80 lor ((u lsr 6) land 0x3F));
w (0x80 lor (u land 0x3F)))
else
(w (0xF0 lor (u lsr 18));
w (0x80 lor ((u lsr 12) land 0x3F));
w (0x80 lor ((u lsr 6) land 0x3F));
w (0x80 lor (u land 0x3F)))
let add_utf_16be b u =
let w byte = Buffer.add_char b (unsafe_chr byte) in (* inlined. *)
if u < 0x10000 then (w (u lsr 8); w (u land 0xFF)) else
let u' = u - 0x10000 in
let hi = (0xD800 lor (u' lsr 10)) in
let lo = (0xDC00 lor (u' land 0x3FF)) in
w (hi lsr 8); w (hi land 0xFF);
w (lo lsr 8); w (lo land 0xFF)
let add_utf_16le b u = (* swapped add_utf_16be. *)
let w byte = Buffer.add_char b (unsafe_chr byte) in (* inlined. *)
if u < 0x10000 then (w (u land 0xFF); w (u lsr 8)) else
let u' = u - 0x10000 in
let hi = (0xD800 lor (u' lsr 10)) in
let lo = (0xDC00 lor (u' land 0x3FF)) in
w (hi land 0xFF); w (hi lsr 8);
w (lo land 0xFF); w (lo lsr 8)
end
(*---------------------------------------------------------------------------
Copyright 2012 Daniel C. Bünzli
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
3. Neither the name of Daniel C. Bünzli nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------*)

View File

@@ -0,0 +1,15 @@
create or replace type myobject
AUTHID DEFINER
AS OBJECT
(
m_name varchar2(200),
member function toString RETURN VARCHAR2,
map member function Compare return varchar2
)
not instantiable not final;
/
prompt create type myarray
create or replace type myarray as table of myobject;
/

View File

@@ -0,0 +1,58 @@
CREATE OR REPLACE PACKAGE BODY linguistpackage
AS
/*
* Package: linguist pacakage body
* Purpose: a sample PLSQL file for linguist to work with
*
* Date: 03/03/2014
* Author: david pyke le brun
* Comments: initial version
*/
PROCEDURE proc_1
IS
BEGIN
NULL;
END;
-- functions with 1 arg
FUNCTION function1( param1 VARCHAR2 ) RETURN VARCHAR2
IS
CURSOR c IS
select * from dual;
v c%ROWTYPE;
BEGIN
open c;
fetch c into v;
close c;
return v;
end;
FUNCTION function2( param1 NUMBER ) RETURN DATE
IS
BEGIN
return SYSDATE;
end;
--a few more to use all basic SQL types
FUNCTION function3( param1 TIMESTAMP ) RETURN CHAR
IS
BEGIN
IF 1 = 2 THEN
return 'Y';
ELSE
return 'N';
END IF;
return NULL;
END;
FUNCTION function4( param1 CLOB ) RETURN BLOB
IS
BEGIN
return null;
END;
END linguistpackage;
/

View File

@@ -0,0 +1,28 @@
CREATE OR REPLACE PACKAGE linguistpackage
AUTHID DEFINER
AS
/*
* Package: linguist pacakage
* Purpose: a sample PLSQL file for linguist to work with
*
* Date: 03/03/2014
* Author: david pyke le brun
* Comments: initial version
*/
k_constant CONSTANT NUMBER(10,2) := 3.14;
--basic procedure
PROCEDURE proc_1;
-- functions with 1 arg
FUNCTION function1( param1 VARCHAR2 ) RETURN VARCHAR2;
FUNCTION function2( param1 NUMBER ) RETURN DATE;
--a few more to use all basic SQL types
FUNCTION function3( param1 TIMESTAMP ) RETURN CHAR;
FUNCTION function4( param1 CLOB ) RETURN BLOB;
END linguistpackage;
/

View File

@@ -0,0 +1,93 @@
create or replace package prime#
is
invalid_argument_error exception;
function nth (
i_num pls_integer
) return number;
end prime#;
/
create or replace package body prime#
is
type t_primes is table of number index by pls_integer;
b_primes t_primes;
function is_prime(
i_candidate number
) return boolean
is
l_num number := 1;
l_prime number;
l_result number;
begin
if i_candidate < 2 then
return false;
end if;
loop
l_prime := nth(l_num);
if l_prime = i_candidate then
return true;
end if;
l_result := i_candidate / l_prime;
if l_result = ceil(l_result) then
return false;
end if;
l_num := l_num + 1;
exit when l_result <= l_prime;
end loop;
return true;
end is_prime;
function next (
i_prime pls_integer
) return number
is
l_next number;
begin
l_next := i_prime + case mod(i_prime, 2) when 0 then 1 else 2 end;
while not is_prime(l_next) loop
l_next := l_next + 2;
end loop;
return l_next;
end next;
function nth (
i_num pls_integer
) return number
is
l_index number := 2;
l_prime number := 3;
begin
if i_num < 1
or ceil(i_num) != i_num
then
raise invalid_argument_error;
end if;
case i_num
when 1 then return 2;
else
if b_primes.exists(i_num) then
return b_primes(i_num);
end if;
while l_index < i_num loop
l_index := l_index + 1;
if b_primes.exists(l_index) then
l_prime := b_primes(l_index);
else
l_prime := next(l_prime);
b_primes(l_index) := l_prime;
end if;
end loop;
return l_prime;
end case;
end nth;
end prime#;
/

View File

@@ -0,0 +1,65 @@
CREATE OR REPLACE PROCEDURE who_called_me
( owner OUT VARCHAR2,
name OUT VARCHAR2,
lineno OUT NUMBER,
caller_t OUT VARCHAR2 ,
depth NUMBER DEFAULT 1
)
AUTHID DEFINER
AS
--depth based version of who_called_me from asktom
call_stack VARCHAR2(4096) default dbms_utility.format_call_stack;
n NUMBER;
found_stack BOOLEAN DEFAULT FALSE;
line VARCHAR2(255);
cnt NUMBER := 0;
BEGIN
LOOP
n := instr( call_stack, chr(10) );
exit when ( n is NULL or n = 0 );
--
line := substr( call_stack, 1, n-1 );
call_stack := substr( call_stack, n+1 );
--
if ( NOT found_stack ) then
if ( line like '%handle%number%name%' ) then
found_stack := TRUE;
end if;
else
cnt := cnt + 1;
-- cnt = 1 is ME
-- cnt = 2 is MY Caller
-- cnt = 3 is Their Caller
if ( cnt = (2+depth) ) then
lineno := to_number(substr( line, 13, 8 ));
line := substr( line, 23 ); --set to rest of line .. change from 21 to 23
if ( line like 'pr%' ) then
n := length( 'procedure ' );
elsif ( line like 'fun%' ) then
n := length( 'function ' );
elsif ( line like 'package body%' ) then
n := length( 'package body ' );
elsif ( line like 'pack%' ) then
n := length( 'package ' );
elsif ( line like 'anonymous%' ) then
n := length( 'anonymous block ' );
else
n := null;
end if;
if ( n is not null ) then
caller_t := ltrim(rtrim(upper(substr( line, 1, n-1 ))));
else
caller_t := 'TRIGGER';
end if;
line := substr( line, nvl(n,1) );
n := instr( line, '.' );
owner := ltrim(rtrim(substr( line, 1, n-1 )));
name := LTRIM(RTRIM(SUBSTR( LINE, N+1 )));
exit;
END IF;
END IF;
END LOOP;
END;
/

View File

@@ -0,0 +1,165 @@
load 'plpgsql';
load 'plpgsql_lint';
create table t1(a int, b int);
create function f1()
returns void as $$
begin
if false then
update t1 set c = 30;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create function g1(out a int, out b int)
as $$
select 10,20;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
r := g1();
if false then
raise notice '%', r.c;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function g1(out a int, out b int)
returns setof record as $$
select * from t1;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
raise notice '%', r.c;
end loop;
end;
$$ language plpgsql;
select f1();
create or replace function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
r.c := 20;
end loop;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function f1()
returns int as $$
declare r int;
begin
if false then
r := a + b;
end if;
return r;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '%', 1, 2;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '% %';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int[];
begin
if false then
r[c+10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int;
begin
if false then
r[10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create type diagnostic_info_type as (
status text,
message text,
detail text,
row_count int);
create or replace function f1()
returns void as $$
declare
dg record;
begin
dg := NULL::diagnostic_info_type;
if false then
dg.status := '00000';
dg.mistake := 'hello';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();

View File

@@ -0,0 +1,165 @@
load 'plpgsql';
load 'plpgsql_lint';
create table t1(a int, b int);
create function f1()
returns void as $$
begin
if false then
update t1 set c = 30;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create function g1(out a int, out b int)
as $$
select 10,20;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
r := g1();
if false then
raise notice '%', r.c;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function g1(out a int, out b int)
returns setof record as $$
select * from t1;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
raise notice '%', r.c;
end loop;
end;
$$ language plpgsql;
select f1();
create or replace function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
r.c := 20;
end loop;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function f1()
returns int as $$
declare r int;
begin
if false then
r := a + b;
end if;
return r;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '%', 1, 2;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '% %';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int[];
begin
if false then
r[c+10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int;
begin
if false then
r[10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create type diagnostic_info_type as (
status text,
message text,
detail text,
row_count int);
create or replace function f1()
returns void as $$
declare
dg record;
begin
dg := NULL::diagnostic_info_type;
if false then
dg.status := '00000';
dg.mistake := 'hello';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();

View File

@@ -0,0 +1,179 @@
load 'plpgsql';
load 'plpgsql_lint';
create table t1(a int, b int);
create function f1()
returns void as $$
begin
if false then
update t1 set c = 30;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create function g1(out a int, out b int)
as $$
select 10,20;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
r := g1();
if false then
raise notice '%', r.c;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function g1(out a int, out b int)
returns setof record as $$
select * from t1;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
raise notice '%', r.c;
end loop;
end;
$$ language plpgsql;
select f1();
create or replace function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
r.c := 20;
end loop;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function f1()
returns int as $$
declare r int;
begin
if false then
r := a + b;
end if;
return r;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '%', 1, 2;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '% %';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int[];
begin
if false then
r[c+10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int;
begin
if false then
r[10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create type diagnostic_info_type as (
status text,
message text,
detail text,
row_count int);
create or replace function f1()
returns void as $$
declare dg record;
begin
dg := NULL::diagnostic_info_type;
if false then
dg.status := '00000';
dg.mistake := 'hello';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare dg record;
begin
if false then
dg := 10,20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();

View File

@@ -0,0 +1,166 @@
load 'plpgsql';
load 'plpgsql_lint';
create table t1(a int, b int);
create function f1()
returns void as $$
begin
if false then
update t1 set c = 30;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create function g1(out a int, out b int)
as $$
select 10,20;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
r := g1();
if false then
raise notice '%', r.c;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function g1(out a int, out b int)
returns setof record as $$
select * from t1;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
raise notice '%', r.c;
end loop;
end;
$$ language plpgsql;
select f1();
create or replace function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
r.c := 20;
end loop;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function f1()
returns int as $$
declare r int;
begin
if false then
r := a + b;
end if;
return r;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '%', 1, 2;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '% %';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int[];
begin
if false then
r[c+10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int;
begin
if false then
r[10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create type _exception_type as (
state text,
message text,
detail text);
create or replace function f1()
returns void as $$
declare
_exception record;
begin
_exception := NULL::_exception_type;
exception when others then
get stacked diagnostics
_exception.state = RETURNED_SQLSTATE,
_exception.message = MESSAGE_TEXT,
_exception.detail = PG_EXCEPTION_DETAIL,
_exception.hint = PG_EXCEPTION_HINT;
end;
$$ language plpgsql;
select f1();
drop function f1();

View File

@@ -0,0 +1,166 @@
load 'plpgsql';
load 'plpgsql_lint';
create table t1(a int, b int);
create function f1()
returns void as $$
begin
if false then
update t1 set c = 30;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create function g1(out a int, out b int)
as $$
select 10,20;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
r := g1();
if false then
raise notice '%', r.c;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function g1(out a int, out b int)
returns setof record as $$
select * from t1;
$$ language sql;
create function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
raise notice '%', r.c;
end loop;
end;
$$ language plpgsql;
select f1();
create or replace function f1()
returns void as $$
declare r record;
begin
for r in select * from g1()
loop
r.c := 20;
end loop;
end;
$$ language plpgsql;
select f1();
drop function f1();
drop function g1();
create function f1()
returns int as $$
declare r int;
begin
if false then
r := a + b;
end if;
return r;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '%', 1, 2;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
begin
if false then
raise notice '% %';
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int[];
begin
if false then
r[c+10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create or replace function f1()
returns void as $$
declare r int;
begin
if false then
r[10] := 20;
end if;
end;
$$ language plpgsql;
select f1();
drop function f1();
create type _exception_type as (
state text,
message text,
detail text);
create or replace function f1()
returns void as $$
declare
_exception record;
begin
_exception := NULL::_exception_type;
exception when others then
get stacked diagnostics
_exception.state = RETURNED_SQLSTATE,
_exception.message = MESSAGE_TEXT,
_exception.detail = PG_EXCEPTION_DETAIL,
_exception.hint = PG_EXCEPTION_HINT;
end;
$$ language plpgsql;
select f1();
drop function f1();

View File

@@ -0,0 +1,117 @@
package exception_handler;
use sigtrap qw(die normal-signals);
use IO::Handle;
use Carp;
use File::Spec;
use File::Basename;
use Data::Dumper;
use sigtrap 'handler', \&tm_die;
$Carp::CarpLevel = 1; # How many extra package levels to skip on carp.
BEGIN {
*CORE::GLOBAL::die = \&tm_die;
$main::SIG{__DIE__} = \&tm_die;
my $error_fd = $ENV{"TM_ERROR_FD"};
open (TM_ERROR_FD, ">&=$error_fd");
TM_ERROR_FD->autoflush(1);
}
sub realwarn { CORE::warn(@_); }
sub realdie { CORE::die(@_); }
sub longmess {
my ($arg, @rest) = shift;
{
local $@;
# XXX fix require to not clear $@?
# don't use require unless we need to (for Safe compartments)
require Carp::Heavy unless $INC{"Carp/Heavy.pm"};
}
# Icky backwards compatibility wrapper. :-(
my $call_pack = caller();
if ($Internal{$call_pack} or $Carp::CarpInternal{$call_pack}) {
return longmess_heavy($arg, @rest);
}
else {
local $Carp::CarpLevel = $Carp::CarpLevel + 1;
return longmess_heavy($arg, @rest);
}
}
sub longmess_heavy {
return @_ if ref($_[0]); # don't break references as exceptions
my $i = Carp::long_error_loc();
my ($arg, @rest) = @_;
return ret_backtrace($i, $arg, @rest);
}
sub quote {
my $str = shift;
$str =~ s/([^A-Za-z0-9\/_.-])/sprintf("%%%02X", ord($1))/seg;
return $str;
}
sub url_and_display_name {
my $file = shift;
my $url = "";
my $display_name = "";
$display_name = basename($file);
$url = 'url=file://' . quote($file);
return ($url, $display_name);
}
# Returns a full stack backtrace starting from where it is
# told.
sub ret_backtrace {
my ($i, $arg, @rest) = @_;
my $mess;
$i++;
my $tid_msg = '';
if (defined &Thread::tid) {
my $tid = Thread->self->tid;
$tid_msg = " thread $tid" if $tid;
}
my %i = Carp::caller_info($i);
$arg =~ s/\n/\<br\>/g;
$i{sub} =~ s/tm_die/die/g;
$mess .= "<div id='exception_report' class='framed'>\n";
$mess .= "<p id='exception'><strong>$arg</strong></p>\n";
$mess .= "<blockquote><table border='0' cellspacing='0' cellpadding='0'>\n";
my ($url, $display_name) = url_and_display_name($i{file});
$mess .= "<tr><td><a href='txmt://open?line=$i{line}&" . $url . "'>$i{sub}</a></td><td>&nbsp;in $display_name at line $i{line}$tid_msg</td></tr>\n";
while (my %i = Carp::caller_info(++$i)) {
($url, $display_name) = url_and_display_name($i{file});
$mess .= "<tr><td><a href='txmt://open?line=$i{line}&" . $url . "'>$i{sub}</a></td><td>&nbsp;in $display_name at line $i{line}$tid_msg</td></tr>\n";
}
$mess .= "</table></blockquote></div>";
return $mess;
}
sub ineval {
(exists $ENV{MOD_PERL} ? 0 : $^S) || Carp::longmess() =~ /eval [\{\']/m
}
sub htmlize {
my $l = shift;
$l =~ s/&/&amp;/g;
$l =~ s/</&lt;/g;
$l =~ s/>/&gt;/g;
return $l;
}
sub tm_die {
my ($arg,@rest) = @_;
if (ineval()) {
realdie ($arg,@rest) if ineval();
}
if (!ref($arg)) {
print TM_ERROR_FD longmess($arg,@rest);
}
exit($!);
}
1;

View File

@@ -0,0 +1,67 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma version(1)
#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
#pragma rs_fp_relaxed
int32_t gWidth;
int32_t gHeight;
const uchar4 *gPixels;
rs_allocation gIn;
float gCoeffs[9];
void root(const uchar4 *in, uchar4 *out, const void *usrData, uint32_t x, uint32_t y) {
uint32_t x1 = min((int32_t)x+1, gWidth-1);
uint32_t x2 = max((int32_t)x-1, 0);
uint32_t y1 = min((int32_t)y+1, gHeight-1);
uint32_t y2 = max((int32_t)y-1, 0);
float4 p00 = rsUnpackColor8888(gPixels[x1 + gWidth * y1]);
float4 p01 = rsUnpackColor8888(gPixels[x + gWidth * y1]);
float4 p02 = rsUnpackColor8888(gPixels[x2 + gWidth * y1]);
float4 p10 = rsUnpackColor8888(gPixels[x1 + gWidth * y]);
float4 p11 = rsUnpackColor8888(gPixels[x + gWidth * y]);
float4 p12 = rsUnpackColor8888(gPixels[x2 + gWidth * y]);
float4 p20 = rsUnpackColor8888(gPixels[x1 + gWidth * y2]);
float4 p21 = rsUnpackColor8888(gPixels[x + gWidth * y2]);
float4 p22 = rsUnpackColor8888(gPixels[x2 + gWidth * y2]);
p00 *= gCoeffs[0];
p01 *= gCoeffs[1];
p02 *= gCoeffs[2];
p10 *= gCoeffs[3];
p11 *= gCoeffs[4];
p12 *= gCoeffs[5];
p20 *= gCoeffs[6];
p21 *= gCoeffs[7];
p22 *= gCoeffs[8];
p00 += p01;
p02 += p10;
p11 += p12;
p20 += p21;
p22 += p00;
p02 += p11;
p20 += p22;
p20 += p02;
p20 = clamp(p20, 0.f, 1.f);
*out = rsPackColorTo8888(p20.r, p20.g, p20.b);
}

View File

@@ -0,0 +1,323 @@
// Copyright (C) 2011-2012 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma version(1)
#pragma rs java_package_name(com.android.scenegraph)
#ifndef _TRANSFORM_DEF_
#define _TRANSFORM_DEF_
#include "rs_graphics.rsh"
#define TRANSFORM_NONE 0
#define TRANSFORM_TRANSLATE 1
#define TRANSFORM_ROTATE 2
#define TRANSFORM_SCALE 3
#define CULL_FRUSTUM 0
#define CULL_ALWAYS 2
#define LIGHT_POINT 0
#define LIGHT_DIRECTIONAL 1
// Shader params that involve only data
#define SHADER_PARAM_DATA_ONLY 10000
#define SHADER_PARAM_FLOAT4_DATA 10001
#define SHADER_PARAM_TRANSFORM_DATA 10002
#define SHADER_PARAM_TRANSFORM_MODEL 10003
// Shader params that involve camera
#define SHADER_PARAM_CAMERA 1000
#define SHADER_PARAM_FLOAT4_CAMERA_POS 1001
#define SHADER_PARAM_FLOAT4_CAMERA_DIR 1002
#define SHADER_PARAM_TRANSFORM_VIEW 1003
#define SHADER_PARAM_TRANSFORM_PROJ 1004
#define SHADER_PARAM_TRANSFORM_VIEW_PROJ 1005
#define SHADER_PARAM_TRANSFORM_MODEL_VIEW 1006
#define SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ 1007
// Shader Params that only involve lights
#define SHADER_PARAM_LIGHT 100
#define SHADER_PARAM_FLOAT4_LIGHT_COLOR 103
#define SHADER_PARAM_FLOAT4_LIGHT_POS 104
#define SHADER_PARAM_FLOAT4_LIGHT_DIR 105
#define SHADER_PARAM_TEXTURE 10
#define TEXTURE_NONE 0
#define TEXTURE_2D 1
#define TEXTURE_CUBE 2
#define TEXTURE_RENDER_TARGET 3
typedef struct TransformComponent_s {
float4 value;
int type;
rs_allocation name;
} SgTransformComponent;
typedef struct __attribute__((packed, aligned(4))) SgTransform {
rs_matrix4x4 globalMat;
rs_matrix4x4 localMat;
rs_allocation components;
int isDirty;
rs_allocation children;
rs_allocation name;
// Used to check whether transform params need to be updated
uint32_t timestamp;
} SgTransform;
typedef struct VertexShader_s {
rs_program_vertex program;
// Buffer with vertex constant data
rs_allocation shaderConst;
// ShaderParam's that populate data
rs_allocation shaderConstParams;
// location of the per object constants on the buffer
int objectConstIndex;
} SgVertexShader;
typedef struct FragmentShader_s {
rs_program_fragment program;
// Buffer with vertex constant data
rs_allocation shaderConst;
// ShaderParam's that populate data
rs_allocation shaderConstParams;
// ShaderParam's that set textures
rs_allocation shaderTextureParams;
// location of the per object constants on the buffer
int objectConstIndex;
} SgFragmentShader;
typedef struct RenderState_s {
rs_allocation pv; // VertexShader struct
rs_allocation pf; // FragmentShader struct
rs_program_store ps;
rs_program_raster pr;
} SgRenderState;
typedef struct Renderable_s {
rs_allocation render_state;
// Buffer with vertex constant data
rs_allocation pv_const;
// ShaderParam's that populate data
rs_allocation pv_constParams;
// Buffer with fragment constant data
rs_allocation pf_const;
// ShaderParam's that populate data
rs_allocation pf_constParams;
rs_allocation pf_textures[8];
int pf_num_textures;
rs_mesh mesh;
int meshIndex;
rs_allocation transformMatrix;
rs_allocation name;
float4 boundingSphere;
float4 worldBoundingSphere;
int bVolInitialized;
int cullType; // specifies whether to frustum cull
int isVisible;
} SgRenderable;
typedef struct RenderPass_s {
rs_allocation color_target;
rs_allocation depth_target;
rs_allocation camera;
rs_allocation objects;
float4 clear_color;
float clear_depth;
bool should_clear_color;
bool should_clear_depth;
} SgRenderPass;
typedef struct Camera_s {
rs_matrix4x4 proj;
rs_matrix4x4 view;
rs_matrix4x4 viewProj;
float4 position;
float near;
float far;
float horizontalFOV;
float aspect;
rs_allocation name;
rs_allocation transformMatrix;
float4 frustumPlanes[6];
int isDirty;
// Timestamp of the camera itself to signal params if anything changes
uint32_t timestamp;
// Timestamp of our transform
uint32_t transformTimestamp;
} SgCamera;
typedef struct Light_s {
float4 position;
float4 color;
float intensity;
int type;
rs_allocation name;
rs_allocation transformMatrix;
} SgLight;
// This represents the shader parameter data needed to set a float or transform data
typedef struct ShaderParamData_s {
int type;
float4 float_value;
uint32_t timestamp;
rs_allocation paramName;
rs_allocation camera;
rs_allocation light;
rs_allocation transform;
rs_allocation texture;
} SgShaderParamData;
// This represents a shader parameter that knows how to update itself for a given
// renderable or shader and contains a timestamp for the last time this buffer was updated
typedef struct ShaderParam_s {
// Used to check whether transform params need to be updated
uint32_t transformTimestamp;
// Used to check whether data params need to be updated
// These are used when somebody set the matrix of float value directly in java
uint32_t dataTimestamp;
// Specifies where in the constant buffer data gets written to
int bufferOffset;
// An instance of SgShaderParamData that could be shared by multiple objects
rs_allocation data;
// How many components of the vector we need to write
int float_vecSize;
} SgShaderParam;
// This represents a texture object
typedef struct Texture_s {
uint32_t type;
rs_allocation texture;
} SgTexture;
static void printName(rs_allocation name) {
if (!rsIsObject(name)) {
rsDebug("no name", 0);
return;
}
rsDebug((const char*)rsGetElementAt(name, 0), 0);
}
static void printCameraInfo(const SgCamera *cam) {
rsDebug("***** Camera information. ptr:", cam);
printName(cam->name);
const SgTransform *camTransform = (const SgTransform *)rsGetElementAt(cam->transformMatrix, 0);
rsDebug("Transform name:", camTransform);
printName(camTransform->name);
rsDebug("Aspect: ", cam->aspect);
rsDebug("Near: ", cam->near);
rsDebug("Far: ", cam->far);
rsDebug("Fov: ", cam->horizontalFOV);
rsDebug("Position: ", cam->position);
rsDebug("Proj: ", &cam->proj);
rsDebug("View: ", &cam->view);
}
static void printLightInfo(const SgLight *light) {
rsDebug("***** Light information. ptr:", light);
printName(light->name);
const SgTransform *lTransform = (const SgTransform *)rsGetElementAt(light->transformMatrix, 0);
rsDebug("Transform name:", lTransform);
printName(lTransform->name);
rsDebug("Position: ", light->position);
rsDebug("Color : ", light->color);
rsDebug("Intensity: ", light->intensity);
rsDebug("Type: ", light->type);
}
static void getCameraRay(const SgCamera *cam, int screenX, int screenY, float3 *pnt, float3 *vec) {
rsDebug("=================================", screenX);
rsDebug("Point X", screenX);
rsDebug("Point Y", screenY);
rs_matrix4x4 mvpInv;
rsMatrixLoad(&mvpInv, &cam->viewProj);
rsMatrixInverse(&mvpInv);
float width = (float)rsgGetWidth();
float height = (float)rsgGetHeight();
float4 pos = {(float)screenX, height - (float)screenY, 0.0f, 1.0f};
pos.x /= width;
pos.y /= height;
rsDebug("Pre Norm X", pos.x);
rsDebug("Pre Norm Y", pos.y);
pos.xy = pos.xy * 2.0f - 1.0f;
rsDebug("Norm X", pos.x);
rsDebug("Norm Y", pos.y);
pos = rsMatrixMultiply(&mvpInv, pos);
float oneOverW = 1.0f / pos.w;
pos.xyz *= oneOverW;
rsDebug("World X", pos.x);
rsDebug("World Y", pos.y);
rsDebug("World Z", pos.z);
rsDebug("Cam X", cam->position.x);
rsDebug("Cam Y", cam->position.y);
rsDebug("Cam Z", cam->position.z);
*vec = normalize(pos.xyz - cam->position.xyz);
rsDebug("Vec X", vec->x);
rsDebug("Vec Y", vec->y);
rsDebug("Vec Z", vec->z);
*pnt = cam->position.xyz;
}
static bool intersect(const SgRenderable *obj, float3 pnt, float3 vec) {
// Solving for t^2 + Bt + C = 0
float3 originMinusCenter = pnt - obj->worldBoundingSphere.xyz;
float B = dot(originMinusCenter, vec) * 2.0f;
float C = dot(originMinusCenter, originMinusCenter) -
obj->worldBoundingSphere.w * obj->worldBoundingSphere.w;
float discriminant = B * B - 4.0f * C;
if (discriminant < 0.0f) {
return false;
}
discriminant = sqrt(discriminant);
float t0 = (-B - discriminant) * 0.5f;
float t1 = (-B + discriminant) * 0.5f;
if (t0 > t1) {
float temp = t0;
t0 = t1;
t1 = temp;
}
// The sphere is behind us
if (t1 < 0.0f) {
return false;
}
return true;
}
#endif // _TRANSFORM_DEF_

View File

@@ -0,0 +1,4 @@
json.array!(@courts) do |court|
json.extract! court, :id, :name_r, :region, :region_r, :email, :website
json.url court_url(court, format: :json)
end

View File

@@ -0,0 +1,21 @@
CREATE TABLE x AS SELECT * FROM DUAL;
CREATE TABLE y (
col1 NUMBER NOT NULL ,
col2 VARCHAR2(200),
col3 DATE,
col4 TIMESTAMP WITH TIME ZONE NOT NULL
);
CREATE USER username IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO username;
GRANT CREATE TYPE TO username;
GRANT CREATE PROCEDURE TO username;
GRANT CREATE TABLE TO username;
GRANT CREATE VIEW TO username;

View File

@@ -0,0 +1,13 @@
drop procedure who_called_me;
drop package body linguist_package;
drop package linguist_package;
drop function functionname1;
drop table x;
drop table y cascade;
drop type typename1;
drop type typename2;
drop view viewname1;
drop view viewname2;

3
samples/SQL/dual.sql Normal file
View File

@@ -0,0 +1,3 @@
--this is the most basic oracle sql command
select * from dual;

View File

@@ -0,0 +1,39 @@
create procedure check_reorg_tables (in v_schema varchar(128), out v_reorg_counter integer)
begin
declare loc result_set_locator varying;
declare schema_out varchar(128);
declare table_out varchar(128);
declare card_out integer;
declare overflow_out integer;
declare npages_out integer;
declare fpages_out integer;
declare active_blocks_out integer;
declare tsize_out integer;
declare f1_out integer;
declare f2_out integer;
declare f3_out integer;
declare reorg_out varchar(3);
declare cursor_end smallint default 0;
declare continue handler for NOT FOUND
set cursor_end = 1;
set v_reorg_counter = 0;
call reorgchk_tb_stats('S', v_schema);
associate result set locator(loc) with procedure reorgchk_tb_stats;
allocate mycursor cursor for result set loc;
open mycursor;
repeat
fetch from mycursor into schema_out, table_out, card_out, overflow_out, npages_out, fpages_out, active_blocks_out, tsize_out, f1_out, f2_out, f3_out, reorg_out;
if reorg_out <> '---' then
set v_reorg_counter = v_reorg_counter + 1;
end if;
until cursor_end = 1
end repeat;
close mycursor;
end!

View File

@@ -0,0 +1,30 @@
DROP FUNCTION COMM_AMOUNT;
CREATE FUNCTION COMM_AMOUNT(SALARY DEC(9,2))
RETURNS DEC(9,2)
LANGUAGE SQL READS SQL DATA
BEGIN ATOMIC
DECLARE REMAINDER DEC(9,2) DEFAULT 0.0;--
DECLARE COMM_PAID DEC(9,2) DEFAULT 0.0;--
DECLARE COMM_INCR INT DEFAULT 1;--
DECLARE MAX_COMM DEC(9,2) DEFAULT 0.0;--
IF (SALARY <= 0) THEN
SIGNAL SQLSTATE '75000'
SET MESSAGE_TEXT = 'Bad Salary';--
END IF;--
SET REMAINDER = SALARY;--
L1: WHILE REMAINDER > 0.0 DO
SET COMM_PAID = COMM_PAID + (COMM_INCR * 500.00);--
SET REMAINDER = REMAINDER-(COMM_INCR * 5000.00);--
SET COMM_INCR = COMM_INCR + 1;--
END WHILE L1;--
SET MAX_COMM =
(SELECT SUM(SALARY)/100.00 FROM EMPLOYEE);--
IF (COMM_PAID > MAX_COMM) THEN
SET COMM_PAID = MAX_COMM;--
END IF;--
RETURN COMM_PAID;--
END;

View File

@@ -0,0 +1,13 @@
DROP TABLE TDEPT;
CREATE TABLE TDEPT (DEPTNO CHAR(4));
--#SET TERMINATOR @
BEGIN ATOMIC
DECLARE COUNT INT DEFAULT 5;
WHILE COUNT > 0 DO
INSERT INTO TDEPT VALUES 'F'||
RTRIM(CHAR(COUNT));
SET COUNT = COUNT - 1;
END WHILE;
END@

View File

@@ -0,0 +1,18 @@
create procedure runstats (out nr_tables integer, out nr_ok integer)
begin
declare SQLCODE integer;
declare stmt varchar(100);
set nr_tables = 0;
set nr_ok = 0;
for line as select tabschema, tabname from syscat.tables where type='T' and tabschema='SPODEN'
do
set nr_tables = nr_tables + 1;
set stmt = 'CALL SYSPROC.ADMIN_CMD (RUNSTATS ON TABLE ' concat rtrim(line.tabschema) concat '.' concat line.tabname concat ')';
execute immediate stmt;
if SQLCODE = 0 then
set nr_ok = nr_ok + 1;
end if;
end for;
end!

Some files were not shown because too many files have changed in this diff Show More