Compare commits

...

246 Commits

Author SHA1 Message Date
Arfon Smith
6062d3b25c Temporarily removing Handlebars highlighting 2015-05-18 14:41:36 -05:00
Arfon Smith
3878afa2e0 Bumping to v4.5.5 2015-05-15 10:56:36 -05:00
Arfon Smith
fa8998c6b6 Fixing up grammars 2015-05-15 10:55:50 -05:00
Arfon Smith
99dcd501aa Grammars update 2015-05-15 10:50:05 -05:00
Arfon Smith
da7d019df3 Merge pull request #2388 from mephaust/add-unity3d
Add Unity3D Asset and Metadata files
2015-05-13 16:02:30 -05:00
Paul Handly
4fc0c90cff Add Unity3D Asset samples 2015-05-13 15:59:11 -04:00
Arfon Smith
4ecb6425d2 Merge pull request #2373 from pchaigno/remove-unused-grammars
Remove unused grammars/submodules
2015-05-13 09:50:32 -05:00
Arfon Smith
6dfab80df7 Merge pull request #2394 from github/vim-modeline-fix
Improving Vim modeline regex
2015-05-13 09:03:43 -05:00
Arfon Smith
1ebf1e77e5 Merge pull request #2387 from aivus/patch-1
Change PHP group to HTML for TWIG
2015-05-13 09:03:35 -05:00
Arfon Smith
0c810cc016 Merge pull request #2393 from KrauseFx/patch-1
Added fastlane configuration files
2015-05-13 08:45:23 -05:00
Arfon Smith
7e32b45aa8 Removing whitespace matching 2015-05-13 08:31:45 -05:00
Felix Krause
4c1a84716a Merge branch 'master' into patch-1 2015-05-13 11:03:13 +01:00
Felix Krause
fd4111cdbe Added Example Ruby Files 2015-05-13 11:02:26 +01:00
Arfon Smith
2fac182a90 Improving Vim modeline regex 2015-05-12 16:49:14 -05:00
Felix Krause
f87c3c4996 Added fastlane configuration files
[fastlane](https://fastlane.tools) is an established Continuous Delivery solution for iOS/Mac projects. The configuration files are similar to a `Podfile`, also Ruby based. 

Some examples:
- https://github.com/wikimedia/apps-ios-wikipedia/blob/master/fastlane/Fastfile
- https://github.com/wikimedia/apps-ios-wikipedia/blob/master/fastlane/Deliverfile
- https://github.com/artsy/eidolon/blob/master/fastlane/Fastfile
- https://github.com/fastlane/examples/blob/master/MindNode/Fastfile

The configuration files added with this pull request: `Fastfile`, `Deliverfile` and `Snapfile` 👍
2015-05-12 20:29:24 +01:00
Paul Handly
7631db2183 Treat Unity3D metadata as an asset 2015-05-10 18:19:34 -04:00
Paul Handly
da5bc18d64 Add Unity3D Metadata files as generated 2015-05-10 18:19:33 -04:00
Paul Handly
f2af2156fa Add language for Unity3D Asset files 2015-05-09 14:15:59 -04:00
Arfon Smith
5bf8cf50ae Merge pull request #2386 from larsbrinkhoff/modeline
Vim and Emacs modelines are two alternatives
2015-05-06 15:55:36 -05:00
Ilya Antipenko
dc22b0f869 Change PHP group to HTML for TWIG 2015-05-06 20:41:37 +03:00
Lars Brinkhoff
5382c1b795 Make it more clear that Vim and Emacs modelines are two alternatives. 2015-05-06 07:46:42 +02:00
Arfon Smith
dbe851726e Merge pull request #2368 from m-click/geography-markup-language
Add languages.yml entry and sample files for OGC Geography Markup Language (#2366)
2015-05-05 08:18:37 -05:00
Arfon Smith
3720e49618 Merge pull request #2372 from pchaigno/use-original-ada-grammar
Use original Ada grammar
2015-05-05 08:17:38 -05:00
Paul Chaignon
380a51e4a4 Merge branch 'master' into use-original-ada-grammar 2015-05-04 21:35:40 +02:00
Arfon Smith
459b1034a7 Merge pull request #2363 from danielgtaylor/master
Add support for API Blueprint
2015-05-04 09:47:11 -05:00
Arfon Smith
c2f567770c Merge pull request #2375 from mbdoud/master
Add HyPhy as language to Linguist
2015-05-04 08:17:33 -05:00
Volker Grabsch
c94c908d5d Add languages.yml entry and sample files for OGC Geography Markup Language (#2366) 2015-05-03 19:15:54 +02:00
Mike Doud
585d74ecc9 add better HyPhy samples 2015-05-02 13:24:43 -07:00
Arfon Smith
d8422e63f6 Merge pull request #2374 from pchaigno/travis-submodules-ssh
Handle SSH links to submodules in Travis
2015-05-02 06:38:28 -05:00
Paul Chaignon
ca12a99970 Handle SSH links to submodules 2015-05-01 21:03:02 +02:00
Mike Doud
1fdcafb1ae Update languages.yml 2015-05-01 11:28:11 -07:00
Paul Chaignon
2eede37248 Remove unused grammars/submodules 2015-05-01 17:28:34 +02:00
Paul Chaignon
6489f7009d Use original repository for Ada grammar 2015-05-01 16:42:37 +02:00
Paul Chaignon
bdfe2aa6e4 Remove grammar for Ada 2015-05-01 16:39:48 +02:00
Mike Doud
007de4691b removing incorrect samples 2015-04-30 16:07:19 -07:00
Mike Doud
141e495447 Merge branch 'master' of https://github.com/mbdoud/linguist 2015-04-30 15:38:12 -07:00
Mike Doud
5e68714ae5 add HyPhy examples 2015-04-30 15:37:59 -07:00
Mike Doud
4ae6455e0e Update languages.yml 2015-04-30 15:25:04 -07:00
Mike Doud
f393ea307d Add 'HyPhy Batch Language' 2015-04-30 15:14:53 -07:00
Daniel G. Taylor
828fc7a19b Add support for API Blueprint
This adds a grammar and samples for [API Blueprint][] based on the
[Sublime Text plugin][] from Apiary. The [Atom language][] is also based
on the Sublime plugin.

API Blueprint is now used in over [3,600 repositories][] on GitHub and has
[several][Aglio] [open source][Dredd] [tools][Drakov] available.

Here's an [example using Lightshow][Lightshow] to highlight a small API.

[3,600 repositories]: https://github.com/search?utf8=%E2%9C%93&q=FORMAT+1A+extension%3Aapib+extension%3Amd&type=Code&ref=advsearch&l=
[Aglio]: https://github.com/danielgtaylor/aglio
[API Blueprint]: https://apiblueprint.org/
[Drakov]: https://www.npmjs.com/package/drakov
[Atom language]: https://github.com/danielgtaylor/atom-language-api-blueprint
[Dredd]: https://github.com/apiaryio/dredd
[Lightshow]: https://github-lightshow.herokuapp.com/?utf8=%E2%9C%93&scope=from-url&grammar_url=https%3A%2F%2Fgithub.com%2Fapiaryio%2Fapi-blueprint-sublime-plugin%2Fblob%2Fmaster%2FAPIBlueprint.tmLanguage&grammar_text=&code_source=from-url&code_url=https%3A%2F%2Fraw.githubusercontent.com%2Fapiaryio%2Fapi-blueprint%2Fmaster%2Fexamples%2F12.%2520Advanced%2520Action.md&code=
[Sublime Text plugin]: https://github.com/apiaryio/api-blueprint-sublime-plugin
2015-04-28 22:21:30 -07:00
Arfon Smith
accf734a74 Merge pull request #2346 from larsbrinkhoff/public-key
Add support for SSH2 and OpenSSH public keys
2015-04-21 08:22:05 -05:00
Arfon Smith
6bd86ad46b Merge pull request #2330 from larsbrinkhoff/link-script
Add 'Linker Script' language
2015-04-21 08:19:53 -05:00
Lars Brinkhoff
d7207f3399 Linker Script samples.
vmlinux.lds by Martin Mares; license GPL v2.
link.ld by Anthony Zbierajewski; license GPL v2.
ld.script by Wu Zhangjink; license GPL v2.
2015-04-21 10:11:40 +02:00
Lars Brinkhoff
e018b4322e Improve .asc heuristic for Public Key. 2015-04-21 10:10:27 +02:00
Lars Brinkhoff
415c7d32a2 More .asc samples for Public Key.
sshkey1.asc by Joseph Galbraith; Sleepycat license (GPL compatible).
2015-04-21 10:10:27 +02:00
Lars Brinkhoff
164caa2755 Add 'Linker Script' language. 2015-04-21 07:17:08 +02:00
Arfon Smith
ec2f0cb82a Merge pull request #2335 from DavidJFelix/patch-1
Change Salt to programming per #2307
2015-04-20 16:57:15 -05:00
David J. Felix
604918b6ad Add python-logo grey color to SaltStack config 2015-04-20 12:29:09 -04:00
David J. Felix
eb7e72a4a9 Change Salt to programming per #2307
- Remove group
2015-04-19 18:24:27 +00:00
Brandon Keepers
1ac694f149 Merge pull request #2340 from github/remove-script-ext
Remove .script! hack
2015-04-19 08:58:07 +12:00
Brandon Keepers
ef49fe417f fix samples after renaming script 2015-04-17 14:37:40 +12:00
Brandon Keepers
d28828b7d7 Merge pull request #2334 from thomasvandoren/update-chapel-grammar
Update submodule for Chapel grammar.
2015-04-17 14:20:16 +12:00
Brandon Keepers
8a42f76f03 Remove .script! hack 2015-04-17 14:09:05 +12:00
Brandon Keepers
745ce14d47 Merge pull request #2333 from 3flex/2318-add-puppet-samples
Add additional Puppet sample
2015-04-17 13:57:07 +12:00
Arfon Smith
dc41ca23c6 Merge pull request #2339 from ampl/nl
Improve NL/NewLisp disambiguation heuristic
2015-04-16 17:42:08 -05:00
vitaut
9da42fba5b Improve NL/NewLisp disambiguation heuristic
NL files start with either 'b' or 'g' followed by an unsigned integer.
2015-04-16 15:19:22 -07:00
Ted Nyman
fac4633337 Move .odd file to the right directory 2015-04-15 18:37:36 -07:00
Thomas Van Doren
3ab0de831f Update Chapel samples. 2015-04-15 07:43:25 -07:00
Thomas Van Doren
599d146118 Use chapel-lang/chapel-tmbundle for Chapel grammar. 2015-04-15 07:43:25 -07:00
Matthew Haughton
5cdbb2b113 Add additional Puppet samples 2015-04-14 23:18:45 -04:00
Arfon Smith
611584a414 Merge pull request #2322 from larsbrinkhoff/lisp
Make Common Lisp heuristic case insensitive.
2015-04-13 08:49:37 -05:00
Lars Brinkhoff
33478b2d23 Make Common Lisp heuristic case insensitive. 2015-04-11 19:58:02 +02:00
Lars Brinkhoff
46ca8e93c2 New upper-case sample for Common Lisp. 2015-04-11 19:24:01 +02:00
Arfon Smith
da58febc3e Merge pull request #2328 from github/specflow
Specflow
2015-04-10 20:16:05 -05:00
Arfon Smith
7ca2384e03 Test for Specflow feature 2015-04-10 20:11:11 -05:00
Arfon Smith
6b2bb52dcd Merge branch 'master' into specflow 2015-04-10 20:07:43 -05:00
Arfon Smith
000a42ef3d Merge pull request #2326 from github/dcl
Add DCL and MMS
2015-04-10 15:54:04 -05:00
Arfon Smith
03e40718ff Bringing languages.yml keys up to date 2015-04-10 15:47:37 -05:00
Arfon Smith
4386fb7f28 Merge branch 'master' into dcl 2015-04-10 15:41:04 -05:00
Arfon Smith
0db4d05671 Merge pull request #2325 from github/clarion
Adding support for Clarion
2015-04-10 15:32:46 -05:00
Arfon Smith
d113e98915 Grammar update 2015-04-10 15:27:02 -05:00
Arfon Smith
e9acecf71f Colour update 2015-04-10 15:15:03 -05:00
Arfon Smith
76b84decfe Removing .inc from Clarion 2015-04-10 15:09:00 -05:00
Arfon Smith
80148ae4e4 Merge branch 'master' into clarion 2015-04-10 15:06:33 -05:00
Arfon Smith
4af679c27f Merge pull request #2324 from pchaigno/batch-group
Remove Batch from Shell group
2015-04-10 14:29:10 -05:00
Arfon Smith
ba86d9fff0 Merge pull request #2266 from Dorian/patch-1
Add .ruby to the list of ruby file extensions
2015-04-10 14:15:42 -05:00
Paul Chaignon
3a07410569 Remove test for group of Batch 2015-04-10 20:59:10 +02:00
Brandon Keepers
b43828db9b Merge pull request #2323 from lsf37/jflex-lang
Add JFlex grammars (language & syntax highlighting)
2015-04-10 14:57:03 -04:00
Gerwin Klein
8251588088 choose more distinct color for JFlex 2015-04-10 21:16:32 +10:00
Gerwin Klein
22ff4898a5 add textmate grammar for JFlex 2015-04-10 19:25:24 +10:00
Gerwin Klein
9c4c6d908a add language recognition for JFlex grammars
JFlex is a lexical analyzer generator for Java, see also
http://jflex.de or https://github.com/jflex-de/jflex
2015-04-10 19:17:58 +10:00
Paul Chaignon
3f9d98974c Remove Batch from Shell group 2015-04-08 21:39:10 +02:00
Arfon Smith
98a23c6a53 Merge pull request #2314 from larsbrinkhoff/ocaml
Tighten up OCaml heuristic
2015-04-07 07:56:16 -05:00
Lars Brinkhoff
3086326d12 Tighten up OCaml heuristic: only match at start of line. 2015-04-07 08:54:39 +02:00
Arfon Smith
ac4594e3b1 Merge pull request #2298 from github/add-proximity-test
Add proximity test for colors
2015-04-06 13:15:32 -05:00
Arfon Smith
47dcca839e Merge pull request #2312 from larsbrinkhoff/for
New sample for Formatted.
2015-04-06 13:15:04 -05:00
Arfon Smith
572078a708 Merge pull request #2306 from powerman/limbo
add Limbo: language, samples
2015-04-06 13:14:32 -05:00
Lars Brinkhoff
0442f4bd06 One more sample for Formatted.
By Sean Carroll; license GPLv2.
2015-04-06 20:06:15 +02:00
Arfon Smith
2861a8f19c Fixing up colours to match languages.yml 2015-04-06 12:41:49 -05:00
Arfon Smith
1d0028fd53 Merge pull request #2311 from pchaigno/saltstack-samples
New samples for SaltStack
2015-04-06 12:36:19 -05:00
Alex Efros
c3288543af add heuristic for Limbo 2015-04-06 20:17:52 +03:00
Garen Torikian
3c96f9eb53 Bump threshold to 0.05 2015-04-06 09:44:10 -07:00
Garen Torikian
6bd8d3a3b7 Some slight test improvements 2015-04-06 09:43:36 -07:00
Garen Torikian
63e017fbaa Rename to TestColorProximity 2015-04-06 08:32:23 -07:00
Paul Chaignon
f993b7358b New samples for SaltStack 2015-04-06 14:58:20 +02:00
Arfon Smith
4239d5453c Merge pull request #2309 from pchaigno/sch-kicad
KiCad language with .sch extension
2015-04-05 19:37:08 -05:00
Arfon Smith
b0e6f17612 Merge pull request #2308 from pchaigno/contribution-guideline-update
Update guideline on syntax highlighting fixes
2015-04-05 10:56:19 -05:00
Alex Efros
c97c10623b add .b Brainfuck sample 2015-04-05 18:08:20 +03:00
Paul Chaignon
d566ccd0be Update guideline on syntax highlighting fixes 2015-04-05 16:55:27 +02:00
Paul Chaignon
8b4daefbde KiCad language with .sch extension 2015-04-05 16:45:35 +02:00
Alex Efros
bbea29be55 add Limbo to test_languages 2015-04-05 03:03:45 +03:00
Alex Efros
f016867e1a Limbo: fix tm_scope 2015-04-05 02:56:36 +03:00
Alex Efros
35f2699eb3 add Limbo: language, samples 2015-04-05 02:34:02 +03:00
Garen Torikian
3ad66da2bf Adjust existing colors to pass tests
A lot of these were taken from official websites. For obscurer
languages, I just changed a few digits of the hex value.
2015-04-03 18:46:45 -07:00
Garen Torikian
004f9b4710 Use new color-proximity gem for better visual matching 2015-04-03 18:25:13 -07:00
Arfon Smith
3e06b95f98 Merge pull request #2304 from github/clarify-docs
Explaining gitattributes behavior.
2015-04-03 15:02:23 -04:00
Arfon Smith
8591dffcae Explaining gitattributes behavior. 2015-04-03 14:53:38 -04:00
Garen Torikian
3d69c047f0 Merge branch 'master' into add-proximity-test 2015-04-02 17:32:00 -07:00
Arfon Smith
78a1183c26 Merge pull request #2301 from dpiddy/erlang-rebar
Add rebar-related files as erlang.
2015-04-02 19:09:38 -04:00
Arfon Smith
58ea517b32 Merge pull request #2296 from phase/master
Add colors to semi-popular languages
2015-04-02 19:06:30 -04:00
Dan Peterson
0722b6855b Add rebar-related files as erlang. 2015-04-02 15:41:24 -03:00
Arfon Smith
a6a745d99d Merge pull request #2299 from github/shebang-fixing
Fixing up shebang detection to match new tokenizer behaviour
2015-04-02 14:14:29 -04:00
Arfon Smith
7394e9400b Adding explicit test for new shebang parsing 2015-04-02 14:00:03 -04:00
Garen Torikian
15f0366e12 Adjust color schemes slightly
- Make Perl6 a distinct blue (using Camelia’s wing as an aide)
- VCL is part of the Perl group
- Brighten Slim a bit so it does not conflict with Ada
2015-04-02 08:25:19 -07:00
Garen Torikian
07e3d9d3b3 Improve error output 2015-04-02 08:24:04 -07:00
Arfon Smith
55eaf03afb Merge pull request #2300 from github/build-boot
Adding in a Makefile.boot filename for .boot detection
2015-04-01 20:41:27 -05:00
Arfon Smith
7a6849b3ac Adding in a Makefile.boot filename for .boot detection 2015-04-01 20:33:13 -05:00
Arfon Smith
fa5496eef4 Fixing up shebang detection to match new tokenizer behaviour 2015-04-01 20:23:16 -05:00
Arfon Smith
893bd7e204 Merge pull request #1604 from geoff-codes/#!--"
Comment styles; don't choke on `#!/usr/bin/env foo=bar`
2015-04-01 15:18:40 -05:00
Garen Torikian
8a54ce57a5 Drop threshold back down to a passing 10 2015-04-01 10:15:10 -07:00
Garen Torikian
3851b7c016 Add test for detecting color proximity 2015-04-01 10:14:52 -07:00
phase
3dbcfa8af8 Add color for ABAP 2015-03-31 20:05:42 -07:00
phase
9936a30879 Add color for Crystal 2015-03-31 20:02:52 -07:00
phase
59e935b05d Add color for Brainfuck 2015-03-31 20:00:53 -07:00
phase
53f93f68db Add color to Makefile 2015-03-31 19:55:25 -07:00
phase
66f9bd1ab4 Add color to Kotlin 2015-03-31 19:53:36 -07:00
Arfon Smith
78d4abe808 Merge pull request #2295 from github/cut-release-v4.5.4
Bumping version to v4.5.4
2015-03-31 20:16:53 -05:00
Arfon Smith
cb97417af8 Bumping version to v4.5.4 2015-03-31 19:48:34 -05:00
Arfon Smith
d1c94c75ea Merge pull request #2294 from github/grammars
Grammars update
2015-03-31 19:45:16 -05:00
Arfon Smith
0c8c6c9814 Merge pull request #2293 from github/sphinx-docs-tests
Some tests to go with #2290
2015-03-31 19:39:45 -05:00
Arfon Smith
3270a8896d Grammars update 2015-03-31 19:37:08 -05:00
Arfon Smith
20f19bf049 Some tests to go with #2290 2015-03-31 19:33:50 -05:00
Arfon Smith
0cc33fd560 Merge pull request #2290 from untitaker/patch-1
Ignore assets from Sphinx docs
2015-03-31 19:29:23 -05:00
Arfon Smith
fa54fc2735 Merge pull request #2233 from tesch1/tesch1-emacs-patch-1
fix emacs modeline parsing
2015-03-31 19:27:33 -05:00
Arfon Smith
216e0457ff Merge pull request #2291 from iFarbod/patch-1
Added Color for the Squirrel Language
2015-03-31 19:25:40 -05:00
iFarbod
678f90acf7 Added Color for the Squirrel Language
Picked the color from the Squirrel Language's website.
2015-04-01 01:23:59 +04:30
Arfon Smith
dd0d5c08bb Merge pull request #2289 from lepture/patch-fixtures
add tests/fixtures to vendor.yml
2015-03-31 11:43:39 -05:00
Markus Unterwaditzer
3837fed59e Ignore assets from Sphinx docs 2015-03-31 15:21:40 +02:00
Hsiaoming Yang
e4ce4edd5c add tests/fixtures to vendor.yml 2015-03-31 20:08:18 +08:00
Arfon Smith
a0fb54fe70 Merge pull request #2286 from github/puphpet
Adding puphpet to vendored list
2015-03-30 16:57:43 -05:00
Arfon Smith
e946ceaa6f Grammar 2015-03-30 16:24:55 -05:00
Arfon Smith
285af6512e Adding puphpet to vendored list 2015-03-30 16:24:11 -05:00
Arfon Smith
5ae5108a69 Merge pull request #2247 from larsbrinkhoff/renderscript
Add RenderScript and Filterscript
2015-03-30 16:08:42 -05:00
Lars Brinkhoff
02ae60f434 Samples for RenderScript and Filterscript.
All files are from The Android Open Source Project; license APL 2.0.
2015-03-28 12:34:20 +01:00
Lars Brinkhoff
03dc4e1ff4 Add RenderScript and Filterscript. 2015-03-28 12:34:20 +01:00
Arfon Smith
c39b42abba Merge pull request #2075 from philix/patch-1
Add cpplint.py to vendor.yml
2015-03-27 11:02:36 -07:00
Arfon Smith
661972f585 Merge pull request #2275 from github/bump-escape-utils
Bump escape-utils to 1.1.0
2015-03-27 09:25:29 -07:00
Arfon Smith
078aff6ee3 Merge pull request #2276 from MakeNowJust/patch-1
Fix ada aliases
2015-03-27 09:24:31 -07:00
Arfon Smith
4fed108b2c Merge pull request #2279 from joewiz/patch-1
Add .odd to XML extensions
2015-03-26 11:21:47 -07:00
Joe Wicentowski
fc9beb58aa Add sample TEI ODD file (.odd) 2015-03-26 14:00:17 -04:00
Joe Wicentowski
4623b4a83e Add .odd to XML extensions
See discussion at #2238. 

[ODD](http://en.wikipedia.org/wiki/Text_Encoding_Initiative#ODD) is an XML-based vocabulary for defining schemas for Text Encoding Initiative (TEI) projects, used widely in the humanities.  ODD should be rendered using XML syntax but is currently displayed as plain text (see [this example](https://github.com/wolfgangmm/tei-simple-pm/blob/master/odd/teisimple.odd)).  There are [nearly 500 ODD files](https://github.com/search?q=extension%3Aodd+NOT+djfhdirijdskqdhd&type=Code&utf8=%E2%9C%93) in GitHub, and this number is projected to grow.
2015-03-26 13:18:49 -04:00
TSUYUSATO Kitsune
2ba6ecefe5 Fix ada aliases 2015-03-26 12:08:46 +09:00
Garen Torikian
91c2a4682d Merge pull request #2274 from csimons/master
intro.wisp: Fixed typographical error ('rather then' -> 'rather than').
2015-03-25 13:24:10 -07:00
Patrick Toomey
738be195ef Bump escape-utils to 1.1.0 2015-03-25 14:18:46 -06:00
Christopher L. Simons
5dcc4d74ec intro.wisp: Fixed typographical error ('rather then' -> 'rather than'). 2015-03-25 14:35:16 -04:00
Arfon Smith
4213bec62a Merge pull request #2272 from lpil/master
Elixir: Add mix.lock filename
2015-03-25 09:04:07 -05:00
Louis Pilfold
babe733bf4 Elixir: Add mix.lock filename 2015-03-25 13:52:52 +00:00
Arfon Smith
ab5f60555e Merge pull request #2270 from larsbrinkhoff/ocaml
Add interpreters for OCaml.
2015-03-25 08:39:49 -05:00
Lars Brinkhoff
b61e33a49e Add interpreters for OCaml. 2015-03-25 08:11:40 +01:00
Arfon Smith
a0d5a8338b Merge pull request #2269 from stuartpb/patch-2
Use #000080 for Lua color
2015-03-24 19:24:34 -05:00
Arfon Smith
eec321f013 Merge pull request #2265 from github/cut-release-v4.5.3
Bumping to v4.5.3
2015-03-24 19:08:59 -05:00
Stuart P. Bentley
e538f72b63 Use #000080 for Lua color
This is the color of the official Lua logo, as seen at http://www.lua.org/images/
2015-03-24 14:34:13 -07:00
Dorian Marié
bde843b67f Add .ruby to the list of ruby file extensions
Can be found in Rails partial, eg `.html.ruby`
2015-03-24 18:59:53 +01:00
Arfon Smith
44c3d47b30 Bumping to v4.5.3 2015-03-24 12:33:35 -05:00
Arfon Smith
f1d3f396bb Merge pull request #2264 from github/grammar-update
Updating grammars
2015-03-24 12:28:29 -05:00
Arfon Smith
65ae444791 Updating grammars 2015-03-24 12:26:40 -05:00
Arfon Smith
e9916c644d Merge pull request #2263 from github/NetLinx
Net linx
2015-03-24 12:09:15 -05:00
Arfon Smith
1940a9ea92 Merge branch 'master' into NetLinx 2015-03-24 11:41:26 -05:00
Arfon Smith
c9f8a2677a Merge pull request #2261 from ntkme/storyboard-xib-xml
.storyboard and .xib as XML
2015-03-24 11:38:39 -05:00
Arfon Smith
5b6b3f74b5 Merge pull request #2262 from drautb/master
Fix categorization for Racket shell scripts.
2015-03-24 11:38:21 -05:00
Vicent Marti
f9ccac4240 Merge pull request #2259 from github/bump-rugged
Bump rugged to latest release
2015-03-24 08:36:52 -07:00
Ben Draut
aa7aae7808 Fix categorization for Racket shell scripts.
The current implementation categorizes shell scripts written in Racket
as Scheme, which is incorrect.

For example:

```racket
\#!/usr/bin/env racket

\#lang racket

"Hello World!"
```

This should be categorized as Racket, not Scheme. [This file][1]
demonstrates the problem in an existing repository.

[1]: https://github.com/drautb/sketchbook/blob/master/racket/sublime-project-generator/generate-sublime-project.rkt
2015-03-24 08:22:00 -06:00
なつき
7c66301583 .storyboard and .xib as XML 2015-03-24 01:58:55 -07:00
michael tesch
a5b0b333b0 Merge branch 'master' into tesch1-emacs-patch-1 2015-03-24 09:44:08 +01:00
Andy Delcambre
7df872eb7f Bump rugged to latest release 2015-03-23 14:33:03 -06:00
Arfon Smith
6a4f4c724c Merge pull request #2253 from larsbrinkhoff/dtrace-script-mode
Fix Emacs modeline in DTrace sample.
2015-03-23 15:30:03 -05:00
Lars Brinkhoff
76828c45c7 Fix Emacs modeline in DTrace sample.
Apparently, the DTrace mode for Emacs is called dtrace-script:
https://github.com/dotemacs/dtrace-script-mode
2015-03-23 19:43:32 +01:00
Arfon Smith
27215f148b Merge pull request #2257 from Oldes/rebol_grammar_scope
Adding tm_scope for REBOL language and removing REBOL from LICENSE_WHITE...
2015-03-23 11:30:48 -05:00
Arfon Smith
77d52463ad Merge pull request #2256 from Oldes/red_grammar
Added grammar submodule for Red language
2015-03-23 11:30:06 -05:00
Oldes
0f6c2afbf6 Sublime-REBOL submodule updated. 2015-03-23 15:58:01 +01:00
Oldes
cbaa3ca6f4 Adding tm_scope for REBOL language and removing REBOL from LICENSE_WHITELIST as now is license available in the Sublime-REBOL project. 2015-03-23 11:38:07 +01:00
Oldes
63f54bdf06 Added grammar submodule for Red language 2015-03-23 10:43:39 +01:00
Alex McLain
b302863a4d Added additional sample files. 2015-03-21 20:22:46 -07:00
Alex McLain
ec46b1a92e Added NetLinx language. 2015-03-21 18:58:09 -07:00
Arfon Smith
ed65040539 Merge pull request #2250 from shaneog/patch-2
Add Neovim config file names to VimL language
2015-03-21 16:56:00 -05:00
Arfon Smith
cc1a420bc5 Merge pull request #2254 from shaunlebron/master
add .boot to clojure extensions
2015-03-21 16:54:20 -05:00
Shaun Williams
8555b20380 add .boot Clojure sample 2015-03-21 12:02:20 -05:00
Shaun Williams
6462ba70f9 put .boot after primary .clj extension 2015-03-21 11:48:52 -05:00
Shaun Williams
1ac43e0d7d reorder .boot to be in order 2015-03-21 11:32:29 -05:00
Shaun Williams
6ac51968c6 add .boot to clojure extensions 2015-03-21 11:20:48 -05:00
Shane O'Grady
cbcadf8e45 Add Neovim config file names to VimL language
Neovim uses configuration files named `.nvimrc` rather than `.vimrc`

See this PR for details neovim/neovim#330
2015-03-21 09:53:21 -03:00
Arfon Smith
74b111501d Merge pull request #2213 from ntkme/source-map
Detect generated source maps
2015-03-20 09:26:40 -05:00
なつき
67e4212f64 Test detecting generated source maps 2015-03-19 19:50:40 -07:00
Arfon Smith
55559a1020 Merge pull request #2246 from ampl/nl
Add a heuristic to disambiguate between NL and NewLisp
2015-03-19 20:26:56 -05:00
なつき
b103232e0e Detect generated source maps 2015-03-19 17:38:59 -07:00
vitaut
b587379f4a Add a heuristic to disambiguate between NL and NewLisp 2015-03-19 17:33:52 -07:00
Arfon Smith
ba654b2a1d Merge pull request #2242 from larsbrinkhoff/types
Fix the type classification of some languages.
2015-03-19 08:46:55 -05:00
Lars Brinkhoff
ae39475133 Fix the type classification of some languages. 2015-03-19 07:09:42 +01:00
Arfon Smith
c641ea833f Merge pull request #2241 from github/cut-release-v4.5.2
v4.5.2
2015-03-18 10:45:42 -05:00
Arfon Smith
ebf10c2cd6 v4.5.2 2015-03-18 09:50:57 -05:00
Arfon Smith
29ef8beb3f Grammar submodule update 2015-03-18 09:47:43 -05:00
Arfon Smith
2b5f38264b Merge pull request #2222 from chriskuehl/master
languages.yml: don't assume .conf is Apache
2015-03-18 09:27:32 -05:00
Arfon Smith
5850716eb3 Merge pull request #2236 from Phasesaber/master
Give Diff a color
2015-03-18 09:24:46 -05:00
Arfon Smith
3db6c4a5b6 Merge pull request #2227 from samoht/OCaml
Disambiguate between OCaml and Standard ML
2015-03-18 09:05:12 -05:00
Thomas Gazagnaire
e79607372b Disambiguate between OCaml and Standard ML
Fix #2208
2015-03-18 09:58:14 +00:00
Arfon Smith
b5472ab753 Merge pull request #2123 from larsbrinkhoff/for
Some .for files are text.
2015-03-17 14:59:53 -05:00
Lars Brinkhoff
013188dcd9 Add new language Formatted for .for.
Sample file wksst8110.for is from the Climate Prediction Center at the
National Weather Service of the USA, and is in the public domain.
2015-03-17 20:44:06 +01:00
Jαdon Fowler
3cf7bfbee2 Give Diff a color 2015-03-16 23:44:08 -07:00
michael tesch
5f647f2236 more realistic emacs modeline for dtrace sample 2015-03-16 19:56:06 +01:00
Arfon Smith
3bb740fe9f Merge pull request #2198 from tarebyte/handlebars_color
Assign handlebars a color for the language bar.
2015-03-16 07:58:05 -05:00
michael tesch
50db5c012e disable modelines strategy for webidl sample 2015-03-15 20:18:57 +01:00
michael tesch
dcb14d0fc7 disable modelines strategy for webidl sample 2015-03-15 20:06:41 +01:00
michael tesch
419cfe54e0 disable modelines strategy match for dtrace sample 2015-03-15 13:05:43 +01:00
michael tesch
ce1f51a34f forgot a | 2015-03-15 12:51:14 +01:00
michael tesch
5fd7992f98 dont save useless matches, thanks to pchaigno 2015-03-15 12:40:31 +01:00
michael tesch
fda0f2a042 detect emacs modeline for fundamental as Text 2015-03-14 23:53:17 +01:00
michael tesch
6af4ab6db1 harder test 2015-03-14 23:26:08 +01:00
michael tesch
6aab682728 fixed case with multiple other file vars before and after mode: 2015-03-14 23:24:41 +01:00
michael tesch
a364e4a2dc tests for emacs modeline regex 2015-03-14 23:13:59 +01:00
Michael Tesch
1bb639617c Create seeplusplusEmacs1
one type of emacs modeline
2015-03-14 22:44:02 +01:00
Michael Tesch
068c8a341d better regex for matching emacs modeline
the emacs modeline is actually a per-file variable setting mechanism, which means it can have other flags in it.

this regex extracts the part that corresponds to the file's language ("mode:" - ie emacs major mode)

http://ergoemacs.org/emacs_manual/emacs/Specifying-File-Variables.html
2015-03-14 18:35:57 +01:00
Chris Kuehl
02ced24751 languages.yml: don't assume .conf is Apache
The assumption that `.conf` files are Apache is causing many projects to
be detected incorrectly as being primarily "ApacheConf".

The `.conf` extension is widely used by software; Apache accounts for
only a very tiny proportion of its overall use. The addition of `.conf`
for ApacheConf has resulted in projects which contain none (or almost
no) Apache config being marked as primarily containing it.

The problem was introduced by 18a3ef9e5e
2015-03-10 22:19:22 -07:00
Mark Tareshawty
ea0145fda5 Merge branch 'master' into handlebars_color 2015-03-09 10:04:51 -04:00
Mark Tareshawty
b009c85b64 inverted color 2015-03-08 15:31:52 -04:00
Mark Tareshawty
781133d0d3 assign handlebars a color 2015-03-04 19:42:32 -05:00
Brahn Partridge
ef22eee4d9 updating submodule to latest with license 2015-02-17 13:18:19 +01:00
Brahn Partridge
b609f24bbc added ace_mode 2015-02-17 13:09:00 +01:00
Brahn Partridge
83b03df98b Merge branch 'master' of https://github.com/github/linguist
Conflicts:
	grammars.yml
2015-02-17 12:56:19 +01:00
Felipe Oliveira Carvalho
96c2f86613 Add cpplint.py to vendor.yml
`cpplint.py` is Google's Python script used for linting C++ files.
I have a small C++ project with `cpplint.py` included mistakenly making
Python the main language of my project.
2015-02-04 02:22:08 -03:00
Maximo Dominguez
56c3b8c3fe Added generated rule for SpecFlow's *.feature.cs
More info about specFlow here http://www.specflow.org/
2015-01-18 19:31:47 -04:00
Brahn Partridge
43ee45d9b6 Merge branch 'master' of https://github.com/github/linguist
Conflicts:
	grammars.yml
2014-11-27 13:47:56 +01:00
Brahn Partridge
02db72515f removed less common extensions and better examples 2014-11-27 13:41:21 +01:00
Brahn Partridge
af9b5f0e98 remove sample that is no longer used 2014-11-26 15:11:23 +01:00
Brahn Partridge
a145bd92f7 remove tpl extension to avoid conflict with smarty language 2014-11-26 15:07:28 +01:00
Brahn Partridge
20204cd9fc fix test_pedantic failure 2014-11-26 15:01:25 +01:00
Brahn Partridge
3445e55744 additional samples and fixed extensions list 2014-11-26 14:51:47 +01:00
Brahn Partridge
036b9c4094 Hello world sample 2014-11-24 11:32:53 +01:00
Brahn Partridge
ce928d8b64 Add support for the Clarion language 2014-11-24 11:30:25 +01:00
Geoff Nixon
edadca9085 Add comment styles, don't choke on #!/usr/bin/env foo=bar... 2014-11-02 03:07:21 -08:00
Tomas Morstein
08290ac49e remove very rarely used .dcl extension for now
...to avoid collision with Clean language as well
as the .dcl extension can be seen only in some special
cases -- especially in context of DCL emulation tools
for non-OpenVMS systems (probably to avoid potential
confusion with MS-DOS .com files).
2014-10-04 22:46:32 +02:00
Tomas Morstein
42944660bd no need to group DCL and MMS/MMK 2014-10-04 22:02:27 +02:00
Tomas Morstein
ae5e1c5a85 DCL & MMS lexers are not supported, use Text only 2014-10-04 21:43:20 +02:00
Tomas Morstein
f4f5ccb3f5 add MMS/MMK samples 2014-10-04 20:43:39 +02:00
Tomas Morstein
ab3f44cb6e add DECset Module Management System support 2014-10-04 20:38:46 +02:00
Tomas Morstein
d7757033ab DCL examples 2014-10-04 20:33:28 +02:00
Tomas Morstein
8bb9241e6e add DIGITAL Command Language (DCL) 2014-10-04 19:08:57 +02:00
231 changed files with 36226 additions and 306 deletions

45
.gitmodules vendored
View File

@@ -96,7 +96,7 @@
url = https://github.com/bfad/Sublime-Lasso
[submodule "vendor/grammars/chapel-tmbundle"]
path = vendor/grammars/chapel-tmbundle
url = https://github.com/bholt/chapel-tmbundle
url = https://github.com/chapel-lang/chapel-tmbundle
[submodule "vendor/grammars/sublime-nginx"]
path = vendor/grammars/sublime-nginx
url = https://github.com/brandonwamboldt/sublime-nginx
@@ -118,9 +118,6 @@
[submodule "vendor/grammars/cucumber-tmbundle"]
path = vendor/grammars/cucumber-tmbundle
url = https://github.com/cucumber/cucumber-tmbundle
[submodule "vendor/grammars/Handlebars"]
path = vendor/grammars/Handlebars
url = https://github.com/daaain/Handlebars
[submodule "vendor/grammars/powershell"]
path = vendor/grammars/powershell
url = https://github.com/SublimeText/PowerShell
@@ -169,9 +166,6 @@
[submodule "vendor/grammars/Textmate-Gosu-Bundle"]
path = vendor/grammars/Textmate-Gosu-Bundle
url = https://github.com/jpcamara/Textmate-Gosu-Bundle
[submodule "vendor/grammars/jquery-tmbundle"]
path = vendor/grammars/jquery-tmbundle
url = https://github.com/kswedberg/jquery-tmbundle
[submodule "vendor/grammars/fish-tmbundle"]
path = vendor/grammars/fish-tmbundle
url = https://github.com/l15n/fish-tmbundle
@@ -346,9 +340,6 @@
[submodule "vendor/grammars/java.tmbundle"]
path = vendor/grammars/java.tmbundle
url = https://github.com/textmate/java.tmbundle
[submodule "vendor/grammars/javadoc.tmbundle"]
path = vendor/grammars/javadoc.tmbundle
url = https://github.com/textmate/javadoc.tmbundle
[submodule "vendor/grammars/javascript-objective-j.tmbundle"]
path = vendor/grammars/javascript-objective-j.tmbundle
url = https://github.com/textmate/javascript-objective-j.tmbundle
@@ -424,9 +415,6 @@
[submodule "vendor/grammars/ruby-haml.tmbundle"]
path = vendor/grammars/ruby-haml.tmbundle
url = https://github.com/textmate/ruby-haml.tmbundle
[submodule "vendor/grammars/ruby-on-rails-tmbundle"]
path = vendor/grammars/ruby-on-rails-tmbundle
url = https://github.com/textmate/ruby-on-rails-tmbundle
[submodule "vendor/grammars/scheme.tmbundle"]
path = vendor/grammars/scheme.tmbundle
url = https://github.com/textmate/scheme.tmbundle
@@ -445,15 +433,6 @@
[submodule "vendor/grammars/tcl.tmbundle"]
path = vendor/grammars/tcl.tmbundle
url = https://github.com/textmate/tcl.tmbundle
[submodule "vendor/grammars/text.tmbundle"]
path = vendor/grammars/text.tmbundle
url = https://github.com/textmate/text.tmbundle
[submodule "vendor/grammars/textile.tmbundle"]
path = vendor/grammars/textile.tmbundle
url = https://github.com/textmate/textile.tmbundle
[submodule "vendor/grammars/textmate.tmbundle"]
path = vendor/grammars/textmate.tmbundle
url = https://github.com/textmate/textmate.tmbundle
[submodule "vendor/grammars/thrift.tmbundle"]
path = vendor/grammars/thrift.tmbundle
url = https://github.com/textmate/thrift.tmbundle
@@ -487,10 +466,6 @@
[submodule "vendor/grammars/sublime-nix"]
path = vendor/grammars/sublime-nix
url = https://github.com/wmertens/sublime-nix
[submodule "vendor/grammars/ada.tmbundle"]
path = vendor/grammars/ada.tmbundle
url = https://github.com/aroben/ada.tmbundle
branch = better-with-highlighting
[submodule "vendor/grammars/oz-tmbundle"]
path = vendor/grammars/oz-tmbundle
url = https://github.com/eregon/oz-tmbundle
@@ -612,6 +587,9 @@
[submodule "vendor/grammars/mediawiki.tmbundle"]
path = vendor/grammars/mediawiki.tmbundle
url = https://github.com/textmate/mediawiki.tmbundle
[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
@@ -645,3 +623,18 @@
[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
[submodule "vendor/grammars/ada.tmbundle"]
path = vendor/grammars/ada.tmbundle
url = https://github.com/textmate/ada.tmbundle
[submodule "vendor/grammars/api-blueprint-sublime-plugin"]
path = vendor/grammars/api-blueprint-sublime-plugin
url = https://github.com/apiaryio/api-blueprint-sublime-plugin

View File

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

View File

@@ -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
@@ -53,16 +53,18 @@ project-docs/* linguist-documentation
docs/formatter.rb linguist-documentation=false
```
### Using Emacs and Vim modelines
### Using Emacs or Vim modelines
Alternatively, you can use Vim and Emacs style modelines to set the language for a single file. Modelines can be placed anywhere within a file and are respected when determining how to syntax-highlight a file on GitHub.com
Alternatively, you can use Vim or Emacs style modelines to set the language for a single file. Modelines can be placed anywhere within a file and are respected when determining how to syntax-highlight a file on GitHub.com
##### Vim
```
Vim
vim: set filetype=prolog:
vim: set ft=cpp:
```
Emacs
##### Emacs
```
-*- mode: php;-*-
```

View File

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

View File

@@ -50,8 +50,6 @@ vendor/grammars/G-Code/:
- source.gcode
vendor/grammars/GDScript-sublime/:
- source.gdscript
vendor/grammars/Handlebars:
- text.html.handlebars
vendor/grammars/IDL-Syntax:
- source.webidl
vendor/grammars/InnoSetup/:
@@ -113,6 +111,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:
@@ -121,6 +121,8 @@ vendor/grammars/Sublime-VimL:
- source.viml
vendor/grammars/SublimeBrainfuck:
- source.bf
vendor/grammars/SublimeClarion/:
- source.clarion
vendor/grammars/SublimePapyrus/:
- source.compiled-papyrus
- source.papyrus
@@ -152,6 +154,9 @@ vendor/grammars/antlr.tmbundle:
vendor/grammars/apache.tmbundle:
- source.apache-config
- source.apache-config.mod_perl
vendor/grammars/api-blueprint-sublime-plugin/:
- text.html.markdown.source.gfm.apib
- text.html.markdown.source.gfm.mson
vendor/grammars/applescript.tmbundle:
- source.applescript
vendor/grammars/asciidoc.tmbundle/:
@@ -289,12 +294,10 @@ vendor/grammars/java.tmbundle:
- source.java-properties
- text.html.jsp
- text.junit-test-report
vendor/grammars/javadoc.tmbundle:
- text.html.javadoc
vendor/grammars/javascript-objective-j.tmbundle:
- source.js.objj
vendor/grammars/jquery-tmbundle:
- source.js.jquery
vendor/grammars/jflex.tmbundle:
- source.jflex
vendor/grammars/json.tmbundle:
- source.json
vendor/grammars/kotlin-sublime-package:
@@ -397,7 +400,7 @@ vendor/grammars/perl.tmbundle/:
- source.perl
- source.perl.6
vendor/grammars/php-smarty.tmbundle:
- source.smarty
- text.html.smarty
vendor/grammars/php.tmbundle:
- text.html.php
vendor/grammars/pike-textmate:
@@ -424,20 +427,14 @@ vendor/grammars/restructuredtext.tmbundle:
- text.restructuredtext
vendor/grammars/ruby-haml.tmbundle:
- text.haml
vendor/grammars/ruby-on-rails-tmbundle:
- source.js.erb.rails
- source.ruby.rails
- source.ruby.rails.rjs
- source.sql.ruby
- text.html.erb.rails
vendor/grammars/ruby-slim.tmbundle:
- text.slim
vendor/grammars/ruby.tmbundle:
- source.ruby
- text.html.erb
vendor/grammars/sas.tmbundle:
- source.SASLog
- source.sas
- source.sas_log
vendor/grammars/sass-textmate-bundle:
- source.sass
vendor/grammars/scala.tmbundle:
@@ -475,6 +472,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:
@@ -514,13 +514,6 @@ vendor/grammars/swift.tmbundle:
vendor/grammars/tcl.tmbundle:
- source.tcl
- text.html.tcl
vendor/grammars/text.tmbundle:
- text.plain
vendor/grammars/textile.tmbundle:
- text.html.textile
vendor/grammars/textmate.tmbundle:
- source.regexp.oniguruma
- source.tm-properties
vendor/grammars/thrift.tmbundle:
- source.thrift
vendor/grammars/toml.tmbundle:

View File

@@ -53,11 +53,13 @@ module Linguist
def generated?
xcode_file? ||
generated_net_designer_file? ||
generated_net_specflow_feature_file? ||
composer_lock? ||
node_modules? ||
godeps? ||
generated_by_zephir? ||
minified_files? ||
source_map? ||
compiled_coffeescript? ||
generated_parser? ||
generated_net_docfile? ||
@@ -66,6 +68,7 @@ module Linguist
generated_protocol_buffer_go? ||
generated_protocol_buffer? ||
generated_jni_header? ||
generated_unity3d_meta? ||
vcr_cassette?
end
@@ -96,6 +99,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
@@ -163,6 +180,17 @@ module Linguist
def generated_net_designer_file?
name.downcase =~ /\.designer\.cs$/
end
# Internal: Is this a codegen file for Specflow feature file?
#
# Visual Studio's SpecFlow extension generates *.feature.cs files
# from *.feature files, they are not meant to be consumed by humans.
# Let's hide them.
#
# Returns true or false
def generated_net_specflow_feature_file?
name.downcase =~ /\.feature\.cs$/
end
# Internal: Is the blob of JS a parser generated by PEG.js?
#
@@ -284,5 +312,18 @@ module Linguist
return false unless lines.count > 1
return lines[0].include?("Generated by Cython")
end
# Internal: Is this a metadata file from Unity3D?
#
# Unity3D Meta files start with:
# fileFormatVersion: X
# guid: XXXXXXXXXXXXXXX
#
# Return true or false
def generated_unity3d_meta?
return false unless extname == '.meta'
return false unless lines.count > 1
return lines[0].include?("fileFormatVersion: ")
end
end
end

View File

@@ -129,7 +129,7 @@ module Linguist
end
disambiguate "Common Lisp", "OpenCL", "Cool" do |data|
if data.include?("(defun ")
if /^\s*\((defun|in-package|defpackage) /i.match(data)
Language["Common Lisp"]
elsif /^class/x.match(data)
Language["Cool"]
@@ -155,16 +155,16 @@ module Linguist
end
disambiguate "AsciiDoc", "AGS Script", "Public Key" do |data|
if /^[=-]+(\s|\n)|{{[A-Za-z]/.match(data)
if /^(----[- ]BEGIN|ssh-(rsa|dss)) /.match(data)
Language["Public Key"]
elsif /^[=-]+(\s|\n)|{{[A-Za-z]/.match(data)
Language["AsciiDoc"]
elsif /^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])/.match(data)
Language["AGS Script"]
elsif /^-----BEGIN/.match(data)
Language["Public Key"]
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)
@@ -172,17 +172,19 @@ 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", "MUF", "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")
@@ -195,6 +197,8 @@ module Linguist
Language["Mathematica"]
elsif /^\s*%/.match(data)
Language["Matlab"]
elsif /^\w+\s*:\s*module\s*{/.match(data)
Language["Limbo"]
end
end
@@ -211,7 +215,7 @@ module Linguist
end
disambiguate "Common Lisp", "NewLisp" do |data|
if /^\s*\((defun|in-package|defpackage) /.match(data)
if /^\s*\((defun|in-package|defpackage) /i.match(data)
Language["Common Lisp"]
elsif /^\s*\(define /.match(data)
Language["NewLisp"]
@@ -261,5 +265,29 @@ module Linguist
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 /^(b|g)[0-9]+ /.match(data)
Language["NL"]
else
Language["NewLisp"]
end
end
disambiguate "Rust", "RenderScript" do |data|
if data.include?("^(use |fn |mod |pub |macro_rules|impl|#!?\[)")
Language["Rust"]
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
Language["RenderScript"]
end
end
end
end

View File

@@ -541,7 +541,7 @@ module Linguist
if extnames = extensions[name]
extnames.each do |extname|
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!'
warn "#{name} has a sample with extension (#{extname.downcase}) that isn't explicitly defined in languages.yml"
options['extensions'] << extname
end
end

View File

@@ -28,6 +28,7 @@
ABAP:
type: programming
color: "#E8274B"
extensions:
- .abap
ace_mode: abap
@@ -45,7 +46,7 @@ AGS Script:
AMPL:
type: programming
color: "#00008B"
color: "#E6EFBB"
extensions:
- .ampl
tm_scope: source.ampl
@@ -58,9 +59,17 @@ ANTLR:
- .g4
ace_mode: text
API Blueprint:
type: markup
color: "#2ACCA8"
ace_mode: markdown
extensions:
- .apib
tm_scope: text.html.markdown.source.gfm.apib
APL:
type: programming
color: "#8a0707"
color: "#5A8164"
extensions:
- .apl
- .dyalog
@@ -100,7 +109,7 @@ ATS:
ActionScript:
type: programming
tm_scope: source.actionscript.3
color: "#e3491a"
color: "#882B0F"
search_term: as3
aliases:
- actionscript 3
@@ -118,12 +127,13 @@ Ada:
- .ada
- .ads
aliases:
- ada95ada2005
- ada95
- ada2005
ace_mode: ada
Agda:
type: programming
color: "#467C91"
color: "#315665"
extensions:
- .agda
ace_mode: text
@@ -150,7 +160,6 @@ ApacheConf:
- apache
extensions:
- .apacheconf
- .conf
tm_scope: source.apache-config
ace_mode: apache_conf
@@ -174,7 +183,7 @@ AppleScript:
Arc:
type: programming
color: "#ca2afe"
color: "#aa2afe"
extensions:
- .arc
tm_scope: none
@@ -200,7 +209,7 @@ AsciiDoc:
AspectJ:
type: programming
color: "#1957b0"
color: "#a957b0"
extensions:
- .aj
tm_scope: none
@@ -239,7 +248,7 @@ AutoHotkey:
AutoIt:
type: programming
color: "#36699B"
color: "#1C3552"
aliases:
- au3
- AutoIt3
@@ -266,7 +275,6 @@ Awk:
Batchfile:
type: programming
group: Shell
search_term: bat
aliases:
- bat
@@ -337,6 +345,7 @@ Boo:
Brainfuck:
type: programming
color: "#2F2530"
extensions:
- .b
- .bf
@@ -496,14 +505,22 @@ ChucK:
Cirru:
type: programming
color: "#aaaaff"
color: "#ccccff"
ace_mode: cirru
extensions:
- .cirru
Clarion:
type: programming
color: "#db901e"
ace_mode: text
extensions:
- .clw
tm_scope: source.clarion
Clean:
type: programming
color: "#3a81ad"
color: "#3F85AF"
extensions:
- .icl
- .dcl
@@ -516,6 +533,7 @@ Clojure:
color: "#db5855"
extensions:
- .clj
- .boot
- .cl2
- .cljc
- .cljs
@@ -642,6 +660,7 @@ Creole:
Crystal:
type: programming
color: "#776791"
extensions:
- .cr
ace_mode: ruby
@@ -699,9 +718,18 @@ D-ObjDump:
tm_scope: objdump.x86asm
ace_mode: assembly_x86
DIGITAL Command Language:
type: programming
aliases:
- dcl
extensions:
- .com
tm_scope: none
ace_mode: text
DM:
type: programming
color: "#075ff1"
color: "#447265"
extensions:
- .dm
aliases:
@@ -711,6 +739,8 @@ DM:
DTrace:
type: programming
aliases:
- dtrace-script
extensions:
- .d
interpreters:
@@ -719,7 +749,7 @@ DTrace:
ace_mode: c_cpp
Darcs Patch:
type: programming
type: data
search_term: dpatch
aliases:
- dpatch
@@ -731,18 +761,20 @@ Darcs Patch:
Dart:
type: programming
color: "#98BAD6"
color: "#00B4AB"
extensions:
- .dart
ace_mode: dart
Diff:
type: programming
type: data
color: "#88dddd"
extensions:
- .diff
- .patch
aliases:
- udiff
tm_scope: source.diff
ace_mode: diff
Dockerfile:
@@ -764,7 +796,7 @@ Dogescript:
Dylan:
type: programming
color: "#3ebc27"
color: "#6c616e"
extensions:
- .dylan
- .dyl
@@ -791,7 +823,7 @@ ECL:
Eagle:
type: markup
color: "#3994bc"
color: "#814C05"
extensions:
- .sch
- .brd
@@ -820,6 +852,8 @@ Elixir:
- .ex
- .exs
ace_mode: elixir
filenames:
- mix.lock
Elm:
type: programming
@@ -847,7 +881,7 @@ Emacs Lisp:
EmberScript:
type: programming
color: "#f64e3e"
color: "#FFF4F3"
extensions:
- .em
- .emberscript
@@ -856,12 +890,16 @@ EmberScript:
Erlang:
type: programming
color: "#0faf8d"
color: "#B83998"
extensions:
- .erl
- .es
- .escript
- .hrl
filenames:
- rebar.config
- rebar.config.lock
- rebar.lock
ace_mode: erlang
interpreters:
- escript
@@ -881,7 +919,7 @@ F#:
FLUX:
type: programming
color: "#33CCFF"
color: "#88ccff"
extensions:
- .fx
- .flux
@@ -931,6 +969,21 @@ Fantom:
tm_scope: source.fan
ace_mode: text
Filterscript:
type: programming
group: RenderScript
extensions:
- .fs
tm_scope: none
ace_mode: text
Formatted:
type: data
extensions:
- .for
tm_scope: none
ace_mode: text
Forth:
type: programming
color: "#341708"
@@ -1016,7 +1069,7 @@ GLSL:
Game Maker Language:
type: programming
color: "#8ad353"
color: "#8fb200"
extensions:
- .gml
tm_scope: source.c++
@@ -1090,7 +1143,7 @@ Go:
Golo:
type: programming
color: "#f6a51f"
color: "#88562A"
extensions:
- .golo
tm_scope: source.golo
@@ -1129,7 +1182,7 @@ Grammatical Framework:
extensions:
- .gf
searchable: true
color: "#ff0000"
color: "#79aa7a"
tm_scope: source.haskell
ace_mode: haskell
@@ -1149,7 +1202,7 @@ Graphviz (DOT):
ace_mode: text
Groff:
type: programming
type: markup
extensions:
- .man
- '.1'
@@ -1259,13 +1312,14 @@ Haml:
Handlebars:
type: markup
color: "#01a9d6"
aliases:
- hbs
- htmlbars
extensions:
- .handlebars
- .hbs
tm_scope: text.html.handlebars
tm_scope: none
ace_mode: handlebars
Harbour:
@@ -1296,16 +1350,23 @@ Haxe:
Hy:
type: programming
ace_mode: text
color: "#7891b1"
color: "#7790B2"
extensions:
- .hy
aliases:
- hylang
tm_scope: source.hy
HyPhy:
type: programming
ace_mode: text
extensions:
- .bf
tm_scope: none
IDL:
type: programming
color: "#e3592c"
color: "#a3522f"
extensions:
- .pro
- .dlm
@@ -1390,7 +1451,7 @@ Ioke:
Isabelle:
type: programming
color: "#fdcd00"
color: "#FEFE00"
extensions:
- .thy
tm_scope: source.isabelle.theory
@@ -1398,12 +1459,21 @@ Isabelle:
J:
type: programming
color: "#2d8abd"
color: "#9EEDFF"
extensions:
- .ijs
tm_scope: source.j
ace_mode: text
JFlex:
type: programming
color: "#DBCA00"
extensions:
- .flex
- .jflex
tm_scope: source.jflex
ace_mode: text
JSON:
type: data
tm_scope: source.json
@@ -1526,12 +1596,19 @@ Julia:
KRL:
type: programming
color: "#f5c800"
color: "#28431f"
extensions:
- .krl
tm_scope: none
ace_mode: text
KiCad:
type: programming
extensions:
- .sch
tm_scope: none
ace_mode: text
Kit:
type: markup
ace_mode: html
@@ -1541,6 +1618,7 @@ Kit:
Kotlin:
type: programming
color: "#EA4DFA"
extensions:
- .kt
- .ktm
@@ -1589,7 +1667,7 @@ LabVIEW:
Lasso:
type: programming
color: "#2584c3"
color: "#999999"
extensions:
- .lasso
- .las
@@ -1607,7 +1685,7 @@ Latte:
group: HTML
extensions:
- .latte
tm_scope: source.smarty
tm_scope: text.html.smarty
ace_mode: smarty
Lean:
@@ -1632,6 +1710,24 @@ LilyPond:
- .ily
ace_mode: text
Limbo:
type: programming
extensions:
- .b
- .m
tm_scope: none
ace_mode: text
Linker Script:
type: data
extensions:
- .ld
- .lds
filenames:
- ld.script
tm_scope: none
ace_mode: text
Liquid:
type: markup
extensions:
@@ -1718,7 +1814,7 @@ LoomScript:
Lua:
type: programming
ace_mode: lua
color: "#fa1fa1"
color: "#000080"
extensions:
- .lua
- .fcgi
@@ -1741,7 +1837,7 @@ M:
MTML:
type: markup
color: "#0095d9"
color: "#b7e1f4"
extensions:
- .mtml
tm_scope: text.html.basic
@@ -1758,6 +1854,7 @@ MUF:
Makefile:
type: programming
color: "#427819"
aliases:
- bsdmake
- make
@@ -1835,7 +1932,7 @@ Maven POM:
Max:
type: programming
color: "#ce279c"
color: "#c4a79c"
aliases:
- max/msp
- maxmsp
@@ -1859,7 +1956,7 @@ MediaWiki:
Mercury:
type: programming
color: "#abcdef"
color: "#ff2b2b"
ace_mode: prolog
interpreters:
- mmi
@@ -1896,6 +1993,17 @@ Modelica:
tm_scope: source.modelica
ace_mode: text
Module Management System:
type: programming
extensions:
- .mms
- .mmk
filenames:
- descrip.mmk
- descrip.mms
tm_scope: none
ace_mode: text
Monkey:
type: programming
extensions:
@@ -1940,14 +2048,32 @@ NSIS:
Nemerle:
type: programming
color: "#0d3c6e"
color: "#3d3c6e"
extensions:
- .n
ace_mode: text
NetLinx:
type: programming
color: "#0aa0ff"
extensions:
- .axs
- .axi
tm_scope: source.netlinx
ace_mode: text
NetLinx+ERB:
type: programming
color: "#747faa"
extensions:
- .axs.erb
- .axi.erb
tm_scope: source.netlinx.erb
ace_mode: text
NetLogo:
type: programming
color: "#ff2b2b"
color: "#ff6375"
extensions:
- .nlogo
tm_scope: source.lisp
@@ -1956,7 +2082,7 @@ NetLogo:
NewLisp:
type: programming
lexer: NewLisp
color: "#eedd66"
color: "#87AED7"
extensions:
- .nl
- .lisp
@@ -1993,7 +2119,7 @@ Ninja:
Nit:
type: programming
color: "#0d8921"
color: "#009917"
extensions:
- .nit
tm_scope: source.nit
@@ -2001,7 +2127,7 @@ Nit:
Nix:
type: programming
color: "#7070ff"
color: "#7e7eff"
extensions:
- .nix
aliases:
@@ -2045,6 +2171,10 @@ OCaml:
- .mli
- .mll
- .mly
interpreters:
- ocaml
- ocamlrun
tm_scope: source.ocaml
ObjDump:
type: data
@@ -2069,7 +2199,7 @@ Objective-C:
Objective-C++:
type: programming
tm_scope: source.objc++
color: "#4886FC"
color: "#6866fb"
aliases:
- obj-c++
- objc++
@@ -2160,7 +2290,7 @@ Ox:
Oxygene:
type: programming
color: "#5a63a3"
color: "#cdd0e3"
extensions:
- .oxygene
tm_scope: none
@@ -2168,7 +2298,7 @@ Oxygene:
Oz:
type: programming
color: "#fcaf3e"
color: "#fab738"
extensions:
- .oz
tm_scope: source.oz
@@ -2203,7 +2333,7 @@ PHP:
aliases:
- inc
#Oracle
#Oracle
PLSQL:
type: programming
ace_mode: sql
@@ -2216,7 +2346,7 @@ PLSQL:
- .plsql
- .sql
#Postgres
#Postgres
PLpgSQL:
type: programming
ace_mode: pgsql
@@ -2304,7 +2434,7 @@ Perl:
Perl6:
type: programming
color: "#0298c3"
color: "#0000fb"
extensions:
- .6pl
- .6pm
@@ -2334,7 +2464,7 @@ PigLatin:
Pike:
type: programming
color: "#066ab2"
color: "#005390"
extensions:
- .pike
- .pmod
@@ -2380,7 +2510,7 @@ PowerShell:
Processing:
type: programming
color: "#2779ab"
color: "#0096D8"
extensions:
- .pde
ace_mode: text
@@ -2399,7 +2529,7 @@ Prolog:
Propeller Spin:
type: programming
color: "#2b446d"
color: "#7fa2a7"
extensions:
- .spin
tm_scope: source.spin
@@ -2425,7 +2555,7 @@ Public Key:
Puppet:
type: programming
color: "#cc5555"
color: "#332A77"
extensions:
- .pp
filenames:
@@ -2451,7 +2581,7 @@ PureBasic:
PureScript:
type: programming
color: "#bcdc53"
color: "#1D222D"
extensions:
- .purs
tm_scope: source.haskell
@@ -2460,7 +2590,7 @@ PureScript:
Python:
type: programming
ace_mode: python
color: "#3581ba"
color: "#3572A5"
extensions:
- .py
- .cgi
@@ -2578,18 +2708,20 @@ RMarkdown:
Racket:
type: programming
color: "#ae17ff"
color: "#22228f"
extensions:
- .rkt
- .rktd
- .rktl
- .scrbl
interpreters:
- racket
tm_scope: source.racket
ace_mode: lisp
Ragel in Ruby Host:
type: programming
color: "#ff9c2e"
color: "#e17600"
extensions:
- .rl
aliases:
@@ -2618,6 +2750,7 @@ Rebol:
- .r3
- .rebol
ace_mode: text
tm_scope: source.rebol
Red:
type: programming
@@ -2627,7 +2760,7 @@ Red:
- .reds
aliases:
- red/system
tm_scope: none
tm_scope: source.red
ace_mode: text
Redcode:
@@ -2637,6 +2770,14 @@ Redcode:
tm_scope: none
ace_mode: text
RenderScript:
type: programming
extensions:
- .rs
- .rsh
tm_scope: none
ace_mode: text
RobotFramework:
type: programming
extensions:
@@ -2680,6 +2821,7 @@ Ruby:
- .rbw
- .rbx
- .ru
- .ruby
- .thor
- .watchr
interpreters:
@@ -2691,6 +2833,8 @@ Ruby:
- Appraisals
- Berksfile
- Buildfile
- Deliverfile
- Fastfile
- Gemfile
- Gemfile.lock
- Guardfile
@@ -2698,6 +2842,7 @@ Ruby:
- Mavenfile
- Podfile
- Puppetfile
- Snapfile
- Thorfile
- Vagrantfile
- buildfile
@@ -2711,7 +2856,7 @@ Rust:
SAS:
type: programming
color: "#1E90FF"
color: "#B34936"
extensions:
- .sas
tm_scope: source.sas
@@ -2735,7 +2880,7 @@ SPARQL:
SQF:
type: programming
color: "#FFCB1F"
color: "#3F3F3F"
extensions:
- .sqf
- .hqf
@@ -2789,8 +2934,8 @@ Sage:
ace_mode: python
SaltStack:
type: data
group: YAML
type: programming
color: "#646464"
aliases:
- saltstate
- salt
@@ -2837,7 +2982,6 @@ Scheme:
- .ss
interpreters:
- guile
- racket
- bigloo
- chicken
ace_mode: scheme
@@ -2875,6 +3019,7 @@ Shell:
- .fcgi
- .ksh
- .tmux
- .tool
- .zsh
interpreters:
- bash
@@ -2912,7 +3057,7 @@ Slash:
Slim:
group: HTML
type: markup
color: "#ff8877"
color: "#ff8f77"
extensions:
- .slim
ace_mode: text
@@ -2932,10 +3077,11 @@ Smarty:
extensions:
- .tpl
ace_mode: smarty
tm_scope: text.html.smarty
SourcePawn:
type: programming
color: "#f69e1d"
color: "#5c7611"
aliases:
- sourcemod
extensions:
@@ -2946,6 +3092,7 @@ SourcePawn:
Squirrel:
type: programming
color: "#800000"
extensions:
- .nut
tm_scope: source.c++
@@ -3002,7 +3149,7 @@ Swift:
SystemVerilog:
type: programming
color: "#343761"
color: "#DAE1C2"
extensions:
- .sv
- .svh
@@ -3078,6 +3225,8 @@ Tea:
Text:
type: prose
wrap: true
aliases:
- fundamental
extensions:
- .txt
- .fr
@@ -3117,7 +3266,7 @@ Turtle:
Twig:
type: markup
group: PHP
group: HTML
extensions:
- .twig
tm_scope: text.html.twig
@@ -3125,7 +3274,7 @@ Twig:
TypeScript:
type: programming
color: "#31859c"
color: "#2b7489"
aliases:
- ts
extensions:
@@ -3137,11 +3286,24 @@ Unified Parallel C:
type: programming
group: C
ace_mode: c_cpp
color: "#755223"
color: "#4e3617"
extensions:
- .upc
tm_scope: source.c
Unity3D Asset:
type: data
ace_mode: yaml
color: "#ab69a1"
extensions:
- .anim
- .asset
- .mat
- .meta
- .prefab
- .unity
tm_scope: source.yaml
UnrealScript:
type: programming
color: "#a54c4d"
@@ -3151,8 +3313,8 @@ UnrealScript:
ace_mode: java
VCL:
group: Perl
type: programming
color: "#0298c3"
extensions:
- .vcl
tm_scope: source.varnish.vcl
@@ -3160,7 +3322,7 @@ VCL:
VHDL:
type: programming
color: "#543978"
color: "#adb2cb"
extensions:
- .vhdl
- .vhd
@@ -3174,7 +3336,7 @@ VHDL:
Vala:
type: programming
color: "#ee7d06"
color: "#fbe5cd"
extensions:
- .vala
- .vapi
@@ -3182,7 +3344,7 @@ Vala:
Verilog:
type: programming
color: "#848bf3"
color: "#b2b7f8"
extensions:
- .v
- .veo
@@ -3190,16 +3352,19 @@ Verilog:
VimL:
type: programming
color: "#199c4b"
color: "#199f4b"
search_term: vim
aliases:
- vim
- nvim
extensions:
- .vim
filenames:
- .nvimrc
- .vimrc
- _vimrc
- gvimrc
- nvimrc
- vimrc
ace_mode: text
@@ -3223,7 +3388,7 @@ Visual Basic:
Volt:
type: programming
color: "#0098db"
color: "#1F1F1F"
extensions:
- .volt
tm_scope: source.d
@@ -3231,7 +3396,7 @@ Volt:
Web Ontology Language:
type: markup
color: "#3994bc"
color: "#9cc9dd"
extensions:
- .owl
tm_scope: text.xml
@@ -3276,6 +3441,7 @@ XML:
- .fsproj
- .fxml
- .glade
- .gml
- .grxml
- .ivy
- .jelly
@@ -3285,6 +3451,7 @@ XML:
- .mxml
- .nproj
- .nuspec
- .odd
- .osm
- .plist
- .pluginspec
@@ -3295,6 +3462,7 @@ XML:
- .rss
- .scxml
- .srdf
- .storyboard
- .stTheme
- .sublime-snippet
- .targets
@@ -3318,6 +3486,7 @@ XML:
- .x3d
- .xacro
- .xaml
- .xib
- .xlf
- .xliff
- .xmi
@@ -3344,7 +3513,7 @@ XProc:
XQuery:
type: programming
color: "#2700e2"
color: "#5232e7"
extensions:
- .xquery
- .xq
@@ -3427,7 +3596,7 @@ desktop:
eC:
type: programming
color: "#4A4773"
color: "#913960"
search_term: ec
extensions:
- .ec
@@ -3459,7 +3628,7 @@ mupad:
nesC:
type: programming
color: "#ffce3b"
color: "#94B0C7"
extensions:
- .nc
ace_mode: text
@@ -3492,7 +3661,7 @@ wisp:
xBase:
type: programming
color: "#3a4040"
color: "#403a40"
extensions:
- .prg
tm_scope: none

View File

@@ -50,16 +50,13 @@ module Linguist
end
else
path = File.join(dirname, filename)
if File.extname(filename) == ""
raise "#{path} is missing an extension, maybe it belongs in filenames/ subdir"
end
extname = File.extname(filename)
yield({
:path => path,
:language => category,
:interpreter => Shebang.interpreter(File.read(path)),
:extname => File.extname(filename)
:extname => extname.empty? ? nil : extname
})
end
end

View File

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

View File

@@ -3,17 +3,7 @@ module Linguist
# Detects language based on filename and/or extension
class Filename
def self.call(blob, _)
name = blob.name.to_s
# A bit of an elegant hack. If the file is executable but extensionless,
# append a "magic" extension so it can be classified with other
# languages that have shebang scripts.
extensions = FileBlob.new(name).extensions
if extensions.empty? && blob.mode && (blob.mode.to_i(8) & 05) == 05
name += ".script!"
end
Language.find_by_filename(name)
Language.find_by_filename(blob.name.to_s)
end
end
end

View File

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

View File

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

View File

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

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.5.1"
VERSION = "4.5.5"
end

View File

@@ -0,0 +1,55 @@
FORMAT: 1A
# Advanced Action API
A resource action is in fact a state transition. This API example demonstrates an action - state transition - to another resource.
## API Blueprint
+ [Previous: Resource Model](11.%20Resource%20Model.md)
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/11.%20Advanced%20Action.md)
# Tasks [/tasks/tasks{?status,priority}]
+ Parameters
+ status (string)
+ priority (number)
## List All Tasks [GET]
+ Response 200 (application/json)
[
{
"id": 123,
"name": "Exercise in gym",
"done": false,
"type": "task"
},
{
"id": 124,
"name": "Shop for groceries",
"done": true,
"type": "task"
}
]
## Retrieve Task [GET /task/{id}]
This is a state transition to another resource
+ Parameters
+ id (string)
+ Response 200 (application/json)
{
"id": 123,
"name": "Go to gym",
"done": false,
"type": "task"
}
## Delete Task [DELETE /task/{id}]
+ Parameters
+ id (string)
+ Response 204

View File

@@ -0,0 +1,39 @@
FORMAT: 1A
# Attributes API
This API example demonstrates how to describe body attributes of a request or response message.
In this case, the description is complementary (and duplicate!) to the provided JSON example in the body section. The [Advanced Attributes](09.%20Advanced%20Attributes.md) API example will demonstrate how to avoid duplicates and how to reuse attributes descriptions.
## API Blueprint
+ [Previous: Parameters](07.%20Parameters.md)
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/08.%20Attributes.md)
+ [Next: Advanced Attributes](09.%20Advanced%20Attributes.md)
# Group Coupons
## Coupon [/coupons/{id}]
A coupon contains information about a percent-off or amount-off discount you might want to apply to a customer.
### Retrieve a Coupon [GET]
Retrieves the coupon with the given ID.
+ Response 200 (application/json)
+ Attributes (object)
+ id: 250FF (string)
+ created: 1415203908 (number) - Time stamp
+ percent_off: 25 (number)
A positive integer between 1 and 100 that represents the discount the coupon will apply.
+ redeem_by (number) - Date after which the coupon can no longer be redeemed
+ Body
{
"id": "250FF",
"created": 1415203908,
"percent_off": 25,
"redeem_by:" null
}

View File

@@ -0,0 +1,18 @@
FORMAT: 1A
# The Simplest API
This is one of the simplest APIs written in the **API Blueprint**.
One plain resource combined with a method and that's it! We will explain what is going on in the next installment - [Resource and Actions](02.%20Resource%20and%20Actions.md).
**Note:** As we progress through the examples, do not also forget to view the [Raw](https://raw.github.com/apiaryio/api-blueprint/master/examples/01.%20Simplest%20API.md) code to see what is really going on in the API Blueprint, as opposed to just seeing the output of the Github Markdown parser.
Also please keep in mind that every single example in this course is a **real API Blueprint** and as such you can **parse** it with the [API Blueprint parser](https://github.com/apiaryio/drafter) or one of its [bindings](https://github.com/apiaryio/drafter#bindings).
## API Blueprint
+ [This: Raw API Blueprint](https://raw.github.com/apiaryio/api-blueprint/master/examples/01.%20Simplest%20API.md)
+ [Next: Resource and Actions](02.%20Resource%20and%20Actions.md)
# GET /message
+ Response 200 (text/plain)
Hello World!

View File

@@ -1,6 +1,9 @@
AsciiDoc Home Page
==================
Title
-----
Example Articles
~~~~~~~~~~~~~~~~
- Item 1

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

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

View File

@@ -58,6 +58,34 @@ var BA: [BlockSpace] int;
forall ba in BA do
ba = here.id;
//
// The 'hasSingleLocalSubdomain' method on arrays will return true if the
// index set for a locale can be represented by a single domain.
//
if !BA.hasSingleLocalSubdomain() then
halt("For a Block distribution, the index set per locale should be \
represented by a single domain");
//
// If the distribution's subdomains can be represented as single subdomain,
// we can use the 'localSubdomain' method to get the index set for the
// current locale.
//
// Below, we'll use the index set to confirm that the array elements have the
// correct locale id.
//
for L in Locales {
on L {
const indices = BA.localSubdomain();
for i in indices {
if BA[i] != L.id then
halt("Error: incorrect locale id");
}
}
}
//
// Output the Block-distributed array to visually see how the elements
// are partitioned across the locales.
@@ -104,6 +132,14 @@ writeln("Block Array Index Map");
writeln(BA2);
writeln();
//
// We can use the 'targetLocales' method available on an array to get the
// locales array used as targets.
//
for (L, ML) in zip(BA2.targetLocales(), MyLocales) do
if L != ML then
halt("Error: BA2.targetLocales() should equal MyLocales");
//
@@ -126,6 +162,18 @@ writeln("Cyclic Array Index Map");
writeln(CA);
writeln();
//
// The domain returned by 'localSubdomain' need not be a dense block, as is
// the case for the Cyclic Distribution.
//
on Locales[0] {
const indices = CA.localSubdomain();
for i in indices {
if CA[i] != 0 then
halt("Error: Cyclic array values on Locale 0 should be zero");
}
}
//
// Next, we'll declare a Block-Cyclic distribution. These
@@ -134,7 +182,7 @@ writeln();
// of indices. Thus, the BlockCyclic distribution is parameterized
// by a starting index (as with Cyclic) and a block size (per
// dimension) specifying how large the chunks to be dealt out are.
//
//
const BlkCycSpace = Space dmapped BlockCyclic(startIdx=Space.low,
blocksize=(2, 3));
var BCA: [BlkCycSpace] int;
@@ -146,6 +194,46 @@ writeln("Block-Cyclic Array Index Map");
writeln(BCA);
writeln();
//
// A locale's index set for a Block-Cyclic distribution cannot be represented
// by a single subdomain.
//
if BCA.hasSingleLocalSubdomain() then
halt("A Block-Cyclic index set cannot be represented by a single subdomain");
//
// If the local index set cannot be represented by a single subdomain,
// we can use the 'localSubdomains' iterator to yield a number of domains
// that represent the whole index set.
//
// Let's write a function that will use 'localSubdomains' to verify the
// correctness of the array values.
//
proc verifyID(Data: []) {
for L in Locales {
on L {
for indices in Data.localSubdomains() {
for i in indices {
if Data[i] != L.id then
halt("Error: incorrect locale id");
}
}
}
}
}
verifyID(BCA);
//
// The 'localSubdomains' iterator is also available on distributions that
// can represent a locale's index set with a single domain. This allows us to
// write more general code that will work for all distributions.
//
// This means that we can call the 'verifyID' function on any array, like the
// 'BA' array from earlier.
//
verifyID(BA);
//
// The ReplicatedDist distribution is different: each of the

View File

@@ -292,14 +292,14 @@ proc main() {
LagrangeLeapFrog();
if debug {
// deprint("[[ Forces ]]", fx, fy, fz);
deprintatomic("[[ Forces ]]", fx, fy, fz);
deprint("[[ Positions ]]", x, y, z);
deprint("[[ p, e, q ]]", p, e, q);
}
if showProgress then
writeln("time = ", format("%e", time), ", dt=", format("%e", deltatime),
if doTiming then ", elapsed = " + (getCurrentTime()-iterTime)
else "");
writef("time = %er, dt=%er, %s", time, deltatime,
if doTiming then ", elapsed = " + (getCurrentTime()-iterTime) +"\n"
else "\n");
}
if (cycle == maxcycles) {
writeln("Stopped early due to reaching maxnumsteps");
@@ -314,12 +314,10 @@ proc main() {
if printCoords {
var outfile = open("coords.out", iomode.cw);
var writer = outfile.writer();
var fmtstr = if debug then "%1.9e" else "%1.4e";
for i in Nodes {
writer.writeln(format(fmtstr, x[i]), " ",
format(fmtstr, y[i]), " ",
format(fmtstr, z[i]));
}
var fmtstr = if debug then "%1.9re %1.9er %1.9er\n"
else "%1.4er %1.4er %1.4er\n";
for i in Nodes do
writer.writef(fmtstr, x[i], y[i], z[i]);
writer.close();
outfile.close();
}
@@ -479,7 +477,7 @@ inline proc localizeNeighborNodes(eli: index(Elems),
y: [] real, ref y_local: 8*real,
z: [] real, ref z_local: 8*real) {
for param i in 1..nodesPerElem {
for i in 1..nodesPerElem {
const noi = elemToNode[eli][i];
x_local[i] = x[noi];
@@ -670,7 +668,7 @@ proc SumElemStressesToNodeForces(b_x: 8*real, b_y: 8*real, b_z: 8*real,
ref fx: 8*real,
ref fy: 8*real,
ref fz: 8*real) {
for param i in 1..8 {
for i in 1..8 {
fx[i] = -(stress_xx * b_x[i]);
fy[i] = -(stress_yy * b_y[i]);
fz[i] = -(stress_zz * b_z[i]);
@@ -725,17 +723,17 @@ inline proc CalcElemFBHourglassForce(xd: 8*real, yd: 8*real, zd: 8*real,
var hx, hy, hz: 4*real;
// reduction
for param i in 1..4 {
for param j in 1..8 {
for i in 1..4 {
for j in 1..8 {
hx[i] += hourgam[j][i] * xd[j];
hy[i] += hourgam[j][i] * yd[j];
hz[i] += hourgam[j][i] * zd[j];
}
}
for param i in 1..8 {
for i in 1..8 {
var shx, shy, shz: real;
for param j in 1..4 {
for j in 1..4 {
shx += hourgam[i][j] * hx[j];
shy += hourgam[i][j] * hy[j];
shz += hourgam[i][j] * hz[j];
@@ -1088,16 +1086,16 @@ proc CalcFBHourglassForceForElems(determ, x8n, y8n, z8n, dvdx, dvdy, dvdz) {
/* TODO: Can we enable this local block? */
// local {
for param i in 1..4 {
for i in 1..4 {
var hourmodx, hourmody, hourmodz: real;
// reduction
for param j in 1..8 {
for j in 1..8 {
hourmodx += x8n[eli][j] * gammaCoef[i][j];
hourmody += y8n[eli][j] * gammaCoef[i][j];
hourmodz += z8n[eli][j] * gammaCoef[i][j];
}
for param j in 1..8 {
for j in 1..8 {
hourgam[j][i] = gammaCoef[i][j] - volinv *
(dvdx[eli][j] * hourmodx +
dvdy[eli][j] * hourmody +
@@ -1221,7 +1219,7 @@ proc CalcKinematicsForElems(dxx, dyy, dzz, const dt: real) {
arealg[k] = CalcElemCharacteristicLength(x_local, y_local, z_local,
volume);
for param i in 1..8 {
for i in 1..8 {
x_local[i] -= dt2 * xd_local[i];
y_local[i] -= dt2 * yd_local[i];
z_local[i] -= dt2 * zd_local[i];
@@ -1669,7 +1667,7 @@ proc CalcSoundSpeedForElems(vnewc, rho0:real, enewc, pnewc, pbvc, bvc) {
iter elemToNodes(elem) {
for param i in 1..nodesPerElem do
for i in 1..nodesPerElem do
yield elemToNode[elem][i];
}
@@ -1679,14 +1677,19 @@ iter elemToNodesTuple(e) {
}
proc deprint(title:string, x:[?D] real, y:[D]real, z:[D]real) {
proc deprint(title:string, x:[?D] real, y:[D] real, z:[D] real) {
writeln(title);
for i in D {
writeln(format("%3d", i), ": ",
format("%3.4e", x[i]), " ",
format("%3.4e", y[i]), " ",
format("%3.4e", z[i]));
}
for i in D do
writef("%3i: %3.4er %3.4er %3.4er\n",
if use3DRepresentation then idx3DTo1D(i, D.dim(1).size) else i,
x[i], y[i], z[i]);
}
proc deprintatomic(title:string, x:[?D] atomic real, y:[] atomic real, z:[] atomic real) {
writeln(title);
for i in D do
writef("%3i: %3.4er %3.4er %3.4er\n",
if use3DRepresentation then idx3DTo1D(i, D.dim(1).size) else i,
x[i].peek(), y[i].peek(), z[i].peek());
}

View File

@@ -0,0 +1,172 @@
Member()
omit('***$***',_VER_C55)
_ABCDllMode_ EQUATE(0)
_ABCLinkMode_ EQUATE(1)
***$***
Include('Equates.CLW'),ONCE
Include('Keycodes.CLW'),ONCE
Include('Errors.CLW'),ONCE
Map
End ! map
Include('CStringClass.inc'),ONCE
CStringClass.Construct PROCEDURE ! Declare Procedure
CODE
SELF.bufferSize = DEFAULT_CS_BUFFER_SIZE
SELF.CS &= New(CSTRING(SELF.bufferSize))
CStringClass.Destruct PROCEDURE ! Declare Procedure
CODE
Dispose(SELF.cs)
CStringClass.Cat PROCEDURE (STRING pStr) !,*CSTRING,PROC ! Declare Procedure
newLen LONG,AUTO
oldCS &CSTRING
CODE
newLen = Len(pStr)
IF (newLen+SELF.strLength+2) > SELF.newStrSize
! Only grow the internal string if the result of the cat will be larger than the string currently is.
! The reason for the "+2" is because this is used in the string slicing outside this IF. Without this matching +2 there is potential for an out of bounds slice which would be bad!
! Save a temporary copy of the old string so we can us it in the concatination after we have grown it!
oldCS &= New(CSTRING(SELF.strLength+1))
oldCS = SELF.CS
Dispose(SELF.CS)
SELF.newStrSize = newLen + SELF.strLength + 1 + SELF.bufferSize
SELF.CS &= New(CSTRING(SELF.newStrSize))
SELF.CS = oldCS
Dispose(oldCS)
END
! Append the new string directly to the end of the old one.
SELF.CS[SELF.strLength+1 : SELF.strLength+newLen] = pStr
! And terminate the CSTRING manually
SELF.CS[SELF.strLength+newLen+1] = '<0>'
! This is the same as doing "SELF.strLength = Len(SELF.CS)" but the Len() is _really_ slow on large strings. This is much faster!
SELF.strLength += newLen
! This is what it used to be:
! SELF.Str(SELF.Str() & s)
! It is a nice and neat solution but performance, especially on large strings was terrible!
RETURN SELF.Str()
CStringClass.Str PROCEDURE (STRING pStr) !,*CSTRING, PROC ! Declare Procedure
CODE
IF Len(pStr) > SELF.newStrSize
! Only Dispose/New the internal string if the new one requires it.
! This might be slightly innefficient in terms of memory usage when the string gets smaller
! But it is _vasty_ better for performance when the string gets added to a lot.
Dispose(SELF.CS)
SELF.newStrSize = Len(pStr) + 1 + SELF.bufferSize
SELF.CS &= New(CSTRING(SELF.newStrSize))
END
SELF.CS = pStr
SELF.strLength = Len(SELF.CS)
RETURN SELF.CS
CStringClass.Len PROCEDURE !,LONG ! Declare Procedure
CODE
RETURN SELF.strLength
CStringClass.Replace PROCEDURE (STRING pFind, STRING pReplace) !,*CSTRING,PROC ! Declare Procedure
! FindString , ReplaceWith
locate LONG,AUTO
lastLocate LONG
CODE
LOOP
locate = InString(Upper(pFind), Upper(SELF.Str()), 1, lastLocate+1)
IF ~locate
BREAK
END
! So we dont end up having recursive replacement.
lastLocate = locate + Len(pReplace)-1
SELF.Str(Sub(SELF.Str(), 1, locate-1) & |
pReplace & |
Sub(SELF.Str(), locate+Len(pFind), SELF.Len()) |
)
END
RETURN SELF.Str()
CStringClass.Str PROCEDURE () !,*CSTRING ! Declare Procedure 3
CODE
RETURN SELF.CS
!------------------------------------------------------------------------------
CStringClass.Contains PROCEDURE (STRING pFind, BYTE pCaseSensitive=TRUE) !,BYTE ! Declare Procedure
! Returns a value (TRUE) indicating whether the specified String occurs within this string.
! Second parameter defaults to a case sensitive search.
CODE
IF pCaseSensitive = TRUE
IF InString(pFind, SELF.Str(), 1 , 1) > 0
RETURN TRUE
END
ELSE
IF InString(Lower(pFind), SELF.Lower(), 1 , 1) > 0
RETURN TRUE
END
END
RETURN FALSE
CStringClass.Lower PROCEDURE () !,STRING ! Declare Procedure
! Returns a "Lowered" version of the self.cs doesnt change the self.cs
CODE
RETURN Lower(SELF.CS)
CStringClass.SubString PROCEDURE (LONG pPosition, LONG pLength) !,STRING,PROC ! Declare Procedure
CODE
RETURN Sub(SELF.Str(), pPosition, pLength)
CStringClass.ToLower PROCEDURE () !,*CSTRING,PROC ! Declare Procedure
! Converts this string to lowercase and returns the converted string
CODE
RETURN SELF.Str(SELF.Lower())
CStringClass.ToUpper PROCEDURE () !,*CSTRING,PROC ! Declare Procedure
! Converts this string to uppercase and returns the converted string
CODE
RETURN SELF.Str(SELF.Upper())
CStringClass.Trim PROCEDURE () !,*CSTRING,PROC ! Declare Procedure
CODE
SELF.Str(Left(SELF.Str()))
SELF.Str(Clip(SELF.Str()))
RETURN SELF.Str()
CStringClass.Upper PROCEDURE () !,STRING ! Declare Procedure
CODE
RETURN Upper(SELF.Str())
CStringClass.IndexOf PROCEDURE (STRING pLookIn, BYTE pCaseSensitive=TRUE) !,LONG ! Declare Procedure
! Returns the index of the first parameter (pLookIn) is found within the SELF.CS
! zero if it is not found
CODE
IF pCaseSensitive = TRUE
RETURN InString(SELF.Str(), pLookIn, 1 , 1)
ELSE
RETURN InString(SELF.Lower(), Lower(pLookIn), 1 , 1)
END
CStringClass.FoundIn PROCEDURE (STRING pLookIn, BYTE pCaseSensitive=TRUE) !,BYTE ! Declare Procedure
! Returns TRUE if the first parameter (pLookIn) is found within the SELF.CS
! FALSE if it is no
CODE
IF SELF.IndexOf(pLookIn, pCaseSensitive) > 0
RETURN TRUE
ELSE
RETURN FALSE
END
CStringClass.SetBuffer PROCEDURE (LONG pNewBuffer) ! Declare Procedure
CODE
SELF.bufferSize = pNewBuffer
CStringClass.EscapeXml PROCEDURE (<STRING pStr>) !,STRING ! Declare Procedure
CS CStringClass
CODE
IF Omitted(pStr)=FALSE
CS.Str(pStr)
ELSE
! Make a copy so we don't alter the original
CS.Str(SELF.Str())
END
CS.Replace('&', '&amp;')
CS.Replace('<', '&lt;')
CS.Replace('>', '&gt;')
CS.Replace('"', '&quot;')
CS.Replace('''', '&apos;')
RETURN CS.Str()

View File

@@ -0,0 +1,68 @@
Member()
Include('ConsoleSupport.inc'),ONCE
Map
MODULE('32-bit Windows API')
! General functions
GetLastError(),DWORD,PASCAL
! Console functions
GetStdHandle(DWORD),HANDLE,PASCAL,PROC,RAW
WriteConsole(Handle,Long,Dword,long,long),bool,Raw,Pascal,name('WriteConsoleA')
ReadConsole(Handle,Long,Dword,long,long),bool,Raw,Pascal,name('ReadConsoleA')
SetConsoleTitle(Long),Bool,Raw,Pascal,name('SetConsoleTitleA')
GetConsoleTitle(Long,dword),Bool,Raw,Pascal,name('GetConsoleTitleA')
SetConsoleMode(Handle,dWord),BOOL,RAW,PASCAL
GetConsoleMode(Handle,Long),BOOL,RAW,PASCAL
End
End
ConsoleSupport.Construct PROCEDURE
CODE
ConsoleSupport.Destruct PROCEDURE
CODE
ConsoleSupport.Init PROCEDURE () !,BYTE,VIRTUAL
CODE
SELF.OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE)
If SELF.OutputHandle = INVALID_HANDLE_VALUE
Halt(1,'Unable to get output handle (' & GetLastError() & ')')
RETURN INVALID_HANDLE_VALUE
End
SELF.InputHandle = GetStdHandle(STD_INPUT_HANDLE)
if SELF.InputHandle = INVALID_HANDLE_VALUE
Halt(2,'Unable to get console input handle (' & GetLastError() & ')')
RETURN INVALID_HANDLE_VALUE
End
If ~SetConsoleMode(SELF.InputHandle,ENABLE_PROCESSED_INPUT )
Halt(3,'Unable to set console mode (' & GetLastError() & ')')
RETURN INVALID_OTHER
End
RETURN FALSE
ConsoleSupport.WriteLine PROCEDURE (STRING pText) !,BYTE,PROC,VIRTUAL
CODE
SELF.TextBuffer = SELF.Prefix & pText & '<13,10>'
If WriteConsole(SELF.OutputHandle, ADDRESS(SELF.TextBuffer), LEN(SELF.TextBuffer),ADDRESS(SELF.BytesWritten), NULL) = 0
Halt(4,'WriteConsoleError (' & GetLastError() & ')')
RETURN -1
End
RETURN FALSE
Consolesupport.ReadKey PROCEDURE () !,STRING,PROC,VIRTUAL
CODE
SELF.WriteLine('Press any key to continue...')
Clear(SELF.InBuffer)
Loop
IF ReadConsole(SELF.InputHandle,Address(SELF.InBuffer),100,Address(SELF.BytesRead),NULL) = 0 THEN
Halt(5,'Error on read console (' & GetLastError() & ')')
Break
End
Until SELF.BytesRead > 0
RETURN SELF.InBuffer

View File

@@ -0,0 +1,10 @@
PROGRAM
MAP
END
CODE
MESSAGE('Hello World!')
RETURN

12
samples/Clarion/hello.clw Normal file
View File

@@ -0,0 +1,12 @@
MEMBER()
INCLUDE('HelloClass.inc'),ONCE
MAP
END
HelloClass.Construct PROCEDURE
CODE
HelloClass.Destruct PROCEDURE() !,VIRTUAL
CODE
HelloClass.SayHello PROCEDURE
CODE
MESSAGE('Hello World!')

View File

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

View File

@@ -0,0 +1,2 @@
(DEFUN HELLO ()
(PRINT 'HELLO))

View File

@@ -0,0 +1,443 @@
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$! !
$! Copyright 2001, 2011 Fidelity Information Services, Inc !
$! !
$! This source code contains the intellectual property !
$! of its copyright holder(s), and is made available !
$! under a license. If you do not know the terms of !
$! the license, please stop and do not read further. !
$! !
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$!
$! KITINSTAL.COM PROCEDURE FOR THE GT.M PRODUCT
$!
$ ON CONTROL_Y THEN VMI$CALLBACK CONTROL_Y
$! ON WARNING THEN EXIT $STATUS !! allow warning errors for INSTALL REPLACE
$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO INSTALL
$ IF P1 .EQS. "VMI$_POSTINSTALL" THEN GOTO POSTINSTALL
$ IF P1 .EQS. "VMI$_IVP" THEN GOTO IVP
$ EXIT VMI$_UNSUPPORTED
$!
$INSTALL:
$ TYPE SYS$INPUT
GT.M (c) COPYRIGHT 1985 - 2000 by Sanchez Computer Associates
ALL RIGHTS RESERVED
$! the following 2 lines must be maintained
$ GTM$VMS_VERSION :== 072 ! Minimum VMS version required
$ ALPHA = (f$getsyi("arch_name") .eqs. "Alpha")
$ IF ALPHA
$ THEN
$ GTM$DISK_SPACE == 28000 ! Minumum disk space on system disk required
$ ELSE
$ GTM$DISK_SPACE == 16000 ! Minumum disk space on system disk required
$ ENDIF
$ IF F$ELEMENT(0,",",VMI$VMS_VERSION) .EQS. "RELEASED"
$ THEN
$ GTM$VMS_IS == F$ELEMENT(1,",",VMI$VMS_VERSION)
$ IF GTM$VMS_IS .LTS. GTM$VMS_VERSION
$ THEN
$ VMI$CALLBACK MESSAGE E VMSMISMATCH "This GT.M kit requires an existing VMS''GTM$VMS_VERSION' system."
$ EXIT VMI$_FAILURE
$ ENDIF
$ ELSE
$ GTM$VMS_IS :==
$ WRITE SYS$OUTPUT " No VMS version checking performed for field test versions."
$ ENDIF
$ IF (GTM$VMS_IS .GES. "052") THEN T1 = F$VERIFY(VMI$KIT_DEBUG)
$ VMI$CALLBACK CHECK_NET_UTILIZATION GTM$ROOM 'GTM$DISK_SPACE'
$ IF .NOT. GTM$ROOM
$ THEN
$ VMI$CALLBACK MESSAGE E NOSPACE "There is not enough disk space -- GT.M needs ''GTM$DISK_SPACE' blocks."
$ EXIT VMI$_FAILURE
$ ENDIF
$! setup default answers
$ GTM$DOPURGE :== YES
$ GTM$RUN_IVP :== YES
$ GTM$STD_CNF :== YES
$ GTM$DST_OWN :== SYSTEM
$ IF F$IDENTIFIER(GTM$DST_OWN,"NAME_TO_NUMBER") .EQ. 0 THEN GTM$DST_OWN :== 1,4
$ GTM$SYS_DST :== YES
$ GTM$DST_DIR :== GTM_DIST
$ GTM$DST_CRE == GTM$DST_DIR
$ GTM$DST_DEV :==
$ GTM$STARTDB :== YES
$ GTM$MGR_COM :== YES
$ GTM$HLP_DIR :== NO
$ GTM$DEF_DCL :== YES
$ GTM$DEF_SYS :== YES
$ GTM$LNK_LOG :== YES
$ GTM$INSTALL :== YES
$ GTM$DEF_GLD :== YES
$ GTM$GBL_DIR :== MUMPS.GLD
$ GTM$DEF_RTN :== YES
$ GTM$RTN_DIR :== [],GTM$DIST:
$ GTM$PCT_RTN :== YES
$ VMI$CALLBACK ASK GTM$DOPURGE "Do you want to purge files replaced by this installation" 'GTM$DOPURGE' B -
"@VMI$KWD:GTMKITHLP HELP_PURGE"
$ IF .NOT. GTM$DOPURGE THEN VMI$CALLBACK SET PURGE NO
$ VMI$CALLBACK ASK GTM$STD_CNF "Do you want the standard GT.M configuration (performs INSTALL)" 'GTM$STD_CNF' B -
"@VMI$KWD:GTMKITHLP HELP_STD_CNF"
$ IF GTM$STD_CNF
$ THEN
$ GTM$SYS_DST == 1
$ GTM$STARTDB == 1
$ GTM$MGR_COM == 1
$ GTM$HLP_DIR == 0
$ GTM$DEF_DCL == 1
$ GTM$DEF_SYS == 1
$ GTM$INSTALL == 1
$ GTM$LNK_LOG == 1
$ GTM$INSTALL == 1
$ GTM$DEF_GLD == 1
$ GTM$DEF_RTN == 1
$ GTM$PCT_RTN == 1
$ GTM$DST_LOG :== SYS$COMMON:['GTM$DST_DIR']
$ GTM$DIR_TYPE :== COMMON
$ ELSE ! Not standard configuration
$ VMI$CALLBACK ASK GTM$DST_OWN "What UIC should own the GT.M distribution" 'GTM$DST_OWN' S "@VMI$KWD:GTMKITHLP HELP_DST_OWN"
$ GTM$DST_OWN == GTM$DST_OWN - "[" - "]"
$ VMI$CALLBACK ASK GTM$SYS_DST "Do you want the GT.M distribution to go into a System Directory" 'GTM$SYS_DST' B -
"@VMI$KWD:GTMKITHLP HELP_SYS_DST"
$ IF GTM$SYS_DST
$ THEN
$ VMI$CALLBACK ASK GTM$DST_DIR "In what System Directory do you want to place GT.M" 'GTM$DST_DIR' S -
"@VMI$KWD:GTMKITHLP HELP_SYS_DIR"
$ GTM$DST_DIR == GTM$DST_DIR - "[" - "]"
$ GTM$DST_CRE == GTM$DST_DIR
$ GTM$DST_LOG :== SYS$COMMON:['GTM$DST_DIR']
$ GTM$DIR_TYPE :== COMMON
$ ELSE ! Not system disk
$ VMI$CALLBACK ASK GTM$DST_DEV "On which device do you want to place GT.M" "''GTM$DST_DEV'" S "@VMI$KWD:GTMKITHLP HELP_DST_DEV"
$ VMI$CALLBACK ASK GTM$DST_DIR "In what directory on that device do you want to place GT.M" 'GTM$DST_DIR' S -
"@VMI$KWD:GTMKITHLP HELP_DST_DIR"
$ GTM$DST_DEV == GTM$DST_DEV - ":"
$ GTM$DST_DIR == GTM$DST_DIR - "[" - "]"
$ GTM$DST_LOG :== 'GTM$DST_DEV':['GTM$DST_DIR']
$ GTM$DST_CRE == GTM$DST_LOG
$ GTM$DIR_TYPE :== USER
$ ENDIF ! system disk
$ VMI$CALLBACK ASK GTM$STARTDB "Do you want GTMSTART.COM in the startup database" 'GTM$STARTDB' B -
"@VMI$KWD:GTMKITHLP HELP_STARTDB"
$ IF .NOT. GTM$STARTDB
$ THEN
$ VMI$CALLBACK ASK GTM$MGR_COM "Do you want the GT.M .COM files in SYS$MANAGER" 'GTM$MGR_COM' B -
"@VMI$KWD:GTMKITHLP HELP_MGR_COM"
$ ENDIF
$ VMI$CALLBACK ASK GTM$HLP_DIR "Do you want the GT.M help files in SYS$HELP" 'GTM$HLP_DIR' B "@VMI$KWD:GTMKITHLP HELP_HLP_DIR"
$ VMI$CALLBACK ASK GTM$DEF_DCL "Do you want to define GT.M commands to the system" 'GTM$DEF_DCL' B -
"@VMI$KWD:GTMKITHLP HELP_DEF_DCL"
$ VMI$CALLBACK ASK GTM$DEF_SYS "Do you want to define GT.M logical names in the System Table" 'GTM$DEF_SYS' B -
"@VMI$KWD:GTMKITHLP HELP_DEF_SYS"
$ VMI$CALLBACK ASK GTM$LNK_LOG "Do you want to define the LNK$LIBRARY logical names" 'GTM$LNK_LOG' B -
"@VMI$KWD:GTMKITHLP HELP_LNK_LOG"
$ VMI$CALLBACK ASK GTM$RUN_IVP "Do you want to run the IVP (performs INSTALL)" 'GTM$RUN_IVP' B -
"@VMI$KWD:GTMKITHLP HELP_RUN_IVP"
$ IF GTM$RUN_IVP
$ THEN
$ GTM$PCT_RTN == 1
$ ELSE
$ VMI$CALLBACK ASK GTM$PCT_RTN "Do you want to compile the GT.M percent routines (performs INSTALL)" 'GTM$PCT_RTN' B -
"@VMI$KWD:GTMKITHLP HELP_PCT_RTN"
$ ENDIF
$ IF (GTM$RUN_IVP .OR. GTM$PCT_RTN)
$ THEN
$ GTM$INSTALL == 1
$ ELSE
$ VMI$CALLBACK ASK GTM$INSTALL "Do you want to INSTALL the GT.M shareable images now" 'GTM$INSTALL' B -
"@VMI$KWD:GTMKITHLP HELP_INSTALL"
$ ENDIF
$ VMI$CALLBACK ASK GTM$DEF_RTN "Do you want to have a default definition for GTM$ROUTINES" 'GTM$DEF_RTN' B -
"@VMI$KWD:GTMKITHLP HELP_DEF_RTN"
$ IF GTM$DEF_RTN
$ THEN
$ VMI$CALLBACK ASK GTM$RTN_DIR "What is the search specification for GTM$ROUTINES" 'GTM$RTN_DIR' S -
"@VMI$KWD:GTMKITHLP HELP_RTN_DIR"
$ ENDIF
$ VMI$CALLBACK ASK GTM$DEF_GLD "Do you want to have a default definition for GTM$GBLDIR" 'GTM$DEF_GLD' B -
"@VMI$KWD:GTMKITHLP HELP_DEF_GLD"
$ IF GTM$DEF_GLD
$ THEN
$ VMI$CALLBACK ASK GTM$GBL_DIR "What is the file specification for GTM$GBLDIR" 'GTM$GBL_DIR' S -
"@VMI$KWD:GTMKITHLP HELP_GBL_DIR"
$ ENDIF
$ ENDIF ! standard configuration
$! tell them what's happening
$ IF GTM$MGR_COM
$ THEN
$ WRITE SYS$OUTPUT " The following command files are created and copied to SYS$MANAGER:"
$ ELSE
$ WRITE SYS$OUTPUT " The following command files are created:"
$ ENDIF
$ TYPE SYS$INPUT
GTMINSTALL.COM
GTMLOGICALS.COM
GTMLOGIN.COM
GTMSTART.COM
GTMSTOP.COM
Each file contains its own user documentation.
All the questions have been asked. Installation now proceeds without your
manual intervention for about 10-15 minutes.
$ IF GTM$RUN_IVP THEN WRITE SYS$OUTPUT " Finally the Installation Verification Procedure tests the installation."
$ WRITE SYS$OUTPUT ""
$ VMI$CALLBACK CREATE_DIRECTORY 'GTM$DIR_TYPE' 'GTM$DST_CRE' "/OWNER_UIC=[''GTM$DST_OWN'] /PROTECTION=(WO:RE)"
$ VMI$CALLBACK RESTORE_SAVESET B
$ VMI$CALLBACK RESTORE_SAVESET C
$ WRITE SYS$OUTPUT ""
$ VMI$CALLBACK MESSAGE I CRECOM "Creating command files."
$! Create GTMINSTALL.COM
$ OPEN /WRITE OUFILE VMI$KWD:GTMINSTALL.COM
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$! GTMINSTALL.COM installs GTMSECSHR and other GT.M images."
$ WRITE OUFILE "$! GTMSECSHR is a small protected image and must be installed."
$ WRITE OUFILE "$! GTMSHR is the run-time library and is installed for performance."
$ WRITE OUFILE "$! GTM$DMOD and MCOMPILE are small images frequently used in development."
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$ INSTALL"
$ WRITE OUFILE "REPLACE /OPEN/SHARED/HEADER/PROTECTED GTMSECSHR"
$ WRITE OUFILE "REPLACE /OPEN/SHARED/HEADER GTMSHR"
$ WRITE OUFILE "REPLACE /OPEN/SHARED/HEADER GTM$DMOD"
$ WRITE OUFILE "REPLACE /OPEN/SHARED/HEADER MCOMPILE"
$ WRITE OUFILE "$ EXIT"
$ CLOSE OUFILE
$! Create GTMLOGICALS.COM
$ GTM$HLP_LOG :== GTM$DIST
$ IF GTM$HLP_DIR THEN GTM$HLP_LOG :== SYS$HELP
$ OPEN /WRITE OUFILE VMI$KWD:GTMLOGICALS.COM
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$! GTMLOGICALS.COM defines the logical names required to use GT.M."
$ WRITE OUFILE "$! By default the definitions are placed in the PROCESS table."
$ WRITE OUFILE "$! Parameter 1, if supplied should be the name of a logical name table"
$ WRITE OUFILE "$! and/or the mode of definition."
$ WRITE OUFILE "$! Assignments in a ""permanent"" table reduce GT.M activation time."
$ WRITE OUFILE "$!"
$ IF GTM$LNK_LOG THEN WRITE OUFILE "$! The LNK$LIBRARY names many require adjustment to your environment."
$ IF GTM$DEF_GLD THEN WRITE OUFILE "$! GTM$GBLDIR is defined to provide default access to a global directory."
$ IF GTM$DEF_RTN THEN WRITE OUFILE "$! GTM$ROUTINES is defined to provide access to the GT.M utilities."
$ IF GTM$DEF_RTN THEN WRITE OUFILE "$! You may wish to define a different structure for $ZROUTINES."
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$ IF (P1 .NES. """") .AND. (F$EXTRACT(0,1,P1) .NES. ""/"") THEN P1 := /'P1"
$ WRITE OUFILE "$ DEFINE 'P1' GTM$DIST ''GTM$DST_LOG'"
$ IF GTM$DEF_GLD THEN WRITE OUFILE "$ DEFINE 'P1' GTM$GBLDIR ''GTM$GBL_DIR'"
$ IF GTM$DEF_RTN THEN WRITE OUFILE "$ DEFINE 'P1' GTM$ROUTINES ""''GTM$RTN_DIR'"""
$ WRITE OUFILE "$ DEFINE 'P1' GTM$HELP ''GTM$HLP_LOG'"
$ WRITE OUFILE "$ DEFINE 'P1' GTMSHR GTM$DIST:GTMSHR.EXE"
$ WRITE OUFILE "$ DEFINE 'P1' GTMSECSHR GTM$DIST:GTMSECSHR.EXE"
$ WRITE OUFILE "$ DEFINE 'P1' GTM$DMOD GTM$DIST:GTM$DMOD.EXE"
$ WRITE OUFILE "$ DEFINE 'P1' MCOMPILE GTM$DIST:MCOMPILE.EXE"
$ IF GTM$LNK_LOG
$ THEN
$ N1 = 0
$ DN = 0
$ T1 = F$TRNLNM("LNK$LIBRARY")
$ IF (T1 .EQS. "") .OR. (F$LOCATE("GTMLIB",T1) .NE. F$LENGTH(T1)) .OR. (F$LOCATE("GTMSHR",T1) .NE. F$LENGTH(T1))
$ THEN
$ WRITE OUFILE "$ DEFINE 'P1' LNK$LIBRARY GTM$DIST:GTMLIB.OLB"
$ DN = 1
$ ELSE ! lnk$library is in use
$LNK_LOOP:
$ N1 = N1 + 1
$ T1 = F$TRNLNM("LNK$LIBRARY_''N1'")
$ IF (T1 .EQS. "") .OR. (F$LOCATE("GTMLIB",T1) .NE. F$LENGTH(T1)) .OR. (F$LOCATE("GTMSHR",T1) .NE. F$LENGTH(T1))
$ THEN
$ WRITE OUFILE "$ DEFINE 'P1' LNK$LIBRARY_''N1' GTM$DIST:GTMLIB.OLB"
$ DN = 1
$ ENDIF
$ IF (.NOT. DN) .AND. (N1 .LT. 998) THEN GOTO LNK_LOOP
$ ENDIF ! gtmlib handling
$ IF DN ! placed gtmlib
$ THEN
$ N1 = N1 + 1
$ WRITE OUFILE "$ DEFINE 'P1' LNK$LIBRARY_''N1' GTM$DIST:GTMSHR.OLB"
$ ELSE
$ VMI$CALLBACK MESSAGE I NOLNKLOG "No LNK$LIBRARY logical names available"
$ ENDIF
$ ENDIF ! setting up LNK$LIBRARYs
$ WRITE OUFILE "$ EXIT"
$ CLOSE OUFILE
$! Create GTMLOGIN.COM
$ OPEN /WRITE OUFILE VMI$KWD:GTMLOGIN.COM
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$! GTMLOGIN.COM performs process specific setup for GT.M."
$ WRITE OUFILE "$! It calls GTMLOGICALS.COM if the logical names are not"
$ WRITE OUFILE "$! in the SYSTEM table."
$ WRITE OUFILE "$! It defines symbols to access GT.M images."
$ WRITE OUFILE "$! It defines GT.M commands locally if they are not defined to the system."
$ WRITE OUFILE "$! When the command and logical names are not defined on a process level,"
$ WRITE OUFILE "$! a production user may save start-up time by not using GTMLOGIN."
$ WRITE OUFILE "$! CCE is infrequently used, but may be defined as a foreign command."
$ WRITE OUFILE "$!"
$ IF .NOT. GTM$DEF_SYS
$ THEN
$ WRITE OUFILE "$ dir = F$ENVIRONMENT(""PROCEDURE"")"
$ WRITE OUFILE "$ dir = F$PARSE(dir,,,""DEVICE"") + F$PARSE(dir,,,""DIRECTORY"")"
$ WRITE OUFILE "$ @'dir'GTMLOGICALS.COM"
$ ENDIF
$ IF .NOT. GTM$DEF_DCL THEN WRITE OUFILE "$ SET COMMAND GTM$DIST:GTMCOMMANDS.CLD"
$ WRITE OUFILE "$ DSE :== $GTM$DIST:DSE.EXE ! Database System Editor"
$ WRITE OUFILE "$ GDE :== $GTM$DIST:GDE.EXE ! Global Directory Editor"
$ WRITE OUFILE "$ GTM :== MUMPS/DIRECT ! Direct Mode MUMPS"
$ WRITE OUFILE "$ LKE :== $GTM$DIST:LKE.EXE ! Lock Editor"
$ WRITE OUFILE "$ MUPI*P :== $GTM$DIST:MUPIP.EXE ! MUMPS Peripheral Interchange Program"
$ WRITE OUFILE "$ EXIT"
$ WRITE OUFILE "$ CCE :== $GTM$DIST:CCE.EXE ! GT.CX Operator Interface Program"
$ WRITE OUFILE "$ EXIT"
$ CLOSE OUFILE
$! Create GTMSTART.COM
$ OPEN /WRITE OUFILE VMI$KWD:GTMSTART.COM
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$! GTMSTART.COM should be placed in the VMS startup database."
$ WRITE OUFILE "$! It invokes GTMLOGICALS.COM and GTMINSTALL.COM."
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$ dir = F$ENVIRONMENT(""PROCEDURE"")"
$ WRITE OUFILE "$ dir = F$PARSE(dir,,,""DEVICE"") + F$PARSE(dir,,,""DIRECTORY"")"
$ IF GTM$DEF_SYS THEN WRITE OUFILE "$ IF P1 .EQS. """" .OR. (P1 .EQS. ""FULL"") THEN P1 := SYSTEM/EXEC"
$ WRITE OUFILE "$ @'dir'GTMLOGICALS 'P1'"
$ WRITE OUFILE "$ @'dir'GTMINSTALL"
$ WRITE OUFILE "$ EXIT"
$ CLOSE OUFILE
$! Create GTMSTOP.COM
$ OPEN /WRITE OUFILE VMI$KWD:GTMSTOP.COM
$ WRITE OUFILE "$!"
$ WRITE OUFILE "$! GTMSTOP.COM stops all the active GT.M processes and does a RUNDOWN."
$ WRITE OUFILE "$! Place an invocation or copy of this procedure in the site specific"
$ WRITE OUFILE "$! shutdown: SYS$MANAGER:SYSHUTDWN to ensure all GT.M databases are"
$ WRITE OUFILE "$! properly closed before VMS terminates. GTMSTOP should follow"
$ WRITE OUFILE "$! GTCMSTOP and precede GTCXSTOP, if they are used."
$ WRITE OUFILE "$! If GTMSTOP is not intended to disable subsequent use of GT.M,"
$ WRITE OUFILE "$! add a comment (!) before the INSTALL REMOVE GTMSECSHR."
$ WRITE OUFILE "$!"
$ IF .NOT. GTM$DEF_SYS
$ THEN
$ WRITE OUFILE "$ dir = F$ENVIRONMENT(""PROCEDURE"")"
$ WRITE OUFILE "$ dir = F$PARSE(dir,,,""DEVICE"") + F$PARSE(dir,,,""DIRECTORY"")"
$ WRITE OUFILE "$ @'dir'GTMLOGICALS.COM"
$ ENDIF
$ WRITE OUFILE "$ MUPIP := $GTM$DIST:MUPIP.EXE"
$ WRITE OUFILE "$ STOP := $GTM$DIST:GTM$STOP"
$ WRITE OUFILE "$ STOP 'P1'"
$ WRITE OUFILE "$ MUPIP RUNDOWN"
$ WRITE OUFILE "$ INSTALL REMOVE GTMSECSHR"
$ WRITE OUFILE "$ EXIT"
$ IF GTM$DEF_SYS THEN WRITE OUFILE "$ IF P2 .EQS. """" THEN P2 := /SYSTEM/EXEC"
$ WRITE OUFILE "$ DEASSIGN 'P2' GTMSECSHR"
$ CLOSE OUFILE
$ VMI$CALLBACK MESSAGE I PREINS "Preparing files for installation."
$! GTMFILES.KIT must be maintained as kit contents change
$ GTM$HLP_LOG == GTM$DST_LOG
$ IF GTM$HLP_DIR THEN GTM$HLP_LOG :== VMI$ROOT:[SYSHLP]
$ OPEN /WRITE OUFILE VMI$KWD:GTMFILES.KIT
$ IF GTM$MGR_COM
$ THEN
$ WRITE OUFILE "GTM$ GTMINSTALL.COM VMI$ROOT:[SYSMGR] C"
$ WRITE OUFILE "GTM$ GTMLOGICALS.COM VMI$ROOT:[SYSMGR] C"
$ WRITE OUFILE "GTM$ GTMLOGIN.COM VMI$ROOT:[SYSMGR] C"
$ WRITE OUFILE "GTM$ GTMSTART.COM VMI$ROOT:[SYSMGR] C"
$ WRITE OUFILE "GTM$ GTMSTOP.COM VMI$ROOT:[SYSMGR] C"
$ ENDIF
$ WRITE OUFILE "GTM$ GTMINSTALL.COM ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMLOGICALS.COM ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMLOGIN.COM ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMSTART.COM ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMSTOP.COM ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ DSE.HLB ''GTM$HLP_LOG'"
$ WRITE OUFILE "GTM$ GDE.HLB ''GTM$HLP_LOG'"
$ WRITE OUFILE "GTM$ LKE.HLB ''GTM$HLP_LOG'"
$ WRITE OUFILE "GTM$ MUMPS.HLB ''GTM$HLP_LOG'"
$ WRITE OUFILE "GTM$ MUPIP.HLB ''GTM$HLP_LOG'"
$ WRITE OUFILE "GTM$ GTMLIB.OLB ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMSHR.OLB ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMZCALL.MLB ''GTM$DST_LOG'"
$ IF ALPHA
$ THEN
$ WRITE OUFILE "GTM$ GTM$DEFAULTS.M64 ''GTM$DST_LOG'"
$ ELSE
$ WRITE OUFILE "GTM$ GTM$DEFAULTS.MAR ''GTM$DST_LOG'"
$ ENDIF
$ WRITE OUFILE "GTM$ GTM$CE.H ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMCOLLECT.OPT ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMCOMMANDS.CLD ''GTM$DST_LOG' C"
$ WRITE OUFILE "GTM$ *.M ''GTM$DST_LOG'"
$ CLOSE OUFILE
$! GTMIMAGES.KIT must be maintained as kit contents change
$ OPEN /WRITE OUFILE VMI$KWD:GTMIMAGES.KIT
$ WRITE OUFILE "GTM$ GTMSECSHR.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTMSHR.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ DSE.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GDE.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTM$DMOD.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ LKE.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ MCOMPILE.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ MUPIP.EXE ''GTM$DST_LOG'"
$ WRITE OUFILE "GTM$ GTM$STOP.EXE ''GTM$DST_LOG'"
$ CLOSE OUFILE
$! Provide with file.KITs
$ VMI$CALLBACK PROVIDE_FILE "" VMI$KWD:GTMFILES.KIT "" T
$ VMI$CALLBACK PROVIDE_IMAGE "" VMI$KWD:GTMIMAGES.KIT "" T
$ VMI$CALLBACK MESSAGE I FININS "Finalizing the installation."
$ IF GTM$DEF_DCL THEN VMI$CALLBACK PROVIDE_DCL_COMMAND GTMCOMMANDS.CLD
$ IF GTM$STARTDB THEN VMI$CALLBACK MODIFY_STARTUP_DB ADD GTMSTART.COM LPMAIN
$! GTM$INSTALL is TRUE if GTM$RUN_IVP or GTM$PCT_RTN
$ IF GTM$INSTALL THEN VMI$CALLBACK SET POSTINSTALL YES
$ IF GTM$RUN_IVP THEN VMI$CALLBACK SET IVP YES
$ EXIT VMI$_SUCCESS
$!
$POSTINSTALL:
$ ON CONTROL_Y THEN EXIT VMI$_FAILURE
$! remove MUPIP from command tables for change from V2.4 to V2.5
$ SET NOON
$ DEFINE /USER_MODE SYS$OUTPUT NL:
$ DEFINE /USER_MODE SYS$ERROR NL:
$ SET COMMAND /TABLE=SYS$COMMON:[SYSLIB]DCLTABLES /OUTPUT=SYS$COMMON:[SYSLIB]DCLTABLES /DELETE=MUPIP
$ DEFINE /USER_MODE SYS$OUTPUT NL:
$ DEFINE /USER_MODE SYS$ERROR NL:
$ SET COMMAND /DELETE=MUPIP
$ SET ON
$ IF GTM$MGR_COM
$ THEN
$ T1 := SYS$MANAGER:
$ ELSE
$ T1 = GTM$DST_LOG
$ ENDIF
$ @'T1'GTMSTART
$ @'T1'GTMLOGIN
$ ON CONTROL_Y THEN EXIT VMI$_FAILURE
$ SET DEFAULT GTM$DIST
$ T2 = F$ENVIRONMENT("PROTECTION")
$ SET PROTECTION=(S=REWD,O=REWD,G=REWD,W=RE)/DEFAULT
$ MUMPS GTM$DMOD.M
$ IF GTM$LNK_LOG
$ THEN
$ T1 :=
$ ELSE
$ T1 :=,GTMLIB.OLB/LIB,GTMSHR.OLB/LIB
$ ENDIF
$ LINK GTM$DMOD.OBJ/NOTRACE'T1
$ IF GTM$PCT_RTN
$ THEN
$ TYPE SYS$INPUT
Compiling the GT.M percent (%) routines.
$ MUMPS *
$ IF GTM$DOPURGE THEN PURGE *.*
$ SET DEFAULT VMI$KWD
$ ENDIF ! percent routines
$ SET PROTECTION=('T2')/DEFAULT
$ EXIT VMI$_SUCCESS
$!
$IVP:
$! The real Installation Verification Procedure.
$ TYPE SYS$INPUT
GT.M Installation Verification Procedure
$! Extract the IVP .COM file from the text library.
$ LIBRARIAN /EXTRACT=GTM$IVP /OUTPUT=GTM$IVP.COM GTM$IVP.TLB
$ @GTM$IVP
$ EXIT $STATUS
$!

View File

@@ -0,0 +1,867 @@
$! make libz under VMS written by
$! Martin P.J. Zinser
$!
$! In case of problems with the install you might contact me at
$! zinser@zinser.no-ip.info(preferred) or
$! martin.zinser@eurexchange.com (work)
$!
$! Make procedure history for Zlib
$!
$!------------------------------------------------------------------------------
$! Version history
$! 0.01 20060120 First version to receive a number
$! 0.02 20061008 Adapt to new Makefile.in
$! 0.03 20091224 Add support for large file check
$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
$! subdir path, update module search in makefile.in
$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
$! shared image creation
$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
$! image
$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)).
$! "" -> automatic, preference: MMK, MMS, built-in.
$!
$ on error then goto err_exit
$!
$ true = 1
$ false = 0
$ tmpnam = "temp_" + f$getjpi("","pid")
$ tt = tmpnam + ".txt"
$ tc = tmpnam + ".c"
$ th = tmpnam + ".h"
$ define/nolog tconfig 'th'
$ its_decc = false
$ its_vaxc = false
$ its_gnuc = false
$ s_case = False
$!
$! Setup variables holding "config" information
$!
$ Make = "''p1'"
$ name = "Zlib"
$ version = "?.?.?"
$ v_string = "ZLIB_VERSION"
$ v_file = "zlib.h"
$ ccopt = "/include = []"
$ lopts = ""
$ dnsrl = ""
$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in"
$ conf_check_string = ""
$ linkonly = false
$ optfile = name + ".opt"
$ mapfile = name + ".map"
$ libdefs = ""
$ vax = f$getsyi("HW_MODEL").lt.1024
$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
$ ia64 = f$getsyi("HW_MODEL").ge.4096
$!
$! 2012-03-05 SMS.
$! Why is this needed? And if it is needed, why not simply ".not. vax"?
$!
$!!! if axp .or. ia64 then set proc/parse=extended
$!
$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL")
$ mydef = F$parse(whoami,,,"DEVICE")
$ mydir = f$parse(whoami,,,"DIRECTORY") - "]["
$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type")
$!
$! Check for MMK/MMS
$!
$ if (Make .eqs. "")
$ then
$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
$ else
$ Make = f$edit( Make, "trim")
$ endif
$!
$ gosub find_version
$!
$ open/write topt tmp.opt
$ open/write optf 'optfile'
$!
$ gosub check_opts
$!
$! Look for the compiler used
$!
$ gosub check_compiler
$ close topt
$ close optf
$!
$ if its_decc
$ then
$ ccopt = "/prefix=all" + ccopt
$ if f$trnlnm("SYS") .eqs. ""
$ then
$ if axp
$ then
$ define sys sys$library:
$ else
$ ccopt = "/decc" + ccopt
$ define sys decc$library_include:
$ endif
$ endif
$!
$! 2012-03-05 SMS.
$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX?
$!
$ if axp .or. ia64
$ then
$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)"
$ s_case = true
$ endif
$ endif
$ if its_vaxc .or. its_gnuc
$ then
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ endif
$!
$! Build a fake configure input header
$!
$ open/write conf_hin config.hin
$ write conf_hin "#undef _LARGEFILE64_SOURCE"
$ close conf_hin
$!
$!
$ i = 0
$FIND_ACONF:
$ fname = f$element(i,"#",aconf_in_file)
$ if fname .eqs. "#" then goto AMISS_ERR
$ if f$search(fname) .eqs. ""
$ then
$ i = i + 1
$ goto find_aconf
$ endif
$ open/read/err=aconf_err aconf_in 'fname'
$ open/write aconf zconf.h
$ACONF_LOOP:
$ read/end_of_file=aconf_exit aconf_in line
$ work = f$edit(line, "compress,trim")
$ if f$extract(0,6,work) .nes. "#undef"
$ then
$ if f$extract(0,12,work) .nes. "#cmakedefine"
$ then
$ write aconf line
$ endif
$ else
$ cdef = f$element(1," ",work)
$ gosub check_config
$ endif
$ goto aconf_loop
$ACONF_EXIT:
$ write aconf ""
$ write aconf "/* VMS specifics added by make_vms.com: */"
$ write aconf "#define VMS 1"
$ write aconf "#include <unistd.h>"
$ write aconf "#include <unixio.h>"
$ write aconf "#ifdef _LARGEFILE"
$ write aconf "# define off64_t __off64_t"
$ write aconf "# define fopen64 fopen"
$ write aconf "# define fseeko64 fseeko"
$ write aconf "# define lseek64 lseek"
$ write aconf "# define ftello64 ftell"
$ write aconf "#endif"
$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)"
$ write aconf "# define HAVE_VSNPRINTF"
$ write aconf "#endif"
$ close aconf_in
$ close aconf
$ if f$search("''th'") .nes. "" then delete 'th';*
$! Build the thing plain or with mms
$!
$ write sys$output "Compiling Zlib sources ..."
$ if make.eqs.""
$ then
$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;*
$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;*
$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
adler32.c zlib.h zconf.h
$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
compress.c zlib.h zconf.h
$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
crc32.c zlib.h zconf.h
$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
deflate.c deflate.h zutil.h zlib.h zconf.h
$ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" -
gzclose.c zutil.h zlib.h zconf.h
$ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" -
gzlib.c zutil.h zlib.h zconf.h
$ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" -
gzread.c zutil.h zlib.h zconf.h
$ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" -
gzwrite.c zutil.h zlib.h zconf.h
$ CALL MAKE infback.OBJ "CC ''CCOPT' infback" -
infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
inffast.c zutil.h zlib.h zconf.h inffast.h
$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
inflate.c zutil.h zlib.h zconf.h infblock.h
$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
inftrees.c zutil.h zlib.h zconf.h inftrees.h
$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
trees.c deflate.h zutil.h zlib.h zconf.h
$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
uncompr.c zlib.h zconf.h
$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
zutil.c zutil.h zlib.h zconf.h
$ write sys$output "Building Zlib ..."
$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
$ write sys$output "Building example..."
$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" -
[.test]example.c zlib.h zconf.h
$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
$ write sys$output "Building minigzip..."
$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" -
[.test]minigzip.c zlib.h zconf.h
$ call make minigzip.exe -
"LINK minigzip,libz.olb/lib" -
minigzip.obj libz.olb
$ else
$ gosub crea_mms
$ write sys$output "Make ''name' ''version' with ''Make' "
$ 'make'
$ endif
$!
$! Create shareable image
$!
$ gosub crea_olist
$ write sys$output "Creating libzshr.exe"
$ call map_2_shopt 'mapfile' 'optfile'
$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt
$ write sys$output "Zlib build completed"
$ delete/nolog tmp.opt;*
$ exit
$AMISS_ERR:
$ write sys$output "No source for config.hin found."
$ write sys$output "Tried any of ''aconf_in_file'"
$ goto err_exit
$CC_ERR:
$ write sys$output "C compiler required to build ''name'"
$ goto err_exit
$ERR_EXIT:
$ set message/facil/ident/sever/text
$ close/nolog optf
$ close/nolog topt
$ close/nolog aconf_in
$ close/nolog aconf
$ close/nolog out
$ close/nolog min
$ close/nolog mod
$ close/nolog h_in
$ write sys$output "Exiting..."
$ exit 2
$!
$!
$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
$ V = 'F$Verify(0)
$! P1 = What we are trying to make
$! P2 = Command to make it
$! P3 - P8 What it depends on
$
$ If F$Search(P1) .Eqs. "" Then Goto Makeit
$ Time = F$CvTime(F$File(P1,"RDT"))
$arg=3
$Loop:
$ Argument = P'arg
$ If Argument .Eqs. "" Then Goto Exit
$ El=0
$Loop2:
$ File = F$Element(El," ",Argument)
$ If File .Eqs. " " Then Goto Endl
$ AFile = ""
$Loop3:
$ OFile = AFile
$ AFile = F$Search(File)
$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
$ Goto Loop3
$NextEL:
$ El = El + 1
$ Goto Loop2
$EndL:
$ arg=arg+1
$ If arg .Le. 8 Then Goto Loop
$ Goto Exit
$
$Makeit:
$ VV=F$VERIFY(0)
$ write sys$output P2
$ 'P2
$ VV='F$Verify(VV)
$Exit:
$ If V Then Set Verify
$ENDSUBROUTINE
$!------------------------------------------------------------------------------
$!
$! Check command line options and set symbols accordingly
$!
$!------------------------------------------------------------------------------
$! Version history
$! 0.01 20041206 First version to receive a number
$! 0.02 20060126 Add new "HELP" target
$ CHECK_OPTS:
$ i = 1
$ OPT_LOOP:
$ if i .lt. 9
$ then
$ cparm = f$edit(p'i',"upcase")
$!
$! Check if parameter actually contains something
$!
$ if f$edit(cparm,"trim") .nes. ""
$ then
$ if cparm .eqs. "DEBUG"
$ then
$ ccopt = ccopt + "/noopt/deb"
$ lopts = lopts + "/deb"
$ endif
$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm)
$ then
$ start = f$locate("=",cparm) + 1
$ len = f$length(cparm) - start
$ ccopt = ccopt + f$extract(start,len,cparm)
$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
then s_case = true
$ endif
$ if cparm .eqs. "LINK" then linkonly = true
$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm)
$ then
$ start = f$locate("=",cparm) + 1
$ len = f$length(cparm) - start
$ lopts = lopts + f$extract(start,len,cparm)
$ endif
$ if f$locate("CC=",cparm) .lt. f$length(cparm)
$ then
$ start = f$locate("=",cparm) + 1
$ len = f$length(cparm) - start
$ cc_com = f$extract(start,len,cparm)
if (cc_com .nes. "DECC") .and. -
(cc_com .nes. "VAXC") .and. -
(cc_com .nes. "GNUC")
$ then
$ write sys$output "Unsupported compiler choice ''cc_com' ignored"
$ write sys$output "Use DECC, VAXC, or GNUC instead"
$ else
$ if cc_com .eqs. "DECC" then its_decc = true
$ if cc_com .eqs. "VAXC" then its_vaxc = true
$ if cc_com .eqs. "GNUC" then its_gnuc = true
$ endif
$ endif
$ if f$locate("MAKE=",cparm) .lt. f$length(cparm)
$ then
$ start = f$locate("=",cparm) + 1
$ len = f$length(cparm) - start
$ mmks = f$extract(start,len,cparm)
$ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS")
$ then
$ make = mmks
$ else
$ write sys$output "Unsupported make choice ''mmks' ignored"
$ write sys$output "Use MMK or MMS instead"
$ endif
$ endif
$ if cparm .eqs. "HELP" then gosub bhelp
$ endif
$ i = i + 1
$ goto opt_loop
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! Look for the compiler used
$!
$! Version history
$! 0.01 20040223 First version to receive a number
$! 0.02 20040229 Save/set value of decc$no_rooted_search_lists
$! 0.03 20060202 Extend handling of GNU C
$! 0.04 20090402 Compaq -> hp
$CHECK_COMPILER:
$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
$ then
$ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "")
$ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "")
$ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "")
$ endif
$!
$! Exit if no compiler available
$!
$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
$ then goto CC_ERR
$ else
$ if its_decc
$ then
$ write sys$output "CC compiler check ... hp C"
$ if f$trnlnm("decc$no_rooted_search_lists") .nes. ""
$ then
$ dnrsl = f$trnlnm("decc$no_rooted_search_lists")
$ endif
$ define/nolog decc$no_rooted_search_lists 1
$ else
$ if its_vaxc then write sys$output "CC compiler check ... VAX C"
$ if its_gnuc
$ then
$ write sys$output "CC compiler check ... GNU C"
$ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib"
$ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib"
$ cc = "gcc"
$ endif
$ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share"
$ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share"
$ endif
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! If MMS/MMK are available dump out the descrip.mms if required
$!
$CREA_MMS:
$ write sys$output "Creating descrip.mms..."
$ create descrip.mms
$ open/append out descrip.mms
$ copy sys$input: out
$ deck
# descrip.mms: MMS description file for building zlib on VMS
# written by Martin P.J. Zinser
# <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com>
OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
deflate.obj, trees.obj, zutil.obj, inflate.obj, \
inftrees.obj, inffast.obj
$ eod
$ write out "CFLAGS=", ccopt
$ write out "LOPTS=", lopts
$ write out "all : example.exe minigzip.exe libz.olb"
$ copy sys$input: out
$ deck
@ write sys$output " Example applications available"
libz.olb : libz.olb($(OBJS))
@ write sys$output " libz available"
example.exe : example.obj libz.olb
link $(LOPTS) example,libz.olb/lib
minigzip.exe : minigzip.obj libz.olb
link $(LOPTS) minigzip,libz.olb/lib
clean :
delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
# Other dependencies.
adler32.obj : adler32.c zutil.h zlib.h zconf.h
compress.obj : compress.c zlib.h zconf.h
crc32.obj : crc32.c zutil.h zlib.h zconf.h
deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
example.obj : [.test]example.c zlib.h zconf.h
gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
gzread.obj : gzread.c zutil.h zlib.h zconf.h
gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h
inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
inflate.obj : inflate.c zutil.h zlib.h zconf.h
inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
minigzip.obj : [.test]minigzip.c zlib.h zconf.h
trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
uncompr.obj : uncompr.c zlib.h zconf.h
zutil.obj : zutil.c zutil.h zlib.h zconf.h
infback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
$ eod
$ close out
$ return
$!------------------------------------------------------------------------------
$!
$! Read list of core library sources from makefile.in and create options
$! needed to build shareable image
$!
$CREA_OLIST:
$ open/read min makefile.in
$ open/write mod modules.opt
$ src_check_list = "OBJZ =#OBJG ="
$MRLOOP:
$ read/end=mrdone min rec
$ i = 0
$SRC_CHECK_LOOP:
$ src_check = f$element(i, "#", src_check_list)
$ i = i+1
$ if src_check .eqs. "#" then goto mrloop
$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop
$ rec = rec - src_check
$ gosub extra_filnam
$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop
$MRSLOOP:
$ read/end=mrdone min rec
$ gosub extra_filnam
$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop
$MRDONE:
$ close min
$ close mod
$ return
$!------------------------------------------------------------------------------
$!
$! Take record extracted in crea_olist and split it into single filenames
$!
$EXTRA_FILNAM:
$ myrec = f$edit(rec - "\", "trim,compress")
$ i = 0
$FELOOP:
$ srcfil = f$element(i," ", myrec)
$ if (srcfil .nes. " ")
$ then
$ write mod f$parse(srcfil,,,"NAME"), ".obj"
$ i = i + 1
$ goto feloop
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! Find current Zlib version number
$!
$FIND_VERSION:
$ open/read h_in 'v_file'
$hloop:
$ read/end=hdone h_in rec
$ rec = f$edit(rec,"TRIM")
$ if (f$extract(0,1,rec) .nes. "#") then goto hloop
$ rec = f$edit(rec - "#", "TRIM")
$ if f$element(0," ",rec) .nes. "define" then goto hloop
$ if f$element(1," ",rec) .eqs. v_string
$ then
$ version = 'f$element(2," ",rec)'
$ goto hdone
$ endif
$ goto hloop
$hdone:
$ close h_in
$ return
$!------------------------------------------------------------------------------
$!
$CHECK_CONFIG:
$!
$ in_ldef = f$locate(cdef,libdefs)
$ if (in_ldef .lt. f$length(libdefs))
$ then
$ write aconf "#define ''cdef' 1"
$ libdefs = f$extract(0,in_ldef,libdefs) + -
f$extract(in_ldef + f$length(cdef) + 1, -
f$length(libdefs) - in_ldef - f$length(cdef) - 1, -
libdefs)
$ else
$ if (f$type('cdef') .eqs. "INTEGER")
$ then
$ write aconf "#define ''cdef' ", 'cdef'
$ else
$ if (f$type('cdef') .eqs. "STRING")
$ then
$ write aconf "#define ''cdef' ", """", '''cdef'', """"
$ else
$ gosub check_cc_def
$ endif
$ endif
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! Check if this is a define relating to the properties of the C/C++
$! compiler
$!
$ CHECK_CC_DEF:
$ if (cdef .eqs. "_LARGEFILE64_SOURCE")
$ then
$ copy sys$input: 'tc'
$ deck
#include "tconfig"
#define _LARGEFILE
#include <stdio.h>
int main(){
FILE *fp;
fp = fopen("temp.txt","r");
fseeko(fp,1,SEEK_SET);
fclose(fp);
}
$ eod
$ test_inv = false
$ comm_h = false
$ gosub cc_prop_check
$ return
$ endif
$ write aconf "/* ", line, " */"
$ return
$!------------------------------------------------------------------------------
$!
$! Check for properties of C/C++ compiler
$!
$! Version history
$! 0.01 20031020 First version to receive a number
$! 0.02 20031022 Added logic for defines with value
$! 0.03 20040309 Make sure local config file gets not deleted
$! 0.04 20041230 Also write include for configure run
$! 0.05 20050103 Add processing of "comment defines"
$CC_PROP_CHECK:
$ cc_prop = true
$ is_need = false
$ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true)
$ if f$search(th) .eqs. "" then create 'th'
$ set message/nofac/noident/nosever/notext
$ on error then continue
$ cc 'tmpnam'
$ if .not. ($status) then cc_prop = false
$ on error then continue
$! The headers might lie about the capabilities of the RTL
$ link 'tmpnam',tmp.opt/opt
$ if .not. ($status) then cc_prop = false
$ set message/fac/ident/sever/text
$ on error then goto err_exit
$ delete/nolog 'tmpnam'.*;*/exclude='th'
$ if (cc_prop .and. .not. is_need) .or. -
(.not. cc_prop .and. is_need)
$ then
$ write sys$output "Checking for ''cdef'... yes"
$ if f$type('cdef_val'_yes) .nes. ""
$ then
$ if f$type('cdef_val'_yes) .eqs. "INTEGER" -
then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes)
$ if f$type('cdef_val'_yes) .eqs. "STRING" -
then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes)
$ else
$ call write_config f$fao("#define !AS 1",cdef)
$ endif
$ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. -
(cdef .eqs. "_LARGEFILE64_SOURCE") then -
call write_config f$string("#define _LARGEFILE 1")
$ else
$ write sys$output "Checking for ''cdef'... no"
$ if (comm_h)
$ then
call write_config f$fao("/* !AS */",line)
$ else
$ if f$type('cdef_val'_no) .nes. ""
$ then
$ if f$type('cdef_val'_no) .eqs. "INTEGER" -
then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no)
$ if f$type('cdef_val'_no) .eqs. "STRING" -
then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no)
$ else
$ call write_config f$fao("#undef !AS",cdef)
$ endif
$ endif
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! Check for properties of C/C++ compiler with multiple result values
$!
$! Version history
$! 0.01 20040127 First version
$! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05
$CC_MPROP_CHECK:
$ cc_prop = true
$ i = 1
$ idel = 1
$ MT_LOOP:
$ if f$type(result_'i') .eqs. "STRING"
$ then
$ set message/nofac/noident/nosever/notext
$ on error then continue
$ cc 'tmpnam'_'i'
$ if .not. ($status) then cc_prop = false
$ on error then continue
$! The headers might lie about the capabilities of the RTL
$ link 'tmpnam'_'i',tmp.opt/opt
$ if .not. ($status) then cc_prop = false
$ set message/fac/ident/sever/text
$ on error then goto err_exit
$ delete/nolog 'tmpnam'_'i'.*;*
$ if (cc_prop)
$ then
$ write sys$output "Checking for ''cdef'... ", mdef_'i'
$ if f$type(mdef_'i') .eqs. "INTEGER" -
then call write_config f$fao("#define !AS !UL",cdef,mdef_'i')
$ if f$type('cdef_val'_yes) .eqs. "STRING" -
then call write_config f$fao("#define !AS !AS",cdef,mdef_'i')
$ goto msym_clean
$ else
$ i = i + 1
$ goto mt_loop
$ endif
$ endif
$ write sys$output "Checking for ''cdef'... no"
$ call write_config f$fao("#undef !AS",cdef)
$ MSYM_CLEAN:
$ if (idel .le. msym_max)
$ then
$ delete/sym mdef_'idel'
$ idel = idel + 1
$ goto msym_clean
$ endif
$ return
$!------------------------------------------------------------------------------
$!
$! Write configuration to both permanent and temporary config file
$!
$! Version history
$! 0.01 20031029 First version to receive a number
$!
$WRITE_CONFIG: SUBROUTINE
$ write aconf 'p1'
$ open/append confh 'th'
$ write confh 'p1'
$ close confh
$ENDSUBROUTINE
$!------------------------------------------------------------------------------
$!
$! Analyze the project map file and create the symbol vector for a shareable
$! image from it
$!
$! Version history
$! 0.01 20120128 First version
$! 0.02 20120226 Add pre-load logic
$!
$ MAP_2_SHOPT: Subroutine
$!
$ SAY := "WRITE_ SYS$OUTPUT"
$!
$ IF F$SEARCH("''P1'") .EQS. ""
$ THEN
$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available"
$ goto exit_m2s
$ ENDIF
$ IF "''P2'" .EQS. ""
$ THEN
$ SAY "MAP_2_SHOPT: Error, no output file provided"
$ goto exit_m2s
$ ENDIF
$!
$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary"
$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread"
$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary"
$ module4 = "inflateSync#uncompress#zlibVersion#compress"
$ open/read map 'p1
$ if axp .or. ia64
$ then
$ open/write aopt a.opt
$ open/write bopt b.opt
$ write aopt " CASE_SENSITIVE=YES"
$ write bopt "SYMBOL_VECTOR= (-"
$ mod_sym_num = 1
$ MOD_SYM_LOOP:
$ if f$type(module'mod_sym_num') .nes. ""
$ then
$ mod_in = 0
$ MOD_SYM_IN:
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
$ if shared_proc .nes. "#"
$ then
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
f$edit(shared_proc,"upcase"),shared_proc)
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
$ mod_in = mod_in + 1
$ goto mod_sym_in
$ endif
$ mod_sym_num = mod_sym_num + 1
$ goto mod_sym_loop
$ endif
$MAP_LOOP:
$ read/end=map_end map line
$ if (f$locate("{",line).lt. f$length(line)) .or. -
(f$locate("global:", line) .lt. f$length(line))
$ then
$ proc = true
$ goto map_loop
$ endif
$ if f$locate("}",line).lt. f$length(line) then proc = false
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
$ if proc
$ then
$ shared_proc = f$edit(line,"collapse")
$ chop_semi = f$locate(";", shared_proc)
$ if chop_semi .lt. f$length(shared_proc) then -
shared_proc = f$extract(0, chop_semi, shared_proc)
$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
f$edit(shared_proc,"upcase"),shared_proc)
$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
$ endif
$ goto map_loop
$MAP_END:
$ close/nolog aopt
$ close/nolog bopt
$ open/append libopt 'p2'
$ open/read aopt a.opt
$ open/read bopt b.opt
$ALOOP:
$ read/end=aloop_end aopt line
$ write libopt line
$ goto aloop
$ALOOP_END:
$ close/nolog aopt
$ sv = ""
$BLOOP:
$ read/end=bloop_end bopt svn
$ if (svn.nes."")
$ then
$ if (sv.nes."") then write libopt sv
$ sv = svn
$ endif
$ goto bloop
$BLOOP_END:
$ write libopt f$extract(0,f$length(sv)-2,sv), "-"
$ write libopt ")"
$ close/nolog bopt
$ delete/nolog/noconf a.opt;*,b.opt;*
$ else
$ if vax
$ then
$ open/append libopt 'p2'
$ mod_sym_num = 1
$ VMOD_SYM_LOOP:
$ if f$type(module'mod_sym_num') .nes. ""
$ then
$ mod_in = 0
$ VMOD_SYM_IN:
$ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
$ if shared_proc .nes. "#"
$ then
$ write libopt f$fao("UNIVERSAL=!AS",-
f$edit(shared_proc,"upcase"))
$ mod_in = mod_in + 1
$ goto vmod_sym_in
$ endif
$ mod_sym_num = mod_sym_num + 1
$ goto vmod_sym_loop
$ endif
$VMAP_LOOP:
$ read/end=vmap_end map line
$ if (f$locate("{",line).lt. f$length(line)) .or. -
(f$locate("global:", line) .lt. f$length(line))
$ then
$ proc = true
$ goto vmap_loop
$ endif
$ if f$locate("}",line).lt. f$length(line) then proc = false
$ if f$locate("local:", line) .lt. f$length(line) then proc = false
$ if proc
$ then
$ shared_proc = f$edit(line,"collapse")
$ chop_semi = f$locate(";", shared_proc)
$ if chop_semi .lt. f$length(shared_proc) then -
shared_proc = f$extract(0, chop_semi, shared_proc)
$ write libopt f$fao("UNIVERSAL=!AS",-
f$edit(shared_proc,"upcase"))
$ endif
$ goto vmap_loop
$VMAP_END:
$ else
$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)"
$ write sys$output "No options file created"
$ endif
$ endif
$ EXIT_M2S:
$ close/nolog map
$ close/nolog libopt
$ endsubroutine

View File

@@ -0,0 +1,342 @@
$! BUILD_XSLT.COM
$!
$! Build the XSLT library
$!
$! Arguments:
$!
$! p1 - "DEBUG" is you want to build with debug
$!
$! This package requires libxml to have already been installed. You need
$! to ensure that the logical name LIBXML is defined and points to the
$! directory containing libxml's .h files
$!
$! This procedure creates the object libraries
$!
$! XML_LIBDIR:LIBXSLT.OLB
$! XML_LIBDIR:LIBEXSLT.OLB
$!
$! and the program
$!
$! XSLTPROC
$!
$! After the library is built, you can link these routines into
$! your code with the command
$!
$! LINK your_modules,XML_LIBDIR:LIBEXSLT/LIB,LIBXSLT/LIBRARY,LIBXML/LIB
$!
$! Change History
$! --------------
$! Command file author : John A Fotheringham (jaf@jafsoft.com)
$! Last update : 2 Nov 2001
$!
$!- configuration -------------------------------------------------------------
$!
$!- compile command.
$!
$ cc_opts = "/INCLUDE=([],XML_SRCDIR:,[-.libxslt])/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS"
$!
$ if p1.eqs."DEBUG"
$ then
$ debug = "Y"
$ cc_command = "CC''cc_opts'/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL"
$ else
$ debug = "N"
$ cc_command = "CC''cc_opts'"
$ endif
$!
$!- configure multiple build passes for each library. -------------------------
$!
$! For each pass:
$!
$! "libname" is the name of the library or module being created
$!
$! "progname" is the name of the program being created
$!
$! "src" is the list of sources to be built into the library or program
$! - This should be compared to the definition of
$! "<NAME>_la_SOURCES" in the MAKEFILE.IN file in
$! corresponding directory.
$!
$ num_passes = 3 ! two libraries and a program
$!
$!- pass 1 - library LIBXSLT
$!
$ libname_1 = "LIBXSLT"
$ h_file_1 = "xslt.h"
$ progname_1 = ""
$!
$ ! see "libxslt_la_SOURCES" in [.libxslt]makefile.in
$ src_1 = "xslt.c xsltutils.c pattern.c templates.c variables.c keys.c"
$ src_1 = src_1 + " numbers.c extensions.c extra.c functions.c"
$ src_1 = src_1 + " namespaces.c imports.c attributes.c documents.c"
$ src_1 = src_1 + " preproc.c transform.c security.c"
$!
$!- pass 2 - library LIBEXSLT
$!
$ libname_2 = "LIBEXSLT"
$ h_file_2 = "exslt.h"
$ progname_2 = ""
$!
$ ! see "libexslt_la_SOURCES" in [.libexslt]makefile.in
$ src_2 = "exslt.c common.c math.c sets.c functions.c strings.c date.c saxon.c dynamic.c"
$!
$!- pass 3 - program XSLTPROC
$!
$ libname_3 = ""
$ h_file_3 = ""
$ progname_3 = "XSLTPROC"
$!
$ ! see "xsltproc_SOURCES" in [.xsltproc]makefile.in
$ src_3 = "xsltproc.c"
$!
$!- set up and check logicals -----------------------------------------------
$!
$! XML_LIBDIR - object library directory
$! XML_SRCDIR - top-level build directory of libxml package -- needed for config.h and trio.h
$! LIBXML - source directory containing .h files for libxml package
$!
$ if f$trnlnm("XML_LIBDIR").eqs.""
$ then
$ on error then continue
$ globfile = f$search("[--...]libxml.olb")
$ if globfile.eqs.""
$ then
$ write sys$output ""
$ write sys$output " You need to define the XML_LIBDIR logical name to"
$ write sys$output " point to the directory containing your object"
$ write sys$output " libraries. This should already contain LIBXML.OLB"
$ write sys$output " from the libxml package, and will be the directory"
$ write sys$output " the new LIBXSLT.OLB library will be placed in"
$ write sys$output ""
$ exit
$ else
$ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
$ define/process XML_LIBDIR "''srcdir'"
$ write sys$output "Defining XML_LIBDIR as ""''srcdir'"""
$ endif
$ endif
$!
$ if f$trnlnm("libxml").eqs.""
$ then
$ ! look for globals.h in a directory installed paralle to this one
$ on error then continue
$ globfile = f$search("[--...]globals.h")
$ if globfile.eqs.""
$ then
$ write sys$output ""
$ write sys$output " You need to define a LIBXML logical directory to"
$ write sys$output " point to the directory containing the .h files"
$ write sys$output " for the libxml package"
$ write sys$output ""
$ exit
$ else
$ srcdir = f$element(0,"]",globfile)+ "]"
$ define/process LIBXML "''srcdir'"
$ write sys$output "Defining LIBXML as ""''srcdir'"""
$ endif
$ endif
$!
$ if f$trnlnm("XML_SRCDIR").eqs.""
$ then
$ globfile = f$search("[--...]globals.c")
$ if globfile.eqs.""
$ then
$ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical"
$ exit
$ else
$ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
$ define/process XML_SRCDIR "''srcdir'"
$ write sys$output "Defining XML_SRCDIR as ""''srcdir'"""
$ endif
$ endif
$!
$!- set up some working logicals -------------------
$!
$ pass_no = 1
$ set_pass_logical:
$!
$ if pass_no.le.num_passes
$ then
$!
$ Libname = libname_'pass_no'
$ progname = progname_'pass_no'
$ if libname.nes.""
$ then
$ logname = "''libname'_SRCDIR"
$ else
$ logname = "''progname'_SRCDIR"
$ endif
$ findfile = f$element(0," ",src_'pass_no')
$!
$!--- set up a source directory logical
$!
$ if f$trnlnm("''logname'").eqs.""
$ then
$ ! look for the target file in a parallel subdirectory
$ globfile = f$search("[-...]''findfile'")
$ if globfile.eqs.""
$ then
$ write sys$output "Can't locate ''findfile'. You need to manually define a ''logname' logical"
$ exit
$ else
$ srcdir = f$element(0,"]",globfile)+ "]"
$ define/process 'logname' "''srcdir'"
$ write sys$output "Defining ''logname' as ""''srcdir'"""
$ endif
$ endif
$!
$!--- if it's a library, set up a logical pointing to the .h files
$!
$ if libname.nes.""
$ then
$ if f$trnlnm("''libname'").eqs.""
$ then
$ ! look for the target .h file in a parallel subdirectory
$ h_file = h_file_'pass_no'
$ globfile = f$search("[-...]''h_file'")
$ if globfile.eqs.""
$ then
$ write sys$output "Can't locate ''h_file'. You need to manually define a ''libname' logical"
$ exit
$ else
$ includedir = f$element(0,"]",globfile)+ "]"
$ define/process 'libname' "''includedir'"
$ write sys$output "Defining ''libname' as ""''includedir'"""
$ endif
$ endif
$ endif
$!
$ pass_no = pass_no +1
$ goto set_pass_logical
$!
$ endif ! for each pass
$!
$!- set up error handling (such as it is) -------------------------------------
$!
$ exit_status = 1
$ saved_default = f$environment("default")
$ on error then goto ERROR_OUT
$ on control_y then goto ERROR_OUT
$!
$ goto start_here
$ start_here: ! move this line to debug/rerun parts of this command file
$!
$!- compile modules into the library ------------------------------------------
$!
$!
$ pass_no = 1 ! make three passes, one for each library, one for XSLTPROC
$ pass_loop:
$!
$ if pass_no.le.num_passes
$ then
$ Libname = libname_'pass_no'
$ progname = progname_'pass_no'
$ if libname.nes.""
$ then
$ logname = "''libname'_SRCDIR"
$ pass_description = "the XML_LIBDIR:''libname'.OLB object library"
$ else
$ logname = "''progname'_SRCDIR"
$ pass_description = "the programs in ''progname'"
$ endif
$ src = src_'pass_no'
$!
$!- create the library if need
$!
$ if libname.nes.""
$ then
$ if f$search("XML_LIBDIR:''libname'.OLB").eqs.""
$ then
$ write sys$output "Creating new object library XML_LIBDIR:''libname'.OLB..."
$ library/create XML_LIBDIR:'libname'.OLB
$ endif
$ endif
$!
$!- move to the source directory
$!
$ set def 'logname'
$!
$!- define the library and link commands (link command not used as is)
$!
$ if libname.nes.""
$ then
$ lib_command = "LIBRARY/REPLACE XML_LIBDIR:''libname'.OLB"
$ link_command = ""
$ else
$ lib_command = ""
$ link_command = "LINK"
$ endif
$!
$ write sys$output ""
$ write sys$output "Building ''pass_description'
$ write sys$output ""
$!
$ s_no = 0
$ src = f$edit(src,"COMPRESS")
$!
$ source_loop:
$!
$ next_source = f$element (S_no," ",src)
$ if next_source.nes."" .and. next_source.nes." "
$ then
$ call build 'next_source'
$ s_no = s_no + 1
$ goto source_loop
$ endif
$!
$ pass_no = pass_no + 1
$ goto pass_loop
$!
$ endif ! for each pass
$!
$!- Th-th-th-th-th-that's all folks! ------------------------------------------
$!
$EXIT_OUT:
$!
$ set def 'saved_default
$ exit 'exit_status
$!
$
$ERROR_OUT:
$ exit_status = $status
$ write sys$output "''f$message(exit_status)'"
$ goto EXIT_OUT
$!
$!- the BUILD subroutine. Compile then insert into library or link as required
$!
$BUILD: subroutine
$ on warning then goto EXIT_BUILD
$ source_file = p1
$ name = f$element(0,".",source_file)
$ object_file = f$fao("XML_LIBDIR:!AS.OBJ",name)
$!
$!- compile
$ write sys$output "Compiling ",p1,p2,"..."
$ cc_command /object='object_file 'source_file' 'p2'
$!
$!- insert into library if command defined
$!
$ if lib_command.nes.""
$ then
$ lib_command 'object_file'
$ delete/nolog 'object_file';*
$ endif
$!
$!- link module if command defined
$!
$ if link_command.nes.""
$ then
$ text = f$element(0,".",p1) ! lose the ".c"
$ write sys$output "Linking ",text,"..."
$ dbgopts = ""
$ if debug then dbgopts = "/DEBUG"
$ link_command'dbgopts' 'object_file',-
XML_LIBDIR:libexslt/lib,-
XML_LIBDIR:libxslt/lib,-
XML_LIBDIR:libxml/library
$ endif
$!
$EXIT_BUILD:
$ exit $status
$!
$endsubroutine

View File

@@ -0,0 +1,10 @@
$! Compiling with VAXC is said to work, but it requires the usual cruft
$! (vaxcrtl and all), and to avoid hair we don't supply said cruft here.
$ CC/DECC/PREFIX=all VMSBACKUP.C/DEFINE=(HAVE_MT_IOCTLS=0,HAVE_UNIXIO_H=1)
$ CC/DECC/PREFIX=all DCLMAIN.C
$! Probably we don't want match as it probably doesn't implement VMS-style
$! matching, but I haven't looking into the issues yet.
$ CC/DECC/PREFIX=all match
$ LINK/exe=VMSBACKUP.EXE -
vmsbackup.obj,dclmain.obj,match.obj,sys$input/opt
identification="VMSBACKUP4.1.1"

View File

@@ -1,4 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* -*- 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
*

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

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

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

View File

@@ -0,0 +1,252 @@
if (Rows (modelMatrixList) == 0)
{
modelMatrixList =
{
{"Equal Input", "EIAA.mdl", "19"}
{"Dayhoff","Dayhoff.mdl","0"}
{"Dayhoff+F","Dayhoff_F.mdl","19"}
{"JTT", "Jones.mdl", "0"}
{"JTT+F", "Jones_F.mdl", "19"}
{"WAG", "WAG.mdl", "0"}
{"WAG+F", "WAG_F.mdl", "19"}
{"rtREV", "rtREV.mdl", "0"}
{"rtREV+F", "rtREV_F.mdl", "19"}
{"mtMAM", "mtMAM.mdl", "0"}
{"mtMAM+F", "mtMAM_F.mdl", "19"}
{"mtREV 24", "mtREV_24.mdl", "0"}
{"mtREV 24+F", "mtREV_24_F.mdl", "19"}
{"HIV within", "HIVwithin.mdl", "0"}
{"HIV within+F", "HIVwithin+F.mdl", "19"}
{"HIV between", "HIVbetween.mdl", "0"}
{"HIV between+F", "HIVbetween+F.mdl", "19"}
{"REV-1 step", "reducedREV.mdl", "19"}
{"REV", "mtREV.mdl", "19"}
};
}
/*___________________________________________________________________________________________________________*/
function runAModel (modelID, fileName, xtraP, midx)
{
ExecuteCommands ("#include \"TemplateModels/"+fileName+"\";");
Tree givenTree = treeString;
LikelihoodFunction lf = (filteredData,givenTree);
GetString (lf_info, lf, -1);
locals = lf_info["Local Independent"];
if (Columns (branchLengthStash))
{
USE_LAST_RESULTS = 1;
for (_iv = 0; _iv < Columns (locals); _iv = _iv+1)
{
ExecuteCommands (locals[_iv] + "=1;\n");
}
currentBL = BranchLength (givenTree,0);
currentBN = BranchName (givenTree,-1);
for (_iv = 0; _iv < Columns (currentBN); _iv = _iv+1)
{
ExecuteCommands ("givenTree."+currentBN[_iv]+".t="+branchLengthStash[_iv]/currentBL+";");
}
}
else
{
for (_iv = 0; _iv < Columns (locals); _iv = _iv+1)
{
ExecuteCommands (locals[_iv] + "=0.1;\n");
}
USE_LAST_RESULTS = 1;
}
Optimize (res,lf);
fprintf (stdout, "| ", modelID);
for (k=0; k<maxModelWidth-Abs(modelID)-1; k=k+1)
{
fprintf (stdout, " ");
}
params = res[1][1]+xtraP;
AIC = 2(-res[1][0]+params);
if (filteredData.sites-params>1)
{
cAIC = 2(-res[1][0]+params*(filteredData.sites/(filteredData.sites-params-1)));
}
else
{
cAIC = 0;
}
branchLengths = BranchLength (givenTree,-1);
TL = 0;
for (k=Rows(branchLengths)*Columns(branchLengths)-1; k>=0; k=k-1)
{
TL = TL + branchLengths[k];
}
fprintf (stdout, "| ", Format (res[1][0],14,3), " | ", Format (params,5,0), " | ",
Format (AIC, 9,3), " | ",);
if (cAIC > 0)
{
fprintf (stdout, Format (cAIC,11,3), " | ");
}
else
{
fprintf (stdout, " N/A | ");
}
fprintf (stdout, Format (TL,11,3), " |\n", sepString);
resultMatrix[midx][0] = res[1][0];
resultMatrix[midx][1] = params;
resultMatrix[midx][2] = AIC;
resultMatrix[midx][3] = cAIC;
resultMatrix[midx][4] = TL;
if (AIC < bestAIC)
{
bestAIC = AIC;
bestAICidx = midx;
branchLengthStash = BranchLength (givenTree,-1);
}
if (cAIC > 0)
{
if (bestCAIC > cAIC)
{
bestCAIC = cAIC;
bestCAICidx = midx;
}
}
return 0;
}
/*___________________________________________________________________________________________________________*/
maxModelWidth = 7;
skipCodeSelectionStep = 0;
ChoiceList (doREV, "Include REV?", 1, SKIP_NONE, "Yes", "Include REV and reduced REV models. CAUTION: these models take a long time to fit.",
"No", "Only use empirical models");
if (doREV < 0)
{
return 0;
}
if (doREV == 0)
{
#include "TemplateModels/chooseGeneticCode.def";
skipCodeSelectionStep = 1;
}
modelCount = Rows (modelMatrixList) - 2*doREV;
for (k=0; k<modelCount; k=k+1)
{
maxModelWidth = Max(maxModelWidth,Abs (modelMatrixList[k][0])+2);
}
sepString = "";
capString = "";
sepString * 256;
sepString * "+";
capString * 256;
capString * "| Model";
for (k=0; k<maxModelWidth; k=k+1)
{
sepString * "-";
}
for (k=0; k<maxModelWidth-6; k=k+1)
{
capString * " ";
}
capString * "| Log Likelihood | #prms | AIC Score | c-AIC Score | Tree Length |\n";
sepString * "+----------------+-------+-----------+-------------+-------------+\n";
sepString * 0;
capString * 0;
branchLengthStash = 0;
SKIP_MODEL_PARAMETER_LIST = 0;
#include "TemplateModels/modelParameters2.mdl";
if (modelType == 1)
{
#include "TemplateModels/defineGamma.mdl";
}
if (modelType == 2)
{
#include "TemplateModels/defineHM.mdl";
}
SKIP_MODEL_PARAMETER_LIST = 1;
SetDialogPrompt ("Please load an amino-acid data file:");
DataSet ds = ReadDataFile (PROMPT_FOR_FILE);
DataSetFilter filteredData = CreateFilter (ds,1);
fprintf (stdout,"\nRunning aminoacid model comparisons on ", LAST_FILE_PATH, "\n\nThe alignment has ",ds.species, " sequences and ", ds.sites, " sites\n");
_DO_TREE_REBALANCE_ = 1;
#include "queryTree.bf";
resultMatrix = {modelCount, 5};
fprintf (stdout, "\n",sepString,capString,sepString);
bestAIC = 1e100;
bestCAIC = 1e100;
bestAICidx = 0;
bestCAICidx = -1;
for (mid=0; mid<modelCount; mid=mid+1)
{
runAModel (modelMatrixList[mid][0], modelMatrixList[mid][1], 0+modelMatrixList[mid][2], mid);
}
fprintf (stdout, "\n\nBest AIC model:\n\t", modelMatrixList[bestAICidx][0], " with the score of ", bestAIC);
if (bestCAICidx>=0)
{
fprintf (stdout, "\n\nBest c-AIC model:\n\t", modelMatrixList[bestCAICidx][0], " with the score of ", bestCAIC);
}
labelMatrix = {{"Log-likelihood","Parameters","AIC","c-AIC","Total tree length",""}};
aaString = "Model";
for (fC = 0; fC < modelCount; fC = fC+1)
{
aaString = aaString + ";" + modelMatrixList[fC][0];
}
USE_LAST_RESULTS = 0;
labelMatrix[5] = aaString;
skipCodeSelectionStep = 0;
OpenWindow (CHARTWINDOW,{{"Model Fits"}
{"labelMatrix"},
{"resultMatrix"},
{"Bar Chart"},
{"Index"},
{"c-AIC"},
{"Model Index"},
{""},
{"AIC"}
},
"SCREEN_WIDTH-60;SCREEN_HEIGHT-60;30;30");

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
fprintf (stdout, "\n1). Spawning a zero-populated 5x6 matrix and setting it's values to random numbers in [0,1].\n");

View File

@@ -0,0 +1,147 @@
#include "molclockBootstrap.bf";
RESTORE_GLOBALS = 1;
_DO_TREE_REBALANCE_ = 0;
VERBOSITY_LEVEL = -1;
function RestoreGlobalValues (lfIndex)
{
if (lfIndex==0)
{
for (i=0;i<SAVE_GLOBALS;i=i+1)
{
SetParameter (lf,i,globalSpoolMatrix[i]);
}
}
if (lfIndex==1)
{
for (i=0;i<SAVE_GLOBALS2;i=i+1)
{
SetParameter (lfConstrained,i,globalSpoolMatrix2[i]);
}
}
return 0;
}
fprintf(stdout,"\n ---- RUNNING MOLECULAR CLOCK ANALYSIS ---- \n");
ChoiceList (dataType,"Data type",1,SKIP_NONE,"Nucleotide/Protein","Nucleotide or amino-acid (protein).",
"Codon","Codon (several available genetic codes).");
if (dataType<0)
{
return;
}
if (dataType)
{
NICETY_LEVEL = 3;
#include "TemplateModels/chooseGeneticCode.def";
}
SetDialogPrompt ("Choose the data file:");
DataSet ds = ReadDataFile (PROMPT_FOR_FILE);
fprintf (stdout,"The following data was read:\n",ds,"\n");
if (dataType)
{
DataSetFilter filteredData = CreateFilter (ds,3,"","",GeneticCodeExclusions);
}
else
{
DataSetFilter filteredData = CreateFilter (ds,1);
}
SelectTemplateModel(filteredData);
#include "queryTree.bf";
global RelRatio;
RelRatio = 1.0;
relationString = ":=RelRatio*";
parameter2Constrain = 0;
if (Rows("LAST_MODEL_PARAMETER_LIST")>1)
{
ChoiceList (parameter2Constrain, "Parameter(s) to constrain:",1,SKIP_NONE,LAST_MODEL_PARAMETER_LIST);
if (parameter2Constrain<0)
{
return;
}
if (parameter2Constrain==0)
{
parameter2ConstrainString = "";
for (parameter2Constrain=Rows("LAST_MODEL_PARAMETER_LIST")-1; parameter2Constrain; parameter2Constrain = parameter2Constrain-1)
{
GetString (funnyString,LAST_MODEL_PARAMETER_LIST,parameter2Constrain);
parameter2ConstrainString = parameter2ConstrainString + funnyString + ",";
}
GetString (funnyString,LAST_MODEL_PARAMETER_LIST,0);
parameter2ConstrainString = parameter2ConstrainString + funnyString;
}
else
{
GetString (parameter2ConstrainString,LAST_MODEL_PARAMETER_LIST,parameter2Constrain-1);
}
}
else
{
GetString (parameter2ConstrainString,LAST_MODEL_PARAMETER_LIST,0);
}
timer = Time(0);
LikelihoodFunction lf = (filteredData,givenTree);
Optimize (res,lf);
separator = "*-----------------------------------------------------------*";
fprintf (stdout, "\n", separator, "\nRESULTS WITHOUT THE CLOCK:\n",lf);
fullModelLik = res[1][0];
fullVars = res[1][1];
/* now specify the constraint */
Tree clockTree = treeString;
ExecuteCommands ("MolecularClock (clockTree,"+parameter2ConstrainString+");");
LikelihoodFunction lfConstrained = (filteredData, clockTree);
USE_LAST_RESULTS = 1;
Optimize (res1,lfConstrained);
USE_LAST_RESULTS = 0;
SAVE_GLOBALS = res1[1][2];
if (SAVE_GLOBALS)
{
globalSpoolMatrix = {1,SAVE_GLOBALS};
for (i=0;i<SAVE_GLOBALS;i=i+1)
{
globalSpoolMatrix[i]=res1[0][i];
}
}
fprintf (stdout, "\n", separator,"\n\nRESULTS WITH THE CLOCK:\n",lfConstrained);
lnLikDiff = 2(fullModelLik-res1[1][0]);
degFDiff = fullVars - res1[1][1];
fprintf (stdout, "\n", separator,"\n\n-2(Ln Likelihood Ratio)=",lnLikDiff,"\n","Constrained parameters:",Format(degFDiff,0,0));
fprintf (stdout, "\nP-Value:",1-CChi2(lnLikDiff,degFDiff));
fprintf (stdout, "\nCPU time taken: ", Time(0)-timer, " seconds.\n");

File diff suppressed because it is too large Load Diff

11003
samples/HyPhy/hyphy_cmds.bf Normal file

File diff suppressed because one or more lines are too long

1
samples/HyPhy/profile_test.bf Executable file
View File

@@ -0,0 +1 @@
#profile START;

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

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

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

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

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

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

View File

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

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

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

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

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

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

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

View File

@@ -0,0 +1,50 @@
/*
* ld.script for compressed kernel support of MIPS
*
* Copyright (C) 2009 Lemote Inc.
* Author: Wu Zhangjin <wuzhanjing@gmail.com>
* Copyright (C) 2010 "Wu Zhangjin" <wuzhanjing@gmail.com>
*/
OUTPUT_ARCH(mips)
ENTRY(start)
SECTIONS
{
/* Text and read-only data */
/* . = VMLINUZ_LOAD_ADDRESS; */
.text : {
*(.text)
*(.rodata)
}
/* End of text section */
/* Writable data */
.data : {
*(.data)
/* Put the compressed image here */
__image_begin = .;
*(.image)
__image_end = .;
CONSTRUCTORS
}
. = ALIGN(16);
_edata = .;
/* End of data section */
/* BSS */
.bss : {
*(.bss)
}
. = ALIGN(16);
_end = .;
/* Sections to be discarded */
/DISCARD/ : {
*(.MIPS.options)
*(.options)
*(.pdr)
*(.reginfo)
*(.comment)
*(.note)
}
}

View File

@@ -0,0 +1,12 @@
/*
* link.ld
*/
OUTPUT_FORMAT(elf32-i386)
ENTRY(start)
SECTIONS
{
. = 0x100000;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
}

View File

@@ -0,0 +1,373 @@
/*
* ld script for the x86 kernel
*
* Historic 32-bit version written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
*
* Modernisation, unification and other changes and fixes:
* Copyright (C) 2007-2009 Sam Ravnborg <sam@ravnborg.org>
*
*
* Don't define absolute symbols until and unless you know that symbol
* value is should remain constant even if kernel image is relocated
* at run time. Absolute symbols are not relocated. If symbol value should
* change if kernel is relocated, make the symbol section relative and
* put it inside the section definition.
*/
#ifdef CONFIG_X86_32
#define LOAD_OFFSET __PAGE_OFFSET
#else
#define LOAD_OFFSET __START_KERNEL_map
#endif
#include <asm-generic/vmlinux.lds.h>
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
#include <asm/page_types.h>
#include <asm/cache.h>
#include <asm/boot.h>
#undef i386 /* in case the preprocessor is a 32bit one */
OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
#ifdef CONFIG_X86_32
OUTPUT_ARCH(i386)
ENTRY(phys_startup_32)
jiffies = jiffies_64;
#else
OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64)
jiffies_64 = jiffies;
#endif
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
/*
* On 64-bit, align RODATA to 2MB so that even with CONFIG_DEBUG_RODATA
* we retain large page mappings for boundaries spanning kernel text, rodata
* and data sections.
*
* However, kernel identity mappings will have different RWX permissions
* to the pages mapping to text and to the pages padding (which are freed) the
* text section. Hence kernel identity mappings will be broken to smaller
* pages. For 64-bit, kernel text and kernel identity mappings are different,
* so we can enable protection checks that come with CONFIG_DEBUG_RODATA,
* as well as retain 2MB large page mappings for kernel text.
*/
#define X64_ALIGN_DEBUG_RODATA_BEGIN . = ALIGN(HPAGE_SIZE);
#define X64_ALIGN_DEBUG_RODATA_END \
. = ALIGN(HPAGE_SIZE); \
__end_rodata_hpage_align = .;
#else
#define X64_ALIGN_DEBUG_RODATA_BEGIN
#define X64_ALIGN_DEBUG_RODATA_END
#endif
PHDRS {
text PT_LOAD FLAGS(5); /* R_E */
data PT_LOAD FLAGS(6); /* RW_ */
#ifdef CONFIG_X86_64
#ifdef CONFIG_SMP
percpu PT_LOAD FLAGS(6); /* RW_ */
#endif
init PT_LOAD FLAGS(7); /* RWE */
#endif
note PT_NOTE FLAGS(0); /* ___ */
}
SECTIONS
{
#ifdef CONFIG_X86_32
. = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
phys_startup_32 = startup_32 - LOAD_OFFSET;
#else
. = __START_KERNEL;
phys_startup_64 = startup_64 - LOAD_OFFSET;
#endif
/* Text and read-only data */
.text : AT(ADDR(.text) - LOAD_OFFSET) {
_text = .;
/* bootstrapping code */
HEAD_TEXT
. = ALIGN(8);
_stext = .;
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
KPROBES_TEXT
ENTRY_TEXT
IRQENTRY_TEXT
*(.fixup)
*(.gnu.warning)
/* End of text section */
_etext = .;
} :text = 0x9090
NOTES :text :note
EXCEPTION_TABLE(16) :text = 0x9090
#if defined(CONFIG_DEBUG_RODATA)
/* .text should occupy whole number of pages */
. = ALIGN(PAGE_SIZE);
#endif
X64_ALIGN_DEBUG_RODATA_BEGIN
RO_DATA(PAGE_SIZE)
X64_ALIGN_DEBUG_RODATA_END
/* Data */
.data : AT(ADDR(.data) - LOAD_OFFSET) {
/* Start of data section */
_sdata = .;
/* init_task */
INIT_TASK_DATA(THREAD_SIZE)
#ifdef CONFIG_X86_32
/* 32 bit has nosave before _edata */
NOSAVE_DATA
#endif
PAGE_ALIGNED_DATA(PAGE_SIZE)
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
DATA_DATA
CONSTRUCTORS
/* rarely changed data like cpu maps */
READ_MOSTLY_DATA(INTERNODE_CACHE_BYTES)
/* End of data section */
_edata = .;
} :data
. = ALIGN(PAGE_SIZE);
__vvar_page = .;
.vvar : AT(ADDR(.vvar) - LOAD_OFFSET) {
/* work around gold bug 13023 */
__vvar_beginning_hack = .;
/* Place all vvars at the offsets in asm/vvar.h. */
#define EMIT_VVAR(name, offset) \
. = __vvar_beginning_hack + offset; \
*(.vvar_ ## name)
#define __VVAR_KERNEL_LDS
#include <asm/vvar.h>
#undef __VVAR_KERNEL_LDS
#undef EMIT_VVAR
/*
* Pad the rest of the page with zeros. Otherwise the loader
* can leave garbage here.
*/
. = __vvar_beginning_hack + PAGE_SIZE;
} :data
. = ALIGN(__vvar_page + PAGE_SIZE, PAGE_SIZE);
/* Init code and data - will be freed after init */
. = ALIGN(PAGE_SIZE);
.init.begin : AT(ADDR(.init.begin) - LOAD_OFFSET) {
__init_begin = .; /* paired with __init_end */
}
#if defined(CONFIG_X86_64) && defined(CONFIG_SMP)
/*
* percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the
* output PHDR, so the next output section - .init.text - should
* start another segment - init.
*/
PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu)
ASSERT(SIZEOF(.data..percpu) < CONFIG_PHYSICAL_START,
"per-CPU data too large - increase CONFIG_PHYSICAL_START")
#endif
INIT_TEXT_SECTION(PAGE_SIZE)
#ifdef CONFIG_X86_64
:init
#endif
INIT_DATA_SECTION(16)
.x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
__x86_cpu_dev_start = .;
*(.x86_cpu_dev.init)
__x86_cpu_dev_end = .;
}
#ifdef CONFIG_X86_INTEL_MID
.x86_intel_mid_dev.init : AT(ADDR(.x86_intel_mid_dev.init) - \
LOAD_OFFSET) {
__x86_intel_mid_dev_start = .;
*(.x86_intel_mid_dev.init)
__x86_intel_mid_dev_end = .;
}
#endif
/*
* start address and size of operations which during runtime
* can be patched with virtualization friendly instructions or
* baremetal native ones. Think page table operations.
* Details in paravirt_types.h
*/
. = ALIGN(8);
.parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) {
__parainstructions = .;
*(.parainstructions)
__parainstructions_end = .;
}
/*
* struct alt_inst entries. From the header (alternative.h):
* "Alternative instructions for different CPU types or capabilities"
* Think locking instructions on spinlocks.
*/
. = ALIGN(8);
.altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
__alt_instructions = .;
*(.altinstructions)
__alt_instructions_end = .;
}
/*
* And here are the replacement instructions. The linker sticks
* them as binary blobs. The .altinstructions has enough data to
* get the address and the length of them to patch the kernel safely.
*/
.altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) {
*(.altinstr_replacement)
}
/*
* struct iommu_table_entry entries are injected in this section.
* It is an array of IOMMUs which during run time gets sorted depending
* on its dependency order. After rootfs_initcall is complete
* this section can be safely removed.
*/
.iommu_table : AT(ADDR(.iommu_table) - LOAD_OFFSET) {
__iommu_table = .;
*(.iommu_table)
__iommu_table_end = .;
}
. = ALIGN(8);
.apicdrivers : AT(ADDR(.apicdrivers) - LOAD_OFFSET) {
__apicdrivers = .;
*(.apicdrivers);
__apicdrivers_end = .;
}
. = ALIGN(8);
/*
* .exit.text is discard at runtime, not link time, to deal with
* references from .altinstructions and .eh_frame
*/
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
EXIT_TEXT
}
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
EXIT_DATA
}
#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
PERCPU_SECTION(INTERNODE_CACHE_BYTES)
#endif
. = ALIGN(PAGE_SIZE);
/* freed after init ends here */
.init.end : AT(ADDR(.init.end) - LOAD_OFFSET) {
__init_end = .;
}
/*
* smp_locks might be freed after init
* start/end must be page aligned
*/
. = ALIGN(PAGE_SIZE);
.smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
__smp_locks = .;
*(.smp_locks)
. = ALIGN(PAGE_SIZE);
__smp_locks_end = .;
}
#ifdef CONFIG_X86_64
.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
NOSAVE_DATA
}
#endif
/* BSS */
. = ALIGN(PAGE_SIZE);
.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
__bss_start = .;
*(.bss..page_aligned)
*(.bss)
. = ALIGN(PAGE_SIZE);
__bss_stop = .;
}
. = ALIGN(PAGE_SIZE);
.brk : AT(ADDR(.brk) - LOAD_OFFSET) {
__brk_base = .;
. += 64 * 1024; /* 64k alignment slop space */
*(.brk_reservation) /* areas brk users have reserved */
__brk_limit = .;
}
_end = .;
STABS_DEBUG
DWARF_DEBUG
/* Sections to be discarded */
DISCARDS
/DISCARD/ : { *(.eh_frame) }
}
#ifdef CONFIG_X86_32
/*
* The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
*/
. = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
"kernel image bigger than KERNEL_IMAGE_SIZE");
#else
/*
* Per-cpu symbols which need to be offset from __per_cpu_load
* for the boot processor.
*/
#define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load
INIT_PER_CPU(gdt_page);
INIT_PER_CPU(irq_stack_union);
/*
* Build-time check on the image size:
*/
. = ASSERT((_end - _text <= KERNEL_IMAGE_SIZE),
"kernel image bigger than KERNEL_IMAGE_SIZE");
#ifdef CONFIG_SMP
. = ASSERT((irq_stack_union == 0),
"irq_stack_union is not at start of per-cpu area");
#endif
#endif /* CONFIG_X86_32 */
#ifdef CONFIG_KEXEC
#include <asm/kexec.h>
. = ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE,
"kexec control code size is too big");
#endif

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,563 @@
# Copyright (C) 1997, 2000 Aladdin Enterprises. All rights reserved.
#
# This software is provided AS-IS with no warranty, either express or
# implied.
#
# This software is distributed under license and may not be copied,
# modified or distributed except as expressly authorized under the terms
# of the license contained in the file LICENSE in this distribution.
#
# For more information about licensing, please refer to
# http://www.ghostscript.com/licensing/. For information on
# commercial licensing, go to http://www.artifex.com/licensing/ or
# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
# San Rafael, CA 94903, U.S.A., +1(415)492-9861.
# $Id: openvms.mmk,v 1.31 2004/12/10 23:48:48 giles Exp $
# makefile for OpenVMS VAX and Alpha using MMK
#
# Please contact Jim Dunham (dunham@omtool.com) if you have questions.
# Addapted for MMK by Jouk Jansen (joukj@hrem.stm.tudelft.nl)
# Support for VAX C on OpenVMS was removed in release 6.01 by Aladdin:
# DEC C is now used on both VAX and Alpha platforms.
#
# ------------------------------- Options ------------------------------- #
###### This section is the only part of the file you should need to edit.
# on the make command line specify:
# mmk/descrip=[.src]openvms.mmk/macro=("DECWINDOWS1_2={0,1}")
# Define the directory for the final executable, and the
# source, generated intermediate file, and object directories
# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
BINDIR=[.bin]
GLSRCDIR=[.src]
GLGENDIR=[.obj]
GLOBJDIR=[.obj]
PSSRCDIR=[.src]
PSGENDIR=[.obj]
PSOBJDIR=[.obj]
PSLIBDIR=[.lib]
# Because of OpenVMS syntactic problems, the following redundant definitions
# are necessary. If you are using more than one GENDIR and/or OBJDIR,
# you will have to edit the code below that creates these directories.
BIN_DIR=BIN.DIR
OBJ_DIR=OBJ.DIR
# create directories
.first
if f$search("$(BIN_DIR)") .eqs. "" then create/directory/log $(BINDIR)
if f$search("$(OBJ_DIR)") .eqs. "" then create/directory/log $(GLOBJDIR)
# Do not edit the next group of lines.
#.include $(COMMONDIR)vmscdefs.mak
#.include $(COMMONDIR)vmsdefs.mak
#.include $(COMMONDIR)generic.mak
.include $(GLSRCDIR)version.mak
DD=$(GLGENDIR)
GLD=$(GLGENDIR)
PSD=$(PSGENDIR)
# ------ Generic options ------ #
# Define the directory that will hold documentation at runtime.
GS_DOCDIR=GS_DOC
#GS_DOCDIR=SYS$COMMON:[GS]
# Define the default directory/ies for the runtime
# initialization and font files. Separate multiple directories with ,.
GS_LIB_DEFAULT=GS_LIB
#GS_LIB_DEFAULT=SYS$COMMON:[GS],SYS$COMMON:[GS.FONT]
# Define whether or not searching for initialization files should always
# look in the current directory first. This leads to well-known security
# and confusion problems, but users insist on it.
# NOTE: this also affects searching for files named on the command line:
# see the "File searching" section of Use.htm for full details.
# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
SEARCH_HERE_FIRST=1
# Define the name of the interpreter initialization file.
# (There is no reason to change this.)
GS_INIT=GS_INIT.PS
# Choose generic configuration options.
# Setting DEBUG=1 includes debugging features in the code
DEBUG=0
# Setting TDEBUG=1 includes symbol table information for the debugger,
# and also enables stack tracing on failure.
TDEBUG=
# Setting CDEBUG=1 enables 'C' compiler debugging and turns off optimization
# Code is substantially slower and larger.
CDEBUG=
# Define the name of the executable file.
GS=GS
# Define the name of a pre-built executable that can be invoked at build
# time. Currently, this is only needed for compiled fonts. The usual
# alternatives are:
# - the standard name of Ghostscript on your system (typically `gs'):
BUILD_TIME_GS=GS
# - the name of the executable you are building now. If you choose this
# option, then you must build the executable first without compiled fonts,
# and then again with compiled fonts.
#BUILD_TIME_GS=$(BINDIR)$(GS) -I$(PSLIBDIR)
# Define the directory where the IJG JPEG library sources are stored,
# and the major version of the library that is stored there.
# You may need to change this if the IJG library version changes.
# See jpeg.mak for more information.
.ifdef SYSLIB
JSRCDIR=sys$library:
.else
JSRCDIR=[--.jpeg-6b]
.endif
JVERSION=6
# Define the directory where the PNG library sources are stored,
# and the version of the library that is stored there.
# You may need to change this if the libpng version changes.
# See libpng.mak for more information.
.ifdef SYSLIB
PSRCDIR=sys$library:
.else
PSRCDIR=[--.libpng-1_2_8]
.endif
PVERSION=10208
# Define the directory where the zlib sources are stored.
# See zlib.mak for more information.
.ifdef SYSLIB
ZSRCDIR=sys$library:
.else
ZSRCDIR=[--.zlib-1_2_1]
.endif
# Define the directory where the jbig2dec library sources are stored.
# See jbig2.mak for more information
.ifdef SYSLIB
JBIG2SRCDIR=sys$library:
.else
JBIG2SRCDIR=[--.jbig2dec-0_7]
.endif
# Define the directory where the icclib source are stored.
# See icclib.mak for more information
ICCSRCDIR=[.icclib]
# IJS has not been ported to OpenVMS. If you do the port,
# you'll need to set these values. You'll also need to
# include the ijs.mak makefile (right after icclib.mak).
#
# Define the directory where the ijs source is stored,
# and the process forking method to use for the server.
# See ijs.mak for more information.
#IJSSRCDIR=[.ijs]
#IJSEXECTYPE=unix
# Note that built-in third-party libraries aren't available.
SHARE_JPEG=0
SHARE_LIBPNG=0
SHARE_ZLIB=0
SHARE_JBIG2=0
# Define the path to X11 include files
X_INCLUDE=DECW$INCLUDE
# ------ Platform-specific options ------ #
# Define the drive, directory, and compiler name for the 'C' compiler.
# COMP is the full compiler path name.
.ifdef DEBUG
SW_DEBUG=/DEBUG/NOOPTIMIZE
.else
# This should include /OPTIMIZE, but some OpenVMS compilers have an
# optimizer bug that causes them to generate incorrect code for gdevpsfx.c,
# so we must disable optimization. (Eventually we will check for the bug
# in genarch and enable optimization if it is safe.)
#SW_DEBUG=/NODEBUG/OPTIMIZE
SW_DEBUG=/NODEBUG/NOOPTIMIZE
.endif
SW_PLATFORM=/DECC/PREFIX=ALL/NESTED_INCLUDE=PRIMARY/name=(as_is,short)/nowarn
# Define any other compilation flags.
# Including defines for A4 paper size
.ifdef A4_PAPER
SW_PAPER=/DEFINE=("A4","HAVE_MKSTEMP")
.else
SW_PAPER=/DEFINE=("HAVE_MKSTEMP")
.endif
.ifdef IEEE
SW_IEEE=/float=ieee
.else
SW_IEEE=
.endif
COMP=CC$(SW_DEBUG)$(SW_PLATFORM)$(SW_PAPER)$(SW_IEEE)
# LINK is the full linker path name
.ifdef TDEBUG
LINKER=LINK/DEBUG/TRACEBACK
.else
LINKER=LINK/NODEBUG/NOTRACEBACK
.endif
# INCDIR contains the include files
INCDIR=
# LIBDIR contains the library files
LIBDIR=
# Define the .dev module that implements thread and synchronization
# primitives for this platform. Don't change this unless you really know
# what you're doing.
SYNC=posync
# ------ Devices and features ------ #
# Choose the device(s) to include. See devs.mak for details,
# devs.mak and contrib.mak for the list of available devices.
DEVICE_DEVS=$(DD)x11.dev $(DD)x11alpha.dev $(DD)x11cmyk.dev $(DD)x11gray2.dev $(DD)x11gray4.dev $(DD)x11mono.dev
DEVICE_DEVS1=
DEVICE_DEVS2=
DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev $(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev
DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev $(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev
DEVICE_DEVS5=$(DD)uniprint.dev
DEVICE_DEVS6=$(DD)bj10e.dev $(DD)bj200.dev $(DD)bjc600.dev $(DD)bjc800.dev
DEVICE_DEVS7=$(DD)faxg3.dev $(DD)faxg32d.dev $(DD)faxg4.dev
DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev
DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev
DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev
DEVICE_DEVS11=$(DD)tiff12nc.dev $(DD)tiff24nc.dev
DEVICE_DEVS12=$(DD)psmono.dev $(DD)psgray.dev $(DD)psrgb.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev
DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev $(DD)pngalpha.dev
DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev
DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)pswrite.dev $(DD)epswrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev
DEVICE_DEVS16=$(DD)bbox.dev
# Overflow from DEVS9
DEVICE_DEVS17=$(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev $(DD)pkm.dev $(DD)pkmraw.dev $(DD)pksm.dev $(DD)pksmraw.dev
DEVICE_DEVS18=
DEVICE_DEVS19=
DEVICE_DEVS20=
DEVICE_DEVS21=
DEVICE_DEVS21=
# Choose the language feature(s) to include. See gs.mak for details.
FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev $(PSD)fapi.dev $(PSD)jbig2.dev
# Choose whether to compile the .ps initialization files into the executable.
# See gs.mak for details.
COMPILE_INITS=0
# Choose whether to store band lists on files or in memory.
# The choices are 'file' or 'memory'.
BAND_LIST_STORAGE=file
# Choose which compression method to use when storing band lists in memory.
# The choices are 'lzw' or 'zlib'.
BAND_LIST_COMPRESSOR=zlib
# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
# See gs.mak and sfxfd.c for more details.
FILE_IMPLEMENTATION=stdio
# Choose the implementation of stdio: '' for file I/O and 'c' for callouts
# See gs.mak and ziodevs.c/ziodevsc.c for more details.
STDIO_IMPLEMENTATION=c
# Define the name table capacity size of 2^(16+n).
EXTEND_NAMES=0
# Define whether the system constants are writable.
SYSTEM_CONSTANTS_ARE_WRITABLE=0
# Define the platform name.
PLATFORM=openvms_
# Define the name of the makefile -- used in dependencies.
MAKEFILE=$(GLSRCDIR)openvms.mmk
TOP_MAKEFILES=$(MAKEFILE)
# Define the platform options
PLATOPT=
# Patch a couple of PC-specific things that aren't relevant to OpenVMS builds,
# but that cause `make' to produce warnings.
PCFBASM=
# It is very unlikely that anyone would want to edit the remaining
# symbols, but we describe them here for completeness:
# Define the suffix for command files (e.g., null or .bat).
CMD=
# Define the directory separator character (\ for MS-DOS, / for Unix,
# nothing for OpenVMS).
D=
# Define the brackets for passing preprocessor definitions to the C compiler.
NULL=
D_=/DEFINE="
_D_=$(NULL)=
_D="
# Define the syntax of search paths for the C compiler.
# The OpenVMS compilers uses /INCLUDE=(dir1, dir2, ...dirn),
# and only a single /INCLUDE switch is allowed in the command line.
I_=/INCLUDE=(
II=,
_I=)
# Define the string for specifying the output file from the C compiler.
O_=/OBJECT=
# Define the quoting string for mixed-case arguments.
# (OpenVMS is the only platform where this isn't an empty string.)
Q="
# Define the extension for executable files (e.g., null or .exe).
XE=.exe
# Define the extension for executable files for the auxiliary programs
# (e.g., null or .exe).
XEAUX=.exe
# Define the list of files that `make clean' removes.
BEGINFILES=$(GLSRCDIR)OPENVMS.OPT $(GLSRCDIR)OPENVMS.COM
# Define the C invocation for auxiliary programs (echogs, genarch).
# We don't need to define this separately.
CCAUX=
# Define the C invocation for normal compilation.
CC=$(COMP)
# Define the Link invocation.
LINK=$(LINKER)/EXE=$@ $+,$(GLSRCDIR)OPENVMS.OPT/OPTION
# Define the auxiliary program dependency. We don't need this.
AK=
# Define the syntax for command, object, and executable files.
OBJ=obj
# Define the prefix for image invocations.
EXP=MCR $(NULL)
# Define the prefix for shell invocations.
SH=
# Define generic commands.
CP_=@$(GLSRCDIR)COPY_ONE
# Define the command for deleting (a) file(s) (including wild cards)
RM_=@$(GLSRCDIR)RM_ONE
# Define the command for deleting multiple files / patterns.
RMN_=@$(GLSRCDIR)RM_ALL
# Define the arguments for genconf.
CONFILES=-p %s
CONFLDTR=-o
# Define the generic compilation rules.
.suffixes : .c .obj .exe
.obj.exe :
$(LINK)
# ---------------------------- End of options ---------------------------- #
# Define various incantations of the 'c' compiler.
CC_=$(COMP)
CC_INT=$(CC_)
CC_NO_WARN=$(CC_)
# ------------------- Include the generic makefiles ---------------------- #
all : macro [.lib]Fontmap. $(GS_XE)
#.include $(COMMONDIR)/ansidefs.mak
#.include $(COMMONDIR)/vmsdefs.mak
#.include $(COMMONDIR)/generic.mak
.include $(GLSRCDIR)gs.mak
.include $(GLSRCDIR)lib.mak
.include $(PSSRCDIR)int.mak
.include $(PSSRCDIR)cfonts.mak
.include $(GLSRCDIR)jpeg.mak
# zlib.mak must precede libpng.mak
.include $(GLSRCDIR)zlib.mak
.include $(GLSRCDIR)libpng.mak
JBIG2_EXTRA_OBJS=$(JBIG2OBJDIR)$(D)snprintf.$(OBJ)
.include $(GLSRCDIR)jbig2.mak
.include $(GLSRCDIR)icclib.mak
.include $(GLSRCDIR)devs.mak
.include $(GLSRCDIR)contrib.mak
# ----------------------------- Main program ------------------------------
macro :
.ifdef A4_PAPER
@ a4p = 1
.else
@ a4p = 0
.endif
.ifdef IEEE
@ i3e = 1
.else
@ i3e = 0
.endif
.ifdef SYSLIB
@ dsl = 1
.else
@ dsl = 0
.endif
@ decc = f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
@ decw12 = f$search("SYS$SHARE:DECW$XTLIBSHRR5.EXE").nes.""
@ macro = ""
@ if dsl.or.a4p.or.decc.or.decw12 then macro = "/MACRO=("
@ if decw12 then macro = macro + "DECWINDOWS1_2=1,"
@ if a4p then macro = macro + "A4_PAPER=1,"
@ if dsl then macro = macro + "SYSLIB=1,"
@ if i3e then macro = macro + "IEEE=1,"
@ if macro.nes."" then macro = f$extract(0,f$length(macro)-1,macro)+ ")"
$(MMS)$(MMSQUALIFIERS)'macro' $(GS_XE)
$(GS_XE) : openvms $(GLGEN)arch.h $(GLOBJDIR)gs.$(OBJ) $(INT_ALL) $(LIB_ALL)
$(LINKER)/EXE=$@ $(GLOBJDIR)gs.$(OBJ),$(ld_tr)/OPTIONS,$(GLSRCDIR)OPENVMS.OPT/OPTION
@ Write Sys$Output "Build of GhostScript is complete!"
# OpenVMS.dev
openvms__=$(GLOBJ)gp_getnv.$(OBJ) $(GLOBJ)gp_vms.$(OBJ) $(GLOBJ)gp_stdia.$(OBJ)
$(GLGEN)openvms_.dev : $(openvms__) $(GLGEN)nosync.dev
$(SETMOD) $(GLGEN)openvms_ $(openvms__) -include $(GLGEN)nosync
$(ECHOGS_XE) : $(GLOBJDIR)echogs.$(OBJ)
$(GENARCH_XE) : $(GLOBJDIR)genarch.$(OBJ)
$(GENCONF_XE) : $(GLOBJDIR)genconf.$(OBJ)
$(GENDEV_XE) : $(GLOBJDIR)gendev.$(OBJ)
$(GENHT_XE) : $(GLOBJDIR)genht.$(OBJ)
$(GENINIT_XE) : $(GLOBJDIR)geninit.$(OBJ)
$(GLOBJDIR)echogs.$(OBJ) : $(GLSRCDIR)echogs.c
$(GLOBJDIR)genarch.$(OBJ) : $(GLSRCDIR)genarch.c $(GENARCH_DEPS)
$(GLOBJDIR)genconf.$(OBJ) : $(GLSRCDIR)genconf.c $(GENCONF_DEPS)
$(GLOBJDIR)gendev.$(OBJ) : $(GLSRCDIR)gendev.c $(GENDEV_DEPS)
# ****** NEED TO ADD $(GENHT_CFLAGS) HERE ******
$(GLOBJDIR)genht.$(OBJ) : $(GLSRCDIR)genht.c $(GENHT_DEPS)
$(GLOBJDIR)geninit.$(OBJ) : $(GLSRCDIR)geninit.c $(GENINIT_DEPS)
$(GLOBJ)gp_vms.$(OBJ) : $(GLSRC)gp_vms.c $(string__h) $(memory__h) $(gx_h) $(gp_h) $(gpmisc_h) $(gsstruct_h)
$(CC_)/include=($(GLGENDIR),$(GLSRCDIR))/obj=$(GLOBJ)gp_vms.$(OBJ) $(GLSRC)gp_vms.c
$(GLOBJ)gp_stdia.$(OBJ) : $(GLSRC)gp_stdia.c $(AK) $(stdio__h) $(time__h) $(unistd__h) $(gx_h) $(gp_h)
$(CC_)/incl=$(GLOBJ)/obj=$(GLOBJ)gp_stdia.$(OBJ) $(GLSRC)gp_stdia.c
# Preliminary definitions
openvms : $(GLSRCDIR)openvms.com $(GLSRCDIR)openvms.opt
@$(GLSRCDIR)OPENVMS
$(GLSRCDIR)openvms.com : $(GLSRCDIR)append_l.com
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB X11 $(X_INCLUDE)"
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB GS_LIB ''F$ENVIRONMENT(""DEFAULT"")'"
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB GS_DOC ''F$ENVIRONMENT(""DEFAULT"")'"
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB DECC$USER_INCLUDE ''F$ENVIRONMENT(""DEFAULT"")', DECW$INCLUDE, DECC$LIBRARY_INCLUDE, SYS$LIBRARY"
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB DECC$SYSTEM_INCLUDE ''F$ENVIRONMENT(""DEFAULT"")', DECW$INCLUDE, DECC$LIBRARY_INCLUDE, SYS$LIBRARY"
@$(GLSRCDIR)APPEND_L $@ "$ DEFINE/JOB SYS "DECC$LIBRARY_INCLUDE,SYS$LIBRARY"
$(GLSRCDIR)openvms.opt :
.ifdef DECWINDOWS1_2
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XMLIBSHR12.EXE/SHARE"
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE"
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XLIBSHR.EXE/SHARE"
.else
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XMLIBSHR.EXE/SHARE"
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XTSHR.EXE/SHARE"
@$(GLSRCDIR)APPEND_L $@ "SYS$SHARE:DECW$XLIBSHR.EXE/SHARE"
.endif
@$(GLSRCDIR)APPEND_L $@ ""Ident="""""GS $(GS_DOT_VERSION)"""""
# The platform-specific makefiles must also include rules for creating
# certain dynamically generated files:
# gconfig_.h - this indicates the presence or absence of
# certain system header files that are located in different
# places on different systems. (It could be generated by
# the GNU `configure' program.)
# gconfigv.h - this indicates the status of certain machine-
# and configuration-specific features derived from definitions
# in the platform-specific makefile.
$(gconfig__h) : $(TOP_MAKEFILES) $(ECHOGS_XE)
$(EXP)$(ECHOGS_XE) -w $(gconfig__h) -x 23 define "HAVE_SYS_TIME_H"
$(gconfigv_h) : $(TOP_MAKEFILES) $(ECHOGS_XE)
$(EXP)$(ECHOGS_XE) -w $(gconfigv_h) -x 23 define "USE_ASM" 0
$(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "USE_FPU" 1
$(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "EXTEND_NAMES" 0$(EXTEND_NAMES)
$(EXP)$(ECHOGS_XE) -a $(gconfigv_h) -x 23 define "SYSTEM_CONSTANTS_ARE_WRITABLE" 0$(SYSTEM_CONSTANTS_ARE_WRITABLE)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,31 @@
!
! $Id: descrip.mms 35 2008-01-08 21:37:42Z tmr $
!
! Project: LISP -- The LISP Interpreter
! Created: 22-DEC-2008 18:35
! Author: tmr
cc = cc
cflags = /define="_VMS_=1" -
/WARN=DISABLE=(ZERODIV,FLOATOVERFL,NOMAINUFLO) -
/IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE
core = LISP_CORE
main = LISP_MAIN
exec = [.bin]LISP
clib = SYS$LIBRARY:VAXCRTL
head = LISP_CORE
objs = $(core).obj, $(main).obj
$(exec) : $(objs)
DEFINE/NOLOG LNK$LIBRARY $(clib)
LINK/EXEC=$(exec) $(objs)
DEASSIGN LNK$LIBRARY
$(core).obj : $(core).c, $(head).h
$(main).obj : $(main).c, $(head).h
clean :
del *.obj;*
del *.exe;*

View File

@@ -0,0 +1,271 @@
# MMS Description file for xv
# Written by Rick Dyson (dyson@iowasp.physics.uiowa.edu)
# Last Modified: 30-APR-1992 for v2.21
# 5-OCT-1992 for v2.21 (export.lcs.mit.edu version
# of xv-2.21 seemed to change about
# 25-Sep-1992 without version number
# changing.
# 8-FEB-1993 for v2.21b
# ALPHA support is in ALPHA.MMS
# 2-MAR-1993 for v3.00
# 15-APR-1993 for v3.00 (DEC C changes)
# 25-MAY-1993 merged ALPHA.MMS and MAKEFILE.MMS
# 27-APR-1994 for v3.01
# 23-DEC-1994 for v3.10
#
# Modeled after the original Unix Makefile for xv
# Most of the Unix comments have been left intact to help debug any
# problems.
# BE SURE TO SET THIS TO YOUR SITE'S DESTINATION DIRECTORY...!!!
BINDIR = Sys$Disk:[]
# your C compiler (and options) of choice
# Remember: if you change the C compiler (to gcc, or whatever), be sure to
# do the same thing to the Makefile in the 'jpeg' and 'tiff' subdirectories
#
# For ALPHA/DEC C users, you must add a MACRO qualifier to the
# command line, i.e.,
# MMS /Description = Makefile.mms /Macro = ("ALPHA=1")
#
# For VAX/DEC C users, you must add a MACRO qualifier to the
# command line, i.e.,
# MMS /Description = Makefile.mms /Macro = ("DECC=1")
#
# Users still using the non-MOTIF DECWindows (i.e., XUI) should also
# add another macro of "DEC_XUI=1"
CC = cc
################ CONFIGURATION OPTIONS #################
# if, for whatever reason, you're unable to get the JPEG library to compile
# on your machine, *COMMENT OUT* the following lines.
#
# Also, comment out the JPEGLIB dependancy below.
#
# VMS MMS USERS!!!
#
# if you don't use the JPEG package as supplied with XV, you
# will need fill in the complete directory specifications for JPEGDIR.
#
JPEG = ,HAVE_JPEG
JPEGDIR = [.JPEG]
JPEGLIB = $(JPEGDIR)LIBJPEG.OLB
JPEGINCLUDE = ,$(JPEGDIR)
# if, for whatever reason, you're unable to get the TIFF library to compile
# on your machine, *COMMENT OUT* the following lines
#
# Also, comment out the LIBTIFF dependancy at the end of this Makefile
#
# if you don't use the TIFF package as supplied with XV, you
# will need to fill in the complete directory specifications for TIFFDIR.
#
TIFF = ,HAVE_TIFF
TIFFDIR = [.TIFF]
TIFFLIB = $(TIFFDIR)LIBTIFF.OLB
TIFFINCLUDE = ,$(TIFFDIR)
# if, for whatever reason, you're unable to get the PDS/VICAR support
# to compile (xvpds.c, and vdcomp.c), *COMMENT OUT* the following line,
# and also remove 'vdcomp' from the 'all:' dependancy
PDS = ,HAVE_PDS
# If you are still using the DECWindows XUI interface, uncomment the
# next line. This will help stop the "window creep" problem with this
# window mananager
.ifdef DEC_XUI
XUI = ,HAVE_XUI
.endif
DEFS = /Define = (VMS$(JPEG)$(PDS)$(TIFF)$(TIMERS)$(XUI))
INCS = /Include = ([]$(JPEGINCLUDE)$(TIFFINCLUDE))
.ifdef ALPHA
OPTIMIZE = /Optimize /Standard = VAXC
OPTS = Sys$Disk:[]DECC_OPTIONS.OPT
.else
.ifdef DECC
OPTIMIZE = /Optimize /Standard = VAXC /Warnings = NoInformationals
OPTS = Sys$Disk:[]DECC_OPTIONS.OPT
.else
OPTIMIZE = /Optimize
OPTS = Sys$Disk:[]VAXC_OPTIONS.OPT
.endif
.endif
DEBUG = /NoDebug
CFLAGS = $(CFLAGS) $(DEFS) $(INCS) $(DEBUG) $(OPTIMIZE)
LINKFLAGS = $(LINKFLAGS) $(DEBUG)
XVLIB = LIBXV.OLB
OBJS = xv.obj,xvevent.obj,xvroot.obj,xvmisc.obj,xvimage.obj,xvcolor.obj, \
xvsmooth.obj,xv24to8.obj,xvgif.obj,xvpm.obj,xvinfo.obj,xvctrl.obj, \
xvscrl.obj,xvalg.obj,xvgifwr.obj,xvdir.obj,xvbutt.obj,xvpbm.obj, \
xvxbm.obj,xvgam.obj,xvbmp.obj,xvdial.obj,xvgraf.obj,xvsunras.obj, \
xvjpeg.obj,xvps.obj,xvpopup.obj,xvdflt.obj,xvtiff.obj,xvtiffwr.obj, \
xvpds.obj,xvrle.obj,xviris.obj,xvgrab.obj,xvbrowse.obj,xviff.obj, \
xvtext.obj,xvpcx.obj,xvtarga.obj,xvxpm.obj,xvcut.obj,xvxwd.obj, \
xvfits.obj,vms.obj
BITS = [.Bits]annot.h
MISC = readme. changelog. ideas.
.first
.ifdef ALPHA
@- Define /NoLog Sys DECC$Library_Include
.else
.ifdef DECC
@- Define /NoLog Sys DECC$Library_Include
.else
@- Define /NoLog Sys Sys$Library
.endif
@- Define /NoLog X11 DECW$Include
@- XVDIR = F$Environment ("Default")
.endif
all : $(BITS) $(OPTS) lib xv bggen decompress xcmap xvpictoppm help
! All Finished with the VMS build of XV (v3.10)
lib : $(JPEGLIB) $(TIFFLIB) $(XVLIB)
@ Continue
xv : xv.exe
@ Continue
bggen : bggen.exe
@ Continue
xcmap : xcmap.exe
@ Continue
xvpictoppm : xvpictoppm.exe
@ Continue
help : xv.hlb
@ Continue
decompress : decompress.exe vdcomp.exe
@ Continue
bggen.exe : bggen.obj $(XVLIB) $(OPTS)
$(LINK) $(LINKFLAGS) bggen.obj,$(XVLIB)/Library,$(OPTS)/Option
xcmap.exe : xcmap.obj
$(LINK) $(LINKFLAGS) xcmap.obj,$(XVLIB)/Library,$(OPTS)/Option
xvpictoppm.exe : xvpictoppm.obj
$(LINK) $(LINKFLAGS) xvpictoppm.obj,$(XVLIB)/Library,$(OPTS)/Option
xv.exe : xv.obj $(XVLIB) $(JPEGLIB) $(TIFFLIB) $(OPTS)
$(LINK) $(LINKFLAGS) xv.obj,$(XVLIB)/Library,$(JPEGLIB)/Library,$(TIFFLIB)/Library,$(OPTS)/Option
$(JPEGLIB) :
Set Default $(JPEGDIR)
.ifdef ALPHA
$(MMS) $(MMSDEFAULTS) /Description = MAKEFILE.MMS /Macro = "ALPHA = 1" LIBJPEG.OLB
.else
$(MMS) $(MMSDEFAULTS) /Description = MAKEFILE.MMS LIBJPEG.OLB
.endif
Set Default 'XVDIR'
$(TIFFLIB) :
Set Default $(TIFFDIR)
.ifdef ALPHA
$(MMS) $(MMSDEFAULTS) /Description = MAKEFILE.MMS /Macro = "ALPHA = 1" LIBTIFF.OLB
.else
.ifdef DECC
$(MMS) $(MMSDEFAULTS) /Description = MAKEFILE.MMS /Macro = "ALPHA = 1" LIBTIFF.OLB
.else
$(MMS) $(MMSDEFAULTS) /Description = MAKEFILE.MMS LIBTIFF.OLB
.endif
.endif
Set Default 'XVDIR'
$(XVLIB) : $(OBJS)
If "''F$Search ("$(XVLIB)")'" .eqs. "" Then Library /Create $(XVLIB)
Library /Replace $(XVLIB) $(OBJS)
decompress.exe : decompress.obj
$(LINK) $(LINKFLAGS) decompress.obj,$(OPTS)/Option
vdcomp.exe : vdcomp.obj
$(LINK) $(LINKFLAGS) vdcomp.obj,$(OPTS)/Option
[.Bits]annot.h :
Set Default [.Bits]
Set Protection = Owner:RWED *.
Rename *. *.H
Set Protection = Owner:RWE *.H
Set Default [-]
# various dependencies
$(OBJS) : xv.h config.h
xv.hlb : xv.hlp
vms.obj : includes.h dirent.h
#
# Build the linker options file for OpenVMS VAX and VAX C.
#
Sys$Disk:[]VAXC_Options.opt :
@ Open /Write TMP VAXC_Options.opt
@ Write TMP "! XV (v3.10) Linker Options list for VMS VAX C"
@ Write TMP "!"
@ Write TMP "Sys$Disk:[]LibXV.OLB /Library"
@ Write TMP "Sys$Disk:[.JPEG]LibJPEG.OLB /Library"
@ Write TMP "Sys$Disk:[.TIFF]LibTIFF.OLB /Library"
.ifdef DEC_XUI
@ Write TMP "!"
@ Write TMP "! These were appropriate for VAX C and XUI in the past."
@ Write TMP "Sys$Library:DECW$DWTLibShr.exe /Share
@ Write TMP "Sys$Library:DECW$XLibShr.exe /Share
@ Write TMP "!You may need the next line for VAX C (v3.2-044)"
@ Write TMP "!But you don't for DEC C (v4.0-000)"
@ Write TMP "Sys$Library:VAXCRTL.EXE /Share"
.else
@ Write TMP "!"
@ Write TMP "! Some of the following libraries may not be available on"
@ Write TMP "! older systems, namely XUI or Motif v1.0/1.1"
@ Write TMP "! I know they are available for OpenVMS v6.1/Motif v1.2."
@ Write TMP "! If you get a report that they can't be found,"
@ Write TMP "! comment them out and try again..."
@ Write TMP "Sys$Library:DECW$DXMLibShr12.exe /Share
@ Write TMP "Sys$Library:DECW$XMLibShr12.exe /Share
@ Write TMP "Sys$Library:DECW$XTLibShrR5.exe /Share"
@ Write TMP "Sys$Library:DECW$XLibShr.exe /Share
.endif
@ Close TMP
Sys$Disk:[]DECC_Options.opt :
@ Open /Write TMP DECC_Options.opt
@ Write TMP "! XV (v3.10) Linker Options list for VMS DEC C"
@ Write TMP "!"
@ Write TMP "Sys$Disk:[]LibXV.olb /Library"
@ Write TMP "Sys$Disk:[.JPEG]LibJPEG.olb /Library"
@ Write TMP "Sys$Disk:[.TIFF]LibTIFF.olb /Library"
@ Write TMP "Sys$Library:DECW$XTShr.exe /Share"
@ Write TMP "Sys$Library:DECW$XLibShr.exe /Share"
@ Close TMP
install : xv.exe vdcomp.exe bggen.exe decompress.exe
Copy *.exe $(BINDIR)
clean :
@- Set Protection = Owner:RWED *.obj,*.*;-1
- Delete /NoConfirm /NoLog *.obj;*,*.exe;*,*.log;*,*.olb;*,*.hlb;*
- Purge /NoConfirm /NoLog
Set Default [.JPEG]
$(MMS) /Description = MAKEFILE.MMS clean
- Delete /NoConfirm /NoLog *.olb;*
Set Default [-.TIFF]
$(MMS) /Description = MAKEFILE.MMS clean
Set Default [-]

View File

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

View File

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

View File

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

View File

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

1344
samples/OCaml/cmdliner.ml Normal file

File diff suppressed because it is too large Load Diff

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

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

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

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

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

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

2503
samples/OCaml/mirage.ml Normal file

File diff suppressed because it is too large Load Diff

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

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

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

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

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

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

View File

@@ -0,0 +1 @@
ssh-dss AAAAB3NzaC1kc3MAAACBAIXi8hv+I7/bYzbve0Wg/Gv9yeZX0H/qON6rwJTPFICTncfK2t/Kc2Ec7+GYSkEIj7ok5wzHgv51SFTM6dvK/8hrjFE8frNztRK2TwZCvgYkbcBoprUstE86ZHBA1pAVPfHAOcF708Yk+KsxDONxkzu7FWw4HWqycqPtaavdcgsZAAAAFQC0uvetk3WY9sFNU71a32JKjkmTnwAAAIBlm1eGuATcZJvlk2jerZnTO54MlO/htWQrI4pZGLdhukOPgF1lsTUSwmCN8k8xxkyRL5Yl/8GUcdUfC4gbZvsbZGtvq5gFZSVTfkKJrlwykpZcaijWXtDiWSpqszs0MfexLMdpZSkNsWp7TEoWcqNLN8X7ohlsLAhcdrAbGqFblAAAAIBgW12r208h9AA3rH3t+6HKLXuPO1BQPuE+fKQg1Aet40c1gxUkCF/J+xdAITE1v7kmssZxBvDqUPgpvYCm+ZfA0j712pvt4JmQcfPn9Go003kq6/cgI4tCOy1dgQDLr0E5Jd7YqIglkr25fkDtKRFBRue3FmCGOdaM4NAAdYU48Q== lars@junk

View File

@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw3QQtYgRViVH8ZpkQ2A7BuCeyPYC4hB9kKNhxwUfJ2hFgW8soGMBhsLN+vOeAJ2IXDMsezJO2/qhoZFQMvHoWpWTRTLPeNtBsKD+nhOZX28A4D+QRzVZ6hdWoh9W+mIP69MIT3aX35oLb86IycbNdRJlEK4FAUt7tjezNkU7boQ== root@use1-2.nitrousbox.com

View File

@@ -0,0 +1,7 @@
---- BEGIN SSH2 PUBLIC KEY ----
Subject: galb
Comment: 1024-bit rsa, created by galb@shimi Mon Jan 15 08:31:24 2001
AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt459
6k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6
NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=
---- END SSH2 PUBLIC KEY ----

View File

@@ -0,0 +1,378 @@
# Class: apache
#
# This class installs Apache
#
# Parameters:
#
# Actions:
# - Install Apache
# - Manage Apache service
#
# Requires:
#
# Sample Usage:
#
class apache (
$apache_name = $::apache::params::apache_name,
$service_name = $::apache::params::service_name,
$default_mods = true,
$default_vhost = true,
$default_charset = undef,
$default_confd_files = true,
$default_ssl_vhost = false,
$default_ssl_cert = $::apache::params::default_ssl_cert,
$default_ssl_key = $::apache::params::default_ssl_key,
$default_ssl_chain = undef,
$default_ssl_ca = undef,
$default_ssl_crl_path = undef,
$default_ssl_crl = undef,
$default_ssl_crl_check = undef,
$default_type = 'none',
$ip = undef,
$service_enable = true,
$service_manage = true,
$service_ensure = 'running',
$purge_configs = true,
$purge_vhost_dir = undef,
$purge_vdir = false,
$serveradmin = 'root@localhost',
$sendfile = 'On',
$error_documents = false,
$timeout = '120',
$httpd_dir = $::apache::params::httpd_dir,
$server_root = $::apache::params::server_root,
$conf_dir = $::apache::params::conf_dir,
$confd_dir = $::apache::params::confd_dir,
$vhost_dir = $::apache::params::vhost_dir,
$vhost_enable_dir = $::apache::params::vhost_enable_dir,
$mod_dir = $::apache::params::mod_dir,
$mod_enable_dir = $::apache::params::mod_enable_dir,
$mpm_module = $::apache::params::mpm_module,
$lib_path = $::apache::params::lib_path,
$conf_template = $::apache::params::conf_template,
$servername = $::apache::params::servername,
$manage_user = true,
$manage_group = true,
$user = $::apache::params::user,
$group = $::apache::params::group,
$keepalive = $::apache::params::keepalive,
$keepalive_timeout = $::apache::params::keepalive_timeout,
$max_keepalive_requests = $::apache::params::max_keepalive_requests,
$logroot = $::apache::params::logroot,
$logroot_mode = $::apache::params::logroot_mode,
$log_level = $::apache::params::log_level,
$log_formats = {},
$ports_file = $::apache::params::ports_file,
$docroot = $::apache::params::docroot,
$apache_version = $::apache::version::default,
$server_tokens = 'OS',
$server_signature = 'On',
$trace_enable = 'On',
$allow_encoded_slashes = undef,
$package_ensure = 'installed',
$use_optional_includes = $::apache::params::use_optional_includes,
) inherits ::apache::params {
validate_bool($default_vhost)
validate_bool($default_ssl_vhost)
validate_bool($default_confd_files)
# true/false is sufficient for both ensure and enable
validate_bool($service_enable)
validate_bool($service_manage)
validate_bool($use_optional_includes)
$valid_mpms_re = $apache_version ? {
'2.4' => '(event|itk|peruser|prefork|worker)',
default => '(event|itk|prefork|worker)'
}
if $mpm_module {
validate_re($mpm_module, $valid_mpms_re)
}
if $allow_encoded_slashes {
validate_re($allow_encoded_slashes, '(^on$|^off$|^nodecode$)', "${allow_encoded_slashes} is not permitted for allow_encoded_slashes. Allowed values are 'on', 'off' or 'nodecode'.")
}
# NOTE: on FreeBSD it's mpm module's responsibility to install httpd package.
# NOTE: the same strategy may be introduced for other OSes. For this, you
# should delete the 'if' block below and modify all MPM modules' manifests
# such that they include apache::package class (currently event.pp, itk.pp,
# peruser.pp, prefork.pp, worker.pp).
if $::osfamily != 'FreeBSD' {
package { 'httpd':
ensure => $package_ensure,
name => $apache_name,
notify => Class['Apache::Service'],
}
}
validate_re($sendfile, [ '^[oO]n$' , '^[oO]ff$' ])
# declare the web server user and group
# Note: requiring the package means the package ought to create them and not puppet
validate_bool($manage_user)
if $manage_user {
user { $user:
ensure => present,
gid => $group,
require => Package['httpd'],
}
}
validate_bool($manage_group)
if $manage_group {
group { $group:
ensure => present,
require => Package['httpd']
}
}
validate_apache_log_level($log_level)
class { '::apache::service':
service_name => $service_name,
service_enable => $service_enable,
service_manage => $service_manage,
service_ensure => $service_ensure,
}
# Deprecated backwards-compatibility
if $purge_vdir {
warning('Class[\'apache\'] parameter purge_vdir is deprecated in favor of purge_configs')
$purge_confd = $purge_vdir
} else {
$purge_confd = $purge_configs
}
# Set purge vhostd appropriately
if $purge_vhost_dir == undef {
$purge_vhostd = $purge_confd
} else {
$purge_vhostd = $purge_vhost_dir
}
Exec {
path => '/bin:/sbin:/usr/bin:/usr/sbin',
}
exec { "mkdir ${confd_dir}":
creates => $confd_dir,
require => Package['httpd'],
}
file { $confd_dir:
ensure => directory,
recurse => true,
purge => $purge_confd,
notify => Class['Apache::Service'],
require => Package['httpd'],
}
if ! defined(File[$mod_dir]) {
exec { "mkdir ${mod_dir}":
creates => $mod_dir,
require => Package['httpd'],
}
# Don't purge available modules if an enable dir is used
$purge_mod_dir = $purge_configs and !$mod_enable_dir
file { $mod_dir:
ensure => directory,
recurse => true,
purge => $purge_mod_dir,
notify => Class['Apache::Service'],
require => Package['httpd'],
}
}
if $mod_enable_dir and ! defined(File[$mod_enable_dir]) {
$mod_load_dir = $mod_enable_dir
exec { "mkdir ${mod_enable_dir}":
creates => $mod_enable_dir,
require => Package['httpd'],
}
file { $mod_enable_dir:
ensure => directory,
recurse => true,
purge => $purge_configs,
notify => Class['Apache::Service'],
require => Package['httpd'],
}
} else {
$mod_load_dir = $mod_dir
}
if ! defined(File[$vhost_dir]) {
exec { "mkdir ${vhost_dir}":
creates => $vhost_dir,
require => Package['httpd'],
}
file { $vhost_dir:
ensure => directory,
recurse => true,
purge => $purge_vhostd,
notify => Class['Apache::Service'],
require => Package['httpd'],
}
}
if $vhost_enable_dir and ! defined(File[$vhost_enable_dir]) {
$vhost_load_dir = $vhost_enable_dir
exec { "mkdir ${vhost_load_dir}":
creates => $vhost_load_dir,
require => Package['httpd'],
}
file { $vhost_enable_dir:
ensure => directory,
recurse => true,
purge => $purge_vhostd,
notify => Class['Apache::Service'],
require => Package['httpd'],
}
} else {
$vhost_load_dir = $vhost_dir
}
concat { $ports_file:
owner => 'root',
group => $::apache::params::root_group,
mode => '0644',
notify => Class['Apache::Service'],
require => Package['httpd'],
}
concat::fragment { 'Apache ports header':
ensure => present,
target => $ports_file,
content => template('apache/ports_header.erb')
}
if $::apache::conf_dir and $::apache::params::conf_file {
case $::osfamily {
'debian': {
$pidfile = "\${APACHE_PID_FILE}"
$error_log = 'error.log'
$scriptalias = '/usr/lib/cgi-bin'
$access_log_file = 'access.log'
}
'redhat': {
$pidfile = 'run/httpd.pid'
$error_log = 'error_log'
$scriptalias = '/var/www/cgi-bin'
$access_log_file = 'access_log'
}
'freebsd': {
$pidfile = '/var/run/httpd.pid'
$error_log = 'httpd-error.log'
$scriptalias = '/usr/local/www/apache24/cgi-bin'
$access_log_file = 'httpd-access.log'
} 'gentoo': {
$pidfile = '/run/apache2.pid'
$error_log = 'error.log'
$error_documents_path = '/usr/share/apache2/error'
$scriptalias = '/var/www/localhost/cgi-bin'
$access_log_file = 'access.log'
::portage::makeconf { 'apache2_modules':
content => $default_mods,
}
file { [
'/etc/apache2/modules.d/.keep_www-servers_apache-2',
'/etc/apache2/vhosts.d/.keep_www-servers_apache-2'
]:
ensure => absent,
require => Package['httpd'],
}
}
default: {
fail("Unsupported osfamily ${::osfamily}")
}
}
$apxs_workaround = $::osfamily ? {
'freebsd' => true,
default => false
}
# Template uses:
# - $pidfile
# - $user
# - $group
# - $logroot
# - $error_log
# - $sendfile
# - $mod_dir
# - $ports_file
# - $confd_dir
# - $vhost_dir
# - $error_documents
# - $error_documents_path
# - $apxs_workaround
# - $keepalive
# - $keepalive_timeout
# - $max_keepalive_requests
# - $server_root
# - $server_tokens
# - $server_signature
# - $trace_enable
file { "${::apache::conf_dir}/${::apache::params::conf_file}":
ensure => file,
content => template($conf_template),
notify => Class['Apache::Service'],
require => Package['httpd'],
}
# preserve back-wards compatibility to the times when default_mods was
# only a boolean value. Now it can be an array (too)
if is_array($default_mods) {
class { '::apache::default_mods':
all => false,
mods => $default_mods,
}
} else {
class { '::apache::default_mods':
all => $default_mods,
}
}
class { '::apache::default_confd_files':
all => $default_confd_files
}
if $mpm_module {
class { "::apache::mod::${mpm_module}": }
}
$default_vhost_ensure = $default_vhost ? {
true => 'present',
false => 'absent'
}
$default_ssl_vhost_ensure = $default_ssl_vhost ? {
true => 'present',
false => 'absent'
}
::apache::vhost { 'default':
ensure => $default_vhost_ensure,
port => 80,
docroot => $docroot,
scriptalias => $scriptalias,
serveradmin => $serveradmin,
access_log_file => $access_log_file,
priority => '15',
ip => $ip,
logroot_mode => $logroot_mode,
manage_docroot => $default_vhost,
}
$ssl_access_log_file = $::osfamily ? {
'freebsd' => $access_log_file,
default => "ssl_${access_log_file}",
}
::apache::vhost { 'default-ssl':
ensure => $default_ssl_vhost_ensure,
port => 443,
ssl => true,
docroot => $docroot,
scriptalias => $scriptalias,
serveradmin => $serveradmin,
access_log_file => $ssl_access_log_file,
priority => '15',
ip => $ip,
logroot_mode => $logroot_mode,
manage_docroot => $default_ssl_vhost,
}
}
}

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