mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
Merge branch 'master' into clarion
This commit is contained in:
45
.gitmodules
vendored
45
.gitmodules
vendored
@@ -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
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
sudo: false
|
||||
before_install: script/travis/before_install
|
||||
rvm:
|
||||
- 1.9.3
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
32
grammars.yml
32
grammars.yml
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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(\.|$)
|
||||
|
||||
@@ -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(".")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.+\$@/) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Linguist
|
||||
VERSION = "4.4.0"
|
||||
VERSION = "4.5.4"
|
||||
end
|
||||
|
||||
25
samples/AMPL/toy.ampl
Normal file
25
samples/AMPL/toy.ampl
Normal 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
195
samples/Brainfuck/factor.b
Normal 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
|
||||
*
|
||||
|
||||
[>>>>>>>>>>]<<<<<<<<<<[+>[>>>>>>>>>+>]<-<<<<<<<<<<]-
|
||||
[>++++++++++++++++++++++++++++++++++++++++++++++++.<<<<<<<<<<<]
|
||||
++++++++++.
|
||||
13
samples/Brainfuck/fib100.bf
Normal file
13
samples/Brainfuck/fib100.bf
Normal file
@@ -0,0 +1,13 @@
|
||||
# Calculate and output all fibonacci numbers under 100
|
||||
|
||||
+++++++++++
|
||||
>+>>>>++++++++++++++++++++++++++++++++++++++++++++
|
||||
>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>
|
||||
+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-
|
||||
<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
|
||||
-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
|
||||
>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++
|
||||
+++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++
|
||||
++++++++++++++++++++++++++++++++++++++++++++.[-]<<
|
||||
<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
|
||||
[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
|
||||
4
samples/Brainfuck/hello.bf
Normal file
4
samples/Brainfuck/hello.bf
Normal file
@@ -0,0 +1,4 @@
|
||||
// More complex version of hello world
|
||||
|
||||
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>
|
||||
>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.
|
||||
3
samples/Brainfuck/helloworld.bf
Normal file
3
samples/Brainfuck/helloworld.bf
Normal file
@@ -0,0 +1,3 @@
|
||||
// Hello World
|
||||
|
||||
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
|
||||
30
samples/Brainfuck/rot13.bf
Normal file
30
samples/Brainfuck/rot13.bf
Normal 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
2310
samples/C/filenames/script
Executable file
File diff suppressed because it is too large
Load Diff
166
samples/C/pqiv.h
Normal file
166
samples/C/pqiv.h
Normal 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
|
||||
15
samples/Clojure/build.boot
Normal file
15
samples/Clojure/build.boot
Normal 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
318
samples/D/mpq.d
Normal 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
23
samples/DTrace/counts.d
Normal 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);
|
||||
}
|
||||
|
||||
73
samples/DTrace/javascript-trace.d
Normal file
73
samples/DTrace/javascript-trace.d
Normal 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
93
samples/DTrace/probes.d
Normal 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();
|
||||
};
|
||||
44
samples/Eiffel/application.e
Normal file
44
samples/Eiffel/application.e
Normal 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
|
||||
|
||||
82
samples/Eiffel/book_collection.e
Normal file
82
samples/Eiffel/book_collection.e
Normal 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
|
||||
41
samples/Eiffel/git_checkout_command.e
Normal file
41
samples/Eiffel/git_checkout_command.e
Normal 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
|
||||
10
samples/Elixir/filenames/mix.lock
Normal file
10
samples/Elixir/filenames/mix.lock
Normal 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"}}
|
||||
260
samples/Erlang/filenames/rebar.config
Normal file
260
samples/Erlang/filenames/rebar.config
Normal 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\"))",[]}]}.
|
||||
158
samples/Erlang/filenames/rebar.config.lock
Normal file
158
samples/Erlang/filenames/rebar.config.lock
Normal 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]}.
|
||||
|
||||
16
samples/Erlang/filenames/rebar.lock
Normal file
16
samples/Erlang/filenames/rebar.lock
Normal 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}].
|
||||
35
samples/Filterscript/colormatrix.fs
Normal file
35
samples/Filterscript/colormatrix.fs
Normal 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);
|
||||
}
|
||||
|
||||
18
samples/Filterscript/fs_kernel.fs
Normal file
18
samples/Filterscript/fs_kernel.fs
Normal 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;
|
||||
}
|
||||
|
||||
919
samples/Formatted/long_seq.for
Normal file
919
samples/Formatted/long_seq.for
Normal 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
|
||||
1317
samples/Formatted/wksst8110.for
Normal file
1317
samples/Formatted/wksst8110.for
Normal file
File diff suppressed because it is too large
Load Diff
1157
samples/Go/api.pb.go
Normal file
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
114
samples/Haskell/HsColour.hs
Normal 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
|
||||
|
||||
71
samples/INI/MouseKeyboard.pro
Normal file
71
samples/INI/MouseKeyboard.pro
Normal 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
742
samples/JFlex/LexScan.flex
Normal 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
305
samples/JFlex/java.jflex
Normal 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
714
samples/KiCad/Volume.sch
Normal 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
|
||||
69
samples/KiCad/ultimate-temp-controller.sch
Normal file
69
samples/KiCad/ultimate-temp-controller.sch
Normal 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
75
samples/Lean/binary.lean
Normal 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
70
samples/Lean/set.hlean
Normal 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
48
samples/Limbo/cat.b
Normal 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
26
samples/Limbo/lock.b
Normal 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
13
samples/Limbo/lock.m
Normal 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
278
samples/MUF/39.m
Normal 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
275
samples/MUF/cmd-say.muf
Normal 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
|
||||
159
samples/Makefile/filenames/Makefile.boot
Normal file
159
samples/Makefile/filenames/Makefile.boot
Normal 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
5
samples/Makefile/foo.o.d
Normal file
@@ -0,0 +1,5 @@
|
||||
bar/foo.o: \
|
||||
bar/foo.c \
|
||||
bar/baz.h
|
||||
|
||||
bar/baz.h:
|
||||
150
samples/Mathematica/Predicates.wl
Normal file
150
samples/Mathematica/Predicates.wl
Normal 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[];
|
||||
17
samples/Mathematica/UnitTest.wlt
Normal file
17
samples/Mathematica/UnitTest.wlt
Normal 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
84
samples/NL/assign0.nl
Normal 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
2284
samples/NL/balassign0.nl
Normal file
File diff suppressed because it is too large
Load Diff
78
samples/NetLinx+ERB/sample.axi.erb
Normal file
78
samples/NetLinx+ERB/sample.axi.erb
Normal 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
|
||||
78
samples/NetLinx+ERB/sample.axs.erb
Normal file
78
samples/NetLinx+ERB/sample.axs.erb
Normal 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
|
||||
132
samples/NetLinx/projector.axi
Normal file
132
samples/NetLinx/projector.axi
Normal 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
|
||||
158
samples/NetLinx/volume-array.axs
Normal file
158
samples/NetLinx/volume-array.axs
Normal 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
49
samples/NewLisp/queens.nl
Normal 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
1344
samples/OCaml/cmdliner.ml
Normal file
File diff suppressed because it is too large
Load Diff
14
samples/OCaml/common.ml
Normal file
14
samples/OCaml/common.ml
Normal 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
40
samples/OCaml/date.ml
Normal 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
337
samples/OCaml/map.ml
Normal 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
2503
samples/OCaml/mirage.ml
Normal file
File diff suppressed because it is too large
Load Diff
125
samples/OCaml/reload.ml
Normal file
125
samples/OCaml/reload.ml
Normal 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
70
samples/OCaml/sigset.ml
Normal 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
810
samples/OCaml/uutf.ml
Normal 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.
|
||||
---------------------------------------------------------------------------*)
|
||||
15
samples/PLSQL/myobject.sql
Normal file
15
samples/PLSQL/myobject.sql
Normal 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;
|
||||
/
|
||||
58
samples/PLSQL/packagebody.pkb
Normal file
58
samples/PLSQL/packagebody.pkb
Normal 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;
|
||||
/
|
||||
28
samples/PLSQL/packageheader.pks
Normal file
28
samples/PLSQL/packageheader.pks
Normal 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;
|
||||
/
|
||||
|
||||
93
samples/PLSQL/prime#.plsql
Normal file
93
samples/PLSQL/prime#.plsql
Normal 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#;
|
||||
/
|
||||
65
samples/PLSQL/who_called_me.sql
Normal file
65
samples/PLSQL/who_called_me.sql
Normal 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;
|
||||
/
|
||||
|
||||
165
samples/PLpgSQL/plpgsql_lint-8.4.sql
Normal file
165
samples/PLpgSQL/plpgsql_lint-8.4.sql
Normal 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();
|
||||
165
samples/PLpgSQL/plpgsql_lint-9.0.sql
Normal file
165
samples/PLpgSQL/plpgsql_lint-9.0.sql
Normal 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();
|
||||
179
samples/PLpgSQL/plpgsql_lint-9.1.sql
Normal file
179
samples/PLpgSQL/plpgsql_lint-9.1.sql
Normal 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();
|
||||
|
||||
166
samples/PLpgSQL/plpgsql_lint-9.2.sql
Normal file
166
samples/PLpgSQL/plpgsql_lint-9.2.sql
Normal 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();
|
||||
166
samples/PLpgSQL/plpgsql_lint-9.3.sql
Normal file
166
samples/PLpgSQL/plpgsql_lint-9.3.sql
Normal 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();
|
||||
117
samples/Perl/exception_handler.pl
Normal file
117
samples/Perl/exception_handler.pl
Normal 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> 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> 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/&/&/g;
|
||||
$l =~ s/</</g;
|
||||
$l =~ s/>/>/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;
|
||||
67
samples/RenderScript/convolve3x3.rs
Normal file
67
samples/RenderScript/convolve3x3.rs
Normal 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);
|
||||
}
|
||||
323
samples/RenderScript/scenegraph_objects.rsh
Normal file
323
samples/RenderScript/scenegraph_objects.rsh
Normal 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_
|
||||
4
samples/Ruby/index.json.jbuilder
Normal file
4
samples/Ruby/index.json.jbuilder
Normal 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
|
||||
21
samples/SQL/create_stuff.sql
Normal file
21
samples/SQL/create_stuff.sql
Normal 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;
|
||||
|
||||
13
samples/SQL/drop_stuff.sql
Normal file
13
samples/SQL/drop_stuff.sql
Normal 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
3
samples/SQL/dual.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
--this is the most basic oracle sql command
|
||||
select * from dual;
|
||||
|
||||
39
samples/SQLPL/check_reorg.sql
Normal file
39
samples/SQLPL/check_reorg.sql
Normal 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!
|
||||
30
samples/SQLPL/comm_amount.db2
Normal file
30
samples/SQLPL/comm_amount.db2
Normal 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;
|
||||
13
samples/SQLPL/drop_table.db2
Normal file
13
samples/SQLPL/drop_table.db2
Normal 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@
|
||||
18
samples/SQLPL/runstats.sql
Normal file
18
samples/SQLPL/runstats.sql
Normal 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
Reference in New Issue
Block a user