mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
233 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5aae7a4000 | ||
|
|
d9509a1750 | ||
|
|
978c448fb8 | ||
|
|
997c0fca10 | ||
|
|
3ae6e68492 | ||
|
|
851c93a1f7 | ||
|
|
a5f7355e16 | ||
|
|
18ffdbaa65 | ||
|
|
c089222bc6 | ||
|
|
37f9535d27 | ||
|
|
4650368bc2 | ||
|
|
88b14ed455 | ||
|
|
54a2a47bc0 | ||
|
|
ffcc970140 | ||
|
|
7a811e39e0 | ||
|
|
11f158cbb3 | ||
|
|
deab0662f9 | ||
|
|
7238f50a6b | ||
|
|
499fcd1f3f | ||
|
|
dc0ddc82d6 | ||
|
|
436fc34cb9 | ||
|
|
f072cd96e3 | ||
|
|
3441a001c7 | ||
|
|
bc747844ea | ||
|
|
a887f58bcc | ||
|
|
f42afef6e0 | ||
|
|
18eaf22cb9 | ||
|
|
d94f427e12 | ||
|
|
b94eb42db6 | ||
|
|
d2297f5516 | ||
|
|
ef6f58b828 | ||
|
|
eb0bf16cce | ||
|
|
ca51415540 | ||
|
|
8ae32e1d47 | ||
|
|
0a6165c4d9 | ||
|
|
cf8521a629 | ||
|
|
b11c7f3dc0 | ||
|
|
01151aad5c | ||
|
|
6b283068a9 | ||
|
|
ccd7d4d89d | ||
|
|
208ec3906f | ||
|
|
84d4fccb4d | ||
|
|
8d8ea959ee | ||
|
|
1c73db499f | ||
|
|
16a4b4947f | ||
|
|
4b2abb2064 | ||
|
|
c581b6a5a7 | ||
|
|
4c66582f87 | ||
|
|
11388a5355 | ||
|
|
24ca98b1a3 | ||
|
|
90a293727d | ||
|
|
e869f6c173 | ||
|
|
5b187d1f20 | ||
|
|
7b5d1c075d | ||
|
|
07173d2238 | ||
|
|
6b747f7d65 | ||
|
|
aef19d72f9 | ||
|
|
e1a661bffc | ||
|
|
560f9b15d7 | ||
|
|
452fc59d4f | ||
|
|
682cc2d82d | ||
|
|
29197736c7 | ||
|
|
e1dbd68713 | ||
|
|
0ecb865797 | ||
|
|
1ced06483e | ||
|
|
861cee33d5 | ||
|
|
6b882438b0 | ||
|
|
c570646c2d | ||
|
|
75f72578ad | ||
|
|
4dc566e13f | ||
|
|
bcfdbe3616 | ||
|
|
314b7f134d | ||
|
|
87eb4577ea | ||
|
|
7563bf43e9 | ||
|
|
ce8cfed7ff | ||
|
|
8742de9a88 | ||
|
|
9c0af2ea5b | ||
|
|
4c81c0d904 | ||
|
|
4dcdb0c79c | ||
|
|
d459f7289e | ||
|
|
d2c4104d30 | ||
|
|
89fabd9a89 | ||
|
|
3f7ce832ab | ||
|
|
3fdc904b18 | ||
|
|
cf471af677 | ||
|
|
2d392581e2 | ||
|
|
79a428ab8d | ||
|
|
7ed1b9b0b1 | ||
|
|
58fd8a5d87 | ||
|
|
9f8c15ed6c | ||
|
|
b94eda18ab | ||
|
|
849eb28b01 | ||
|
|
b0073d461c | ||
|
|
25d160e850 | ||
|
|
e688c865bc | ||
|
|
21e97cc65c | ||
|
|
06c1033952 | ||
|
|
8c54f68040 | ||
|
|
4c1f5c490f | ||
|
|
117735ffb9 | ||
|
|
f98e6bdac7 | ||
|
|
19d76306d3 | ||
|
|
a63a609ce1 | ||
|
|
95fce2024d | ||
|
|
f3b65015f4 | ||
|
|
5431298b0d | ||
|
|
8f651bca03 | ||
|
|
6c45e5ec19 | ||
|
|
95d394642c | ||
|
|
6a185a3d3a | ||
|
|
6ae353706d | ||
|
|
77bc72be14 | ||
|
|
0585c880de | ||
|
|
da5189e7fb | ||
|
|
5f456d8b22 | ||
|
|
a351cdd486 | ||
|
|
6e71663fd6 | ||
|
|
0b2e43cdee | ||
|
|
9cbd280f79 | ||
|
|
947be9db0f | ||
|
|
dd55f929d4 | ||
|
|
8b5399d568 | ||
|
|
1b8b0c6229 | ||
|
|
ee3081fb4c | ||
|
|
119770a038 | ||
|
|
9d61487403 | ||
|
|
56dec47561 | ||
|
|
3e793ab5b7 | ||
|
|
f6b50a67f9 | ||
|
|
cd47798d13 | ||
|
|
3b54df2cde | ||
|
|
8bf1defdc1 | ||
|
|
8845b266de | ||
|
|
4757da73f0 | ||
|
|
468fd425fc | ||
|
|
5604d658b2 | ||
|
|
37222d5622 | ||
|
|
ec38b54023 | ||
|
|
260e90401d | ||
|
|
8c66f0a5da | ||
|
|
78efc2d0de | ||
|
|
656c1e6ba6 | ||
|
|
65e932016b | ||
|
|
fc602b1d42 | ||
|
|
0e882900d7 | ||
|
|
28103ee25b | ||
|
|
0a0d2ddb1a | ||
|
|
3bf4cb721e | ||
|
|
ba1ab64b56 | ||
|
|
786d1e4cfc | ||
|
|
eb82e022ba | ||
|
|
753bfd1dc5 | ||
|
|
bc8d65e7d3 | ||
|
|
3180c5d554 | ||
|
|
6b11655db8 | ||
|
|
d1ae098c08 | ||
|
|
e1a8b5db1d | ||
|
|
302cfea295 | ||
|
|
be122ca1a5 | ||
|
|
b05f6f0018 | ||
|
|
e811021806 | ||
|
|
656f4f440d | ||
|
|
7fb62de4d7 | ||
|
|
0946fecd82 | ||
|
|
26a5325dc3 | ||
|
|
9afdcddfc9 | ||
|
|
4881e0aa51 | ||
|
|
743f7c76de | ||
|
|
f8ef01f557 | ||
|
|
402fa5c2cd | ||
|
|
5ac1e847a5 | ||
|
|
0737a21e38 | ||
|
|
4d162f88bd | ||
|
|
2806987f2f | ||
|
|
f380aa2e5e | ||
|
|
a2ce1972ec | ||
|
|
aa8cf7e6bb | ||
|
|
ec61a6974f | ||
|
|
21e249bd2c | ||
|
|
8e550f7093 | ||
|
|
53e53880bd | ||
|
|
671b5788ed | ||
|
|
76d10cd85c | ||
|
|
42c155d667 | ||
|
|
d17222ec91 | ||
|
|
a1ea55d006 | ||
|
|
f32b7bb978 | ||
|
|
38aa7bae3f | ||
|
|
0021b9532b | ||
|
|
788fac7c43 | ||
|
|
71934152e4 | ||
|
|
e20d6fc04a | ||
|
|
a1e8fc4f97 | ||
|
|
9dc8a10e2a | ||
|
|
43a2da46f9 | ||
|
|
f95ca13073 | ||
|
|
b92b3af602 | ||
|
|
83b76cde34 | ||
|
|
5ff0d488d2 | ||
|
|
f89adf6e53 | ||
|
|
efd34d8cb0 | ||
|
|
3defb60fd7 | ||
|
|
869c9d2fdd | ||
|
|
912e465193 | ||
|
|
e7c1419390 | ||
|
|
b19cd037b7 | ||
|
|
42f7bc2160 | ||
|
|
542a0d79fd | ||
|
|
4b9b09f7bf | ||
|
|
57429f3194 | ||
|
|
9bdf890fd8 | ||
|
|
9240f30f28 | ||
|
|
ed23c6ef75 | ||
|
|
90b59876d0 | ||
|
|
6d2aa601cd | ||
|
|
1811465abb | ||
|
|
0c2aeae00d | ||
|
|
a4f187efd2 | ||
|
|
b6ee02f313 | ||
|
|
fc1f8083ad | ||
|
|
af5e799a45 | ||
|
|
e073e91d62 | ||
|
|
da9bda0e27 | ||
|
|
0e996e4bb7 | ||
|
|
63fbbd6e0a | ||
|
|
17f75e64ba | ||
|
|
0157b9eb37 | ||
|
|
730be65514 | ||
|
|
885b5aab41 | ||
|
|
f18ae4f99f | ||
|
|
5217f19faa | ||
|
|
296d170ba9 | ||
|
|
a97fd74399 |
36
.gitmodules
vendored
36
.gitmodules
vendored
@@ -133,9 +133,6 @@
|
||||
[submodule "vendor/grammars/fancy-tmbundle"]
|
||||
path = vendor/grammars/fancy-tmbundle
|
||||
url = https://github.com/fancy-lang/fancy-tmbundle
|
||||
[submodule "vendor/grammars/fsharpbinding"]
|
||||
path = vendor/grammars/fsharpbinding
|
||||
url = https://github.com/fsharp/fsharpbinding
|
||||
[submodule "vendor/grammars/monkey.tmbundle"]
|
||||
path = vendor/grammars/monkey.tmbundle
|
||||
url = https://github.com/gingerbeardman/monkey.tmbundle
|
||||
@@ -632,9 +629,42 @@
|
||||
[submodule "vendor/grammars/jflex.tmbundle"]
|
||||
path = vendor/grammars/jflex.tmbundle
|
||||
url = https://github.com/jflex-de/jflex.tmbundle.git
|
||||
[submodule "vendor/grammars/Sublime-Modula-2"]
|
||||
path = vendor/grammars/Sublime-Modula-2
|
||||
url = https://github.com/harogaston/Sublime-Modula-2
|
||||
[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
|
||||
[submodule "vendor/grammars/Handlebars"]
|
||||
path = vendor/grammars/Handlebars
|
||||
url = https://github.com/daaain/Handlebars
|
||||
[submodule "vendor/grammars/smali-sublime"]
|
||||
path = vendor/grammars/smali-sublime
|
||||
url = https://github.com/ShaneWilton/sublime-smali
|
||||
[submodule "vendor/grammars/language-jsoniq"]
|
||||
path = vendor/grammars/language-jsoniq
|
||||
url = http://github.com/wcandillon/language-jsoniq
|
||||
[submodule "vendor/grammars/atom-fsharp"]
|
||||
path = vendor/grammars/atom-fsharp
|
||||
url = https://github.com/fsprojects/atom-fsharp
|
||||
[submodule "vendor/grammars/SMT.tmbundle"]
|
||||
path = vendor/grammars/SMT.tmbundle
|
||||
url = https://github.com/SRI-CSL/SMT.tmbundle.git
|
||||
[submodule "vendor/grammars/language-crystal"]
|
||||
path = vendor/grammars/language-crystal
|
||||
url = https://github.com/k2b6s9j/language-crystal
|
||||
[submodule "vendor/grammars/language-xbase"]
|
||||
path = vendor/grammars/language-xbase
|
||||
url = https://github.com/hernad/atom-language-harbour
|
||||
[submodule "vendor/grammars/language-ncl"]
|
||||
path = vendor/grammars/language-ncl
|
||||
url = https://github.com/rpavlick/language-ncl.git
|
||||
[submodule "vendor/grammars/atom-language-purescript"]
|
||||
path = vendor/grammars/atom-language-purescript
|
||||
url = https://github.com/freebroccolo/atom-language-purescript
|
||||
[submodule "vendor/grammars/vue-syntax-highlight"]
|
||||
path = vendor/grammars/vue-syntax-highlight
|
||||
url = https://github.com/vuejs/vue-syntax-highlight
|
||||
|
||||
@@ -1,10 +1,31 @@
|
||||
# Contributing
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. The majority of contributions won't need to touch any Ruby code at all.
|
||||
[code-of-conduct]: http://todogroup.org/opencodeofconduct/#Linguist/opensource@github.com
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. This project adheres to the [Open Code of Conduct][code-of-conduct]. By participating, you are expected to uphold this code.
|
||||
|
||||
The majority of contributions won't need to touch any Ruby code at all.
|
||||
|
||||
## Adding an extension to a language
|
||||
|
||||
We try only to add new extensions once they have some usage on GitHub. In most cases we prefer that extensions be in use in hundreds of repositories before supporting them in Linguist.
|
||||
|
||||
To add support for a new extension:
|
||||
|
||||
0. Add your extension to the language entry in [`languages.yml`][languages].
|
||||
0. Add at least one sample for your extension to the [samples directory][samples] in the correct subdirectory.
|
||||
0. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
|
||||
|
||||
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
|
||||
|
||||
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
|
||||
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
|
||||
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
|
||||
|
||||
|
||||
## Adding a language
|
||||
|
||||
We try only to add languages once they have some usage on GitHub. In most cases we prefer that languages be in use in hundreds of repositories before supporting them in Linguist.
|
||||
We try only to add languages once they have some usage on GitHub. In most cases we prefer that each new file extension be in use in hundreds of repositories before supporting them in Linguist.
|
||||
|
||||
To add support for a new language:
|
||||
|
||||
@@ -23,19 +44,21 @@ In addition, if your new language defines an extension that's already listed in
|
||||
|
||||
Remember, the goal here is to try and avoid false positives!
|
||||
|
||||
|
||||
## Fixing a misclassified language
|
||||
|
||||
Most languages are detected by their file extension defined in [languages.yml][languages]. For disambiguating between files with common extensions, linguist applies some [heuristics](/lib/linguist/heuristics.rb) and a [statistical classifier](lib/linguist/classifier.rb). This process can help differentiate between, for example, `.h` files which could be either C, C++, or Obj-C.
|
||||
|
||||
Misclassifications can often be solved by either adding a new filename or extension for the language or adding more [samples][samples] to make the classifier smarter.
|
||||
|
||||
|
||||
## Fixing syntax highlighting
|
||||
|
||||
Syntax highlighting in GitHub is performed using TextMate-compatible grammars. These are the same grammars that TextMate, Sublime Text and Atom use. Every language in [languages.yml][languages] is mapped to its corresponding TM `scope`. This scope will be used when picking up a grammar for highlighting.
|
||||
|
||||
Assuming your code is being detected as the right language, in most cases this is due to a bug in the language grammar rather than a bug in Linguist. [`grammars.yml`][grammars] lists all the grammars we use for syntax highlighting on github.com. Find the one corresponding to your code's programming language and submit a bug report upstream. If you can, try to reproduce the highlighting problem in the text editor that the grammar is designed for (TextMate, Sublime Text, or Atom) and include that information in your bug report.
|
||||
|
||||
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).
|
||||
You can also try to fix the bug yourself and submit a Pull Request. [TextMate's documentation](https://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, we'll pick it up for GitHub in the next release of Linguist.
|
||||
|
||||
@@ -51,9 +74,10 @@ To run the tests:
|
||||
|
||||
bundle exec rake test
|
||||
|
||||
Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](http://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away.
|
||||
Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](https://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away.
|
||||
|
||||
Here's our current build status: [](https://travis-ci.org/github/linguist)
|
||||
|
||||
Here's our current build status: [](http://travis-ci.org/github/linguist)
|
||||
|
||||
## Releasing
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Linguist supports a number of different custom overrides strategies for language
|
||||
|
||||
### Using gitattributes
|
||||
|
||||
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, and `linguist-vendored`. `.gitattributes` will be used to determine language statistics, but will not be used to syntax highlight files. To manually set syntax highlighting, use [Vim or Emacs modelines](#using-emacs-and-vim-modelines).
|
||||
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, and `linguist-vendored`. `.gitattributes` will be used to determine language statistics, but will not be used to syntax highlight files. To manually set syntax highlighting, use [Vim or Emacs modelines](#using-emacs-or-vim-modelines).
|
||||
|
||||
```
|
||||
$ cat .gitattributes
|
||||
|
||||
2
Rakefile
2
Rakefile
@@ -62,7 +62,7 @@ namespace :benchmark do
|
||||
|
||||
corpus = File.expand_path(ENV["CORPUS"] || "samples")
|
||||
|
||||
require 'linguist/language'
|
||||
require 'linguist'
|
||||
|
||||
results = Hash.new
|
||||
Dir.glob("#{corpus}/**/*").each do |file|
|
||||
|
||||
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
||||
s.add_dependency 'charlock_holmes', '~> 0.7.3'
|
||||
s.add_dependency 'escape_utils', '~> 1.1.0'
|
||||
s.add_dependency 'mime-types', '>= 1.19'
|
||||
s.add_dependency 'rugged', '~> 0.23.0b1'
|
||||
s.add_dependency 'rugged', '>= 0.23.0b'
|
||||
|
||||
s.add_development_dependency 'minitest', '>= 5.0'
|
||||
s.add_development_dependency 'mocha'
|
||||
|
||||
28
grammars.yml
28
grammars.yml
@@ -50,6 +50,8 @@ 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/:
|
||||
@@ -83,6 +85,8 @@ vendor/grammars/Racket:
|
||||
- source.racket
|
||||
vendor/grammars/SCSS.tmbundle:
|
||||
- source.scss
|
||||
vendor/grammars/SMT.tmbundle:
|
||||
- source.smt
|
||||
vendor/grammars/Scalate.tmbundle:
|
||||
- source.scaml
|
||||
- text.html.ssp
|
||||
@@ -105,6 +109,8 @@ vendor/grammars/Sublime-Logos:
|
||||
- source.logos
|
||||
vendor/grammars/Sublime-Loom:
|
||||
- source.loomscript
|
||||
vendor/grammars/Sublime-Modula-2/:
|
||||
- source.modula2
|
||||
vendor/grammars/Sublime-Nit:
|
||||
- source.nit
|
||||
vendor/grammars/Sublime-QML:
|
||||
@@ -117,6 +123,7 @@ vendor/grammars/Sublime-SQF-Language:
|
||||
- source.sqf
|
||||
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
|
||||
- source.abl
|
||||
- text.html.abl
|
||||
vendor/grammars/Sublime-VimL:
|
||||
- source.viml
|
||||
vendor/grammars/SublimeBrainfuck:
|
||||
@@ -167,6 +174,10 @@ vendor/grammars/asp.tmbundle:
|
||||
vendor/grammars/assembly.tmbundle:
|
||||
- objdump.x86asm
|
||||
- source.x86asm
|
||||
vendor/grammars/atom-fsharp/:
|
||||
- source.fsharp
|
||||
vendor/grammars/atom-language-purescript/:
|
||||
- source.purescript
|
||||
vendor/grammars/atom-salt:
|
||||
- source.python.salt
|
||||
- source.yaml.salt
|
||||
@@ -213,6 +224,7 @@ vendor/grammars/d.tmbundle:
|
||||
vendor/grammars/dart-sublime-bundle:
|
||||
- source.dart
|
||||
- source.pubspec
|
||||
- text.dart-analysis-output
|
||||
- text.dart-doccomments
|
||||
vendor/grammars/desktop.tmbundle:
|
||||
- source.desktop
|
||||
@@ -245,8 +257,6 @@ vendor/grammars/fish-tmbundle:
|
||||
vendor/grammars/fortran.tmbundle:
|
||||
- source.fortran
|
||||
- source.fortran.modern
|
||||
vendor/grammars/fsharpbinding:
|
||||
- source.fsharp
|
||||
vendor/grammars/gap-tmbundle/:
|
||||
- source.gap
|
||||
vendor/grammars/gettext.tmbundle:
|
||||
@@ -307,7 +317,10 @@ vendor/grammars/language-clojure:
|
||||
vendor/grammars/language-coffee-script:
|
||||
- source.coffee
|
||||
- source.litcoffee
|
||||
vendor/grammars/language-crystal:
|
||||
- source.crystal
|
||||
vendor/grammars/language-csharp:
|
||||
- source.cake
|
||||
- source.cs
|
||||
- source.csx
|
||||
- source.nant-build
|
||||
@@ -318,6 +331,11 @@ vendor/grammars/language-hy:
|
||||
vendor/grammars/language-javascript:
|
||||
- source.js
|
||||
- source.js.regexp
|
||||
vendor/grammars/language-jsoniq/:
|
||||
- source.jq
|
||||
- source.xq
|
||||
vendor/grammars/language-ncl:
|
||||
- source.ncl
|
||||
vendor/grammars/language-python:
|
||||
- source.python
|
||||
- source.regexp.python
|
||||
@@ -326,6 +344,8 @@ vendor/grammars/language-python:
|
||||
vendor/grammars/language-shellscript:
|
||||
- source.shell
|
||||
- text.shell-session
|
||||
vendor/grammars/language-xbase:
|
||||
- source.harbour
|
||||
vendor/grammars/language-yaml:
|
||||
- source.yaml
|
||||
vendor/grammars/latex.tmbundle:
|
||||
@@ -444,6 +464,8 @@ vendor/grammars/scheme.tmbundle:
|
||||
- source.scheme
|
||||
vendor/grammars/scilab.tmbundle:
|
||||
- source.scilab
|
||||
vendor/grammars/smali-sublime/smali.tmLanguage:
|
||||
- source.smali
|
||||
vendor/grammars/smalltalk-tmbundle:
|
||||
- source.smalltalk
|
||||
vendor/grammars/sql.tmbundle:
|
||||
@@ -523,6 +545,8 @@ vendor/grammars/turtle.tmbundle:
|
||||
- source.turtle
|
||||
vendor/grammars/verilog.tmbundle:
|
||||
- source.verilog
|
||||
vendor/grammars/vue-syntax-highlight:
|
||||
- text.html.vue
|
||||
vendor/grammars/x86-assembly-textmate-bundle:
|
||||
- source.asm.x86
|
||||
vendor/grammars/xc.tmbundle/:
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
## Documentation files ##
|
||||
|
||||
- (^|/)CHANGE(S|LOG)?(\.|$)
|
||||
- (^|/)CONTRIBUTING(\.|$)
|
||||
- (^|/)COPYING(\.|$)
|
||||
- (^|/)INSTALL(\.|$)
|
||||
|
||||
@@ -65,11 +65,13 @@ module Linguist
|
||||
generated_net_docfile? ||
|
||||
generated_postscript? ||
|
||||
compiled_cython_file? ||
|
||||
generated_protocol_buffer_go? ||
|
||||
generated_go? ||
|
||||
generated_protocol_buffer? ||
|
||||
generated_apache_thrift? ||
|
||||
generated_jni_header? ||
|
||||
generated_unity3d_meta? ||
|
||||
vcr_cassette?
|
||||
vcr_cassette? ||
|
||||
generated_module? ||
|
||||
generated_unity3d_meta?
|
||||
end
|
||||
|
||||
# Internal: Is the blob an Xcode file?
|
||||
@@ -180,11 +182,11 @@ 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.
|
||||
# from *.feature files, they are not meant to be consumed by humans.
|
||||
# Let's hide them.
|
||||
#
|
||||
# Returns true or false
|
||||
@@ -232,11 +234,11 @@ module Linguist
|
||||
creator.include?("ImageMagick")
|
||||
end
|
||||
|
||||
def generated_protocol_buffer_go?
|
||||
def generated_go?
|
||||
return false unless extname == '.go'
|
||||
return false unless lines.count > 1
|
||||
|
||||
return lines[0].include?("Code generated by protoc-gen-go")
|
||||
return lines[0].include?("Code generated by")
|
||||
end
|
||||
|
||||
# Internal: Is the blob a C++, Java or Python source file generated by the
|
||||
@@ -250,6 +252,16 @@ module Linguist
|
||||
return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
|
||||
end
|
||||
|
||||
# Internal: Is the blob generated by Apache Thrift compiler?
|
||||
#
|
||||
# Returns true or false
|
||||
def generated_apache_thrift?
|
||||
return false unless ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp'].include?(extname)
|
||||
return false unless lines.count > 1
|
||||
|
||||
return lines[0].include?("Autogenerated by Thrift Compiler") || lines[1].include?("Autogenerated by Thrift Compiler")
|
||||
end
|
||||
|
||||
# Internal: Is the blob a C/C++ header generated by the Java JNI tool javah?
|
||||
#
|
||||
# Returns true of false.
|
||||
@@ -313,6 +325,24 @@ module Linguist
|
||||
return lines[0].include?("Generated by Cython")
|
||||
end
|
||||
|
||||
# Internal: Is it a KiCAD or GFortran module file?
|
||||
#
|
||||
# KiCAD module files contain:
|
||||
# PCBNEW-LibModule-V1 yyyy-mm-dd h:mm:ss XM
|
||||
# on the first line.
|
||||
#
|
||||
# GFortran module files contain:
|
||||
# GFORTRAN module version 'x' created from
|
||||
# on the first line.
|
||||
#
|
||||
# Return true of false
|
||||
def generated_module?
|
||||
return false unless extname == '.mod'
|
||||
return false unless lines.count > 1
|
||||
return lines[0].include?("PCBNEW-LibModule-V") ||
|
||||
lines[0].include?("GFORTRAN module version '")
|
||||
end
|
||||
|
||||
# Internal: Is this a metadata file from Unity3D?
|
||||
#
|
||||
# Unity3D Meta files start with:
|
||||
|
||||
@@ -13,11 +13,14 @@ module Linguist
|
||||
# ])
|
||||
#
|
||||
# Returns an Array of languages, or empty if none matched or were inconclusive.
|
||||
def self.call(blob, languages)
|
||||
def self.call(blob, candidates)
|
||||
data = blob.data
|
||||
|
||||
@heuristics.each do |heuristic|
|
||||
return Array(heuristic.call(data)) if heuristic.matches?(languages)
|
||||
if heuristic.matches?(blob.name)
|
||||
languages = Array(heuristic.call(data))
|
||||
return languages if languages.any? || languages.all? { |l| candidates.include?(l) }
|
||||
end
|
||||
end
|
||||
|
||||
[] # No heuristics matched
|
||||
@@ -38,22 +41,22 @@ module Linguist
|
||||
# end
|
||||
# end
|
||||
#
|
||||
def self.disambiguate(*languages, &heuristic)
|
||||
@heuristics << new(languages, &heuristic)
|
||||
def self.disambiguate(*extensions, &heuristic)
|
||||
@heuristics << new(extensions, &heuristic)
|
||||
end
|
||||
|
||||
# Internal: Array of defined heuristics
|
||||
@heuristics = []
|
||||
|
||||
# Internal
|
||||
def initialize(languages, &heuristic)
|
||||
@languages = languages
|
||||
def initialize(extensions, &heuristic)
|
||||
@extensions = extensions
|
||||
@heuristic = heuristic
|
||||
end
|
||||
|
||||
# Internal: Check if this heuristic matches the candidate languages.
|
||||
def matches?(candidates)
|
||||
candidates.any? && candidates.all? { |l| @languages.include?(l.name) }
|
||||
def matches?(filename)
|
||||
@extensions.any? { |ext| filename.downcase.end_with?(ext) }
|
||||
end
|
||||
|
||||
# Internal: Perform the heuristic
|
||||
@@ -64,7 +67,7 @@ module Linguist
|
||||
# Common heuristics
|
||||
ObjectiveCRegex = /^[ \t]*@(interface|class|protocol|property|end|synchronised|selector|implementation)\b/
|
||||
|
||||
disambiguate "BitBake", "BlitzBasic" do |data|
|
||||
disambiguate ".bb" do |data|
|
||||
if /^\s*; /.match(data) || data.include?("End Function")
|
||||
Language["BlitzBasic"]
|
||||
elsif /^\s*(# |include|require)\b/.match(data)
|
||||
@@ -72,7 +75,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "C#", "Smalltalk" do |data|
|
||||
disambiguate ".cs" do |data|
|
||||
if /![\w\s]+methodsFor: /.match(data)
|
||||
Language["Smalltalk"]
|
||||
elsif /^\s*namespace\s*[\w\.]+\s*{/.match(data) || /^\s*\/\//.match(data)
|
||||
@@ -80,7 +83,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Objective-C", "C++", "C" do |data|
|
||||
disambiguate ".h" do |data|
|
||||
if ObjectiveCRegex.match(data)
|
||||
Language["Objective-C"]
|
||||
elsif (/^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/.match(data) ||
|
||||
@@ -89,17 +92,25 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Perl", "Perl6", "Prolog" do |data|
|
||||
if data.include?("use v6")
|
||||
disambiguate ".pl" do |data|
|
||||
if /^(use v6|(my )?class|module)/.match(data)
|
||||
Language["Perl6"]
|
||||
elsif data.match(/use strict|use\s+v?5\./)
|
||||
elsif /use strict|use\s+v?5\./.match(data)
|
||||
Language["Perl"]
|
||||
elsif /^[^#]+:-/.match(data)
|
||||
Language["Prolog"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "ECL", "Prolog" do |data|
|
||||
disambiguate ".pm" do |data|
|
||||
if /^(use v6|(my )?class|module)/.match(data)
|
||||
Language["Perl6"]
|
||||
elsif /use strict|use\s+v?5\./.match(data)
|
||||
Language["Perl"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".ecl" do |data|
|
||||
if /^[^#]+:-/.match(data)
|
||||
Language["Prolog"]
|
||||
elsif data.include?(":=")
|
||||
@@ -107,7 +118,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "IDL", "Prolog", "INI", "QMake" do |data|
|
||||
disambiguate ".pro" do |data|
|
||||
if /^[^#]+:-/.match(data)
|
||||
Language["Prolog"]
|
||||
elsif data.include?("last_client=")
|
||||
@@ -119,7 +130,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "GAP", "Scilab" do |data|
|
||||
disambiguate ".tst" do |data|
|
||||
if (data.include?("gap> "))
|
||||
Language["GAP"]
|
||||
# Heads up - we don't usually write heuristics like this (with no regex match)
|
||||
@@ -128,7 +139,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Common Lisp", "OpenCL", "Cool" do |data|
|
||||
disambiguate ".cl" do |data|
|
||||
if /^\s*\((defun|in-package|defpackage) /i.match(data)
|
||||
Language["Common Lisp"]
|
||||
elsif /^class/x.match(data)
|
||||
@@ -138,7 +149,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Hack", "PHP" do |data|
|
||||
disambiguate ".php" do |data|
|
||||
if data.include?("<?hh")
|
||||
Language["Hack"]
|
||||
elsif /<?[^h]/.match(data)
|
||||
@@ -146,7 +157,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Scala", "SuperCollider" do |data|
|
||||
disambiguate ".sc" do |data|
|
||||
if /\^(this|super)\./.match(data) || /^\s*(\+|\*)\s*\w+\s*{/.match(data) || /^\s*~\w+\s*=\./.match(data)
|
||||
Language["SuperCollider"]
|
||||
elsif /^\s*import (scala|java)\./.match(data) || /^\s*val\s+\w+\s*=/.match(data) || /^\s*class\b/.match(data)
|
||||
@@ -154,7 +165,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "AsciiDoc", "AGS Script", "Public Key" do |data|
|
||||
disambiguate ".asc" do |data|
|
||||
if /^(----[- ]BEGIN|ssh-(rsa|dss)) /.match(data)
|
||||
Language["Public Key"]
|
||||
elsif /^[=-]+(\s|\n)|{{[A-Za-z]/.match(data)
|
||||
@@ -164,7 +175,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "FORTRAN", "Forth", "Formatted" do |data|
|
||||
disambiguate ".for", ".f" do |data|
|
||||
if /^: /.match(data)
|
||||
Language["Forth"]
|
||||
elsif /^([c*][^a-z]| (subroutine|program)\s|\s*!)/i.match(data)
|
||||
@@ -172,7 +183,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "F#", "Forth", "GLSL", "Filterscript" do |data|
|
||||
disambiguate ".fs" do |data|
|
||||
if /^(: |new-device)/.match(data)
|
||||
Language["Forth"]
|
||||
elsif /^\s*(#light|import|let|module|namespace|open|type)/.match(data)
|
||||
@@ -184,7 +195,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Limbo", "M", "MUF", "Mathematica", "Matlab", "Mercury", "Objective-C" do |data|
|
||||
disambiguate ".m" do |data|
|
||||
if ObjectiveCRegex.match(data)
|
||||
Language["Objective-C"]
|
||||
elsif data.include?(":- module")
|
||||
@@ -202,11 +213,11 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Gosu", "JavaScript" do |data|
|
||||
disambiguate ".gs" do |data|
|
||||
Language["Gosu"] if /^uses java\./.match(data)
|
||||
end
|
||||
|
||||
disambiguate "LoomScript", "LiveScript" do |data|
|
||||
disambiguate ".ls" do |data|
|
||||
if /^\s*package\s*[\w\.\/\*\s]*\s*{/.match(data)
|
||||
Language["LoomScript"]
|
||||
else
|
||||
@@ -214,7 +225,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Common Lisp", "NewLisp" do |data|
|
||||
disambiguate ".lsp", ".lisp" do |data|
|
||||
if /^\s*\((defun|in-package|defpackage) /i.match(data)
|
||||
Language["Common Lisp"]
|
||||
elsif /^\s*\(define /.match(data)
|
||||
@@ -222,7 +233,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "TypeScript", "XML" do |data|
|
||||
disambiguate ".ts" do |data|
|
||||
if data.include?("<TS ")
|
||||
Language["XML"]
|
||||
else
|
||||
@@ -230,7 +241,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Frege", "Forth", "Text" do |data|
|
||||
disambiguate ".fr" do |data|
|
||||
if /^(: |also |new-device|previous )/.match(data)
|
||||
Language["Forth"]
|
||||
elsif /^\s*(import|module|package|data|type) /.match(data)
|
||||
@@ -240,7 +251,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "PLSQL", "SQLPL", "PLpgSQL", "SQL" do |data|
|
||||
disambiguate ".sql" do |data|
|
||||
if /^\\i\b|AS \$\$|LANGUAGE '+plpgsql'+/i.match(data) || /SECURITY (DEFINER|INVOKER)/i.match(data) || /BEGIN( WORK| TRANSACTION)?;/i.match(data)
|
||||
#Postgres
|
||||
Language["PLpgSQL"]
|
||||
@@ -256,7 +267,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "D", "DTrace", "Makefile" do |data|
|
||||
disambiguate ".d" do |data|
|
||||
if /^module /.match(data)
|
||||
Language["D"]
|
||||
elsif /^((dtrace:::)?BEGIN|provider |#pragma (D (option|attributes)|ident)\s)/.match(data)
|
||||
@@ -266,7 +277,7 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "OCaml", "Standard ML" do |data|
|
||||
disambiguate ".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)
|
||||
@@ -274,7 +285,23 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "NL", "NewLisp" do |data|
|
||||
disambiguate ".mod" do |data|
|
||||
if data.include?('<!ENTITY ')
|
||||
Language["XML"]
|
||||
elsif /MODULE\s\w+\s*;/i.match(data) || /^\s*END \w+;$/i.match(data)
|
||||
Language["Modula-2"]
|
||||
else
|
||||
[Language["Linux Kernel Module"], Language["AMPL"]]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".ncl" do |data|
|
||||
if data.include?("THE_TITLE")
|
||||
Language["Text"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".nl" do |data|
|
||||
if /^(b|g)[0-9]+ /.match(data)
|
||||
Language["NL"]
|
||||
else
|
||||
@@ -282,12 +309,54 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate "Rust", "RenderScript" do |data|
|
||||
if data.include?("^(use |fn |mod |pub |macro_rules|impl|#!?\[)")
|
||||
disambiguate ".rs" do |data|
|
||||
if /^(use |fn |mod |pub |macro_rules|impl|#!?\[)/.match(data)
|
||||
Language["Rust"]
|
||||
elsif /#include|#pragma\s+(rs|version)|__attribute__/.match(data)
|
||||
Language["RenderScript"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".l" do |data|
|
||||
if /\(def(un|macro)\s/.match(data)
|
||||
Language["Common Lisp"]
|
||||
elsif /^(%[%{}]xs|<.*>)/.match(data)
|
||||
Language["Lex"]
|
||||
elsif /^\.[a-z][a-z](\s|$)/i.match(data)
|
||||
Language["Groff"]
|
||||
elsif /^\((de|class|rel|code|data|must)\s/.match(data)
|
||||
Language["PicoLisp"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".n" do |data|
|
||||
if /^[.']/.match(data)
|
||||
Language["Groff"]
|
||||
elsif /^(module|namespace|using)\s/.match(data)
|
||||
Language["Nemerle"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".ms" do |data|
|
||||
if /^[.'][a-z][a-z](\s|$)/i.match(data)
|
||||
Language["Groff"]
|
||||
elsif /((^|\s)move?[. ])|\.(include|globa?l)\s/.match(data)
|
||||
Language["GAS"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".ch" do |data|
|
||||
if /^\s*#\s*(if|ifdef|ifndef|define|command|xcommand|translate|xtranslate|include|pragma|undef)\b/i.match(data)
|
||||
Language["xBase"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".r" do |data|
|
||||
if /\bRebol\b/i.match(data)
|
||||
Language["Rebol"]
|
||||
elsif data.include?("<-")
|
||||
Language["R"]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -150,7 +150,8 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.find_by_name(name)
|
||||
name && @name_index[name.downcase]
|
||||
return nil if name.to_s.empty?
|
||||
name && (@name_index[name.downcase] || @name_index[name.split(',').first.downcase])
|
||||
end
|
||||
|
||||
# Public: Look up Language by one of its aliases.
|
||||
@@ -164,7 +165,8 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.find_by_alias(name)
|
||||
name && @alias_index[name.downcase]
|
||||
return nil if name.to_s.empty?
|
||||
name && (@alias_index[name.downcase] || @alias_index[name.split(',').first.downcase])
|
||||
end
|
||||
|
||||
# Public: Look up Languages by filename.
|
||||
@@ -240,7 +242,8 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.[](name)
|
||||
name && @index[name.downcase]
|
||||
return nil if name.to_s.empty?
|
||||
name && (@index[name.downcase] || @index[name.split(',').first.downcase])
|
||||
end
|
||||
|
||||
# Public: A List of popular languages
|
||||
|
||||
@@ -49,6 +49,7 @@ AMPL:
|
||||
color: "#E6EFBB"
|
||||
extensions:
|
||||
- .ampl
|
||||
- .mod
|
||||
tm_scope: source.ampl
|
||||
ace_mode: text
|
||||
|
||||
@@ -160,6 +161,7 @@ ApacheConf:
|
||||
- apache
|
||||
extensions:
|
||||
- .apacheconf
|
||||
- .vhost
|
||||
tm_scope: source.apache-config
|
||||
ace_mode: apache_conf
|
||||
|
||||
@@ -224,6 +226,7 @@ Assembly:
|
||||
extensions:
|
||||
- .asm
|
||||
- .a51
|
||||
- .inc
|
||||
- .nasm
|
||||
tm_scope: source.asm.x86
|
||||
ace_mode: assembly_x86
|
||||
@@ -295,9 +298,10 @@ Befunge:
|
||||
|
||||
Bison:
|
||||
type: programming
|
||||
group: Yacc
|
||||
tm_scope: source.bison
|
||||
extensions:
|
||||
- .y
|
||||
- .bison
|
||||
ace_mode: text
|
||||
|
||||
BitBake:
|
||||
@@ -409,6 +413,7 @@ C++:
|
||||
- .hh
|
||||
- .hpp
|
||||
- .hxx
|
||||
- .inc
|
||||
- .inl
|
||||
- .ipp
|
||||
- .tcc
|
||||
@@ -496,6 +501,13 @@ Chapel:
|
||||
- .chpl
|
||||
ace_mode: text
|
||||
|
||||
Charity:
|
||||
type: programming
|
||||
extensions:
|
||||
- .ch
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
ChucK:
|
||||
type: programming
|
||||
extensions:
|
||||
@@ -600,6 +612,7 @@ Common Lisp:
|
||||
- .lisp
|
||||
- .asd
|
||||
- .cl
|
||||
- .l
|
||||
- .lsp
|
||||
- .ny
|
||||
- .podsl
|
||||
@@ -664,7 +677,7 @@ Crystal:
|
||||
extensions:
|
||||
- .cr
|
||||
ace_mode: ruby
|
||||
tm_scope: source.ruby
|
||||
tm_scope: source.crystal
|
||||
interpreters:
|
||||
- crystal
|
||||
|
||||
@@ -1038,6 +1051,7 @@ GAS:
|
||||
group: Assembly
|
||||
extensions:
|
||||
- .s
|
||||
- .ms
|
||||
tm_scope: source.asm.x86
|
||||
ace_mode: assembly_x86
|
||||
|
||||
@@ -1206,12 +1220,26 @@ Groff:
|
||||
extensions:
|
||||
- .man
|
||||
- '.1'
|
||||
- .1in
|
||||
- .1m
|
||||
- .1x
|
||||
- '.2'
|
||||
- '.3'
|
||||
- .3in
|
||||
- .3m
|
||||
- .3qt
|
||||
- .3x
|
||||
- '.4'
|
||||
- '.5'
|
||||
- '.6'
|
||||
- '.7'
|
||||
- '.8'
|
||||
- '.9'
|
||||
- .l
|
||||
- .ms
|
||||
- .n
|
||||
- .rno
|
||||
- .roff
|
||||
tm_scope: text.groff
|
||||
aliases:
|
||||
- nroff
|
||||
@@ -1240,6 +1268,14 @@ Groovy Server Pages:
|
||||
tm_scope: text.html.jsp
|
||||
ace_mode: jsp
|
||||
|
||||
HCL:
|
||||
type: programming
|
||||
extensions:
|
||||
- .hcl
|
||||
- .tf
|
||||
ace_mode: ruby
|
||||
tm_scope: source.ruby
|
||||
|
||||
HTML:
|
||||
type: markup
|
||||
tm_scope: text.html.basic
|
||||
@@ -1251,6 +1287,7 @@ HTML:
|
||||
- .html
|
||||
- .htm
|
||||
- .html.hl
|
||||
- .inc
|
||||
- .st
|
||||
- .xht
|
||||
- .xhtml
|
||||
@@ -1319,7 +1356,7 @@ Handlebars:
|
||||
extensions:
|
||||
- .handlebars
|
||||
- .hbs
|
||||
tm_scope: none
|
||||
tm_scope: text.html.handlebars
|
||||
ace_mode: handlebars
|
||||
|
||||
Harbour:
|
||||
@@ -1327,7 +1364,7 @@ Harbour:
|
||||
color: "#0e60e3"
|
||||
extensions:
|
||||
- .hb
|
||||
tm_scope: none
|
||||
tm_scope: source.harbour
|
||||
ace_mode: text
|
||||
|
||||
Haskell:
|
||||
@@ -1341,7 +1378,7 @@ Haskell:
|
||||
Haxe:
|
||||
type: programming
|
||||
ace_mode: haxe
|
||||
color: "#f7941e"
|
||||
color: "#df7900"
|
||||
extensions:
|
||||
- .hx
|
||||
- .hxsl
|
||||
@@ -1457,6 +1494,14 @@ Isabelle:
|
||||
tm_scope: source.isabelle.theory
|
||||
ace_mode: text
|
||||
|
||||
Isabelle ROOT:
|
||||
type: programming
|
||||
group: Isabelle
|
||||
filenames:
|
||||
- ROOT
|
||||
tm_scope: source.isabelle.root
|
||||
ace_mode: text
|
||||
|
||||
J:
|
||||
type: programming
|
||||
color: "#9EEDFF"
|
||||
@@ -1468,6 +1513,7 @@ J:
|
||||
JFlex:
|
||||
type: programming
|
||||
color: "#DBCA00"
|
||||
group: Lex
|
||||
extensions:
|
||||
- .flex
|
||||
- .jflex
|
||||
@@ -1503,11 +1549,12 @@ JSONLD:
|
||||
tm_scope: source.js
|
||||
|
||||
JSONiq:
|
||||
color: "#40d47e"
|
||||
type: programming
|
||||
ace_mode: jsoniq
|
||||
extensions:
|
||||
- .jq
|
||||
tm_scope: source.xquery
|
||||
tm_scope: source.jq
|
||||
|
||||
Jade:
|
||||
group: HTML
|
||||
@@ -1606,6 +1653,7 @@ KiCad:
|
||||
type: programming
|
||||
extensions:
|
||||
- .sch
|
||||
- .kicad_pcb
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
@@ -1618,7 +1666,7 @@ Kit:
|
||||
|
||||
Kotlin:
|
||||
type: programming
|
||||
color: "#EA4DFA"
|
||||
color: "#F18E33"
|
||||
extensions:
|
||||
- .kt
|
||||
- .ktm
|
||||
@@ -1703,6 +1751,17 @@ Less:
|
||||
tm_scope: source.css.less
|
||||
ace_mode: less
|
||||
|
||||
Lex:
|
||||
type: programming
|
||||
color: "#DBCA00"
|
||||
aliases:
|
||||
- flex
|
||||
extensions:
|
||||
- .l
|
||||
- .lex
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
LilyPond:
|
||||
type: programming
|
||||
extensions:
|
||||
@@ -1728,6 +1787,13 @@ Linker Script:
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
Linux Kernel Module:
|
||||
type: data
|
||||
extensions:
|
||||
- .mod
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
Liquid:
|
||||
type: markup
|
||||
extensions:
|
||||
@@ -1865,7 +1931,9 @@ Makefile:
|
||||
- .mk
|
||||
filenames:
|
||||
- GNUmakefile
|
||||
- Kbuild
|
||||
- Makefile
|
||||
- Makefile.inc
|
||||
- makefile
|
||||
interpreters:
|
||||
- make
|
||||
@@ -1993,6 +2061,13 @@ Modelica:
|
||||
tm_scope: source.modelica
|
||||
ace_mode: text
|
||||
|
||||
Modula-2:
|
||||
type: programming
|
||||
extensions:
|
||||
- .mod
|
||||
tm_scope: source.modula2
|
||||
ace_mode: text
|
||||
|
||||
Module Management System:
|
||||
type: programming
|
||||
extensions:
|
||||
@@ -2032,6 +2107,14 @@ Myghty:
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
NCL:
|
||||
type: programming
|
||||
color: #28431f
|
||||
extensions:
|
||||
- .ncl
|
||||
tm_scope: source.ncl
|
||||
ace_mode: text
|
||||
|
||||
NL:
|
||||
type: data
|
||||
extensions:
|
||||
@@ -2096,6 +2179,9 @@ Nginx:
|
||||
type: markup
|
||||
extensions:
|
||||
- .nginxconf
|
||||
- .vhost
|
||||
filenames:
|
||||
- nginx.conf
|
||||
tm_scope: source.nginx
|
||||
aliases:
|
||||
- nginx configuration file
|
||||
@@ -2322,6 +2408,7 @@ PHP:
|
||||
- .aw
|
||||
- .ctp
|
||||
- .fcgi
|
||||
- .inc
|
||||
- .php3
|
||||
- .php4
|
||||
- .php5
|
||||
@@ -2409,6 +2496,7 @@ Pascal:
|
||||
- .pas
|
||||
- .dfm
|
||||
- .dpr
|
||||
- .inc
|
||||
- .lpr
|
||||
- .pp
|
||||
ace_mode: pascal
|
||||
@@ -2420,6 +2508,7 @@ Perl:
|
||||
color: "#0298c3"
|
||||
extensions:
|
||||
- .pl
|
||||
- .al
|
||||
- .cgi
|
||||
- .fcgi
|
||||
- .perl
|
||||
@@ -2454,6 +2543,16 @@ Perl6:
|
||||
tm_scope: source.perl.6
|
||||
ace_mode: perl
|
||||
|
||||
PicoLisp:
|
||||
type: programming
|
||||
extensions:
|
||||
- .l
|
||||
interpreters:
|
||||
- picolisp
|
||||
- pil
|
||||
tm_scope: source.lisp
|
||||
ace_mode: lisp
|
||||
|
||||
PigLatin:
|
||||
type: programming
|
||||
color: "#fcd7de"
|
||||
@@ -2555,7 +2654,7 @@ Public Key:
|
||||
|
||||
Puppet:
|
||||
type: programming
|
||||
color: "#332A77"
|
||||
color: "#302B6D"
|
||||
extensions:
|
||||
- .pp
|
||||
filenames:
|
||||
@@ -2584,7 +2683,7 @@ PureScript:
|
||||
color: "#1D222D"
|
||||
extensions:
|
||||
- .purs
|
||||
tm_scope: source.haskell
|
||||
tm_scope: source.purescript
|
||||
ace_mode: haskell
|
||||
|
||||
Python:
|
||||
@@ -2631,6 +2730,7 @@ QML:
|
||||
color: "#44a51c"
|
||||
extensions:
|
||||
- .qml
|
||||
- .qbs
|
||||
tm_scope: source.qml
|
||||
ace_mode: text
|
||||
|
||||
@@ -2721,7 +2821,7 @@ Racket:
|
||||
|
||||
Ragel in Ruby Host:
|
||||
type: programming
|
||||
color: "#e17600"
|
||||
color: "#9d5200"
|
||||
extensions:
|
||||
- .rl
|
||||
aliases:
|
||||
@@ -2828,10 +2928,13 @@ Ruby:
|
||||
- ruby
|
||||
- macruby
|
||||
- rake
|
||||
- jruby
|
||||
- rbx
|
||||
filenames:
|
||||
- .pryrc
|
||||
- Appraisals
|
||||
- Berksfile
|
||||
- Brewfile
|
||||
- Buildfile
|
||||
- Deliverfile
|
||||
- Fastfile
|
||||
@@ -2870,6 +2973,25 @@ SCSS:
|
||||
extensions:
|
||||
- .scss
|
||||
|
||||
SMT:
|
||||
type: programming
|
||||
extensions:
|
||||
- .smt2
|
||||
- .smt
|
||||
interpreters:
|
||||
- boolector
|
||||
- cvc4
|
||||
- mathsat5
|
||||
- opensmt
|
||||
- smtinterpol
|
||||
- smt-rat
|
||||
- stp
|
||||
- verit
|
||||
- yices2
|
||||
- z3
|
||||
tm_scope: source.smt
|
||||
ace_mode: text
|
||||
|
||||
SPARQL:
|
||||
type: data
|
||||
tm_scope: source.sparql
|
||||
@@ -2895,6 +3017,7 @@ SQL:
|
||||
- .sql
|
||||
- .cql
|
||||
- .ddl
|
||||
- .inc
|
||||
- .prc
|
||||
- .tab
|
||||
- .udf
|
||||
@@ -3060,8 +3183,16 @@ Slim:
|
||||
color: "#ff8f77"
|
||||
extensions:
|
||||
- .slim
|
||||
tm_scope: text.slim
|
||||
ace_mode: text
|
||||
|
||||
Smali:
|
||||
type: programming
|
||||
extensions:
|
||||
- .smali
|
||||
ace_mode: text
|
||||
tm_scope: source.smali
|
||||
|
||||
Smalltalk:
|
||||
type: programming
|
||||
color: "#596706"
|
||||
@@ -3086,6 +3217,7 @@ SourcePawn:
|
||||
- sourcemod
|
||||
extensions:
|
||||
- .sp
|
||||
- .inc
|
||||
- .sma
|
||||
tm_scope: source.sp
|
||||
ace_mode: text
|
||||
@@ -3230,6 +3362,7 @@ Text:
|
||||
extensions:
|
||||
- .txt
|
||||
- .fr
|
||||
- .ncl
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
@@ -3394,6 +3527,14 @@ Volt:
|
||||
tm_scope: source.d
|
||||
ace_mode: d
|
||||
|
||||
Vue:
|
||||
type: markup
|
||||
color: "#2c3e50"
|
||||
extensions:
|
||||
- .vue
|
||||
tm_scope: text.html.vue
|
||||
ace_mode: html
|
||||
|
||||
Web Ontology Language:
|
||||
type: markup
|
||||
color: "#9cc9dd"
|
||||
@@ -3443,11 +3584,14 @@ XML:
|
||||
- .glade
|
||||
- .gml
|
||||
- .grxml
|
||||
- .iml
|
||||
- .ivy
|
||||
- .jelly
|
||||
- .kml
|
||||
- .launch
|
||||
- .mdpolicy
|
||||
- .mm
|
||||
- .mod
|
||||
- .mxml
|
||||
- .nproj
|
||||
- .nuspec
|
||||
@@ -3503,6 +3647,14 @@ XML:
|
||||
- Web.config
|
||||
- packages.config
|
||||
|
||||
XPages:
|
||||
type: programming
|
||||
extensions:
|
||||
- .xsp-config
|
||||
- .xsp.metadata
|
||||
tm_scope: none
|
||||
ace_mode: xml
|
||||
|
||||
XProc:
|
||||
type: programming
|
||||
extensions:
|
||||
@@ -3521,6 +3673,7 @@ XQuery:
|
||||
- .xqm
|
||||
- .xqy
|
||||
ace_mode: xquery
|
||||
tm_scope: source.xq
|
||||
|
||||
XS:
|
||||
type: programming
|
||||
@@ -3566,9 +3719,20 @@ YAML:
|
||||
- .yml
|
||||
- .reek
|
||||
- .rviz
|
||||
- .syntax
|
||||
- .yaml
|
||||
- .yaml-tmlanguage
|
||||
ace_mode: yaml
|
||||
|
||||
Yacc:
|
||||
type: programming
|
||||
extensions:
|
||||
- .y
|
||||
- .yacc
|
||||
- .yy
|
||||
tm_scope: source.bison
|
||||
ace_mode: text
|
||||
|
||||
Zephir:
|
||||
type: programming
|
||||
color: "#118f9e"
|
||||
@@ -3662,7 +3826,13 @@ wisp:
|
||||
xBase:
|
||||
type: programming
|
||||
color: "#403a40"
|
||||
aliases:
|
||||
- advpl
|
||||
- clipper
|
||||
- foxpro
|
||||
extensions:
|
||||
- .prg
|
||||
tm_scope: none
|
||||
- .ch
|
||||
- .prw
|
||||
tm_scope: source.harbour
|
||||
ace_mode: text
|
||||
|
||||
@@ -150,9 +150,10 @@ module Linguist
|
||||
next if delta.binary
|
||||
|
||||
if [:added, :modified].include? delta.status
|
||||
# Skip submodules
|
||||
# Skip submodules and symlinks
|
||||
mode = delta.new_file[:mode]
|
||||
next if (mode & 040000) != 0
|
||||
mode_format = (mode & 0170000)
|
||||
next if mode_format == 0120000 || mode_format == 040000 || mode_format == 0160000
|
||||
|
||||
blob = Linguist::LazyBlob.new(repository, delta.new_file[:oid], new, mode.to_s(8))
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ module Linguist
|
||||
module Strategy
|
||||
class Modeline
|
||||
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
|
||||
VimModeline = /vim:\s*set.*\s(?:ft|filetype)=(\w+)\s?.*:/i
|
||||
|
||||
# Public: Detects language based on Vim and Emacs modelines
|
||||
#
|
||||
|
||||
@@ -96,7 +96,7 @@ module Linguist
|
||||
end
|
||||
|
||||
# Skip number literals
|
||||
elsif s.scan(/(0x)?\d(\d|\.)*/)
|
||||
elsif s.scan(/(0x\h(\h|\.)*|\d(\d|\.)*)([uU][lL]{0,2}|([eE][-+]\d*)?[fFlL]*)/)
|
||||
|
||||
# SGML style brackets
|
||||
elsif token = s.scan(/<[^\s<>][^<>]*>/)
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
- 3rd[-_]?party/
|
||||
- vendors?/
|
||||
- extern(al)?/
|
||||
- (^|/)[Vv]+endor/
|
||||
|
||||
# Debian packaging
|
||||
- ^debian/
|
||||
@@ -121,7 +122,7 @@
|
||||
- (^|/)Chart\.js$
|
||||
|
||||
# Codemirror
|
||||
- (^|/)[Cc]ode[Mm]irror/(lib|mode|theme|addon|keymap)
|
||||
- (^|/)[Cc]ode[Mm]irror/(lib|mode|theme|addon|keymap|demo)
|
||||
|
||||
# SyntaxHighlighter - http://alexgorbatchev.com/
|
||||
- (^|/)shBrush([^.]*)\.js$
|
||||
@@ -163,12 +164,22 @@
|
||||
|
||||
## Obj-C ##
|
||||
|
||||
# Carthage
|
||||
- ^Carthage/
|
||||
|
||||
# Cocoapods
|
||||
- ^Pods/
|
||||
|
||||
# Sparkle
|
||||
- (^|/)Sparkle/
|
||||
|
||||
# Crashlytics
|
||||
- Crashlytics.framework/
|
||||
|
||||
# Fabric
|
||||
- Fabric.framework/
|
||||
|
||||
|
||||
## Groovy ##
|
||||
|
||||
# Gradle
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Linguist
|
||||
VERSION = "4.5.5"
|
||||
VERSION = "4.5.13"
|
||||
end
|
||||
|
||||
58
samples/AMPL/CT2.mod
Normal file
58
samples/AMPL/CT2.mod
Normal file
@@ -0,0 +1,58 @@
|
||||
param num_beams; # number of beams
|
||||
|
||||
param num_rows >= 1, integer; # number of rows
|
||||
param num_cols >= 1, integer; # number of columns
|
||||
|
||||
set BEAMS := 1 .. num_beams; # set of beams
|
||||
|
||||
set ROWS := 1 .. num_rows; # set of rows
|
||||
set COLUMNS := 1 .. num_cols; # set of columns
|
||||
|
||||
# values for entries of each beam
|
||||
param beam_values {BEAMS, ROWS, COLUMNS} >= 0;
|
||||
|
||||
# values of tumor
|
||||
param tumor_values {ROWS, COLUMNS} >= 0;
|
||||
|
||||
# values of critical area
|
||||
param critical_values {ROWS, COLUMNS} >= 0;
|
||||
|
||||
# critical maximum dosage requirement
|
||||
param critical_max;
|
||||
|
||||
# tumor minimum dosage requirement
|
||||
param tumor_min;
|
||||
|
||||
# dosage scalar of each beam
|
||||
var X {i in BEAMS} >= 0;
|
||||
|
||||
|
||||
# define the tumor area which includes the locations where tumor exists
|
||||
set tumor_area := {k in ROWS, h in COLUMNS: tumor_values[k,h] > 0};
|
||||
|
||||
# define critical area
|
||||
set critical_area := {k in ROWS, h in COLUMNS: critical_values[k,h] > 0};
|
||||
|
||||
var S {(k,h) in tumor_area} >= 0;
|
||||
var T {(k,h) in critical_area} >= 0;
|
||||
|
||||
# maximize total dosage in tumor area
|
||||
maximize total_tumor_dosage: sum {i in BEAMS} sum {(k,h) in tumor_area} X[i] * beam_values[i,k,h];
|
||||
|
||||
# minimize total dosage in critical area
|
||||
minimize total_critical_dosage: sum {i in BEAMS} sum {(k,h) in critical_area} X[i] * beam_values[i,k,h];
|
||||
|
||||
# minimize total tumor slack
|
||||
minimize total_tumor_slack: sum {(k,h) in tumor_area} S[k,h];
|
||||
|
||||
# minimize total critical area slack
|
||||
minimize total_critical_slack: sum {(k,h) in critical_area} T[k,h];
|
||||
|
||||
# total dosage at each tumor location [k,h] should be >= min tumor dosage with slack variable
|
||||
subject to tumor_limit {(k,h) in tumor_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == tumor_min - S[k,h];
|
||||
|
||||
# total dosage at each critical location [k,h] should be = max critical dosage with slack variable
|
||||
subject to critical_limit {(k,h) in critical_area} : sum {i in BEAMS} X[i] * beam_values[i,k,h] == critical_max + T[k,h];
|
||||
|
||||
|
||||
|
||||
17
samples/ApacheConf/apache.vhost
Normal file
17
samples/ApacheConf/apache.vhost
Normal file
@@ -0,0 +1,17 @@
|
||||
#######################
|
||||
# HOSTNAME
|
||||
######################
|
||||
|
||||
<VirtualHost 127.0.0.1:PORT>
|
||||
ServerAdmin patrick@heysparkbox.com
|
||||
DocumentRoot "/var/www/HOSTNAME"
|
||||
ServerName HOSTNAME
|
||||
|
||||
<Directory "/var/www/HOSTNAME">
|
||||
Options Indexes MultiViews FollowSymLinks
|
||||
AllowOverride All
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
DirectoryIndex index.php
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
245
samples/Assembly/fp_sqr32_160_comba.inc
Normal file
245
samples/Assembly/fp_sqr32_160_comba.inc
Normal file
@@ -0,0 +1,245 @@
|
||||
|
||||
push r2
|
||||
dint
|
||||
nop
|
||||
bis #MPYDLYWRTEN,&MPY32CTL0
|
||||
bic #MPYDLY32,&MPY32CTL0
|
||||
mov #SUMEXT,r13
|
||||
clr r12
|
||||
|
||||
mov @r15+,r4
|
||||
mov @r15+,r5
|
||||
|
||||
mov @r15+,r6
|
||||
mov @r15+,r7
|
||||
|
||||
mov @r15+,r8
|
||||
mov @r15+,r9
|
||||
|
||||
mov @r15+,r10
|
||||
mov @r15+,r11
|
||||
|
||||
sub #2*8,r15
|
||||
|
||||
/* SELF_STEP_FIRST */
|
||||
mov r4,&MPY32L
|
||||
mov r5,&MPY32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*0(r14)
|
||||
mov &RES1,2*(0+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*2(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(2+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r6,&OP2L
|
||||
mov r7,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*4(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(4+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*6(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(6+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov 2*8(r15),&OP2L
|
||||
mov 2*9(r15),&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov 2*8(r15),&OP2L
|
||||
mov 2*9(r15),&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
add @r13,r12
|
||||
mov r8,&OP2L
|
||||
mov r9,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*8(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(8+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
mov 2*8(r15),r4
|
||||
mov 2*(8+1)(r15),r5
|
||||
|
||||
/* STEP_1 */
|
||||
mov r6,&MAC32L
|
||||
mov r7,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* STEP_2MORE */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*10(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(10+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r8,&MAC32L
|
||||
mov r9,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* SELF_STEP */
|
||||
mov r10,&MAC32L
|
||||
mov r11,&MAC32H
|
||||
add @r13,r12
|
||||
mov r10,&OP2L
|
||||
mov r11,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*12(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(12+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* STEP_1 */
|
||||
mov r10,&MAC32L
|
||||
mov r11,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
add &SUMEXT,r12
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*14(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(14+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* SELF_STEP_1 */
|
||||
mov r4,&MAC32L
|
||||
mov r5,&MAC32H
|
||||
mov r4,&OP2L
|
||||
mov r5,&OP2H
|
||||
|
||||
/* COLUMN_END */
|
||||
mov &RES0,2*16(r14)
|
||||
add @r13,r12
|
||||
mov &RES1,2*(16+1)(r14)
|
||||
mov &RES2,&RES0
|
||||
mov &RES3,&RES1
|
||||
mov r12,&RES2
|
||||
clr &RES3
|
||||
clr r12
|
||||
|
||||
/* END */
|
||||
mov &RES0,2*18(r14)
|
||||
mov &RES1,2*(18+1)(r14)
|
||||
pop r2
|
||||
eint
|
||||
170
samples/Assembly/lib.inc
Normal file
170
samples/Assembly/lib.inc
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示 AL 中的数字
|
||||
; ------------------------------------------------------------------------
|
||||
DispAL:
|
||||
push ecx
|
||||
push edx
|
||||
push edi
|
||||
|
||||
mov edi, [dwDispPos]
|
||||
|
||||
mov ah, 0Fh ; 0000b: 黑底 1111b: 白字
|
||||
mov dl, al
|
||||
shr al, 4
|
||||
mov ecx, 2
|
||||
.begin:
|
||||
and al, 01111b
|
||||
cmp al, 9
|
||||
ja .1
|
||||
add al, '0'
|
||||
jmp .2
|
||||
.1:
|
||||
sub al, 0Ah
|
||||
add al, 'A'
|
||||
.2:
|
||||
mov [gs:edi], ax
|
||||
add edi, 2
|
||||
|
||||
mov al, dl
|
||||
loop .begin
|
||||
;add edi, 2
|
||||
|
||||
mov [dwDispPos], edi
|
||||
|
||||
pop edi
|
||||
pop edx
|
||||
pop ecx
|
||||
|
||||
ret
|
||||
; DispAL 结束-------------------------------------------------------------
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示一个整形数
|
||||
; ------------------------------------------------------------------------
|
||||
DispInt:
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 24
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 16
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
shr eax, 8
|
||||
call DispAL
|
||||
|
||||
mov eax, [esp + 4]
|
||||
call DispAL
|
||||
|
||||
mov ah, 07h ; 0000b: 黑底 0111b: 灰字
|
||||
mov al, 'h'
|
||||
push edi
|
||||
mov edi, [dwDispPos]
|
||||
mov [gs:edi], ax
|
||||
add edi, 4
|
||||
mov [dwDispPos], edi
|
||||
pop edi
|
||||
|
||||
ret
|
||||
; DispInt 结束------------------------------------------------------------
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 显示一个字符串
|
||||
; ------------------------------------------------------------------------
|
||||
DispStr:
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
|
||||
mov esi, [ebp + 8] ; pszInfo
|
||||
mov edi, [dwDispPos]
|
||||
mov ah, 0Fh
|
||||
.1:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .2
|
||||
cmp al, 0Ah ; 是回车吗?
|
||||
jnz .3
|
||||
push eax
|
||||
mov eax, edi
|
||||
mov bl, 160
|
||||
div bl
|
||||
and eax, 0FFh
|
||||
inc eax
|
||||
mov bl, 160
|
||||
mul bl
|
||||
mov edi, eax
|
||||
pop eax
|
||||
jmp .1
|
||||
.3:
|
||||
mov [gs:edi], ax
|
||||
add edi, 2
|
||||
jmp .1
|
||||
|
||||
.2:
|
||||
mov [dwDispPos], edi
|
||||
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
; DispStr 结束------------------------------------------------------------
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 换行
|
||||
; ------------------------------------------------------------------------
|
||||
DispReturn:
|
||||
push szReturn
|
||||
call DispStr ;printf("\n");
|
||||
add esp, 4
|
||||
|
||||
ret
|
||||
; DispReturn 结束---------------------------------------------------------
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; 内存拷贝,仿 memcpy
|
||||
; ------------------------------------------------------------------------
|
||||
; void* MemCpy(void* es:pDest, void* ds:pSrc, int iSize);
|
||||
; ------------------------------------------------------------------------
|
||||
MemCpy:
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
|
||||
push esi
|
||||
push edi
|
||||
push ecx
|
||||
|
||||
mov edi, [ebp + 8] ; Destination
|
||||
mov esi, [ebp + 12] ; Source
|
||||
mov ecx, [ebp + 16] ; Counter
|
||||
.1:
|
||||
cmp ecx, 0 ; 判断计数器
|
||||
jz .2 ; 计数器为零时跳出
|
||||
|
||||
mov al, [ds:esi] ; ┓
|
||||
inc esi ; ┃
|
||||
; ┣ 逐字节移动
|
||||
mov byte [es:edi], al ; ┃
|
||||
inc edi ; ┛
|
||||
|
||||
dec ecx ; 计数器减一
|
||||
jmp .1 ; 循环
|
||||
.2:
|
||||
mov eax, [ebp + 8] ; 返回值
|
||||
|
||||
pop ecx
|
||||
pop edi
|
||||
pop esi
|
||||
mov esp, ebp
|
||||
pop ebp
|
||||
|
||||
ret ; 函数结束,返回
|
||||
; MemCpy 结束-------------------------------------------------------------
|
||||
|
||||
321
samples/Assembly/macros.inc
Normal file
321
samples/Assembly/macros.inc
Normal file
@@ -0,0 +1,321 @@
|
||||
BLARGG_MACROS_INCLUDED = 1
|
||||
|
||||
; Allows extra error checking with modified version
|
||||
; of ca65. Otherwise acts like a constant of 0.
|
||||
ADDR = 0
|
||||
|
||||
; Switches to Segment and places Line there.
|
||||
; Line can be an .align directive, .res, .byte, etc.
|
||||
; Examples:
|
||||
; seg_data BSS, .align 256
|
||||
; seg_data RODATA, {message: .byte "Test",0}
|
||||
.macro seg_data Segment, Line
|
||||
.pushseg
|
||||
.segment .string(Segment)
|
||||
Line
|
||||
.popseg
|
||||
.endmacro
|
||||
|
||||
; Reserves Size bytes in Segment for Name.
|
||||
; If Size is omitted, reserves one byte.
|
||||
.macro seg_res Segment, Name, Size
|
||||
.ifblank Size
|
||||
seg_data Segment, Name: .res 1
|
||||
.else
|
||||
seg_data Segment, Name: .res Size
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Shortcuts for zeropage, bss, and stack
|
||||
.define zp_res seg_res ZEROPAGE,
|
||||
.define nv_res seg_res NVRAM,
|
||||
.define bss_res seg_res BSS,
|
||||
.define sp_res seg_res STACK,
|
||||
.define zp_byte zp_res
|
||||
|
||||
; Copies byte from Src to Addr. If Src begins with #,
|
||||
; it sets Addr to the immediate value.
|
||||
; Out: A = byte copied
|
||||
; Preserved: X, Y
|
||||
.macro mov Addr, Src
|
||||
lda Src
|
||||
sta Addr
|
||||
.endmacro
|
||||
|
||||
; Copies word from Src to Addr. If Src begins with #,
|
||||
; it sets Addr the immediate value.
|
||||
; Out: A = high byte of word
|
||||
; Preserved: X, Y
|
||||
.macro movw Addr, Src
|
||||
.if .match( .left( 1, {Src} ), # )
|
||||
lda #<(.right( .tcount( {Src} )-1, {Src} ))
|
||||
sta Addr
|
||||
lda #>(.right( .tcount( {Src} )-1, {Src} ))
|
||||
sta 1+(Addr)
|
||||
.else
|
||||
lda Src
|
||||
sta Addr
|
||||
lda 1+(Src)
|
||||
sta 1+(Addr)
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Increments 16-bit value at Addr.
|
||||
; Out: EQ/NE based on resulting 16-bit value
|
||||
; Preserved: A, X, Y
|
||||
.macro incw Addr
|
||||
.local @Skip
|
||||
inc Addr
|
||||
bne @Skip
|
||||
inc 1+(Addr)
|
||||
@Skip:
|
||||
.endmacro
|
||||
|
||||
; Adds Src to word at Addr.
|
||||
; Out: A = high byte of result, carry set appropriately
|
||||
; Preserved: X, Y
|
||||
.macro addw Addr, Src
|
||||
.if .match( .left( 1, {Src} ), # )
|
||||
addw_ Addr,(.right( .tcount( {Src} )-1, {Src} ))
|
||||
.else
|
||||
lda Addr
|
||||
clc
|
||||
adc Src
|
||||
sta Addr
|
||||
|
||||
lda 1+(Addr)
|
||||
adc 1+(Src)
|
||||
sta 1+(Addr)
|
||||
.endif
|
||||
.endmacro
|
||||
.macro addw_ Addr, Imm
|
||||
lda Addr
|
||||
clc
|
||||
adc #<Imm
|
||||
sta Addr
|
||||
|
||||
;.if (Imm >> 8) <> 0
|
||||
lda 1+(Addr)
|
||||
adc #>Imm
|
||||
sta 1+(Addr)
|
||||
;.else
|
||||
; .local @Skip
|
||||
; bcc @Skip
|
||||
; inc 1+(Addr)
|
||||
;@Skip:
|
||||
;.endif
|
||||
.endmacro
|
||||
|
||||
; Splits list of words into tables of low and high bytes
|
||||
; Example: split_words foo, {$1234, $5678}
|
||||
; expands to:
|
||||
; foo_l: $34, $78
|
||||
; foo_h: $12, $56
|
||||
; foo_count = 2
|
||||
.macro split_words Label, Words
|
||||
.ident (.concat (.string(Label), "_l")): .lobytes Words
|
||||
.ident (.concat (.string(Label), "_h")): .hibytes Words
|
||||
.ident (.concat (.string(Label), "_count")) = * - .ident (.concat (.string(Label), "_h"))
|
||||
.endmacro
|
||||
|
||||
.macro SELECT Bool, True, False, Extra
|
||||
.ifndef Bool
|
||||
False Extra
|
||||
.elseif Bool <> 0
|
||||
True Extra
|
||||
.else
|
||||
False Extra
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
.macro DEFAULT Name, Value
|
||||
.ifndef Name
|
||||
Name = Value
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
.ifp02
|
||||
; 6502 doesn't define these alternate names
|
||||
.define blt bcc
|
||||
.define bge bcs
|
||||
.endif
|
||||
.define jlt jcc
|
||||
.define jge jcs
|
||||
|
||||
; Jxx Target = Bxx Target, except it can go farther than
|
||||
; 128 bytes. Implemented via branch around a JMP.
|
||||
|
||||
; Don't use ca65's longbranch, because they fail for @labels
|
||||
;.macpack longbranch
|
||||
|
||||
.macro jeq Target
|
||||
bne *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jne Target
|
||||
beq *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jmi Target
|
||||
bpl *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jpl Target
|
||||
bmi *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jcs Target
|
||||
bcc *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jcc Target
|
||||
bcs *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jvs Target
|
||||
bvc *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
.macro jvc Target
|
||||
bvs *+5
|
||||
jmp Target
|
||||
.endmacro
|
||||
|
||||
|
||||
; Passes constant data to routine in addr
|
||||
; Preserved: A, X, Y
|
||||
.macro jsr_with_addr routine,data
|
||||
.local Addr
|
||||
pha
|
||||
lda #<Addr
|
||||
sta addr
|
||||
lda #>Addr
|
||||
sta addr+1
|
||||
pla
|
||||
jsr routine
|
||||
seg_data RODATA,{Addr: data}
|
||||
.endmacro
|
||||
|
||||
; Calls routine multiple times, with A having the
|
||||
; value 'start' the first time, 'start+step' the
|
||||
; second time, up to 'end' for the last time.
|
||||
.macro for_loop routine,start,end,step
|
||||
.local @for_loop
|
||||
lda #start
|
||||
@for_loop:
|
||||
pha
|
||||
jsr routine
|
||||
pla
|
||||
clc
|
||||
adc #step
|
||||
cmp #<((end)+(step))
|
||||
bne @for_loop
|
||||
.endmacro
|
||||
|
||||
; Calls routine n times. The value of A in the routine
|
||||
; counts from 0 to n-1.
|
||||
.macro loop_n_times routine,n
|
||||
for_loop routine,0,n-1,+1
|
||||
.endmacro
|
||||
|
||||
; Same as for_loop, except uses 16-bit value in YX.
|
||||
; -256 <= step <= 255
|
||||
.macro for_loop16 routine,start,end,step
|
||||
.if (step) < -256 || (step) > 255
|
||||
.error "Step must be within -256 to 255"
|
||||
.endif
|
||||
.local @for_loop_skip
|
||||
.local @for_loop
|
||||
ldy #>(start)
|
||||
lda #<(start)
|
||||
@for_loop:
|
||||
tax
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
jsr routine
|
||||
pla
|
||||
tay
|
||||
pla
|
||||
clc
|
||||
adc #step
|
||||
.if (step) > 0
|
||||
bcc @for_loop_skip
|
||||
iny
|
||||
.else
|
||||
bcs @for_loop_skip
|
||||
dey
|
||||
.endif
|
||||
@for_loop_skip:
|
||||
cmp #<((end)+(step))
|
||||
bne @for_loop
|
||||
cpy #>((end)+(step))
|
||||
bne @for_loop
|
||||
.endmacro
|
||||
|
||||
; Stores byte at addr
|
||||
; Preserved: X, Y
|
||||
.macro setb addr, byte
|
||||
lda #byte
|
||||
sta addr
|
||||
.endmacro
|
||||
|
||||
; Stores word at addr
|
||||
; Preserved: X, Y
|
||||
.macro setw addr, word
|
||||
lda #<(word)
|
||||
sta addr
|
||||
lda #>(word)
|
||||
sta addr+1
|
||||
.endmacro
|
||||
|
||||
; Loads XY with 16-bit immediate or value at address
|
||||
.macro ldxy Arg
|
||||
.if .match( .left( 1, {Arg} ), # )
|
||||
ldy #<(.right( .tcount( {Arg} )-1, {Arg} ))
|
||||
ldx #>(.right( .tcount( {Arg} )-1, {Arg} ))
|
||||
.else
|
||||
ldy (Arg)
|
||||
ldx (Arg)+1
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
; Increments XY as 16-bit register, in CONSTANT time.
|
||||
; Z flag set based on entire result.
|
||||
; Preserved: A
|
||||
; Time: 7 clocks
|
||||
.macro inxy
|
||||
iny ; 2
|
||||
beq *+4 ; 3
|
||||
; -1
|
||||
bne *+3 ; 3
|
||||
; -1
|
||||
inx ; 2
|
||||
.endmacro
|
||||
|
||||
; Negates A and adds it to operand
|
||||
.macro subaf Operand
|
||||
eor #$FF
|
||||
sec
|
||||
adc Operand
|
||||
.endmacro
|
||||
|
||||
; Initializes CPU registers to reasonable values
|
||||
; Preserved: A, Y
|
||||
.macro init_cpu_regs
|
||||
sei
|
||||
cld ; unnecessary on NES, but might help on clone
|
||||
ldx #$FF
|
||||
txs
|
||||
.ifndef BUILD_NSF
|
||||
inx
|
||||
stx PPUCTRL
|
||||
.endif
|
||||
.endmacro
|
||||
57
samples/C++/ClasspathVMSystemProperties.inc
Normal file
57
samples/C++/ClasspathVMSystemProperties.inc
Normal file
@@ -0,0 +1,57 @@
|
||||
//===- ClasspathVMSystem/Properties.cpp -----------------------------------===//
|
||||
//===--------------------- GNU classpath gnu/classpath/VMSystemProperties -===//
|
||||
//
|
||||
// The VMKit project
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Classpath.h"
|
||||
#include "JavaArray.h"
|
||||
#include "JavaClass.h"
|
||||
#include "JavaObject.h"
|
||||
#include "JavaThread.h"
|
||||
#include "JavaUpcalls.h"
|
||||
#include "Jnjvm.h"
|
||||
|
||||
#include "SetProperties.inc"
|
||||
|
||||
using namespace j3;
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
||||
JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
|
||||
#ifdef NATIVE_JNI
|
||||
JNIEnv *env,
|
||||
jclass clazz,
|
||||
#endif
|
||||
JavaObject* prop) {
|
||||
|
||||
llvm_gcroot(prop, 0);
|
||||
|
||||
BEGIN_NATIVE_EXCEPTION(0)
|
||||
|
||||
setProperties(prop);
|
||||
|
||||
END_NATIVE_EXCEPTION
|
||||
}
|
||||
|
||||
extern "C" void Java_gnu_classpath_VMSystemProperties_postInit__Ljava_util_Properties_2(JavaObject* prop) {
|
||||
|
||||
llvm_gcroot(prop, 0);
|
||||
|
||||
BEGIN_NATIVE_EXCEPTION(0)
|
||||
|
||||
setCommandLineProperties(prop);
|
||||
|
||||
END_NATIVE_EXCEPTION
|
||||
}
|
||||
|
||||
}
|
||||
2764
samples/C++/initClasses.inc
Normal file
2764
samples/C++/initClasses.inc
Normal file
File diff suppressed because it is too large
Load Diff
34
samples/C++/instances.inc
Normal file
34
samples/C++/instances.inc
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "QPBO.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable: 4661)
|
||||
#endif
|
||||
|
||||
// Instantiations
|
||||
|
||||
template class QPBO<int>;
|
||||
template class QPBO<float>;
|
||||
template class QPBO<double>;
|
||||
|
||||
template <>
|
||||
inline void QPBO<int>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "int";
|
||||
type_format = "d";
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void QPBO<float>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "float";
|
||||
type_format = "f";
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void QPBO<double>::get_type_information(char*& type_name, char*& type_format)
|
||||
{
|
||||
type_name = "double";
|
||||
type_format = "Lf";
|
||||
}
|
||||
|
||||
|
||||
6
samples/Charity/example.ch
Normal file
6
samples/Charity/example.ch
Normal file
@@ -0,0 +1,6 @@
|
||||
%
|
||||
% Some very badly written Charity
|
||||
%
|
||||
|
||||
data LA(A) -> D = ss: A -> D
|
||||
| ff: -> D.
|
||||
164
samples/Common Lisp/array.l
Normal file
164
samples/Common Lisp/array.l
Normal file
@@ -0,0 +1,164 @@
|
||||
;;; -*- Mode: Lisp; Package: LISP -*-
|
||||
;;;
|
||||
;;; This file is part of xyzzy.
|
||||
;;;
|
||||
|
||||
(provide "array")
|
||||
|
||||
(in-package "lisp")
|
||||
|
||||
(export '(make-vector make-array vector array-dimensions array-in-bounds-p
|
||||
upgraded-array-element-type adjust-array))
|
||||
|
||||
(defun upgraded-array-element-type (type)
|
||||
(cond ((or (eq type 't)
|
||||
(null type))
|
||||
't)
|
||||
((member type '(character base-character standard-char
|
||||
extended-character) :test #'eq)
|
||||
'character)
|
||||
(t
|
||||
(setq type (car (si:canonicalize-type type)))
|
||||
(cond ((or (eq type 't)
|
||||
(null type))
|
||||
't)
|
||||
((member type '(character base-character standard-char
|
||||
extended-character) :test #'eq)
|
||||
'character)
|
||||
(t 't)))))
|
||||
|
||||
(defun check-array-initialize-option (ies-p ics-p displaced-to)
|
||||
(let ((x 0))
|
||||
(and ies-p (incf x))
|
||||
(and ics-p (incf x))
|
||||
(and displaced-to (incf x))
|
||||
(when (> x 1)
|
||||
(error ":initial-element, :initial-contents, :displaced-to"))))
|
||||
|
||||
(defun make-vector (length &key
|
||||
(element-type t)
|
||||
(initial-element nil ies-p)
|
||||
(initial-contents nil ics-p)
|
||||
fill-pointer
|
||||
adjustable
|
||||
displaced-to
|
||||
(displaced-index-offset 0))
|
||||
(setq element-type (upgraded-array-element-type element-type))
|
||||
(check-array-initialize-option ies-p ics-p displaced-to)
|
||||
(let ((vector (si:*make-vector length element-type initial-element adjustable
|
||||
fill-pointer displaced-to displaced-index-offset)))
|
||||
(when ics-p
|
||||
(si:*copy-into-seq vector initial-contents))
|
||||
vector))
|
||||
|
||||
(defun make-array (dimensions &rest rest
|
||||
&key
|
||||
(element-type t)
|
||||
(initial-element nil ies-p)
|
||||
(initial-contents nil ics-p)
|
||||
fill-pointer
|
||||
adjustable
|
||||
displaced-to
|
||||
(displaced-index-offset 0))
|
||||
(cond ((integerp dimensions)
|
||||
(apply #'make-vector dimensions rest))
|
||||
((= (length dimensions) 1)
|
||||
(apply #'make-vector (car dimensions) rest))
|
||||
(t
|
||||
(setq element-type (upgraded-array-element-type element-type))
|
||||
(check-array-initialize-option ies-p ics-p displaced-to)
|
||||
(when fill-pointer
|
||||
(error ":fill-pointer"))
|
||||
(let ((array (si:*make-array dimensions element-type
|
||||
initial-element adjustable
|
||||
displaced-to displaced-index-offset)))
|
||||
(when ics-p
|
||||
(let ((dims (make-list (array-rank array)
|
||||
:initial-element 0))
|
||||
(stack (list initial-contents))
|
||||
(rank (1- (array-rank array))))
|
||||
(dolist (x dims)
|
||||
(push (elt (car stack) 0) stack))
|
||||
(dotimes (i (array-total-size array))
|
||||
(setf (row-major-aref array i) (car stack))
|
||||
(do ((x dims (cdr x))
|
||||
(j rank (1- j)))
|
||||
((null x))
|
||||
(pop stack)
|
||||
(incf (car x))
|
||||
(when (< (car x) (array-dimension array j))
|
||||
(do ((r (- rank j) (1- r)))
|
||||
((< r 0))
|
||||
(push (elt (car stack) (nth r dims)) stack))
|
||||
(return))
|
||||
(setf (car x) 0)))))
|
||||
array))))
|
||||
|
||||
(defun vector (&rest list)
|
||||
(make-vector (length list) :element-type t :initial-contents list))
|
||||
|
||||
(defun array-dimensions (array)
|
||||
(do ((i (1- (array-rank array)) (1- i))
|
||||
(dims '()))
|
||||
((minusp i) dims)
|
||||
(push (array-dimension array i) dims)))
|
||||
|
||||
(defun array-in-bounds-p (array &rest subscripts)
|
||||
(let ((r (array-rank array)))
|
||||
(when (/= r (length subscripts))
|
||||
(error "subscripts: ~S" subscripts))
|
||||
(do ((i 0 (1+ i))
|
||||
(s subscripts (cdr s)))
|
||||
((= i r) t)
|
||||
(unless (<= 0 (car s) (1- (array-dimension array i)))
|
||||
(return nil)))))
|
||||
|
||||
(defun adjust-array (old-array
|
||||
dimensions
|
||||
&rest rest
|
||||
&key
|
||||
(element-type nil ets-p)
|
||||
initial-element
|
||||
(initial-contents nil ics-p)
|
||||
(fill-pointer nil fps-p)
|
||||
displaced-to
|
||||
displaced-index-offset)
|
||||
(when (/= (length dimensions) (array-rank old-array))
|
||||
(error "?"))
|
||||
(unless ets-p
|
||||
(push (array-element-type old-array) rest)
|
||||
(push :element-type rest))
|
||||
(when (adjustable-array-p old-array)
|
||||
(push t rest)
|
||||
(push :adjustable rest))
|
||||
(cond (fps-p
|
||||
(unless (array-has-fill-pointer-p old-array)
|
||||
(error "?")))
|
||||
(t
|
||||
(when (array-has-fill-pointer-p old-array)
|
||||
(push (fill-pointer old-array) rest)
|
||||
(push :fill-pointer rest))))
|
||||
(when (eq old-array displaced-to)
|
||||
(error "?"))
|
||||
(let ((new-array (apply #'make-array dimensions rest)))
|
||||
(or ics-p displaced-to
|
||||
(copy-array-partially old-array new-array))
|
||||
(cond ((adjustable-array-p old-array)
|
||||
(si:*replace-array old-array new-array)
|
||||
old-array)
|
||||
(t
|
||||
new-array))))
|
||||
|
||||
(defun copy-array-partially (src dst)
|
||||
(let* ((dims (mapcar #'min (array-dimensions src) (array-dimensions dst)))
|
||||
(r (array-rank src))
|
||||
(s (make-list r :initial-element 0)))
|
||||
(setq r (1- r))
|
||||
(dotimes (x (apply #'* dims))
|
||||
(setf (apply #'aref dst s) (apply #'aref src s))
|
||||
(do ((i r (1- i)))
|
||||
((minusp i))
|
||||
(incf (nth i s))
|
||||
(when (< (nth i s) (nth i dims))
|
||||
(return))
|
||||
(setf (nth i s) 0)))))
|
||||
1201
samples/Common Lisp/common.l
Normal file
1201
samples/Common Lisp/common.l
Normal file
File diff suppressed because it is too large
Load Diff
25912
samples/G-code/lm.g
25912
samples/G-code/lm.g
File diff suppressed because it is too large
Load Diff
29735
samples/G-code/rm.g
29735
samples/G-code/rm.g
File diff suppressed because it is too large
Load Diff
91
samples/GAS/hello.ms
Normal file
91
samples/GAS/hello.ms
Normal file
@@ -0,0 +1,91 @@
|
||||
# output(): Hello, world.\n
|
||||
# mach(): all
|
||||
|
||||
# Emit hello world while switching back and forth between arm/thumb.
|
||||
# ??? Unfinished
|
||||
|
||||
.macro invalid
|
||||
# This is "undefined" but it's not properly decoded yet.
|
||||
.word 0x07ffffff
|
||||
# This is stc which isn't recognized yet.
|
||||
stc 0,cr0,[r0]
|
||||
.endm
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
# Run some simple insns to confirm the engine is at least working.
|
||||
nop
|
||||
|
||||
# Skip over output text.
|
||||
|
||||
bl skip_output
|
||||
|
||||
hello_text:
|
||||
.asciz "Hello, world.\n"
|
||||
|
||||
.p2align 2
|
||||
skip_output:
|
||||
|
||||
# Prime loop.
|
||||
|
||||
mov r4, r14
|
||||
|
||||
output_next:
|
||||
|
||||
# Switch arm->thumb to output next chacter.
|
||||
# At this point r4 must point to the next character to output.
|
||||
|
||||
adr r0, into_thumb + 1
|
||||
bx r0
|
||||
|
||||
into_thumb:
|
||||
.thumb
|
||||
|
||||
# Output a character.
|
||||
|
||||
mov r0,#3 @ writec angel call
|
||||
mov r1,r4
|
||||
swi 0xab @ ??? Confirm number.
|
||||
|
||||
# Switch thumb->arm.
|
||||
|
||||
adr r5, back_to_arm
|
||||
bx r5
|
||||
|
||||
.p2align 2
|
||||
back_to_arm:
|
||||
.arm
|
||||
|
||||
# Load next character, see if done.
|
||||
|
||||
add r4,r4,#1
|
||||
sub r3,r3,r3
|
||||
ldrb r5,[r4,r3]
|
||||
teq r5,#0
|
||||
beq done
|
||||
|
||||
# Output a character (in arm mode).
|
||||
|
||||
mov r0,#3
|
||||
mov r1,r4
|
||||
swi #0x123456
|
||||
|
||||
# Load next character, see if done.
|
||||
|
||||
add r4,r4,#1
|
||||
sub r3,r3,r3
|
||||
ldrb r5,[r4,r3]
|
||||
teq r5,#0
|
||||
bne output_next
|
||||
|
||||
done:
|
||||
mov r0,#0x18
|
||||
ldr r1,exit_code
|
||||
swi #0x123456
|
||||
|
||||
# If that fails, try to die with an invalid insn.
|
||||
|
||||
invalid
|
||||
|
||||
exit_code:
|
||||
.word 0x20026
|
||||
852
samples/Go/embedded.go
Normal file
852
samples/Go/embedded.go
Normal file
File diff suppressed because one or more lines are too long
18
samples/Go/gen-go-linguist-thrift.go
Normal file
18
samples/Go/gen-go-linguist-thrift.go
Normal file
@@ -0,0 +1,18 @@
|
||||
// Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
|
||||
package linguist
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"git.apache.org/thrift.git/lib/go/thrift"
|
||||
)
|
||||
|
||||
// (needed to ensure safety because of naive import list construction.)
|
||||
var _ = thrift.ZERO
|
||||
var _ = fmt.Printf
|
||||
var _ = bytes.Equal
|
||||
|
||||
func init() {
|
||||
}
|
||||
275
samples/Groff/Tcl.n
Normal file
275
samples/Groff/Tcl.n
Normal file
@@ -0,0 +1,275 @@
|
||||
'\"
|
||||
'\" Copyright (c) 1993 The Regents of the University of California.
|
||||
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
|
||||
'\"
|
||||
'\" See the file "license.terms" for information on usage and redistribution
|
||||
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
'\"
|
||||
.TH Tcl n "8.6" Tcl "Tcl Built-In Commands"
|
||||
.so man.macros
|
||||
.BS
|
||||
.SH NAME
|
||||
Tcl \- Tool Command Language
|
||||
.SH SYNOPSIS
|
||||
Summary of Tcl language syntax.
|
||||
.BE
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The following rules define the syntax and semantics of the Tcl language:
|
||||
.IP "[1] \fBCommands.\fR"
|
||||
A Tcl script is a string containing one or more commands.
|
||||
Semi-colons and newlines are command separators unless quoted as
|
||||
described below.
|
||||
Close brackets are command terminators during command substitution
|
||||
(see below) unless quoted.
|
||||
.IP "[2] \fBEvaluation.\fR"
|
||||
A command is evaluated in two steps.
|
||||
First, the Tcl interpreter breaks the command into \fIwords\fR
|
||||
and performs substitutions as described below.
|
||||
These substitutions are performed in the same way for all
|
||||
commands.
|
||||
Secondly, the first word is used to locate a command procedure to
|
||||
carry out the command, then all of the words of the command are
|
||||
passed to the command procedure.
|
||||
The command procedure is free to interpret each of its words
|
||||
in any way it likes, such as an integer, variable name, list,
|
||||
or Tcl script.
|
||||
Different commands interpret their words differently.
|
||||
.IP "[3] \fBWords.\fR"
|
||||
Words of a command are separated by white space (except for
|
||||
newlines, which are command separators).
|
||||
.IP "[4] \fBDouble quotes.\fR"
|
||||
If the first character of a word is double-quote
|
||||
.PQ \N'34'
|
||||
then the word is terminated by the next double-quote character.
|
||||
If semi-colons, close brackets, or white space characters
|
||||
(including newlines) appear between the quotes then they are treated
|
||||
as ordinary characters and included in the word.
|
||||
Command substitution, variable substitution, and backslash substitution
|
||||
are performed on the characters between the quotes as described below.
|
||||
The double-quotes are not retained as part of the word.
|
||||
.IP "[5] \fBArgument expansion.\fR"
|
||||
If a word starts with the string
|
||||
.QW {*}
|
||||
followed by a non-whitespace character, then the leading
|
||||
.QW {*}
|
||||
is removed and the rest of the word is parsed and substituted as any other
|
||||
word. After substitution, the word is parsed as a list (without command or
|
||||
variable substitutions; backslash substitutions are performed as is normal for
|
||||
a list and individual internal words may be surrounded by either braces or
|
||||
double-quote characters), and its words are added to the command being
|
||||
substituted. For instance,
|
||||
.QW "cmd a {*}{b [c]} d {*}{$e f {g h}}"
|
||||
is equivalent to
|
||||
.QW "cmd a b {[c]} d {$e} f {g h}" .
|
||||
.IP "[6] \fBBraces.\fR"
|
||||
If the first character of a word is an open brace
|
||||
.PQ {
|
||||
and rule [5] does not apply, then
|
||||
the word is terminated by the matching close brace
|
||||
.PQ } "" .
|
||||
Braces nest within the word: for each additional open
|
||||
brace there must be an additional close brace (however,
|
||||
if an open brace or close brace within the word is
|
||||
quoted with a backslash then it is not counted in locating the
|
||||
matching close brace).
|
||||
No substitutions are performed on the characters between the
|
||||
braces except for backslash-newline substitutions described
|
||||
below, nor do semi-colons, newlines, close brackets,
|
||||
or white space receive any special interpretation.
|
||||
The word will consist of exactly the characters between the
|
||||
outer braces, not including the braces themselves.
|
||||
.IP "[7] \fBCommand substitution.\fR"
|
||||
If a word contains an open bracket
|
||||
.PQ [
|
||||
then Tcl performs \fIcommand substitution\fR.
|
||||
To do this it invokes the Tcl interpreter recursively to process
|
||||
the characters following the open bracket as a Tcl script.
|
||||
The script may contain any number of commands and must be terminated
|
||||
by a close bracket
|
||||
.PQ ] "" .
|
||||
The result of the script (i.e. the result of its last command) is
|
||||
substituted into the word in place of the brackets and all of the
|
||||
characters between them.
|
||||
There may be any number of command substitutions in a single word.
|
||||
Command substitution is not performed on words enclosed in braces.
|
||||
.IP "[8] \fBVariable substitution.\fR"
|
||||
If a word contains a dollar-sign
|
||||
.PQ $
|
||||
followed by one of the forms
|
||||
described below, then Tcl performs \fIvariable
|
||||
substitution\fR: the dollar-sign and the following characters are
|
||||
replaced in the word by the value of a variable.
|
||||
Variable substitution may take any of the following forms:
|
||||
.RS
|
||||
.TP 15
|
||||
\fB$\fIname\fR
|
||||
.
|
||||
\fIName\fR is the name of a scalar variable; the name is a sequence
|
||||
of one or more characters that are a letter, digit, underscore,
|
||||
or namespace separators (two or more colons).
|
||||
Letters and digits are \fIonly\fR the standard ASCII ones (\fB0\fR\(en\fB9\fR,
|
||||
\fBA\fR\(en\fBZ\fR and \fBa\fR\(en\fBz\fR).
|
||||
.TP 15
|
||||
\fB$\fIname\fB(\fIindex\fB)\fR
|
||||
.
|
||||
\fIName\fR gives the name of an array variable and \fIindex\fR gives
|
||||
the name of an element within that array.
|
||||
\fIName\fR must contain only letters, digits, underscores, and
|
||||
namespace separators, and may be an empty string.
|
||||
Letters and digits are \fIonly\fR the standard ASCII ones (\fB0\fR\(en\fB9\fR,
|
||||
\fBA\fR\(en\fBZ\fR and \fBa\fR\(en\fBz\fR).
|
||||
Command substitutions, variable substitutions, and backslash
|
||||
substitutions are performed on the characters of \fIindex\fR.
|
||||
.TP 15
|
||||
\fB${\fIname\fB}\fR
|
||||
.
|
||||
\fIName\fR is the name of a scalar variable or array element. It may contain
|
||||
any characters whatsoever except for close braces. It indicates an array
|
||||
element if \fIname\fR is in the form
|
||||
.QW \fIarrayName\fB(\fIindex\fB)\fR
|
||||
where \fIarrayName\fR does not contain any open parenthesis characters,
|
||||
.QW \fB(\fR ,
|
||||
or close brace characters,
|
||||
.QW \fB}\fR ,
|
||||
and \fIindex\fR can be any sequence of characters except for close brace
|
||||
characters. No further
|
||||
substitutions are performed during the parsing of \fIname\fR.
|
||||
.PP
|
||||
There may be any number of variable substitutions in a single word.
|
||||
Variable substitution is not performed on words enclosed in braces.
|
||||
.PP
|
||||
Note that variables may contain character sequences other than those listed
|
||||
above, but in that case other mechanisms must be used to access them (e.g.,
|
||||
via the \fBset\fR command's single-argument form).
|
||||
.RE
|
||||
.IP "[9] \fBBackslash substitution.\fR"
|
||||
If a backslash
|
||||
.PQ \e
|
||||
appears within a word then \fIbackslash substitution\fR occurs.
|
||||
In all cases but those described below the backslash is dropped and
|
||||
the following character is treated as an ordinary
|
||||
character and included in the word.
|
||||
This allows characters such as double quotes, close brackets,
|
||||
and dollar signs to be included in words without triggering
|
||||
special processing.
|
||||
The following table lists the backslash sequences that are
|
||||
handled specially, along with the value that replaces each sequence.
|
||||
.RS
|
||||
.TP 7
|
||||
\e\fBa\fR
|
||||
Audible alert (bell) (Unicode U+000007).
|
||||
.TP 7
|
||||
\e\fBb\fR
|
||||
Backspace (Unicode U+000008).
|
||||
.TP 7
|
||||
\e\fBf\fR
|
||||
Form feed (Unicode U+00000C).
|
||||
.TP 7
|
||||
\e\fBn\fR
|
||||
Newline (Unicode U+00000A).
|
||||
.TP 7
|
||||
\e\fBr\fR
|
||||
Carriage-return (Unicode U+00000D).
|
||||
.TP 7
|
||||
\e\fBt\fR
|
||||
Tab (Unicode U+000009).
|
||||
.TP 7
|
||||
\e\fBv\fR
|
||||
Vertical tab (Unicode U+00000B).
|
||||
.TP 7
|
||||
\e\fB<newline>\fIwhiteSpace\fR
|
||||
.
|
||||
A single space character replaces the backslash, newline, and all spaces
|
||||
and tabs after the newline. This backslash sequence is unique in that it
|
||||
is replaced in a separate pre-pass before the command is actually parsed.
|
||||
This means that it will be replaced even when it occurs between braces,
|
||||
and the resulting space will be treated as a word separator if it is not
|
||||
in braces or quotes.
|
||||
.TP 7
|
||||
\e\e
|
||||
Backslash
|
||||
.PQ \e "" .
|
||||
.TP 7
|
||||
\e\fIooo\fR
|
||||
.
|
||||
The digits \fIooo\fR (one, two, or three of them) give a eight-bit octal
|
||||
value for the Unicode character that will be inserted, in the range
|
||||
\fI000\fR\(en\fI377\fR (i.e., the range U+000000\(enU+0000FF).
|
||||
The parser will stop just before this range overflows, or when
|
||||
the maximum of three digits is reached. The upper bits of the Unicode
|
||||
character will be 0.
|
||||
.TP 7
|
||||
\e\fBx\fIhh\fR
|
||||
.
|
||||
The hexadecimal digits \fIhh\fR (one or two of them) give an eight-bit
|
||||
hexadecimal value for the Unicode character that will be inserted. The upper
|
||||
bits of the Unicode character will be 0 (i.e., the character will be in the
|
||||
range U+000000\(enU+0000FF).
|
||||
.TP 7
|
||||
\e\fBu\fIhhhh\fR
|
||||
.
|
||||
The hexadecimal digits \fIhhhh\fR (one, two, three, or four of them) give a
|
||||
sixteen-bit hexadecimal value for the Unicode character that will be
|
||||
inserted. The upper bits of the Unicode character will be 0 (i.e., the
|
||||
character will be in the range U+000000\(enU+00FFFF).
|
||||
.TP 7
|
||||
\e\fBU\fIhhhhhhhh\fR
|
||||
.
|
||||
The hexadecimal digits \fIhhhhhhhh\fR (one up to eight of them) give a
|
||||
twenty-one-bit hexadecimal value for the Unicode character that will be
|
||||
inserted, in the range U+000000\(enU+10FFFF. The parser will stop just
|
||||
before this range overflows, or when the maximum of eight digits
|
||||
is reached. The upper bits of the Unicode character will be 0.
|
||||
.RS
|
||||
.PP
|
||||
The range U+010000\(enU+10FFFD is reserved for the future.
|
||||
.RE
|
||||
.PP
|
||||
Backslash substitution is not performed on words enclosed in braces,
|
||||
except for backslash-newline as described above.
|
||||
.RE
|
||||
.IP "[10] \fBComments.\fR"
|
||||
If a hash character
|
||||
.PQ #
|
||||
appears at a point where Tcl is
|
||||
expecting the first character of the first word of a command,
|
||||
then the hash character and the characters that follow it, up
|
||||
through the next newline, are treated as a comment and ignored.
|
||||
The comment character only has significance when it appears
|
||||
at the beginning of a command.
|
||||
.IP "[11] \fBOrder of substitution.\fR"
|
||||
Each character is processed exactly once by the Tcl interpreter
|
||||
as part of creating the words of a command.
|
||||
For example, if variable substitution occurs then no further
|
||||
substitutions are performed on the value of the variable; the
|
||||
value is inserted into the word verbatim.
|
||||
If command substitution occurs then the nested command is
|
||||
processed entirely by the recursive call to the Tcl interpreter;
|
||||
no substitutions are performed before making the recursive
|
||||
call and no additional substitutions are performed on the result
|
||||
of the nested script.
|
||||
.RS
|
||||
.PP
|
||||
Substitutions take place from left to right, and each substitution is
|
||||
evaluated completely before attempting to evaluate the next. Thus, a
|
||||
sequence like
|
||||
.PP
|
||||
.CS
|
||||
set y [set x 0][incr x][incr x]
|
||||
.CE
|
||||
.PP
|
||||
will always set the variable \fIy\fR to the value, \fI012\fR.
|
||||
.RE
|
||||
.IP "[12] \fBSubstitution and word boundaries.\fR"
|
||||
Substitutions do not affect the word boundaries of a command,
|
||||
except for argument expansion as specified in rule [5].
|
||||
For example, during variable substitution the entire value of
|
||||
the variable becomes part of a single word, even if the variable's
|
||||
value contains spaces.
|
||||
.SH KEYWORDS
|
||||
backslash, command, comment, script, substitution, variable
|
||||
'\" Local Variables:
|
||||
'\" mode: nroff
|
||||
'\" fill-column: 78
|
||||
'\" End:
|
||||
135
samples/Groff/create_view.l
Normal file
135
samples/Groff/create_view.l
Normal file
@@ -0,0 +1,135 @@
|
||||
.\\" auto-generated by docbook2man-spec $Revision: 1.1.1.1 $
|
||||
.TH "CREATE VIEW" "" "2005-11-05" "SQL - Language Statements" "SQL Commands"
|
||||
.SH NAME
|
||||
CREATE VIEW \- define a new view
|
||||
|
||||
.SH SYNOPSIS
|
||||
.sp
|
||||
.nf
|
||||
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW \fIname\fR [ ( \fIcolumn_name\fR [, ...] ) ]
|
||||
AS \fIquery\fR
|
||||
.sp
|
||||
.fi
|
||||
.SH "DESCRIPTION"
|
||||
.PP
|
||||
\fBCREATE VIEW\fR defines a view of a query. The view
|
||||
is not physically materialized. Instead, the query is run every time
|
||||
the view is referenced in a query.
|
||||
.PP
|
||||
\fBCREATE OR REPLACE VIEW\fR is similar, but if a view
|
||||
of the same name already exists, it is replaced. You can only replace
|
||||
a view with a new query that generates the identical set of columns
|
||||
(i.e., same column names and data types).
|
||||
.PP
|
||||
If a schema name is given (for example, CREATE VIEW
|
||||
myschema.myview ...) then the view is created in the specified
|
||||
schema. Otherwise it is created in the current schema. Temporary
|
||||
views exist in a special schema, so a schema name may not be given
|
||||
when creating a temporary view. The name of the view must be
|
||||
distinct from the name of any other view, table, sequence, or index
|
||||
in the same schema.
|
||||
.SH "PARAMETERS"
|
||||
.TP
|
||||
\fBTEMPORARY or TEMP\fR
|
||||
If specified, the view is created as a temporary view.
|
||||
Temporary views are automatically dropped at the end of the
|
||||
current session. Existing
|
||||
permanent relations with the same name are not visible to the
|
||||
current session while the temporary view exists, unless they are
|
||||
referenced with schema-qualified names.
|
||||
|
||||
If any of the tables referenced by the view are temporary,
|
||||
the view is created as a temporary view (whether
|
||||
TEMPORARY is specified or not).
|
||||
.TP
|
||||
\fB\fIname\fB\fR
|
||||
The name (optionally schema-qualified) of a view to be created.
|
||||
.TP
|
||||
\fB\fIcolumn_name\fB\fR
|
||||
An optional list of names to be used for columns of the view.
|
||||
If not given, the column names are deduced from the query.
|
||||
.TP
|
||||
\fB\fIquery\fB\fR
|
||||
A query (that is, a \fBSELECT\fR statement) which will
|
||||
provide the columns and rows of the view.
|
||||
|
||||
Refer to SELECT [\fBselect\fR(l)]
|
||||
for more information about valid queries.
|
||||
.SH "NOTES"
|
||||
.PP
|
||||
Currently, views are read only: the system will not allow an insert,
|
||||
update, or delete on a view. You can get the effect of an updatable
|
||||
view by creating rules that rewrite inserts, etc. on the view into
|
||||
appropriate actions on other tables. For more information see
|
||||
CREATE RULE [\fBcreate_rule\fR(l)].
|
||||
.PP
|
||||
Use the DROP VIEW [\fBdrop_view\fR(l)]
|
||||
statement to drop views.
|
||||
.PP
|
||||
Be careful that the names and types of the view's columns will be
|
||||
assigned the way you want. For example,
|
||||
.sp
|
||||
.nf
|
||||
CREATE VIEW vista AS SELECT 'Hello World';
|
||||
.sp
|
||||
.fi
|
||||
is bad form in two ways: the column name defaults to ?column?,
|
||||
and the column data type defaults to \fBunknown\fR. If you want a
|
||||
string literal in a view's result, use something like
|
||||
.sp
|
||||
.nf
|
||||
CREATE VIEW vista AS SELECT text 'Hello World' AS hello;
|
||||
.sp
|
||||
.fi
|
||||
.PP
|
||||
Access to tables referenced in the view is determined by permissions of
|
||||
the view owner. However, functions called in the view are treated the
|
||||
same as if they had been called directly from the query using the view.
|
||||
Therefore the user of a view must have permissions to call all functions
|
||||
used by the view.
|
||||
.SH "EXAMPLES"
|
||||
.PP
|
||||
Create a view consisting of all comedy films:
|
||||
.sp
|
||||
.nf
|
||||
CREATE VIEW comedies AS
|
||||
SELECT *
|
||||
FROM films
|
||||
WHERE kind = 'Comedy';
|
||||
.sp
|
||||
.fi
|
||||
.SH "COMPATIBILITY"
|
||||
.PP
|
||||
The SQL standard specifies some additional capabilities for the
|
||||
\fBCREATE VIEW\fR statement:
|
||||
.sp
|
||||
.nf
|
||||
CREATE VIEW \fIname\fR [ ( \fIcolumn_name\fR [, ...] ) ]
|
||||
AS \fIquery\fR
|
||||
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
|
||||
.sp
|
||||
.fi
|
||||
.PP
|
||||
The optional clauses for the full SQL command are:
|
||||
.TP
|
||||
\fBCHECK OPTION\fR
|
||||
This option has to do with updatable views. All
|
||||
\fBINSERT\fR and \fBUPDATE\fR commands on the view
|
||||
will be checked to ensure data satisfy the view-defining
|
||||
condition (that is, the new data would be visible through the
|
||||
view). If they do not, the update will be rejected.
|
||||
.TP
|
||||
\fBLOCAL\fR
|
||||
Check for integrity on this view.
|
||||
.TP
|
||||
\fBCASCADED\fR
|
||||
Check for integrity on this view and on any dependent
|
||||
view. CASCADED is assumed if neither
|
||||
CASCADED nor LOCAL is specified.
|
||||
.PP
|
||||
.PP
|
||||
\fBCREATE OR REPLACE VIEW\fR is a
|
||||
PostgreSQL language extension.
|
||||
So is the concept of a temporary view.
|
||||
.SH "SEE ALSO"
|
||||
DROP VIEW [\fBdrop_view\fR(l)]
|
||||
1174
samples/Groff/fsinterface.ms
Normal file
1174
samples/Groff/fsinterface.ms
Normal file
File diff suppressed because it is too large
Load Diff
6
samples/HCL/example.hcl
Normal file
6
samples/HCL/example.hcl
Normal file
@@ -0,0 +1,6 @@
|
||||
consul = "1.2.3.4"
|
||||
|
||||
// This is a comment
|
||||
template "foo" {
|
||||
bar = "zip"
|
||||
}
|
||||
13
samples/HCL/example.tf
Normal file
13
samples/HCL/example.tf
Normal file
@@ -0,0 +1,13 @@
|
||||
resource "aws_instance" "web" {
|
||||
// Copies the myapp.conf file to /etc/myapp.conf
|
||||
provisioner "file" {
|
||||
source = "conf/myapp.conf"
|
||||
destination = "/etc/myapp.conf"
|
||||
}
|
||||
|
||||
// Copies the configs.d folder to /etc/configs.d
|
||||
provisioner "file" {
|
||||
source = "conf/configs.d"
|
||||
destination = "/etc"
|
||||
}
|
||||
}
|
||||
31
samples/HTML/rpanel.inc
Normal file
31
samples/HTML/rpanel.inc
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" charset="UTF-8" type="text/css" href="main.css">
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel_header_main_form">
|
||||
<p id="panel_header_main_form_title">Поддержка:</p>
|
||||
</div>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Москва:</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>+7-902-7-800-807</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Регионы:</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>+7-902-7-800-807</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
5
samples/HTML/tailDel.inc
Normal file
5
samples/HTML/tailDel.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
</UL>
|
||||
<P><A HREF="devices.html">Supported Targets</A></P>
|
||||
</BODY>
|
||||
</HEAD>
|
||||
|
||||
1104
samples/Isabelle ROOT/filenames/ROOT
Normal file
1104
samples/Isabelle ROOT/filenames/ROOT
Normal file
File diff suppressed because it is too large
Load Diff
396
samples/Java/gen-java-linguist-thrift.java
Normal file
396
samples/Java/gen-java-linguist-thrift.java
Normal file
@@ -0,0 +1,396 @@
|
||||
/**
|
||||
* Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
*
|
||||
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
* @generated
|
||||
*/
|
||||
import org.apache.thrift.scheme.IScheme;
|
||||
import org.apache.thrift.scheme.SchemeFactory;
|
||||
import org.apache.thrift.scheme.StandardScheme;
|
||||
|
||||
import org.apache.thrift.scheme.TupleScheme;
|
||||
import org.apache.thrift.protocol.TTupleProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolException;
|
||||
import org.apache.thrift.EncodingUtils;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.async.AsyncMethodCallback;
|
||||
import org.apache.thrift.server.AbstractNonblockingServer.*;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.EnumMap;
|
||||
import java.util.Set;
|
||||
import java.util.HashSet;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Collections;
|
||||
import java.util.BitSet;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import javax.annotation.Generated;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
|
||||
@Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2015-5-12")
|
||||
public class PullRequest implements org.apache.thrift.TBase<PullRequest, PullRequest._Fields>, java.io.Serializable, Cloneable, Comparable<PullRequest> {
|
||||
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PullRequest");
|
||||
|
||||
private static final org.apache.thrift.protocol.TField TITLE_FIELD_DESC = new org.apache.thrift.protocol.TField("title", org.apache.thrift.protocol.TType.STRING, (short)1);
|
||||
|
||||
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
|
||||
static {
|
||||
schemes.put(StandardScheme.class, new PullRequestStandardSchemeFactory());
|
||||
schemes.put(TupleScheme.class, new PullRequestTupleSchemeFactory());
|
||||
}
|
||||
|
||||
public String title; // required
|
||||
|
||||
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
|
||||
public enum _Fields implements org.apache.thrift.TFieldIdEnum {
|
||||
TITLE((short)1, "title");
|
||||
|
||||
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
|
||||
|
||||
static {
|
||||
for (_Fields field : EnumSet.allOf(_Fields.class)) {
|
||||
byName.put(field.getFieldName(), field);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the _Fields constant that matches fieldId, or null if its not found.
|
||||
*/
|
||||
public static _Fields findByThriftId(int fieldId) {
|
||||
switch(fieldId) {
|
||||
case 1: // TITLE
|
||||
return TITLE;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the _Fields constant that matches fieldId, throwing an exception
|
||||
* if it is not found.
|
||||
*/
|
||||
public static _Fields findByThriftIdOrThrow(int fieldId) {
|
||||
_Fields fields = findByThriftId(fieldId);
|
||||
if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
|
||||
return fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the _Fields constant that matches name, or null if its not found.
|
||||
*/
|
||||
public static _Fields findByName(String name) {
|
||||
return byName.get(name);
|
||||
}
|
||||
|
||||
private final short _thriftId;
|
||||
private final String _fieldName;
|
||||
|
||||
_Fields(short thriftId, String fieldName) {
|
||||
_thriftId = thriftId;
|
||||
_fieldName = fieldName;
|
||||
}
|
||||
|
||||
public short getThriftFieldId() {
|
||||
return _thriftId;
|
||||
}
|
||||
|
||||
public String getFieldName() {
|
||||
return _fieldName;
|
||||
}
|
||||
}
|
||||
|
||||
// isset id assignments
|
||||
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
|
||||
static {
|
||||
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
|
||||
tmpMap.put(_Fields.TITLE, new org.apache.thrift.meta_data.FieldMetaData("title", org.apache.thrift.TFieldRequirementType.DEFAULT,
|
||||
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
|
||||
metaDataMap = Collections.unmodifiableMap(tmpMap);
|
||||
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PullRequest.class, metaDataMap);
|
||||
}
|
||||
|
||||
public PullRequest() {
|
||||
}
|
||||
|
||||
public PullRequest(
|
||||
String title)
|
||||
{
|
||||
this();
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a deep copy on <i>other</i>.
|
||||
*/
|
||||
public PullRequest(PullRequest other) {
|
||||
if (other.isSetTitle()) {
|
||||
this.title = other.title;
|
||||
}
|
||||
}
|
||||
|
||||
public PullRequest deepCopy() {
|
||||
return new PullRequest(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
this.title = null;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public PullRequest setTitle(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void unsetTitle() {
|
||||
this.title = null;
|
||||
}
|
||||
|
||||
/** Returns true if field title is set (has been assigned a value) and false otherwise */
|
||||
public boolean isSetTitle() {
|
||||
return this.title != null;
|
||||
}
|
||||
|
||||
public void setTitleIsSet(boolean value) {
|
||||
if (!value) {
|
||||
this.title = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void setFieldValue(_Fields field, Object value) {
|
||||
switch (field) {
|
||||
case TITLE:
|
||||
if (value == null) {
|
||||
unsetTitle();
|
||||
} else {
|
||||
setTitle((String)value);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public Object getFieldValue(_Fields field) {
|
||||
switch (field) {
|
||||
case TITLE:
|
||||
return getTitle();
|
||||
|
||||
}
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
/** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
|
||||
public boolean isSet(_Fields field) {
|
||||
if (field == null) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
switch (field) {
|
||||
case TITLE:
|
||||
return isSetTitle();
|
||||
}
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (that == null)
|
||||
return false;
|
||||
if (that instanceof PullRequest)
|
||||
return this.equals((PullRequest)that);
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean equals(PullRequest that) {
|
||||
if (that == null)
|
||||
return false;
|
||||
|
||||
boolean this_present_title = true && this.isSetTitle();
|
||||
boolean that_present_title = true && that.isSetTitle();
|
||||
if (this_present_title || that_present_title) {
|
||||
if (!(this_present_title && that_present_title))
|
||||
return false;
|
||||
if (!this.title.equals(that.title))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
List<Object> list = new ArrayList<Object>();
|
||||
|
||||
boolean present_title = true && (isSetTitle());
|
||||
list.add(present_title);
|
||||
if (present_title)
|
||||
list.add(title);
|
||||
|
||||
return list.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(PullRequest other) {
|
||||
if (!getClass().equals(other.getClass())) {
|
||||
return getClass().getName().compareTo(other.getClass().getName());
|
||||
}
|
||||
|
||||
int lastComparison = 0;
|
||||
|
||||
lastComparison = Boolean.valueOf(isSetTitle()).compareTo(other.isSetTitle());
|
||||
if (lastComparison != 0) {
|
||||
return lastComparison;
|
||||
}
|
||||
if (isSetTitle()) {
|
||||
lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.title, other.title);
|
||||
if (lastComparison != 0) {
|
||||
return lastComparison;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public _Fields fieldForId(int fieldId) {
|
||||
return _Fields.findByThriftId(fieldId);
|
||||
}
|
||||
|
||||
public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
|
||||
schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
|
||||
}
|
||||
|
||||
public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
|
||||
schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("PullRequest(");
|
||||
boolean first = true;
|
||||
|
||||
sb.append("title:");
|
||||
if (this.title == null) {
|
||||
sb.append("null");
|
||||
} else {
|
||||
sb.append(this.title);
|
||||
}
|
||||
first = false;
|
||||
sb.append(")");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void validate() throws org.apache.thrift.TException {
|
||||
// check for required fields
|
||||
// check for sub-struct validity
|
||||
}
|
||||
|
||||
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
|
||||
try {
|
||||
write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
|
||||
} catch (org.apache.thrift.TException te) {
|
||||
throw new java.io.IOException(te);
|
||||
}
|
||||
}
|
||||
|
||||
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
|
||||
try {
|
||||
read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
|
||||
} catch (org.apache.thrift.TException te) {
|
||||
throw new java.io.IOException(te);
|
||||
}
|
||||
}
|
||||
|
||||
private static class PullRequestStandardSchemeFactory implements SchemeFactory {
|
||||
public PullRequestStandardScheme getScheme() {
|
||||
return new PullRequestStandardScheme();
|
||||
}
|
||||
}
|
||||
|
||||
private static class PullRequestStandardScheme extends StandardScheme<PullRequest> {
|
||||
|
||||
public void read(org.apache.thrift.protocol.TProtocol iprot, PullRequest struct) throws org.apache.thrift.TException {
|
||||
org.apache.thrift.protocol.TField schemeField;
|
||||
iprot.readStructBegin();
|
||||
while (true)
|
||||
{
|
||||
schemeField = iprot.readFieldBegin();
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
|
||||
break;
|
||||
}
|
||||
switch (schemeField.id) {
|
||||
case 1: // TITLE
|
||||
if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
|
||||
struct.title = iprot.readString();
|
||||
struct.setTitleIsSet(true);
|
||||
} else {
|
||||
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
|
||||
}
|
||||
iprot.readFieldEnd();
|
||||
}
|
||||
iprot.readStructEnd();
|
||||
|
||||
// check for required fields of primitive type, which can't be checked in the validate method
|
||||
struct.validate();
|
||||
}
|
||||
|
||||
public void write(org.apache.thrift.protocol.TProtocol oprot, PullRequest struct) throws org.apache.thrift.TException {
|
||||
struct.validate();
|
||||
|
||||
oprot.writeStructBegin(STRUCT_DESC);
|
||||
if (struct.title != null) {
|
||||
oprot.writeFieldBegin(TITLE_FIELD_DESC);
|
||||
oprot.writeString(struct.title);
|
||||
oprot.writeFieldEnd();
|
||||
}
|
||||
oprot.writeFieldStop();
|
||||
oprot.writeStructEnd();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class PullRequestTupleSchemeFactory implements SchemeFactory {
|
||||
public PullRequestTupleScheme getScheme() {
|
||||
return new PullRequestTupleScheme();
|
||||
}
|
||||
}
|
||||
|
||||
private static class PullRequestTupleScheme extends TupleScheme<PullRequest> {
|
||||
|
||||
@Override
|
||||
public void write(org.apache.thrift.protocol.TProtocol prot, PullRequest struct) throws org.apache.thrift.TException {
|
||||
TTupleProtocol oprot = (TTupleProtocol) prot;
|
||||
BitSet optionals = new BitSet();
|
||||
if (struct.isSetTitle()) {
|
||||
optionals.set(0);
|
||||
}
|
||||
oprot.writeBitSet(optionals, 1);
|
||||
if (struct.isSetTitle()) {
|
||||
oprot.writeString(struct.title);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(org.apache.thrift.protocol.TProtocol prot, PullRequest struct) throws org.apache.thrift.TException {
|
||||
TTupleProtocol iprot = (TTupleProtocol) prot;
|
||||
BitSet incoming = iprot.readBitSet(1);
|
||||
if (incoming.get(0)) {
|
||||
struct.title = iprot.readString();
|
||||
struct.setTitleIsSet(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
60
samples/JavaScript/gen-js-linguist-thrift.js
Normal file
60
samples/JavaScript/gen-js-linguist-thrift.js
Normal file
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
//
|
||||
// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
//
|
||||
|
||||
|
||||
PullRequest = function(args) {
|
||||
this.title = null;
|
||||
if (args) {
|
||||
if (args.title !== undefined) {
|
||||
this.title = args.title;
|
||||
}
|
||||
}
|
||||
};
|
||||
PullRequest.prototype = {};
|
||||
PullRequest.prototype.read = function(input) {
|
||||
input.readStructBegin();
|
||||
while (true)
|
||||
{
|
||||
var ret = input.readFieldBegin();
|
||||
var fname = ret.fname;
|
||||
var ftype = ret.ftype;
|
||||
var fid = ret.fid;
|
||||
if (ftype == Thrift.Type.STOP) {
|
||||
break;
|
||||
}
|
||||
switch (fid)
|
||||
{
|
||||
case 1:
|
||||
if (ftype == Thrift.Type.STRING) {
|
||||
this.title = input.readString().value;
|
||||
} else {
|
||||
input.skip(ftype);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
input.skip(ftype);
|
||||
break;
|
||||
default:
|
||||
input.skip(ftype);
|
||||
}
|
||||
input.readFieldEnd();
|
||||
}
|
||||
input.readStructEnd();
|
||||
return;
|
||||
};
|
||||
|
||||
PullRequest.prototype.write = function(output) {
|
||||
output.writeStructBegin('PullRequest');
|
||||
if (this.title !== null && this.title !== undefined) {
|
||||
output.writeFieldBegin('title', Thrift.Type.STRING, 1);
|
||||
output.writeString(this.title);
|
||||
output.writeFieldEnd();
|
||||
}
|
||||
output.writeFieldStop();
|
||||
output.writeStructEnd();
|
||||
return;
|
||||
};
|
||||
|
||||
928
samples/KiCad/nrf-bga.kicad_pcb
Normal file
928
samples/KiCad/nrf-bga.kicad_pcb
Normal file
@@ -0,0 +1,928 @@
|
||||
(kicad_pcb (version 4) (host pcbnew "(2014-08-05 BZR 5054)-product")
|
||||
|
||||
(general
|
||||
(links 36)
|
||||
(no_connects 0)
|
||||
(area 146.9984 92.8984 164.465656 112.3572)
|
||||
(thickness 1.6)
|
||||
(drawings 0)
|
||||
(tracks 108)
|
||||
(zones 0)
|
||||
(modules 12)
|
||||
(nets 54)
|
||||
)
|
||||
|
||||
(page A4)
|
||||
(layers
|
||||
(0 F.Cu signal)
|
||||
(31 B.Cu signal)
|
||||
(32 B.Adhes user)
|
||||
(33 F.Adhes user)
|
||||
(34 B.Paste user)
|
||||
(35 F.Paste user)
|
||||
(36 B.SilkS user)
|
||||
(37 F.SilkS user)
|
||||
(38 B.Mask user)
|
||||
(39 F.Mask user)
|
||||
(40 Dwgs.User user)
|
||||
(41 Cmts.User user)
|
||||
(42 Eco1.User user)
|
||||
(43 Eco2.User user)
|
||||
(44 Edge.Cuts user)
|
||||
(45 Margin user)
|
||||
(46 B.CrtYd user)
|
||||
(47 F.CrtYd user)
|
||||
(48 B.Fab user)
|
||||
(49 F.Fab user)
|
||||
)
|
||||
|
||||
(setup
|
||||
(last_trace_width 0.1016)
|
||||
(trace_clearance 0.1016)
|
||||
(zone_clearance 0.2032)
|
||||
(zone_45_only no)
|
||||
(trace_min 0.1016)
|
||||
(segment_width 0.2)
|
||||
(edge_width 0.1)
|
||||
(via_size 0.889)
|
||||
(via_drill 0.635)
|
||||
(via_min_size 0.889)
|
||||
(via_min_drill 0.508)
|
||||
(uvia_size 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(uvias_allowed no)
|
||||
(uvia_min_size 0.508)
|
||||
(uvia_min_drill 0.127)
|
||||
(pcb_text_width 0.3)
|
||||
(pcb_text_size 1.5 1.5)
|
||||
(mod_edge_width 0.15)
|
||||
(mod_text_size 1 1)
|
||||
(mod_text_width 0.15)
|
||||
(pad_size 0.2 0.2)
|
||||
(pad_drill 0)
|
||||
(pad_to_mask_clearance 0)
|
||||
(aux_axis_origin 0 0)
|
||||
(visible_elements FFFCFF7F)
|
||||
(pcbplotparams
|
||||
(layerselection 0x00000_00000001)
|
||||
(usegerberextensions false)
|
||||
(excludeedgelayer true)
|
||||
(linewidth 0.100000)
|
||||
(plotframeref false)
|
||||
(viasonmask false)
|
||||
(mode 1)
|
||||
(useauxorigin false)
|
||||
(hpglpennumber 1)
|
||||
(hpglpenspeed 20)
|
||||
(hpglpendiameter 15)
|
||||
(hpglpenoverlay 2)
|
||||
(psnegative false)
|
||||
(psa4output false)
|
||||
(plotreference true)
|
||||
(plotvalue true)
|
||||
(plotinvisibletext false)
|
||||
(padsonsilk false)
|
||||
(subtractmaskfromsilk false)
|
||||
(outputformat 5)
|
||||
(mirror true)
|
||||
(drillshape 0)
|
||||
(scaleselection 1)
|
||||
(outputdirectory pdfs/))
|
||||
)
|
||||
|
||||
(net 0 "")
|
||||
(net 1 "Net-(C1-Pad1)")
|
||||
(net 2 GND)
|
||||
(net 3 "Net-(C2-Pad1)")
|
||||
(net 4 "Net-(C3-Pad1)")
|
||||
(net 5 "Net-(C4-Pad2)")
|
||||
(net 6 "Net-(D1-Pad1)")
|
||||
(net 7 +BATT)
|
||||
(net 8 SWDIO)
|
||||
(net 9 SWCLK)
|
||||
(net 10 LED)
|
||||
(net 11 "Net-(U1-PadC1)")
|
||||
(net 12 "Net-(U1-PadD1)")
|
||||
(net 13 "Net-(U1-PadG1)")
|
||||
(net 14 "Net-(U1-PadE2)")
|
||||
(net 15 "Net-(U1-PadF2)")
|
||||
(net 16 "Net-(U1-PadG2)")
|
||||
(net 17 "Net-(U1-PadE3)")
|
||||
(net 18 "Net-(U1-PadF3)")
|
||||
(net 19 "Net-(U1-PadG3)")
|
||||
(net 20 "Net-(U1-PadH4)")
|
||||
(net 21 "Net-(U1-PadA5)")
|
||||
(net 22 "Net-(U1-PadB5)")
|
||||
(net 23 "Net-(U1-PadC5)")
|
||||
(net 24 "Net-(U1-PadH5)")
|
||||
(net 25 "Net-(U1-PadA6)")
|
||||
(net 26 "Net-(U1-PadB6)")
|
||||
(net 27 "Net-(U1-PadC6)")
|
||||
(net 28 "Net-(U1-PadH6)")
|
||||
(net 29 "Net-(U1-PadA7)")
|
||||
(net 30 "Net-(U1-PadB7)")
|
||||
(net 31 "Net-(U1-PadC7)")
|
||||
(net 32 "Net-(U1-PadE7)")
|
||||
(net 33 "Net-(U1-PadF7)")
|
||||
(net 34 "Net-(U1-PadG7)")
|
||||
(net 35 "Net-(U1-PadH7)")
|
||||
(net 36 "Net-(U1-PadA8)")
|
||||
(net 37 "Net-(U1-PadD8)")
|
||||
(net 38 "Net-(U1-PadE8)")
|
||||
(net 39 "Net-(U1-PadF8)")
|
||||
(net 40 "Net-(U1-PadG8)")
|
||||
(net 41 "Net-(U1-PadH8)")
|
||||
(net 42 "Net-(U1-PadE9)")
|
||||
(net 43 "Net-(U1-PadF9)")
|
||||
(net 44 "Net-(U1-PadH1)")
|
||||
(net 45 "Net-(U1-PadJ3)")
|
||||
(net 46 "Net-(U1-PadJ4)")
|
||||
(net 47 "Net-(U1-PadJ5)")
|
||||
(net 48 "Net-(U1-PadJ6)")
|
||||
(net 49 "Net-(U1-PadJ7)")
|
||||
(net 50 "Net-(U1-PadJ8)")
|
||||
(net 51 "Net-(U1-PadH9)")
|
||||
(net 52 "Net-(C5-Pad1)")
|
||||
(net 53 "Net-(ANT1-Pad2)")
|
||||
|
||||
(net_class Default "This is the default net class."
|
||||
(clearance 0.1016)
|
||||
(trace_width 0.1016)
|
||||
(via_dia 0.889)
|
||||
(via_drill 0.635)
|
||||
(uvia_dia 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(add_net +BATT)
|
||||
(add_net LED)
|
||||
(add_net "Net-(C1-Pad1)")
|
||||
(add_net "Net-(C2-Pad1)")
|
||||
(add_net "Net-(C3-Pad1)")
|
||||
(add_net "Net-(C4-Pad2)")
|
||||
(add_net "Net-(C5-Pad1)")
|
||||
(add_net "Net-(D1-Pad1)")
|
||||
(add_net "Net-(U1-PadA5)")
|
||||
(add_net "Net-(U1-PadA6)")
|
||||
(add_net "Net-(U1-PadA7)")
|
||||
(add_net "Net-(U1-PadA8)")
|
||||
(add_net "Net-(U1-PadB5)")
|
||||
(add_net "Net-(U1-PadB6)")
|
||||
(add_net "Net-(U1-PadB7)")
|
||||
(add_net "Net-(U1-PadC1)")
|
||||
(add_net "Net-(U1-PadC5)")
|
||||
(add_net "Net-(U1-PadC6)")
|
||||
(add_net "Net-(U1-PadC7)")
|
||||
(add_net "Net-(U1-PadD1)")
|
||||
(add_net "Net-(U1-PadD8)")
|
||||
(add_net "Net-(U1-PadE2)")
|
||||
(add_net "Net-(U1-PadE3)")
|
||||
(add_net "Net-(U1-PadE7)")
|
||||
(add_net "Net-(U1-PadE8)")
|
||||
(add_net "Net-(U1-PadE9)")
|
||||
(add_net "Net-(U1-PadF2)")
|
||||
(add_net "Net-(U1-PadF3)")
|
||||
(add_net "Net-(U1-PadF7)")
|
||||
(add_net "Net-(U1-PadF8)")
|
||||
(add_net "Net-(U1-PadF9)")
|
||||
(add_net "Net-(U1-PadG1)")
|
||||
(add_net "Net-(U1-PadG2)")
|
||||
(add_net "Net-(U1-PadG3)")
|
||||
(add_net "Net-(U1-PadG7)")
|
||||
(add_net "Net-(U1-PadG8)")
|
||||
(add_net "Net-(U1-PadH1)")
|
||||
(add_net "Net-(U1-PadH4)")
|
||||
(add_net "Net-(U1-PadH5)")
|
||||
(add_net "Net-(U1-PadH6)")
|
||||
(add_net "Net-(U1-PadH7)")
|
||||
(add_net "Net-(U1-PadH8)")
|
||||
(add_net "Net-(U1-PadH9)")
|
||||
(add_net "Net-(U1-PadJ3)")
|
||||
(add_net "Net-(U1-PadJ4)")
|
||||
(add_net "Net-(U1-PadJ5)")
|
||||
(add_net "Net-(U1-PadJ6)")
|
||||
(add_net "Net-(U1-PadJ7)")
|
||||
(add_net "Net-(U1-PadJ8)")
|
||||
(add_net SWCLK)
|
||||
(add_net SWDIO)
|
||||
)
|
||||
|
||||
(net_class ANT ""
|
||||
(clearance 0.1016)
|
||||
(trace_width 0.254)
|
||||
(via_dia 0.889)
|
||||
(via_drill 0.635)
|
||||
(uvia_dia 0.508)
|
||||
(uvia_drill 0.127)
|
||||
(add_net GND)
|
||||
(add_net "Net-(ANT1-Pad2)")
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B59067)
|
||||
(at 153.75 102.5 270)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B59137)
|
||||
(attr smd)
|
||||
(fp_text reference C1 (at 0 -1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 12p (at 0 1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B58E0D)
|
||||
(at 159.004 100.711)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B591B6)
|
||||
(attr smd)
|
||||
(fp_text reference C2 (at 0 -1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 12p (at 0 1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B59E9D)
|
||||
(at 159.004 102.1588)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B58D67)
|
||||
(attr smd)
|
||||
(fp_text reference C3 (at 0 -1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 100n (at 0 1.7) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 4 "Net-(C3-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 54B58E25)
|
||||
(at 154.15 106.55 90)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /54B58DD5)
|
||||
(attr smd)
|
||||
(fp_text reference C4 (at 0 -1.7 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 100n (at 0 1.7 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 90) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad 2 smd rect (at 0.55 0 90) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 5 "Net-(C4-Pad2)"))
|
||||
(model Capacitors_SMD/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module SMD_Packages:SMD-0805 (layer F.Cu) (tedit 54B58D88) (tstamp 54B58E32)
|
||||
(at 162.0266 104.9782 90)
|
||||
(path /54B599BA)
|
||||
(attr smd)
|
||||
(fp_text reference D1 (at 0 -0.3175 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value LED (at 0 0.381 90) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_circle (center -1.651 0.762) (end -1.651 0.635) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.508 0.762) (end -1.524 0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.524 0.762) (end -1.524 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.524 -0.762) (end -0.508 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 0.508 -0.762) (end 1.524 -0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.524 -0.762) (end 1.524 0.762) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.524 0.762) (end 0.508 0.762) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.9525 0 90) (size 0.889 1.397) (layers F.Cu F.Paste F.Mask)
|
||||
(net 6 "Net-(D1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.9525 0 90) (size 0.889 1.397) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model SMD_Packages/SMD-0805.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 0.1000000014901161 0.1000000014901161 0.1000000014901161))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Pin_Headers:Pin_Header_Straight_1x04 (layer F.Cu) (tedit 54B58D8A) (tstamp 54B58E41)
|
||||
(at 156.7942 109.1946 180)
|
||||
(descr "Through hole pin header")
|
||||
(tags "pin header")
|
||||
(path /54B593BB)
|
||||
(fp_text reference P1 (at 0 -2.286 180) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value CONN_01X04 (at 0 0 180) (layer F.SilkS) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -2.54 1.27) (end 5.08 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -2.54 -1.27) (end 5.08 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 -1.27) (end -2.54 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 5.08 1.27) (end 5.08 -1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -2.54 -1.27) (end -2.54 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 -1.27) (end -5.08 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -5.08 1.27) (end -2.54 1.27) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 thru_hole rect (at -3.81 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 2 GND))
|
||||
(pad 2 thru_hole oval (at -1.27 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 7 +BATT))
|
||||
(pad 3 thru_hole oval (at 1.27 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 8 SWDIO))
|
||||
(pad 4 thru_hole oval (at 3.81 0 180) (size 1.7272 2.032) (drill 1.016) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 9 SWCLK))
|
||||
(model Pin_Headers/Pin_Header_Straight_1x04.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Resistors_SMD:R_0603 (layer F.Cu) (tedit 5415CC62) (tstamp 54B59E20)
|
||||
(at 160.0454 105.0544 270)
|
||||
(descr "Resistor SMD 0603, reflow soldering, Vishay (see dcrcw.pdf)")
|
||||
(tags "resistor 0603")
|
||||
(path /54B59A45)
|
||||
(attr smd)
|
||||
(fp_text reference R1 (at 0 -1.9 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value R (at 0 1.9 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.3 0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.3 -0.8) (end -1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.5 0.675) (end -0.5 0.675) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.5 -0.675) (end 0.5 -0.675) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
|
||||
(net 10 LED))
|
||||
(pad 2 smd rect (at 0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
|
||||
(net 6 "Net-(D1-Pad1)"))
|
||||
(model Resistors_SMD/R_0603.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module Crystals_Oscillators_SMD:CX2520DB (layer F.Cu) (tedit 544FEDED) (tstamp 54B58E9A)
|
||||
(at 156.1084 101.3714)
|
||||
(path /54B5903E)
|
||||
(fp_text reference X1 (at 0 -2.25) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value CRYSTAL (at 0 2.5) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.25 1) (end 1.25 1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.25 1) (end 1.25 -1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start 1.25 -1) (end -1.25 -1) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.25 -1) (end -1.25 1) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.9 0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad 2 smd rect (at 0.9 -0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad 3 smd rect (at 0.9 0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask))
|
||||
(pad 4 smd rect (at -0.9 -0.65) (size 1.2 1) (layers F.Cu F.Paste F.Mask))
|
||||
)
|
||||
|
||||
(module NRF51:WLCSP62 (layer F.Cu) (tedit 54B59368) (tstamp 54B59DAD)
|
||||
(at 156.9212 105.1306)
|
||||
(path /54B58C30)
|
||||
(fp_text reference U1 (at 0 3.2) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_text value nRF51x22-CEAA (at 0 -3.2) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_line (start -1.6 -2) (end -2 -1.6) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2 -1.6) (end -2 2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -2 2) (end 2 2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2 2) (end 2 -2) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 2 -2) (end -1.6 -2) (layer F.SilkS) (width 0.2))
|
||||
(pad A1 smd circle (at -1.6 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad B1 smd circle (at -1.6 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad C1 smd circle (at -1.6 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 11 "Net-(U1-PadC1)"))
|
||||
(pad D1 smd circle (at -1.6 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 12 "Net-(U1-PadD1)"))
|
||||
(pad E1 smd circle (at -1.6 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad F1 smd circle (at -1.6 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 5 "Net-(C4-Pad2)"))
|
||||
(pad G1 smd circle (at -1.6 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 13 "Net-(U1-PadG1)"))
|
||||
(pad H1 smd circle (at -1.6 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 44 "Net-(U1-PadH1)"))
|
||||
(pad A2 smd circle (at -1.2 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 1 "Net-(C1-Pad1)"))
|
||||
(pad E2 smd circle (at -1.2 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 14 "Net-(U1-PadE2)"))
|
||||
(pad F2 smd circle (at -1.2 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 15 "Net-(U1-PadF2)"))
|
||||
(pad G2 smd circle (at -1.2 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 16 "Net-(U1-PadG2)"))
|
||||
(pad H2 smd circle (at -1.2 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 9 SWCLK))
|
||||
(pad J2 smd circle (at -1.2 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 8 SWDIO))
|
||||
(pad A3 smd circle (at -0.8 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 3 "Net-(C2-Pad1)"))
|
||||
(pad E3 smd circle (at -0.8 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 17 "Net-(U1-PadE3)"))
|
||||
(pad F3 smd circle (at -0.8 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 18 "Net-(U1-PadF3)"))
|
||||
(pad G3 smd circle (at -0.8 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 19 "Net-(U1-PadG3)"))
|
||||
(pad H3 smd circle (at -0.8 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad J3 smd circle (at -0.8 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 45 "Net-(U1-PadJ3)"))
|
||||
(pad A4 smd circle (at -0.4 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 4 "Net-(C3-Pad1)"))
|
||||
(pad B4 smd circle (at -0.4 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad G4 smd circle (at -0.4 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H4 smd circle (at -0.4 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 20 "Net-(U1-PadH4)"))
|
||||
(pad J4 smd circle (at -0.4 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 46 "Net-(U1-PadJ4)"))
|
||||
(pad A5 smd circle (at 0 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 21 "Net-(U1-PadA5)"))
|
||||
(pad B5 smd circle (at 0 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 22 "Net-(U1-PadB5)"))
|
||||
(pad C5 smd circle (at 0 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 23 "Net-(U1-PadC5)"))
|
||||
(pad G5 smd circle (at 0 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H5 smd circle (at 0 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 24 "Net-(U1-PadH5)"))
|
||||
(pad J5 smd circle (at 0 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 47 "Net-(U1-PadJ5)"))
|
||||
(pad A6 smd circle (at 0.4 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 25 "Net-(U1-PadA6)"))
|
||||
(pad B6 smd circle (at 0.4 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 26 "Net-(U1-PadB6)"))
|
||||
(pad C6 smd circle (at 0.4 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 27 "Net-(U1-PadC6)"))
|
||||
(pad G6 smd circle (at 0.4 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H6 smd circle (at 0.4 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 28 "Net-(U1-PadH6)"))
|
||||
(pad J6 smd circle (at 0.4 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 48 "Net-(U1-PadJ6)"))
|
||||
(pad A7 smd circle (at 0.8 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 29 "Net-(U1-PadA7)"))
|
||||
(pad B7 smd circle (at 0.8 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 30 "Net-(U1-PadB7)"))
|
||||
(pad C7 smd circle (at 0.8 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 31 "Net-(U1-PadC7)"))
|
||||
(pad D7 smd circle (at 0.8 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad E7 smd circle (at 0.8 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 32 "Net-(U1-PadE7)"))
|
||||
(pad F7 smd circle (at 0.8 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 33 "Net-(U1-PadF7)"))
|
||||
(pad G7 smd circle (at 0.8 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 34 "Net-(U1-PadG7)"))
|
||||
(pad H7 smd circle (at 0.8 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 35 "Net-(U1-PadH7)"))
|
||||
(pad J7 smd circle (at 0.8 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 49 "Net-(U1-PadJ7)"))
|
||||
(pad A8 smd circle (at 1.2 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 36 "Net-(U1-PadA8)"))
|
||||
(pad B8 smd circle (at 1.2 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad C8 smd circle (at 1.2 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad D8 smd circle (at 1.2 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 37 "Net-(U1-PadD8)"))
|
||||
(pad E8 smd circle (at 1.2 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 38 "Net-(U1-PadE8)"))
|
||||
(pad F8 smd circle (at 1.2 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 39 "Net-(U1-PadF8)"))
|
||||
(pad G8 smd circle (at 1.2 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 40 "Net-(U1-PadG8)"))
|
||||
(pad H8 smd circle (at 1.2 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 41 "Net-(U1-PadH8)"))
|
||||
(pad J8 smd circle (at 1.2 1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 50 "Net-(U1-PadJ8)"))
|
||||
(pad A9 smd circle (at 1.6 -1.6) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask))
|
||||
(pad B9 smd circle (at 1.6 -1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 7 +BATT))
|
||||
(pad C9 smd circle (at 1.6 -0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad D9 smd circle (at 1.6 -0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 10 LED))
|
||||
(pad E9 smd circle (at 1.6 0) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 42 "Net-(U1-PadE9)"))
|
||||
(pad F9 smd circle (at 1.6 0.4) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 43 "Net-(U1-PadF9)"))
|
||||
(pad G9 smd circle (at 1.6 0.8) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(pad H9 smd circle (at 1.6 1.2) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 51 "Net-(U1-PadH9)"))
|
||||
)
|
||||
|
||||
(module Capacitors_SMD:C_0402 (layer F.Cu) (tedit 5415D599) (tstamp 55048D3E)
|
||||
(at 153 106.55 270)
|
||||
(descr "Capacitor SMD 0402, reflow soldering, AVX (see smccp.pdf)")
|
||||
(tags "capacitor 0402")
|
||||
(path /550483E1)
|
||||
(attr smd)
|
||||
(fp_text reference C5 (at 0 -1.7 270) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value 2n2 (at 0 1.7 270) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.15 -0.6) (end 1.15 -0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.15 -0.6) (end -1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.15 -0.6) (end 1.15 0.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0.25 -0.475) (end -0.25 -0.475) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -0.25 0.475) (end 0.25 0.475) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 smd rect (at -0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad 2 smd rect (at 0.55 0 270) (size 0.6 0.5) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
(model Capacitors_SMD.3dshapes/C_0402.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
||||
(module ANT:ANT-2.4GHz (layer F.Cu) (tedit 54517711) (tstamp 55049531)
|
||||
(at 149.35 106.95 90)
|
||||
(path /55047C3D)
|
||||
(fp_text reference ANT1 (at -2.5 1.5 90) (layer F.SilkS)
|
||||
(effects (font (size 0.4 0.4) (thickness 0.04)))
|
||||
)
|
||||
(fp_text value ANT-2.4GHz (at -2 2 90) (layer F.SilkS)
|
||||
(effects (font (size 0.4 0.4) (thickness 0.04)))
|
||||
)
|
||||
(pad 1 smd rect (at 0 0 90) (size 0.9 4.9) (layers F.Cu)
|
||||
(net 2 GND))
|
||||
(pad 3 smd rect (at 2.05 -2.7 90) (size 5 0.5) (layers F.Cu))
|
||||
(pad 2 smd rect (at 2.1 0 90) (size 0.5 4.9) (layers F.Cu)
|
||||
(net 53 "Net-(ANT1-Pad2)"))
|
||||
(pad 3 smd rect (at 4.3 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 6.8 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 5.55 -0.06 90) (size 2 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 7.9 -2.7 90) (size 2.7 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 12.6 -2.7 90) (size 2.7 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 9 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 11.5 -1.13 90) (size 0.5 2.64) (layers F.Cu))
|
||||
(pad 3 smd rect (at 10.25 -0.06 90) (size 2 0.5) (layers F.Cu))
|
||||
(pad 3 smd rect (at 13.7 -0.48 90) (size 0.5 3.94) (layers F.Cu))
|
||||
)
|
||||
|
||||
(module NRF51:BAL-NRF02D3 (layer F.Cu) (tedit 550C7CF1) (tstamp 55048D47)
|
||||
(at 153.65 104.55 180)
|
||||
(path /550480A2)
|
||||
(fp_text reference U2 (at 0 1.95 180) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_text value BAL-NRF02D3 (at 0 -1.95 180) (layer F.SilkS)
|
||||
(effects (font (size 1.2 1.2) (thickness 0.2)))
|
||||
)
|
||||
(fp_circle (center 0.75 -1.25) (end 1 -1.25) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1 -0.75) (end -1 0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start -1 0.75) (end 1 0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 1 0.75) (end 1 -0.75) (layer F.SilkS) (width 0.2))
|
||||
(fp_line (start 1 -0.75) (end -1 -0.75) (layer F.SilkS) (width 0.2))
|
||||
(pad A3 smd circle (at -0.5 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 12 "Net-(U1-PadD1)"))
|
||||
(pad B3 smd circle (at -0.5 0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 11 "Net-(U1-PadC1)"))
|
||||
(pad A2 smd circle (at 0 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 52 "Net-(C5-Pad1)"))
|
||||
(pad A1 smd circle (at 0.5 -0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 53 "Net-(ANT1-Pad2)"))
|
||||
(pad B1 smd circle (at 0.5 0.25 180) (size 0.2 0.2) (layers F.Cu F.Paste F.Mask)
|
||||
(net 2 GND))
|
||||
)
|
||||
|
||||
(segment (start 155.7212 102.5342) (end 155.2084 102.0214) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 155.7212 103.5306) (end 155.7212 102.5342) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 155.137 101.95) (end 155.2084 102.0214) (width 0.1016) (layer F.Cu) (net 1) (tstamp 55048FFD))
|
||||
(segment (start 153.75 101.95) (end 155.137 101.95) (width 0.1016) (layer F.Cu) (net 1))
|
||||
(segment (start 156.947646 104.7306) (end 156.7306 104.7306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.7306 104.7306) (end 156.5212 104.5212) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 104.5212) (end 156.5212 104.072021) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 104.072021) (end 156.5212 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.1212 106.3306) (end 156.5212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 105.9306) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.3212 105.9306) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.7212 104.7306) (end 156.947646 104.7306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.5212 103.9306) (end 155.3212 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.9212 104.757046) (end 156.9212 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 156.947646 104.7306) (end 156.9212 104.757046) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 157.7212 104.7306) (end 158.1212 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.1212 104.3306) (end 158.5212 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 161.2265 103.4796) (end 161.7726 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 103.4796) (end 161.2265 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 161.7726 104.0257) (end 162.0266 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 101.0626) (end 159.554 102.1588) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 100.711) (end 159.554 101.0626) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 102.6922) (end 159.3722 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 102.5104) (end 159.3722 102.6922) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.554 102.1588) (end 159.554 102.5104) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 159.3722 103.621021) (end 159.3722 103.4796) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.5212 104.3306) (end 158.662621 104.3306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 158.662621 104.3306) (end 159.3722 103.621021) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 155.0306 103.9306) (end 154.15 103.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55048FDD))
|
||||
(segment (start 154.15 103.05) (end 153.75 103.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55048FEF))
|
||||
(segment (start 155.3212 103.9306) (end 155.0306 103.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 154.15 107.1) (end 153 107.1) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 160.6042 108.3542) (end 160.6042 109.1946) (width 0.1016) (layer F.Cu) (net 2) (tstamp 5504935E))
|
||||
(segment (start 158.5212 105.9306) (end 159.05 105.9306) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 160.85 105.05) (end 159.4 105.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049373))
|
||||
(segment (start 159.4 105.05) (end 159.05 105.4) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049377))
|
||||
(segment (start 159.05 105.4) (end 159.05 105.9306) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049378))
|
||||
(segment (start 161.8743 104.0257) (end 160.85 105.05) (width 0.1016) (layer F.Cu) (net 2) (tstamp 55049366))
|
||||
(segment (start 162.0266 104.0257) (end 161.8743 104.0257) (width 0.1016) (layer F.Cu) (net 2))
|
||||
(segment (start 149.5 107.1) (end 149.35 106.95) (width 0.1016) (layer F.Cu) (net 2) (tstamp 5504964A) (status 30))
|
||||
(segment (start 149.5 107.1) (end 149.35 106.95) (width 0.254) (layer F.Cu) (net 2) (tstamp 5504967F) (status 30))
|
||||
(segment (start 153 107.1) (end 149.5 107.1) (width 0.254) (layer F.Cu) (net 2) (status 20))
|
||||
(segment (start 158.4436 100.7214) (end 158.454 100.711) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 157.0084 100.7214) (end 158.4436 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.6786 100.7214) (end 157.0084 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1084 101.2916) (end 156.6786 100.7214) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1084 103.5178) (end 156.1084 101.2916) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.1212 103.5306) (end 156.1084 103.5178) (width 0.1016) (layer F.Cu) (net 3))
|
||||
(segment (start 156.5212 103.389179) (end 157.014979 102.8954) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 156.5212 103.5306) (end 156.5212 103.389179) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 157.6674 102.8954) (end 158.404 102.1588) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 158.404 102.1588) (end 158.454 102.1588) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 157.014979 102.8954) (end 157.6674 102.8954) (width 0.1016) (layer F.Cu) (net 4))
|
||||
(segment (start 154.45 106) (end 154.9194 105.5306) (width 0.1016) (layer F.Cu) (net 5) (tstamp 5504901F))
|
||||
(segment (start 154.9194 105.5306) (end 155.3212 105.5306) (width 0.1016) (layer F.Cu) (net 5) (tstamp 55049021))
|
||||
(segment (start 154.15 106) (end 154.45 106) (width 0.1016) (layer F.Cu) (net 5))
|
||||
(segment (start 160.1717 105.9307) (end 160.0454 105.8044) (width 0.1016) (layer F.Cu) (net 6))
|
||||
(segment (start 162.0266 105.9307) (end 160.1717 105.9307) (width 0.1016) (layer F.Cu) (net 6))
|
||||
(segment (start 159 99.9) (end 159.05 99.9) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159.35 99.6) (end 161.2 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.25 111.15) (end 158.0642 110.9642) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159.05 99.9) (end 159.35 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 161.2 99.6) (end 163.35 101.75) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 163.35 101.75) (end 163.35 110.35) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 163.35 110.35) (end 162.55 111.15) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.0642 110.9642) (end 158.0642 109.1946) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 162.55 111.15) (end 158.25 111.15) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.5212 103.9306) (end 158.1212 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.0642 109.347) (end 158.0642 109.1946) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159 99.9) (end 159 103.593221) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.662621 103.9306) (end 158.5212 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 154.1 99.6) (end 158.7 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153 102.3) (end 153 100.7) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153.2 102.5) (end 153 102.3) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 158.7 99.6) (end 159 99.9) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 154.2906 102.5) (end 153.2 102.5) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 159 103.593221) (end 158.662621 103.9306) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 153 100.7) (end 154.1 99.6) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 155.3212 103.5306) (end 154.2906 102.5) (width 0.1016) (layer F.Cu) (net 7))
|
||||
(segment (start 155.7212 108.9976) (end 155.5242 109.1946) (width 0.1016) (layer F.Cu) (net 8))
|
||||
(segment (start 155.7212 106.7306) (end 155.7212 108.9976) (width 0.1016) (layer F.Cu) (net 8))
|
||||
(segment (start 152.9842 109.0676) (end 152.9842 109.1946) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 152.9842 109.1946) (end 152.9842 109.0422) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.2018 106.85) (end 155.7212 106.3306) (width 0.1016) (layer F.Cu) (net 9) (tstamp 55049280))
|
||||
(segment (start 155.1 106.95) (end 155.2 106.85) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.1 107.35) (end 155.1 106.95) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 154.55 107.9) (end 155.1 107.35) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 154.1264 107.9) (end 154.55 107.9) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 152.9842 109.0422) (end 154.1264 107.9) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 155.2 106.85) (end 155.2018 106.85) (width 0.1016) (layer F.Cu) (net 9))
|
||||
(segment (start 160.0454 104.3044) (end 159.4938 104.3044) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 158.662621 104.7306) (end 158.5212 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 159.0676 104.7306) (end 158.662621 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 159.4938 104.3044) (end 159.0676 104.7306) (width 0.1016) (layer F.Cu) (net 10))
|
||||
(segment (start 154.1806 104.3306) (end 154.15 104.3) (width 0.1016) (layer F.Cu) (net 11) (tstamp 5504938B))
|
||||
(segment (start 155.3212 104.3306) (end 154.1806 104.3306) (width 0.1016) (layer F.Cu) (net 11))
|
||||
(segment (start 154.2194 104.7306) (end 154.15 104.8) (width 0.1016) (layer F.Cu) (net 12) (tstamp 55049388))
|
||||
(segment (start 155.3212 104.7306) (end 154.2194 104.7306) (width 0.1016) (layer F.Cu) (net 12))
|
||||
(segment (start 155.3212 105.1306) (end 154.7194 105.1306) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 154.7194 105.1306) (end 154.6 105.25) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 154.6 105.25) (end 153.65 105.25) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 153.65 105.25) (end 153.65 104.8) (width 0.1016) (layer F.Cu) (net 52) (tstamp 5504901A))
|
||||
(segment (start 153.6 105.3) (end 153.65 105.25) (width 0.1016) (layer F.Cu) (net 52) (tstamp 55049386))
|
||||
(segment (start 153 105.9) (end 153.6 105.3) (width 0.1016) (layer F.Cu) (net 52) (tstamp 55049018))
|
||||
(segment (start 153 106) (end 153 105.9) (width 0.1016) (layer F.Cu) (net 52))
|
||||
(segment (start 149.4 104.8) (end 149.35 104.85) (width 0.1016) (layer F.Cu) (net 53) (tstamp 55049543) (status 30))
|
||||
(segment (start 153.1 104.85) (end 153.15 104.8) (width 0.254) (layer F.Cu) (net 53) (tstamp 550495A4))
|
||||
(segment (start 149.35 104.85) (end 153.1 104.85) (width 0.254) (layer F.Cu) (net 53) (status 10))
|
||||
|
||||
(zone (net 2) (net_name GND) (layer F.Cu) (tstamp 550C7F83) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 164 111.85) (xy 151.5 111.85) (xy 151.5 97.15) (xy 164 97.15)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 163.9238 111.318437) (xy 163.468437 111.7738) (xy 152.031563 111.7738) (xy 151.5762 111.318437) (xy 151.5762 107.6794)
|
||||
(xy 151.744424 107.6794) (xy 151.855576 107.6794) (xy 151.958267 107.636864) (xy 152.036864 107.558267) (xy 152.0794 107.455576)
|
||||
(xy 152.0794 107.02112) (xy 152.00955 106.95127) (xy 151.5762 106.95127) (xy 151.5762 106.94873) (xy 152.00955 106.94873)
|
||||
(xy 152.0794 106.87888) (xy 152.0794 106.444424) (xy 152.036864 106.341733) (xy 151.958267 106.263136) (xy 151.855576 106.2206)
|
||||
(xy 151.744424 106.2206) (xy 151.5762 106.2206) (xy 151.5762 105.3794) (xy 151.855576 105.3794) (xy 151.958267 105.336864)
|
||||
(xy 152.036864 105.258267) (xy 152.037637 105.2564) (xy 153.1 105.2564) (xy 153.195652 105.237373) (xy 153.012426 105.4206)
|
||||
(xy 152.694424 105.4206) (xy 152.591733 105.463136) (xy 152.513136 105.541733) (xy 152.4706 105.644424) (xy 152.4706 105.755576)
|
||||
(xy 152.4706 106.355576) (xy 152.513136 106.458267) (xy 152.591733 106.536864) (xy 152.623446 106.55) (xy 152.591733 106.563136)
|
||||
(xy 152.513136 106.641733) (xy 152.4706 106.744424) (xy 152.4706 107.02888) (xy 152.54045 107.09873) (xy 152.99873 107.09873)
|
||||
(xy 152.99873 107.07873) (xy 153.00127 107.07873) (xy 153.00127 107.09873) (xy 153.45955 107.09873) (xy 153.5294 107.02888)
|
||||
(xy 153.5294 106.744424) (xy 153.486864 106.641733) (xy 153.408267 106.563136) (xy 153.376553 106.55) (xy 153.408267 106.536864)
|
||||
(xy 153.486864 106.458267) (xy 153.5294 106.355576) (xy 153.5294 106.244424) (xy 153.5294 105.837574) (xy 153.6206 105.746374)
|
||||
(xy 153.6206 105.755576) (xy 153.6206 106.355576) (xy 153.663136 106.458267) (xy 153.741733 106.536864) (xy 153.773446 106.55)
|
||||
(xy 153.741733 106.563136) (xy 153.663136 106.641733) (xy 153.6206 106.744424) (xy 153.6206 107.02888) (xy 153.69045 107.09873)
|
||||
(xy 154.14873 107.09873) (xy 154.14873 107.07873) (xy 154.15127 107.07873) (xy 154.15127 107.09873) (xy 154.60955 107.09873)
|
||||
(xy 154.6794 107.02888) (xy 154.6794 106.744424) (xy 154.636864 106.641733) (xy 154.558267 106.563136) (xy 154.526553 106.55)
|
||||
(xy 154.558267 106.536864) (xy 154.636864 106.458267) (xy 154.6794 106.355576) (xy 154.6794 106.244424) (xy 154.6794 106.236217)
|
||||
(xy 154.683487 106.233487) (xy 154.7968 106.120174) (xy 154.7968 106.634168) (xy 154.872829 106.710197) (xy 154.866513 106.716513)
|
||||
(xy 154.794935 106.823638) (xy 154.7698 106.95) (xy 154.7698 107.213226) (xy 154.6794 107.303626) (xy 154.6794 107.17112)
|
||||
(xy 154.60955 107.10127) (xy 154.15127 107.10127) (xy 154.15127 107.12127) (xy 154.14873 107.12127) (xy 154.14873 107.10127)
|
||||
(xy 153.69045 107.10127) (xy 153.6206 107.17112) (xy 153.6206 107.455576) (xy 153.663136 107.558267) (xy 153.741733 107.636864)
|
||||
(xy 153.844424 107.6794) (xy 153.880026 107.6794) (xy 153.5294 108.030025) (xy 153.5294 107.455576) (xy 153.5294 107.17112)
|
||||
(xy 153.45955 107.10127) (xy 153.00127 107.10127) (xy 153.00127 107.60955) (xy 153.07112 107.6794) (xy 153.194424 107.6794)
|
||||
(xy 153.305576 107.6794) (xy 153.408267 107.636864) (xy 153.486864 107.558267) (xy 153.5294 107.455576) (xy 153.5294 108.030025)
|
||||
(xy 153.527705 108.03172) (xy 153.421607 107.960828) (xy 152.99873 107.876712) (xy 152.99873 107.60955) (xy 152.99873 107.10127)
|
||||
(xy 152.54045 107.10127) (xy 152.4706 107.17112) (xy 152.4706 107.455576) (xy 152.513136 107.558267) (xy 152.591733 107.636864)
|
||||
(xy 152.694424 107.6794) (xy 152.805576 107.6794) (xy 152.92888 107.6794) (xy 152.99873 107.60955) (xy 152.99873 107.876712)
|
||||
(xy 152.9842 107.873822) (xy 152.546793 107.960828) (xy 152.175977 108.208599) (xy 151.928206 108.579415) (xy 151.8412 109.016822)
|
||||
(xy 151.8412 109.372378) (xy 151.928206 109.809785) (xy 152.175977 110.180601) (xy 152.546793 110.428372) (xy 152.9842 110.515378)
|
||||
(xy 153.421607 110.428372) (xy 153.792423 110.180601) (xy 154.040194 109.809785) (xy 154.1272 109.372378) (xy 154.1272 109.016822)
|
||||
(xy 154.040194 108.579415) (xy 153.989631 108.503742) (xy 154.263173 108.2302) (xy 154.55 108.2302) (xy 154.676362 108.205065)
|
||||
(xy 154.783487 108.133487) (xy 155.333483 107.583489) (xy 155.333486 107.583487) (xy 155.333487 107.583487) (xy 155.391 107.497411)
|
||||
(xy 155.391 107.900317) (xy 155.086793 107.960828) (xy 154.715977 108.208599) (xy 154.468206 108.579415) (xy 154.3812 109.016822)
|
||||
(xy 154.3812 109.372378) (xy 154.468206 109.809785) (xy 154.715977 110.180601) (xy 155.086793 110.428372) (xy 155.5242 110.515378)
|
||||
(xy 155.961607 110.428372) (xy 156.332423 110.180601) (xy 156.580194 109.809785) (xy 156.6672 109.372378) (xy 156.6672 109.016822)
|
||||
(xy 156.580194 108.579415) (xy 156.332423 108.208599) (xy 156.0514 108.020825) (xy 156.0514 107.2532) (xy 158.434168 107.2532)
|
||||
(xy 159.0532 106.634168) (xy 159.0532 105.0608) (xy 159.0676 105.0608) (xy 159.193962 105.035665) (xy 159.301087 104.964087)
|
||||
(xy 159.463138 104.802035) (xy 159.539824 104.8338) (xy 159.650976 104.8338) (xy 160.550976 104.8338) (xy 160.653667 104.791264)
|
||||
(xy 160.732264 104.712667) (xy 160.7748 104.609976) (xy 160.7748 104.498824) (xy 160.7748 103.998824) (xy 160.732264 103.896133)
|
||||
(xy 160.653667 103.817536) (xy 160.550976 103.775) (xy 160.439824 103.775) (xy 160.1334 103.775) (xy 160.1334 102.464376)
|
||||
(xy 160.1334 102.353224) (xy 160.1334 102.22992) (xy 160.1334 102.08768) (xy 160.1334 101.964376) (xy 160.1334 101.853224)
|
||||
(xy 160.1334 101.016576) (xy 160.1334 100.905424) (xy 160.1334 100.78212) (xy 160.1334 100.63988) (xy 160.1334 100.516576)
|
||||
(xy 160.1334 100.405424) (xy 160.090864 100.302733) (xy 160.012267 100.224136) (xy 159.909576 100.1816) (xy 159.62512 100.1816)
|
||||
(xy 159.55527 100.25145) (xy 159.55527 100.70973) (xy 160.06355 100.70973) (xy 160.1334 100.63988) (xy 160.1334 100.78212)
|
||||
(xy 160.06355 100.71227) (xy 159.55527 100.71227) (xy 159.55527 101.17055) (xy 159.62512 101.2404) (xy 159.909576 101.2404)
|
||||
(xy 160.012267 101.197864) (xy 160.090864 101.119267) (xy 160.1334 101.016576) (xy 160.1334 101.853224) (xy 160.090864 101.750533)
|
||||
(xy 160.012267 101.671936) (xy 159.909576 101.6294) (xy 159.62512 101.6294) (xy 159.55527 101.69925) (xy 159.55527 102.15753)
|
||||
(xy 160.06355 102.15753) (xy 160.1334 102.08768) (xy 160.1334 102.22992) (xy 160.06355 102.16007) (xy 159.55527 102.16007)
|
||||
(xy 159.55527 102.61835) (xy 159.62512 102.6882) (xy 159.909576 102.6882) (xy 160.012267 102.645664) (xy 160.090864 102.567067)
|
||||
(xy 160.1334 102.464376) (xy 160.1334 103.775) (xy 159.539824 103.775) (xy 159.437133 103.817536) (xy 159.358536 103.896133)
|
||||
(xy 159.316 103.998824) (xy 159.316 104.033704) (xy 159.260313 104.070913) (xy 159.0532 104.278026) (xy 159.0532 104.006995)
|
||||
(xy 159.233487 103.826708) (xy 159.305065 103.719583) (xy 159.3302 103.593221) (xy 159.330201 103.593221) (xy 159.3302 103.593215)
|
||||
(xy 159.3302 102.6882) (xy 159.48288 102.6882) (xy 159.55273 102.61835) (xy 159.55273 102.16007) (xy 159.53273 102.16007)
|
||||
(xy 159.53273 102.15753) (xy 159.55273 102.15753) (xy 159.55273 101.69925) (xy 159.48288 101.6294) (xy 159.3302 101.6294)
|
||||
(xy 159.3302 101.2404) (xy 159.48288 101.2404) (xy 159.55273 101.17055) (xy 159.55273 100.71227) (xy 159.53273 100.71227)
|
||||
(xy 159.53273 100.70973) (xy 159.55273 100.70973) (xy 159.55273 100.25145) (xy 159.48288 100.1816) (xy 159.3302 100.1816)
|
||||
(xy 159.3302 100.086774) (xy 159.486774 99.9302) (xy 161.063226 99.9302) (xy 163.0198 101.886774) (xy 163.0198 110.213226)
|
||||
(xy 163.0045 110.228526) (xy 163.0045 106.430776) (xy 163.0045 106.319624) (xy 163.0045 105.430624) (xy 163.0045 104.525776)
|
||||
(xy 163.0045 104.09682) (xy 163.0045 103.95458) (xy 163.0045 103.525624) (xy 162.961964 103.422933) (xy 162.883367 103.344336)
|
||||
(xy 162.780676 103.3018) (xy 162.669524 103.3018) (xy 162.09772 103.3018) (xy 162.02787 103.37165) (xy 162.02787 104.02443)
|
||||
(xy 162.93465 104.02443) (xy 163.0045 103.95458) (xy 163.0045 104.09682) (xy 162.93465 104.02697) (xy 162.02787 104.02697)
|
||||
(xy 162.02787 104.67975) (xy 162.09772 104.7496) (xy 162.669524 104.7496) (xy 162.780676 104.7496) (xy 162.883367 104.707064)
|
||||
(xy 162.961964 104.628467) (xy 163.0045 104.525776) (xy 163.0045 105.430624) (xy 162.961964 105.327933) (xy 162.883367 105.249336)
|
||||
(xy 162.780676 105.2068) (xy 162.669524 105.2068) (xy 162.02533 105.2068) (xy 162.02533 104.67975) (xy 162.02533 104.02697)
|
||||
(xy 162.02533 104.02443) (xy 162.02533 103.37165) (xy 161.95548 103.3018) (xy 161.383676 103.3018) (xy 161.272524 103.3018)
|
||||
(xy 161.169833 103.344336) (xy 161.091236 103.422933) (xy 161.0487 103.525624) (xy 161.0487 103.95458) (xy 161.11855 104.02443)
|
||||
(xy 162.02533 104.02443) (xy 162.02533 104.02697) (xy 161.11855 104.02697) (xy 161.0487 104.09682) (xy 161.0487 104.525776)
|
||||
(xy 161.091236 104.628467) (xy 161.169833 104.707064) (xy 161.272524 104.7496) (xy 161.383676 104.7496) (xy 161.95548 104.7496)
|
||||
(xy 162.02533 104.67975) (xy 162.02533 105.2068) (xy 161.272524 105.2068) (xy 161.169833 105.249336) (xy 161.091236 105.327933)
|
||||
(xy 161.0487 105.430624) (xy 161.0487 105.541776) (xy 161.0487 105.6005) (xy 160.7748 105.6005) (xy 160.7748 105.498824)
|
||||
(xy 160.732264 105.396133) (xy 160.653667 105.317536) (xy 160.550976 105.275) (xy 160.439824 105.275) (xy 159.539824 105.275)
|
||||
(xy 159.437133 105.317536) (xy 159.358536 105.396133) (xy 159.316 105.498824) (xy 159.316 105.609976) (xy 159.316 106.109976)
|
||||
(xy 159.358536 106.212667) (xy 159.437133 106.291264) (xy 159.539824 106.3338) (xy 159.650976 106.3338) (xy 160.550976 106.3338)
|
||||
(xy 160.653667 106.291264) (xy 160.684031 106.2609) (xy 161.0487 106.2609) (xy 161.0487 106.430776) (xy 161.091236 106.533467)
|
||||
(xy 161.169833 106.612064) (xy 161.272524 106.6546) (xy 161.383676 106.6546) (xy 162.780676 106.6546) (xy 162.883367 106.612064)
|
||||
(xy 162.961964 106.533467) (xy 163.0045 106.430776) (xy 163.0045 110.228526) (xy 162.413226 110.8198) (xy 161.7472 110.8198)
|
||||
(xy 161.7472 110.266176) (xy 161.7472 110.155024) (xy 161.7472 109.26572) (xy 161.7472 109.12348) (xy 161.7472 108.234176)
|
||||
(xy 161.7472 108.123024) (xy 161.704664 108.020333) (xy 161.626067 107.941736) (xy 161.523376 107.8992) (xy 160.67532 107.8992)
|
||||
(xy 160.60547 107.96905) (xy 160.60547 109.19333) (xy 161.67735 109.19333) (xy 161.7472 109.12348) (xy 161.7472 109.26572)
|
||||
(xy 161.67735 109.19587) (xy 160.60547 109.19587) (xy 160.60547 110.42015) (xy 160.67532 110.49) (xy 161.523376 110.49)
|
||||
(xy 161.626067 110.447464) (xy 161.704664 110.368867) (xy 161.7472 110.266176) (xy 161.7472 110.8198) (xy 160.60293 110.8198)
|
||||
(xy 160.60293 110.42015) (xy 160.60293 109.19587) (xy 160.60293 109.19333) (xy 160.60293 107.96905) (xy 160.53308 107.8992)
|
||||
(xy 159.685024 107.8992) (xy 159.582333 107.941736) (xy 159.503736 108.020333) (xy 159.4612 108.123024) (xy 159.4612 108.234176)
|
||||
(xy 159.4612 109.12348) (xy 159.53105 109.19333) (xy 160.60293 109.19333) (xy 160.60293 109.19587) (xy 159.53105 109.19587)
|
||||
(xy 159.4612 109.26572) (xy 159.4612 110.155024) (xy 159.4612 110.266176) (xy 159.503736 110.368867) (xy 159.582333 110.447464)
|
||||
(xy 159.685024 110.49) (xy 160.53308 110.49) (xy 160.60293 110.42015) (xy 160.60293 110.8198) (xy 158.3944 110.8198)
|
||||
(xy 158.3944 110.449696) (xy 158.501607 110.428372) (xy 158.872423 110.180601) (xy 159.120194 109.809785) (xy 159.2072 109.372378)
|
||||
(xy 159.2072 109.016822) (xy 159.120194 108.579415) (xy 158.872423 108.208599) (xy 158.501607 107.960828) (xy 158.0642 107.873822)
|
||||
(xy 157.626793 107.960828) (xy 157.255977 108.208599) (xy 157.008206 108.579415) (xy 156.9212 109.016822) (xy 156.9212 109.372378)
|
||||
(xy 157.008206 109.809785) (xy 157.255977 110.180601) (xy 157.626793 110.428372) (xy 157.734 110.449696) (xy 157.734 110.9642)
|
||||
(xy 157.759135 111.090562) (xy 157.830713 111.197687) (xy 158.016513 111.383487) (xy 158.123638 111.455065) (xy 158.25 111.480201)
|
||||
(xy 158.25 111.4802) (xy 158.250005 111.4802) (xy 162.55 111.4802) (xy 162.676362 111.455065) (xy 162.783487 111.383487)
|
||||
(xy 163.583487 110.583487) (xy 163.655065 110.476362) (xy 163.6802 110.35) (xy 163.680201 110.35) (xy 163.6802 110.349994)
|
||||
(xy 163.6802 101.75) (xy 163.655065 101.623638) (xy 163.583487 101.516513) (xy 161.433487 99.366513) (xy 161.326362 99.294935)
|
||||
(xy 161.2 99.2698) (xy 159.35 99.2698) (xy 159.223638 99.294935) (xy 159.116513 99.366513) (xy 159.025 99.458026)
|
||||
(xy 158.933487 99.366513) (xy 158.826362 99.294935) (xy 158.7 99.2698) (xy 154.100005 99.2698) (xy 154.1 99.269799)
|
||||
(xy 153.973638 99.294935) (xy 153.866513 99.366513) (xy 152.766513 100.466513) (xy 152.694935 100.573638) (xy 152.6698 100.7)
|
||||
(xy 152.6698 102.3) (xy 152.694935 102.426362) (xy 152.766513 102.533487) (xy 152.96651 102.733483) (xy 152.966513 102.733487)
|
||||
(xy 152.966514 102.733487) (xy 153.073638 102.805065) (xy 153.2 102.830201) (xy 153.2 102.8302) (xy 153.200005 102.8302)
|
||||
(xy 153.2206 102.8302) (xy 153.2206 102.97888) (xy 153.29045 103.04873) (xy 153.74873 103.04873) (xy 153.74873 103.02873)
|
||||
(xy 153.75127 103.02873) (xy 153.75127 103.04873) (xy 154.20955 103.04873) (xy 154.2794 102.97888) (xy 154.2794 102.955773)
|
||||
(xy 154.868129 103.544502) (xy 154.7968 103.615832) (xy 154.7968 104.0004) (xy 154.387007 104.0004) (xy 154.365194 103.978548)
|
||||
(xy 154.2794 103.942923) (xy 154.2794 103.405576) (xy 154.2794 103.12112) (xy 154.20955 103.05127) (xy 153.75127 103.05127)
|
||||
(xy 153.75127 103.55955) (xy 153.82112 103.6294) (xy 153.944424 103.6294) (xy 154.055576 103.6294) (xy 154.158267 103.586864)
|
||||
(xy 154.236864 103.508267) (xy 154.2794 103.405576) (xy 154.2794 103.942923) (xy 154.225798 103.920666) (xy 154.074864 103.920534)
|
||||
(xy 153.935368 103.978173) (xy 153.887912 104.025544) (xy 153.74873 103.886362) (xy 153.74873 103.55955) (xy 153.74873 103.05127)
|
||||
(xy 153.29045 103.05127) (xy 153.2206 103.12112) (xy 153.2206 103.405576) (xy 153.263136 103.508267) (xy 153.341733 103.586864)
|
||||
(xy 153.444424 103.6294) (xy 153.555576 103.6294) (xy 153.67888 103.6294) (xy 153.74873 103.55955) (xy 153.74873 103.886362)
|
||||
(xy 153.675 103.812632) (xy 153.412173 104.075458) (xy 153.376346 104.076713) (xy 153.376346 103.986301) (xy 153.239069 103.92356)
|
||||
(xy 153.088231 103.91813) (xy 152.946798 103.970835) (xy 152.923654 103.986301) (xy 152.926759 104.074963) (xy 153.15 104.298204)
|
||||
(xy 153.373241 104.074963) (xy 153.376346 103.986301) (xy 153.376346 104.076713) (xy 153.375037 104.076759) (xy 153.151796 104.3)
|
||||
(xy 153.165938 104.314142) (xy 153.164142 104.315938) (xy 153.15 104.301796) (xy 153.135857 104.315938) (xy 153.134061 104.314142)
|
||||
(xy 153.148204 104.3) (xy 152.924963 104.076759) (xy 152.836301 104.073654) (xy 152.77356 104.210931) (xy 152.76813 104.361769)
|
||||
(xy 152.798624 104.4436) (xy 152.037637 104.4436) (xy 152.036864 104.441733) (xy 151.958267 104.363136) (xy 151.855576 104.3206)
|
||||
(xy 151.744424 104.3206) (xy 151.5762 104.3206) (xy 151.5762 97.681563) (xy 152.031563 97.2262) (xy 163.468437 97.2262)
|
||||
(xy 163.9238 97.681563) (xy 163.9238 111.318437)
|
||||
)
|
||||
)
|
||||
)
|
||||
(zone (net 0) (net_name "") (layer F.Cu) (tstamp 550C7E3B) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(keepout (tracks allowed) (vias allowed) (copperpour not_allowed))
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 153.9 104.55) (xy 153.45 104.55) (xy 153.45 104.1) (xy 153.9 104.1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(zone (net 0) (net_name "") (layer F.Cu) (tstamp 550C7E43) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.2032))
|
||||
(min_thickness 0.1524)
|
||||
(keepout (tracks allowed) (vias allowed) (copperpour not_allowed))
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.2032) (thermal_bridge_width 0.15494) (smoothing chamfer) (radius 0.5))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 158.85 107.05) (xy 155 107.05) (xy 155 103.2) (xy 158.85 103.2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
601
samples/Lex/zend_ini_scanner.l
Normal file
601
samples/Lex/zend_ini_scanner.l
Normal file
@@ -0,0 +1,601 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| Zend Engine |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1998-2012 Zend Technologies Ltd. (http://www.zend.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.00 of the Zend license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.zend.com/license/2_00.txt. |
|
||||
| If you did not receive a copy of the Zend license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@zend.com so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
| Authors: Zeev Suraski <zeev@zend.com> |
|
||||
| Jani Taskinen <jani@php.net> |
|
||||
| Marcus Boerger <helly@php.net> |
|
||||
| Nuno Lopes <nlopess@php.net> |
|
||||
| Scott MacVicar <scottmac@php.net> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include <errno.h>
|
||||
#include "zend.h"
|
||||
#include "zend_globals.h"
|
||||
#include <zend_ini_parser.h>
|
||||
#include "zend_ini_scanner.h"
|
||||
|
||||
#if 0
|
||||
# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
|
||||
#else
|
||||
# define YYDEBUG(s, c)
|
||||
#endif
|
||||
|
||||
#include "zend_ini_scanner_defs.h"
|
||||
|
||||
#define YYCTYPE unsigned char
|
||||
/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
|
||||
* so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
|
||||
#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
|
||||
#define YYCURSOR SCNG(yy_cursor)
|
||||
#define YYLIMIT SCNG(yy_limit)
|
||||
#define YYMARKER SCNG(yy_marker)
|
||||
|
||||
#define YYGETCONDITION() SCNG(yy_state)
|
||||
#define YYSETCONDITION(s) SCNG(yy_state) = s
|
||||
|
||||
#define STATE(name) yyc##name
|
||||
|
||||
/* emulate flex constructs */
|
||||
#define BEGIN(state) YYSETCONDITION(STATE(state))
|
||||
#define YYSTATE YYGETCONDITION()
|
||||
#define yytext ((char*)SCNG(yy_text))
|
||||
#define yyleng SCNG(yy_leng)
|
||||
#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \
|
||||
yyleng = (unsigned int)x; } while(0)
|
||||
|
||||
/* #define yymore() goto yymore_restart */
|
||||
|
||||
/* perform sanity check. If this message is triggered you should
|
||||
increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
|
||||
/*!max:re2c */
|
||||
#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
|
||||
# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
|
||||
#endif
|
||||
|
||||
|
||||
/* How it works (for the core ini directives):
|
||||
* ===========================================
|
||||
*
|
||||
* 1. Scanner scans file for tokens and passes them to parser.
|
||||
* 2. Parser parses the tokens and passes the name/value pairs to the callback
|
||||
* function which stores them in the configuration hash table.
|
||||
* 3. Later REGISTER_INI_ENTRIES() is called which triggers the actual
|
||||
* registering of ini entries and uses zend_get_configuration_directive()
|
||||
* to fetch the previously stored name/value pair from configuration hash table
|
||||
* and registers the static ini entries which match the name to the value
|
||||
* into EG(ini_directives) hash table.
|
||||
* 4. PATH section entries are used per-request from down to top, each overriding
|
||||
* previous if one exists. zend_alter_ini_entry() is called for each entry.
|
||||
* Settings in PATH section are ZEND_INI_SYSTEM accessible and thus mimics the
|
||||
* php_admin_* directives used within Apache httpd.conf when PHP is compiled as
|
||||
* module for Apache.
|
||||
* 5. User defined ini files (like .htaccess for apache) are parsed for each request and
|
||||
* stored in separate hash defined by SAPI.
|
||||
*/
|
||||
|
||||
/* TODO: (ordered by importance :-)
|
||||
* ===============================================================================
|
||||
*
|
||||
* - Separate constant lookup totally from plain strings (using CONSTANT pattern)
|
||||
* - Add #if .. #else .. #endif and ==, !=, <, > , <=, >= operators
|
||||
* - Add #include "some.ini"
|
||||
* - Allow variables to refer to options also when using parse_ini_file()
|
||||
*
|
||||
*/
|
||||
|
||||
/* Globals Macros */
|
||||
#define SCNG INI_SCNG
|
||||
#ifdef ZTS
|
||||
ZEND_API ts_rsrc_id ini_scanner_globals_id;
|
||||
#else
|
||||
ZEND_API zend_ini_scanner_globals ini_scanner_globals;
|
||||
#endif
|
||||
|
||||
/* Eat leading whitespace */
|
||||
#define EAT_LEADING_WHITESPACE() \
|
||||
while (yytext[0]) { \
|
||||
if (yytext[0] == ' ' || yytext[0] == '\t') { \
|
||||
SCNG(yy_text)++; \
|
||||
yyleng--; \
|
||||
} else { \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
/* Eat trailing whitespace + extra char */
|
||||
#define EAT_TRAILING_WHITESPACE_EX(ch) \
|
||||
while (yyleng > 0 && ( \
|
||||
(ch != 'X' && yytext[yyleng - 1] == ch) || \
|
||||
yytext[yyleng - 1] == '\n' || \
|
||||
yytext[yyleng - 1] == '\r' || \
|
||||
yytext[yyleng - 1] == '\t' || \
|
||||
yytext[yyleng - 1] == ' ') \
|
||||
) { \
|
||||
yyleng--; \
|
||||
}
|
||||
|
||||
/* Eat trailing whitespace */
|
||||
#define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X')
|
||||
|
||||
#define zend_ini_copy_value(retval, str, len) { \
|
||||
Z_STRVAL_P(retval) = zend_strndup(str, len); \
|
||||
Z_STRLEN_P(retval) = len; \
|
||||
Z_TYPE_P(retval) = IS_STRING; \
|
||||
}
|
||||
|
||||
#define RETURN_TOKEN(type, str, len) { \
|
||||
zend_ini_copy_value(ini_lval, str, len); \
|
||||
return type; \
|
||||
}
|
||||
|
||||
static void _yy_push_state(int new_state TSRMLS_DC)
|
||||
{
|
||||
zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int));
|
||||
YYSETCONDITION(new_state);
|
||||
}
|
||||
|
||||
#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
|
||||
|
||||
static void yy_pop_state(TSRMLS_D)
|
||||
{
|
||||
int *stack_state;
|
||||
zend_stack_top(&SCNG(state_stack), (void **) &stack_state);
|
||||
YYSETCONDITION(*stack_state);
|
||||
zend_stack_del_top(&SCNG(state_stack));
|
||||
}
|
||||
|
||||
static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
|
||||
{
|
||||
YYCURSOR = (YYCTYPE*)str;
|
||||
SCNG(yy_start) = YYCURSOR;
|
||||
YYLIMIT = YYCURSOR + len;
|
||||
}
|
||||
|
||||
#define ini_filename SCNG(filename)
|
||||
|
||||
/* {{{ init_ini_scanner()
|
||||
*/
|
||||
static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC)
|
||||
{
|
||||
/* Sanity check */
|
||||
if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW) {
|
||||
zend_error(E_WARNING, "Invalid scanner mode");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
SCNG(lineno) = 1;
|
||||
SCNG(scanner_mode) = scanner_mode;
|
||||
SCNG(yy_in) = fh;
|
||||
|
||||
if (fh != NULL) {
|
||||
ini_filename = zend_strndup(fh->filename, strlen(fh->filename));
|
||||
} else {
|
||||
ini_filename = NULL;
|
||||
}
|
||||
|
||||
zend_stack_init(&SCNG(state_stack));
|
||||
BEGIN(INITIAL);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ shutdown_ini_scanner()
|
||||
*/
|
||||
void shutdown_ini_scanner(TSRMLS_D)
|
||||
{
|
||||
zend_stack_destroy(&SCNG(state_stack));
|
||||
if (ini_filename) {
|
||||
free(ini_filename);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ zend_ini_scanner_get_lineno()
|
||||
*/
|
||||
int zend_ini_scanner_get_lineno(TSRMLS_D)
|
||||
{
|
||||
return SCNG(lineno);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ zend_ini_scanner_get_filename()
|
||||
*/
|
||||
char *zend_ini_scanner_get_filename(TSRMLS_D)
|
||||
{
|
||||
return ini_filename ? ini_filename : "Unknown";
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ zend_ini_open_file_for_scanning()
|
||||
*/
|
||||
int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode TSRMLS_DC)
|
||||
{
|
||||
char *buf;
|
||||
size_t size;
|
||||
|
||||
if (zend_stream_fixup(fh, &buf, &size TSRMLS_CC) == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (init_ini_scanner(scanner_mode, fh TSRMLS_CC) == FAILURE) {
|
||||
zend_file_handle_dtor(fh TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
yy_scan_buffer(buf, size TSRMLS_CC);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ zend_ini_prepare_string_for_scanning()
|
||||
*/
|
||||
int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode TSRMLS_DC)
|
||||
{
|
||||
int len = strlen(str);
|
||||
|
||||
if (init_ini_scanner(scanner_mode, NULL TSRMLS_CC) == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
yy_scan_buffer(str, len TSRMLS_CC);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ zend_ini_escape_string()
|
||||
*/
|
||||
static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type TSRMLS_DC)
|
||||
{
|
||||
register char *s, *t;
|
||||
char *end;
|
||||
|
||||
zend_ini_copy_value(lval, str, len);
|
||||
|
||||
/* convert escape sequences */
|
||||
s = t = Z_STRVAL_P(lval);
|
||||
end = s + Z_STRLEN_P(lval);
|
||||
|
||||
while (s < end) {
|
||||
if (*s == '\\') {
|
||||
s++;
|
||||
if (s >= end) {
|
||||
*t++ = '\\';
|
||||
continue;
|
||||
}
|
||||
switch (*s) {
|
||||
case '"':
|
||||
if (*s != quote_type) {
|
||||
*t++ = '\\';
|
||||
*t++ = *s;
|
||||
break;
|
||||
}
|
||||
case '\\':
|
||||
case '$':
|
||||
*t++ = *s;
|
||||
Z_STRLEN_P(lval)--;
|
||||
break;
|
||||
default:
|
||||
*t++ = '\\';
|
||||
*t++ = *s;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
*t++ = *s;
|
||||
}
|
||||
if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
|
||||
SCNG(lineno)++;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
*t = 0;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
int ini_lex(zval *ini_lval TSRMLS_DC)
|
||||
{
|
||||
restart:
|
||||
SCNG(yy_text) = YYCURSOR;
|
||||
|
||||
/* yymore_restart: */
|
||||
/* detect EOF */
|
||||
if (YYCURSOR >= YYLIMIT) {
|
||||
if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
|
||||
BEGIN(INITIAL);
|
||||
return END_OF_LINE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Eat any UTF-8 BOM we find in the first 3 bytes */
|
||||
if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
|
||||
if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
|
||||
YYCURSOR += 3;
|
||||
goto restart;
|
||||
}
|
||||
}
|
||||
/*!re2c
|
||||
re2c:yyfill:check = 0;
|
||||
LNUM [0-9]+
|
||||
DNUM ([0-9]*[\.][0-9]+)|([0-9]+[\.][0-9]*)
|
||||
NUMBER [-]?{LNUM}|{DNUM}
|
||||
ANY_CHAR (.|[\n\t])
|
||||
NEWLINE ("\r"|"\n"|"\r\n")
|
||||
TABS_AND_SPACES [ \t]
|
||||
WHITESPACE [ \t]+
|
||||
CONSTANT [a-zA-Z_][a-zA-Z0-9_]*
|
||||
LABEL [^=\n\r\t;|&$~(){}!"\[]+
|
||||
TOKENS [:,.\[\]"'()|^&+-/*=%$!~<>?@{}]
|
||||
OPERATORS [&|~()!]
|
||||
DOLLAR_CURLY "${"
|
||||
|
||||
SECTION_RAW_CHARS [^\]\n\r]
|
||||
SINGLE_QUOTED_CHARS [^']
|
||||
RAW_VALUE_CHARS [^"\n\r;\000]
|
||||
|
||||
LITERAL_DOLLAR ("$"([^{\000]|("\\"{ANY_CHAR})))
|
||||
VALUE_CHARS ([^$= \t\n\r;&|~()!"'\000]|{LITERAL_DOLLAR})
|
||||
SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
|
||||
|
||||
<!*> := yyleng = YYCURSOR - SCNG(yy_text);
|
||||
|
||||
<INITIAL>"[" { /* Section start */
|
||||
/* Enter section data lookup state */
|
||||
if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
|
||||
yy_push_state(ST_SECTION_RAW TSRMLS_CC);
|
||||
} else {
|
||||
yy_push_state(ST_SECTION_VALUE TSRMLS_CC);
|
||||
}
|
||||
return TC_SECTION;
|
||||
}
|
||||
|
||||
<ST_VALUE,ST_SECTION_VALUE,ST_OFFSET>"'"{SINGLE_QUOTED_CHARS}+"'" { /* Raw string */
|
||||
/* Eat leading and trailing single quotes */
|
||||
if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
|
||||
SCNG(yy_text)++;
|
||||
yyleng = yyleng - 2;
|
||||
}
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_SECTION_RAW,ST_SECTION_VALUE>"]"{TABS_AND_SPACES}*{NEWLINE}? { /* End of section */
|
||||
BEGIN(INITIAL);
|
||||
SCNG(lineno)++;
|
||||
return ']';
|
||||
}
|
||||
|
||||
<INITIAL>{LABEL}"["{TABS_AND_SPACES}* { /* Start of option with offset */
|
||||
/* Eat leading whitespace */
|
||||
EAT_LEADING_WHITESPACE();
|
||||
|
||||
/* Eat trailing whitespace and [ */
|
||||
EAT_TRAILING_WHITESPACE_EX('[');
|
||||
|
||||
/* Enter offset lookup state */
|
||||
yy_push_state(ST_OFFSET TSRMLS_CC);
|
||||
|
||||
RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_OFFSET>{TABS_AND_SPACES}*"]" { /* End of section or an option offset */
|
||||
BEGIN(INITIAL);
|
||||
return ']';
|
||||
}
|
||||
|
||||
<ST_DOUBLE_QUOTES,ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{DOLLAR_CURLY} { /* Variable start */
|
||||
yy_push_state(ST_VARNAME TSRMLS_CC);
|
||||
return TC_DOLLAR_CURLY;
|
||||
}
|
||||
|
||||
<ST_VARNAME>{LABEL} { /* Variable name */
|
||||
/* Eat leading whitespace */
|
||||
EAT_LEADING_WHITESPACE();
|
||||
|
||||
/* Eat trailing whitespace */
|
||||
EAT_TRAILING_WHITESPACE();
|
||||
|
||||
RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_VARNAME>"}" { /* Variable end */
|
||||
yy_pop_state(TSRMLS_C);
|
||||
return '}';
|
||||
}
|
||||
|
||||
<INITIAL,ST_VALUE>("true"|"on"|"yes"){TABS_AND_SPACES}* { /* TRUE value (when used outside option value/offset this causes parse error!) */
|
||||
RETURN_TOKEN(BOOL_TRUE, "1", 1);
|
||||
}
|
||||
|
||||
<INITIAL,ST_VALUE>("false"|"off"|"no"|"none"|"null"){TABS_AND_SPACES}* { /* FALSE value (when used outside option value/offset this causes parse error!)*/
|
||||
RETURN_TOKEN(BOOL_FALSE, "", 0);
|
||||
}
|
||||
|
||||
<INITIAL>{LABEL} { /* Get option name */
|
||||
/* Eat leading whitespace */
|
||||
EAT_LEADING_WHITESPACE();
|
||||
|
||||
/* Eat trailing whitespace */
|
||||
EAT_TRAILING_WHITESPACE();
|
||||
|
||||
RETURN_TOKEN(TC_LABEL, yytext, yyleng);
|
||||
}
|
||||
|
||||
<INITIAL>{TABS_AND_SPACES}*[=]{TABS_AND_SPACES}* { /* Start option value */
|
||||
if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
|
||||
yy_push_state(ST_RAW TSRMLS_CC);
|
||||
} else {
|
||||
yy_push_state(ST_VALUE TSRMLS_CC);
|
||||
}
|
||||
return '=';
|
||||
}
|
||||
|
||||
<ST_RAW>["] {
|
||||
while (YYCURSOR < YYLIMIT) {
|
||||
switch (*YYCURSOR++) {
|
||||
case '\n':
|
||||
SCNG(lineno)++;
|
||||
break;
|
||||
case '\r':
|
||||
if (*YYCURSOR != '\n') {
|
||||
SCNG(lineno)++;
|
||||
}
|
||||
break;
|
||||
case '"':
|
||||
yyleng = YYCURSOR - SCNG(yy_text) - 2;
|
||||
SCNG(yy_text)++;
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
case '\\':
|
||||
if (YYCURSOR < YYLIMIT) {
|
||||
YYCURSOR++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
yyleng = YYCURSOR - SCNG(yy_text);
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_RAW>{RAW_VALUE_CHARS}+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_SECTION_RAW>{SECTION_RAW_CHARS}+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_VALUE,ST_RAW>{TABS_AND_SPACES}*{NEWLINE} { /* End of option value */
|
||||
BEGIN(INITIAL);
|
||||
SCNG(lineno)++;
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{CONSTANT} { /* Get constant option value */
|
||||
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{NUMBER} { /* Get number option value as string */
|
||||
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
|
||||
}
|
||||
|
||||
<INITIAL>{TOKENS} { /* Disallow these chars outside option values */
|
||||
return yytext[0];
|
||||
}
|
||||
|
||||
<ST_VALUE>{OPERATORS}{TABS_AND_SPACES}* { /* Boolean operators */
|
||||
return yytext[0];
|
||||
}
|
||||
|
||||
<ST_VALUE>[=] { /* Make = used in option value to trigger error */
|
||||
yyless(0);
|
||||
BEGIN(INITIAL);
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<ST_VALUE>{VALUE_CHARS}+ { /* Get everything else as option/offset value */
|
||||
RETURN_TOKEN(TC_STRING, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_SECTION_VALUE,ST_OFFSET>{SECTION_VALUE_CHARS}+ { /* Get rest as section/offset value */
|
||||
RETURN_TOKEN(TC_STRING, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{TABS_AND_SPACES}*["] { /* Double quoted '"' string start */
|
||||
yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
|
||||
return '"';
|
||||
}
|
||||
|
||||
<ST_DOUBLE_QUOTES>["]{TABS_AND_SPACES}* { /* Double quoted '"' string ends */
|
||||
yy_pop_state(TSRMLS_C);
|
||||
return '"';
|
||||
}
|
||||
|
||||
<ST_DOUBLE_QUOTES>[^] { /* Escape double quoted string contents */
|
||||
if (YYCURSOR > YYLIMIT) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (YYCURSOR < YYLIMIT) {
|
||||
switch (*YYCURSOR++) {
|
||||
case '"':
|
||||
if (YYCURSOR < YYLIMIT && YYCURSOR[-2] == '\\' && *YYCURSOR != '\r' && *YYCURSOR != '\n') {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case '$':
|
||||
if (*YYCURSOR == '{') {
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
case '\\':
|
||||
if (YYCURSOR < YYLIMIT && *YYCURSOR != '"') {
|
||||
YYCURSOR++;
|
||||
}
|
||||
/* fall through */
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
YYCURSOR--;
|
||||
break;
|
||||
}
|
||||
|
||||
yyleng = YYCURSOR - SCNG(yy_text);
|
||||
|
||||
zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
|
||||
return TC_QUOTED_STRING;
|
||||
}
|
||||
|
||||
<ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{WHITESPACE} {
|
||||
RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
|
||||
}
|
||||
|
||||
<INITIAL,ST_RAW>{TABS_AND_SPACES}+ {
|
||||
/* eat whitespace */
|
||||
goto restart;
|
||||
}
|
||||
|
||||
<INITIAL>{TABS_AND_SPACES}*{NEWLINE} {
|
||||
SCNG(lineno)++;
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<INITIAL,ST_VALUE,ST_RAW>{TABS_AND_SPACES}*[;][^\r\n]*{NEWLINE} { /* Comment */
|
||||
BEGIN(INITIAL);
|
||||
SCNG(lineno)++;
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<INITIAL>{TABS_AND_SPACES}*[#][^\r\n]*{NEWLINE} { /* #Comment */
|
||||
zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno));
|
||||
BEGIN(INITIAL);
|
||||
SCNG(lineno)++;
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<ST_VALUE,ST_RAW>[^] { /* End of option value (if EOF is reached before EOL */
|
||||
BEGIN(INITIAL);
|
||||
return END_OF_LINE;
|
||||
}
|
||||
|
||||
<*>[^] {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
2
samples/Linux Kernel Module/bcm4334x.mod
Normal file
2
samples/Linux Kernel Module/bcm4334x.mod
Normal file
@@ -0,0 +1,2 @@
|
||||
/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcm4334x.ko
|
||||
/data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_pno.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_ip.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_custom_gpio.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_sched.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_wq.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/aiutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmevent.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmwifi_channels.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/hndpmu.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/linux_osl.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/sbutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/siutils.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_android.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg80211.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfgp2p.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_cfg_btcoex.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wldev_common.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/wl_linux_mon.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_linux_platdev.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/bcmsdh_sdmmc_linux.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_cdc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_wlfc.o /data/israel/edison/poky/meta-edison/recipes-kernel/bcm43340/driver_bcm43x/dhd_sdio.o
|
||||
2
samples/Linux Kernel Module/mbcache.mod
Normal file
2
samples/Linux Kernel Module/mbcache.mod
Normal file
@@ -0,0 +1,2 @@
|
||||
fs/mbcache.ko
|
||||
fs/mbcache.o
|
||||
2
samples/Linux Kernel Module/md5.mod
Normal file
2
samples/Linux Kernel Module/md5.mod
Normal file
@@ -0,0 +1,2 @@
|
||||
crypto/md5.ko
|
||||
crypto/md5.o
|
||||
23
samples/Makefile/filenames/Kbuild
Normal file
23
samples/Makefile/filenames/Kbuild
Normal file
@@ -0,0 +1,23 @@
|
||||
# Fail on warnings - also for files referenced in subdirs
|
||||
# -Werror can be disabled for specific files using:
|
||||
# CFLAGS_<file.o> := -Wno-error
|
||||
subdir-ccflags-y := -Werror
|
||||
|
||||
# platform specific definitions
|
||||
include arch/mips/Kbuild.platforms
|
||||
obj-y := $(platform-y)
|
||||
|
||||
# make clean traverses $(obj-) without having included .config, so
|
||||
# everything ends up here
|
||||
obj- := $(platform-)
|
||||
|
||||
# mips object files
|
||||
# The object files are linked as core-y files would be linked
|
||||
|
||||
obj-y += kernel/
|
||||
obj-y += mm/
|
||||
obj-y += net/
|
||||
|
||||
ifdef CONFIG_KVM
|
||||
obj-y += kvm/
|
||||
endif
|
||||
31
samples/Makefile/filenames/Makefile.inc
Normal file
31
samples/Makefile/filenames/Makefile.inc
Normal file
@@ -0,0 +1,31 @@
|
||||
# $OpenBSD: Makefile.inc,v 1.2 2003/11/14 20:09:20 drahn Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.1 1996/09/30 16:34:59 ws Exp $
|
||||
|
||||
.if !defined(__stand_makefile_inc)
|
||||
__stand_makefile_inc=1
|
||||
|
||||
KERN_AS= library
|
||||
|
||||
S=$(.CURDIR)/../../../$(R)
|
||||
|
||||
.if !make(libdep) && !make(sadep) && !make(salibdir) && !make(kernlibdir) && !make(obj) && !defined(NOMACHINE)
|
||||
.BEGIN:
|
||||
@([ -h machine ] || ln -s $(S)/arch/$(MACHINE)/include machine)
|
||||
.endif
|
||||
|
||||
#
|
||||
EXTRACFLAGS= -msoft-float
|
||||
REAL_VIRT?= -v
|
||||
ENTRY?= _start
|
||||
|
||||
INCLUDES+= -I. -I$(.OBJDIR) -I$(.CURDIR)/.. -I$(S)/arch -I$(S)
|
||||
INCLUDES+= -I$(S)/lib/libsa
|
||||
DEFS+= -DSTANDALONE
|
||||
CFLAGS+= $(INCLUDES) $(DEFS) $(EXTRACFLAGS)
|
||||
CFLAGS+= -fno-stack-protector
|
||||
LDFLAGS?= -X -N -Ttext $(RELOC) -e $(ENTRY)
|
||||
|
||||
cleandir:
|
||||
rm -rf lib machine
|
||||
|
||||
.endif
|
||||
26
samples/Modelica/NestedPackages.mo
Normal file
26
samples/Modelica/NestedPackages.mo
Normal file
@@ -0,0 +1,26 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
package NestedPackages
|
||||
"An example of how packages can be used to organize things"
|
||||
package Types
|
||||
type Rabbits = Real(quantity="Rabbits", min=0);
|
||||
type Wolves = Real(quantity="Wolves", min=0);
|
||||
type RabbitReproduction = Real(quantity="Rabbit Reproduction", min=0);
|
||||
type RabbitFatalities = Real(quantity="Rabbit Fatalities", min=0);
|
||||
type WolfReproduction = Real(quantity="Wolf Reproduction", min=0);
|
||||
type WolfFatalities = Real(quantity="Wolf Fatalities", min=0);
|
||||
end Types;
|
||||
|
||||
model LotkaVolterra "Lotka-Volterra with types"
|
||||
parameter Types.RabbitReproduction alpha=0.1;
|
||||
parameter Types.RabbitFatalities beta=0.02;
|
||||
parameter Types.WolfReproduction gamma=0.4;
|
||||
parameter Types.WolfFatalities delta=0.02;
|
||||
parameter Types.Rabbits x0=10;
|
||||
parameter Types.Wolves y0=10;
|
||||
Types.Rabbits x(start=x0);
|
||||
Types.Wolves y(start=y0);
|
||||
equation
|
||||
der(x) = x*(alpha-beta*y);
|
||||
der(y) = -y*(gamma-delta*x);
|
||||
end LotkaVolterra;
|
||||
end NestedPackages;
|
||||
24
samples/Modelica/NewtonCooling.mo
Normal file
24
samples/Modelica/NewtonCooling.mo
Normal file
@@ -0,0 +1,24 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model NewtonCooling
|
||||
"Cooling example importing physical types from the Modelica Standard Library"
|
||||
import Modelica.SIunits.Temperature;
|
||||
import Modelica.SIunits.Mass;
|
||||
import Modelica.SIunits.Area;
|
||||
import ConvectionCoefficient = Modelica.SIunits.CoefficientOfHeatTransfer;
|
||||
import SpecificHeat = Modelica.SIunits.SpecificHeatCapacity;
|
||||
|
||||
// Parameters
|
||||
parameter Temperature T_inf=300.0 "Ambient temperature";
|
||||
parameter Temperature T0=280.0 "Initial temperature";
|
||||
parameter ConvectionCoefficient h=0.7 "Convective cooling coefficient";
|
||||
parameter Area A=1.0 "Surface area";
|
||||
parameter Mass m=0.1 "Mass of thermal capacitance";
|
||||
parameter SpecificHeat c_p=1.2 "Specific heat";
|
||||
|
||||
// Variables
|
||||
Temperature T "Temperature";
|
||||
initial equation
|
||||
T = T0 "Specify initial value for T";
|
||||
equation
|
||||
m*c_p*der(T) = h*A*(T_inf-T) "Newton's law of cooling";
|
||||
end NewtonCooling;
|
||||
47
samples/Modelica/Pendulum.mo
Normal file
47
samples/Modelica/Pendulum.mo
Normal file
@@ -0,0 +1,47 @@
|
||||
within ModelicaByExample.Subsystems.Pendula;
|
||||
model Pendulum "A single individual pendulum"
|
||||
import Modelica.Mechanics.MultiBody.Parts;
|
||||
import Modelica.Mechanics.MultiBody.Joints;
|
||||
|
||||
parameter Modelica.SIunits.Position x;
|
||||
parameter Modelica.SIunits.Mass m "Mass of mass point";
|
||||
parameter Modelica.SIunits.Angle phi "Initial angle";
|
||||
parameter Modelica.SIunits.Length L "String length";
|
||||
parameter Modelica.SIunits.Diameter d=0.01;
|
||||
|
||||
Parts.Fixed ground(r={0,0,x}, animation=false)
|
||||
annotation (Placement(
|
||||
transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=270, origin={0,60})));
|
||||
Parts.PointMass ball(m=m, sphereDiameter=5*d)
|
||||
annotation (Placement(transformation(extent={{-10,-90},{10,-70}})));
|
||||
Parts.BodyCylinder string(density=0, r={0,L,0}, diameter=d)
|
||||
annotation (Placement(transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=90,
|
||||
origin={0,-30})));
|
||||
Joints.Revolute revolute(phi(fixed=true, start=phi),
|
||||
cylinderDiameter=d/2, animation=false)
|
||||
annotation (Placement(
|
||||
transformation(
|
||||
extent={{-10,-10},{10,10}},
|
||||
rotation=90,
|
||||
origin={0,20})));
|
||||
equation
|
||||
connect(string.frame_a, ball.frame_a) annotation (Line(
|
||||
points={{0,-40},{0,-40},{0,-80}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
connect(revolute.frame_b, ground.frame_b) annotation (Line(
|
||||
points={{0,30},{0,40},{0,40},{0,50}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
connect(revolute.frame_a, string.frame_b) annotation (Line(
|
||||
points={{0,10},{0,10},{0,-20},{0,-20}},
|
||||
color={95,95,95},
|
||||
thickness=0.5,
|
||||
smooth=Smooth.None));
|
||||
end Pendulum;
|
||||
16
samples/Modelica/RLC.mo
Normal file
16
samples/Modelica/RLC.mo
Normal file
@@ -0,0 +1,16 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model RLC "An RLC circuit referencing types from the Modelica Standard Library"
|
||||
parameter Modelica.SIunits.Voltage Vb=24 "Battery voltage";
|
||||
parameter Modelica.SIunits.Inductance L = 1;
|
||||
parameter Modelica.SIunits.Resistance R = 100;
|
||||
parameter Modelica.SIunits.Capacitance C = 1e-3;
|
||||
Modelica.SIunits.Voltage V;
|
||||
Modelica.SIunits.Current i_L;
|
||||
Modelica.SIunits.Current i_R;
|
||||
Modelica.SIunits.Current i_C;
|
||||
equation
|
||||
i_R = V/R;
|
||||
i_C = C*der(V);
|
||||
i_L=i_R+i_C;
|
||||
L*der(i_L) = (Vb-V);
|
||||
end RLC;
|
||||
29
samples/Modelica/SecondOrderSystem.mo
Normal file
29
samples/Modelica/SecondOrderSystem.mo
Normal file
@@ -0,0 +1,29 @@
|
||||
within ModelicaByExample.PackageExamples;
|
||||
model SecondOrderSystem
|
||||
"A second order rotational system importing types from Modelica Standard Library"
|
||||
import Modelica.SIunits.*;
|
||||
parameter Angle phi1_init = 0;
|
||||
parameter Angle phi2_init = 1;
|
||||
parameter AngularVelocity omega1_init = 0;
|
||||
parameter AngularVelocity omega2_init = 0;
|
||||
parameter Inertia J1=0.4;
|
||||
parameter Inertia J2=1.0;
|
||||
parameter RotationalSpringConstant k1=11;
|
||||
parameter RotationalSpringConstant k2=5;
|
||||
parameter RotationalDampingConstant d1=0.2;
|
||||
parameter RotationalDampingConstant d2=1.0;
|
||||
Angle phi1;
|
||||
Angle phi2;
|
||||
AngularVelocity omega1;
|
||||
AngularVelocity omega2;
|
||||
initial equation
|
||||
phi1 = phi1_init;
|
||||
phi2 = phi2_init;
|
||||
omega1 = omega1_init;
|
||||
omega2 = omega2_init;
|
||||
equation
|
||||
omega1 = der(phi1);
|
||||
omega2 = der(phi2);
|
||||
J1*der(omega1) = k1*(phi2-phi1)+d1*der(phi2-phi1);
|
||||
J2*der(omega2) = k1*(phi1-phi2)+d1*der(phi1-phi2)-k2*phi2-d2*der(phi2);
|
||||
end SecondOrderSystem;
|
||||
19
samples/Modelica/System.mo
Normal file
19
samples/Modelica/System.mo
Normal file
@@ -0,0 +1,19 @@
|
||||
within ModelicaByExample.Subsystems.Pendula;
|
||||
model System "A system of pendula"
|
||||
import Modelica.Constants.g_n;
|
||||
import Modelica.Constants.pi;
|
||||
|
||||
parameter Integer n=15 "Number of pendula";
|
||||
parameter Modelica.SIunits.Position x[n] = linspace(0,(n-1)*0.05,n);
|
||||
parameter Modelica.SIunits.Time T = 54;
|
||||
parameter Modelica.SIunits.Time X = 30;
|
||||
parameter Modelica.SIunits.Length lengths[n] = { g_n*(T/(2*pi*(X+(n-i))))^2 for i in 1:n};
|
||||
parameter Modelica.SIunits.Angle phi0 = 0.5;
|
||||
|
||||
Pendulum pendulum[n](x=x, each m=1, each phi=phi0, L=lengths)
|
||||
annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
|
||||
inner Modelica.Mechanics.MultiBody.World world
|
||||
annotation (Placement(transformation(extent={{-80,-60},{-60,-40}})));
|
||||
annotation (experiment(StopTime=54,
|
||||
Interval=9e-3, Tolerance=1e-008));
|
||||
end System;
|
||||
4
samples/Modelica/package.mo
Normal file
4
samples/Modelica/package.mo
Normal file
@@ -0,0 +1,4 @@
|
||||
within ;
|
||||
package ModelicaByExample
|
||||
annotation (uses(Modelica(version="3.2.1")));
|
||||
end ModelicaByExample;
|
||||
3
samples/Modelica/package2.mo
Normal file
3
samples/Modelica/package2.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample;
|
||||
package PackageExamples "Examples of using packages"
|
||||
end PackageExamples;
|
||||
3
samples/Modelica/package3.mo
Normal file
3
samples/Modelica/package3.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample.Subsystems;
|
||||
package GearSubsystemModel "Build a subsystem model representing a gear with backlash"
|
||||
end GearSubsystemModel;
|
||||
3
samples/Modelica/package4.mo
Normal file
3
samples/Modelica/package4.mo
Normal file
@@ -0,0 +1,3 @@
|
||||
within ModelicaByExample.Subsystems;
|
||||
package Pendula "Example of using arrays of subsystems to build complete systems"
|
||||
end Pendula;
|
||||
329
samples/Modula-2/HuffChan.mod
Normal file
329
samples/Modula-2/HuffChan.mod
Normal file
@@ -0,0 +1,329 @@
|
||||
IMPLEMENTATION MODULE HuffChan;
|
||||
|
||||
(*
|
||||
This module shows how to redefine standard IO file functions. It provides
|
||||
functions for reading and writing packed files opened in Raw mode.
|
||||
*)
|
||||
|
||||
IMPORT IOChan, IOLink, ChanConsts, IOConsts, SYSTEM, Strings;
|
||||
FROM Storage IMPORT ALLOCATE, DEALLOCATE;
|
||||
|
||||
CONST
|
||||
rbldFrq = 512; (* means: every 512 bytes rebuild table *)
|
||||
|
||||
TYPE
|
||||
charTap = POINTER TO ARRAY [0..MAX(INTEGER)-1] OF CHAR;
|
||||
smbTp = POINTER TO smbT;
|
||||
|
||||
smbT = RECORD (* Huffman's tree *)
|
||||
ch : CHAR;
|
||||
n : CARDINAL; (* frequncy of char ch *)
|
||||
left,right,next : smbTp;
|
||||
END;
|
||||
|
||||
tblT = RECORD (* bit sequence for code *)
|
||||
vl : CARDINAL; (* bit sequence *)
|
||||
cnt : INTEGER; (* it length *)
|
||||
END;
|
||||
|
||||
lclDataT = RECORD (* channel's local data *)
|
||||
tRoot : smbTp;
|
||||
htbl : ARRAY [0..255] OF tblT; (* code -> bit sequence table *)
|
||||
ftbl : ARRAY [0..255] OF CARDINAL; (* frequncey table *)
|
||||
wBf,rb1,rb2 : CARDINAL;
|
||||
wbc,rbc,smc : INTEGER;
|
||||
chid : IOChan.ChanId;
|
||||
END;
|
||||
lclDataTp = POINTER TO lclDataT;
|
||||
charp = POINTER TO CHAR;
|
||||
|
||||
VAR
|
||||
did : IOLink.DeviceId;
|
||||
ldt : lclDataTp;
|
||||
|
||||
|
||||
PROCEDURE Shf(a:CARDINAL; b : INTEGER) : CARDINAL; (* shl a,b (or shr) *)
|
||||
BEGIN
|
||||
RETURN SYSTEM.CAST(CARDINAL,SYSTEM.SHIFT(SYSTEM.CAST(BITSET,a),b));
|
||||
END Shf;
|
||||
|
||||
PROCEDURE wrDword(a:CARDINAL); (* write 4 bytes to file *)
|
||||
BEGIN
|
||||
IOChan.RawWrite(ldt^.chid,SYSTEM.ADR(a),4);
|
||||
END wrDword;
|
||||
|
||||
PROCEDURE rdDword() : CARDINAL; (* read 4 bytes from file *)
|
||||
VAR
|
||||
a,z : CARDINAL;
|
||||
BEGIN
|
||||
a:=0;
|
||||
IOChan.RawRead(ldt^.chid,SYSTEM.ADR(a),4,z);
|
||||
RETURN a;
|
||||
END rdDword;
|
||||
|
||||
PROCEDURE wrSmb(ch : CHAR); (* write bit sequence for code ch *)
|
||||
VAR
|
||||
v,h : CARDINAL;
|
||||
b,c : INTEGER;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
v:=htbl[ORD(ch)].vl;
|
||||
c:=htbl[ORD(ch)].cnt;
|
||||
IF c+wbc<=32 THEN
|
||||
wBf:=Shf(wBf,c);
|
||||
wBf:=wBf+v;
|
||||
wbc:=wbc+c;
|
||||
IF wbc=32 THEN
|
||||
wrDword(wBf);
|
||||
wBf:=0; wbc:=0;
|
||||
END;
|
||||
RETURN;
|
||||
END;
|
||||
b:=c+wbc-32;
|
||||
h:=Shf(v,-b);
|
||||
wBf:=Shf(wBf,32-wbc)+h;
|
||||
wrDword(wBf);
|
||||
wBf:=v-Shf(h,b);
|
||||
wbc:=b;
|
||||
END;
|
||||
END wrSmb;
|
||||
|
||||
PROCEDURE flush(); (* write data in buffer *)
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
wBf:=Shf(wBf,32-wbc);
|
||||
wrDword(wBf);
|
||||
END;
|
||||
END flush;
|
||||
|
||||
PROCEDURE getSym() : CHAR; (* find code for first bit sequence in buffer *)
|
||||
VAR
|
||||
t,i : CARDINAL;
|
||||
b : INTEGER;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
IF rbc<=32 THEN
|
||||
rb2:=rdDword();
|
||||
t:=Shf(rb2,-rbc);
|
||||
IF rbc=32 THEN t:=0; END;
|
||||
rb1:=rb1+t;
|
||||
rb2:=Shf(rb2,32-rbc);
|
||||
IF rbc=0 THEN rb2:=0; END;
|
||||
rbc:=rbc+32;
|
||||
END;
|
||||
FOR i:=0 TO 255 DO
|
||||
t:=Shf(rb1,htbl[i].cnt-32);
|
||||
IF t=htbl[i].vl THEN
|
||||
rb1:=Shf(rb1,htbl[i].cnt);
|
||||
b:=32-htbl[i].cnt;
|
||||
t:=Shf(rb2,-b);
|
||||
rb1:=rb1+t;
|
||||
rb2:=Shf(rb2,32-b);
|
||||
rbc:=rbc+b-32;
|
||||
RETURN CHR(i);
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
END getSym;
|
||||
|
||||
PROCEDURE Insert(s : smbTp); (* insert new character in Huffman's tree *)
|
||||
VAR
|
||||
cr : smbTp;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
IF tRoot=NIL THEN
|
||||
cr:=tRoot;
|
||||
tRoot:=s;
|
||||
s^.next:=cr;
|
||||
RETURN;
|
||||
ELSIF tRoot^.n<=s^.n THEN
|
||||
cr:=tRoot;
|
||||
tRoot:=s;
|
||||
s^.next:=cr;
|
||||
RETURN;
|
||||
END;
|
||||
cr:=tRoot;
|
||||
WHILE (cr^.next<>NIL) & (cr^.next^.n>s^.n) DO
|
||||
cr:=cr^.next;
|
||||
END;
|
||||
s^.next:=cr^.next;
|
||||
cr^.next:=s;
|
||||
END;
|
||||
END Insert;
|
||||
|
||||
PROCEDURE BuildTree(); (* build Huffman's tree *)
|
||||
VAR
|
||||
cr,ocr,ncr : smbTp;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
LOOP
|
||||
ocr:=NIL; cr:=tRoot;
|
||||
WHILE cr^.next^.next<>NIL DO
|
||||
ocr:=cr; cr:=cr^.next;
|
||||
END;
|
||||
NEW(ncr);
|
||||
ncr^.n:=cr^.n+cr^.next^.n;
|
||||
ncr^.left:=cr;
|
||||
ncr^.right:=cr^.next;
|
||||
IF ocr<>NIL THEN
|
||||
ocr^.next:=NIL;
|
||||
Insert(ncr);
|
||||
ELSE
|
||||
tRoot:=NIL;
|
||||
Insert(ncr);
|
||||
EXIT;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
END BuildTree;
|
||||
|
||||
PROCEDURE BuildTable(cr: smbTp; vl,n: CARDINAL); (* build table: code -> bit sequence *)
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
IF cr^.left=NIL THEN
|
||||
htbl[ORD(cr^.ch)].vl:=vl;
|
||||
htbl[ORD(cr^.ch)].cnt:=n;
|
||||
DISPOSE(cr);
|
||||
RETURN;
|
||||
END;
|
||||
vl:=vl*2;
|
||||
BuildTable(cr^.left,vl,n+1);
|
||||
BuildTable(cr^.right,vl+1,n+1);
|
||||
DISPOSE(cr);
|
||||
END;
|
||||
END BuildTable;
|
||||
|
||||
PROCEDURE clcTab(); (* build code/bitseq. table from frequency table *)
|
||||
VAR
|
||||
i : CARDINAL;
|
||||
s : smbTp;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
tRoot:=NIL;
|
||||
FOR i:=0 TO 255 DO
|
||||
NEW(s);
|
||||
s^.ch:=CHR(i);
|
||||
s^.n:=ftbl[i];
|
||||
s^.left:=NIL; s^.right:=NIL; s^.next:=NIL;
|
||||
Insert(s);
|
||||
END;
|
||||
BuildTree();
|
||||
BuildTable(tRoot,0,0);
|
||||
END;
|
||||
END clcTab;
|
||||
|
||||
PROCEDURE iniHuf();
|
||||
VAR
|
||||
i : CARDINAL;
|
||||
BEGIN
|
||||
WITH ldt^ DO
|
||||
FOR i:=0 TO 255 DO
|
||||
ftbl[i]:=1;
|
||||
END;
|
||||
wBf:=0; wbc:=0; rb1:=0; rb2:=0; rbc:=0;
|
||||
smc:=0;
|
||||
clcTab();
|
||||
END;
|
||||
END iniHuf;
|
||||
|
||||
|
||||
PROCEDURE RawWrite(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS;
|
||||
len: CARDINAL);
|
||||
VAR
|
||||
i : CARDINAL;
|
||||
ch : CHAR;
|
||||
cht : charTap;
|
||||
BEGIN
|
||||
IF len = 0 THEN RETURN; END;
|
||||
ldt:=SYSTEM.CAST(lclDataTp,x^.cd);
|
||||
cht:=SYSTEM.CAST(charTap,buf);
|
||||
WITH ldt^ DO
|
||||
FOR i:=0 TO len-1 DO
|
||||
ch:=cht^[i];
|
||||
wrSmb(ch);
|
||||
IF ch = 377C THEN wrSmb(ch); END;
|
||||
ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1;
|
||||
IF smc=rbldFrq THEN
|
||||
clcTab();
|
||||
smc:=0;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
x^.result:=IOChan.ReadResult(ldt^.chid);
|
||||
END RawWrite;
|
||||
|
||||
PROCEDURE RawRead(x: IOLink.DeviceTablePtr; buf: SYSTEM.ADDRESS;
|
||||
blen: CARDINAL; VAR len: CARDINAL);
|
||||
VAR
|
||||
i : CARDINAL;
|
||||
cht : charTap;
|
||||
ch : CHAR;
|
||||
BEGIN
|
||||
ldt:=SYSTEM.CAST(lclDataTp,x^.cd);
|
||||
cht:=SYSTEM.CAST(charTap,buf);
|
||||
IF (blen=0) OR (x^.result<>IOConsts.allRight) THEN len:=0; RETURN; END;
|
||||
WITH ldt^ DO
|
||||
FOR i:=0 TO blen-1 DO
|
||||
ch:=getSym();
|
||||
IF ch = 377C THEN
|
||||
ch:=getSym();
|
||||
IF ch = 0C THEN
|
||||
x^.result:=IOConsts.endOfInput;
|
||||
len:=i; cht^[i]:=0C;
|
||||
RETURN;
|
||||
END;
|
||||
END;
|
||||
cht^[i]:=ch;
|
||||
ftbl[ORD(ch)]:=ftbl[ORD(ch)]+1; smc:=smc+1;
|
||||
IF smc=rbldFrq THEN
|
||||
clcTab();
|
||||
smc:=0;
|
||||
END;
|
||||
END;
|
||||
len:=blen;
|
||||
END;
|
||||
END RawRead;
|
||||
|
||||
PROCEDURE CreateAlias(VAR cid: ChanId; io: ChanId; VAR res: OpenResults);
|
||||
VAR
|
||||
x : IOLink.DeviceTablePtr;
|
||||
BEGIN
|
||||
IOLink.MakeChan(did,cid);
|
||||
IF cid = IOChan.InvalidChan() THEN
|
||||
res:=ChanConsts.outOfChans
|
||||
ELSE
|
||||
NEW(ldt);
|
||||
IF ldt=NIL THEN
|
||||
IOLink.UnMakeChan(did,cid);
|
||||
res:=ChanConsts.outOfChans;
|
||||
RETURN;
|
||||
END;
|
||||
x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,"");
|
||||
ldt^.chid:=io;
|
||||
x^.cd:=ldt;
|
||||
x^.doRawWrite:=RawWrite;
|
||||
x^.doRawRead:=RawRead;
|
||||
res:=ChanConsts.opened;
|
||||
iniHuf();
|
||||
x^.result:=IOConsts.allRight;
|
||||
END;
|
||||
END CreateAlias;
|
||||
|
||||
PROCEDURE DeleteAlias(VAR cid: ChanId);
|
||||
VAR
|
||||
x : IOLink.DeviceTablePtr;
|
||||
BEGIN
|
||||
x:=IOLink.DeviceTablePtrValue(cid,did,IOChan.notAvailable,"");
|
||||
ldt:=x^.cd;
|
||||
IF ldt^.rbc=0 THEN
|
||||
wrSmb(377C);
|
||||
wrSmb(0C);
|
||||
flush();
|
||||
END;
|
||||
DISPOSE(ldt);
|
||||
IOLink.UnMakeChan(did,cid);
|
||||
END DeleteAlias;
|
||||
|
||||
BEGIN
|
||||
IOLink.AllocateDeviceId(did);
|
||||
END HuffChan.
|
||||
109
samples/NCL/PrnOscPat_driver.ncl
Normal file
109
samples/NCL/PrnOscPat_driver.ncl
Normal file
@@ -0,0 +1,109 @@
|
||||
undef("PrnOscPat_driver")
|
||||
function PrnOscPat_driver(eof[*][*][*]:numeric, eof_ts[*][*]:numeric, kPOP[1]:integer)
|
||||
; =================================================================
|
||||
; compute Principal Oscillation Patterns (POPs)
|
||||
; =================================================================
|
||||
local dim_ts, dim_eof, neof, ntim, nlat, mlon, dnam_ts, dnam_eof, neof, j \
|
||||
, cov0, cov1, cov0_inverse, A, z, Z, pr, pi, zr, zi, mean, stdev \
|
||||
, evlr, eigi, eigr
|
||||
begin
|
||||
|
||||
dim_ts = dimsizes(eof_ts) ; (neof,ntim)
|
||||
dim_eof = dimsizes(eof) ; (neof,nlat,mlon)
|
||||
|
||||
ntim = dim_ts(1)
|
||||
neof = dim_eof(0)
|
||||
nlat = dim_eof(1)
|
||||
mlon = dim_eof(2)
|
||||
|
||||
dnam_ts = getvardims(eof_ts) ; dimension names
|
||||
dnam_eof= getvardims(eof) ; used at end for meta data
|
||||
|
||||
; =================================================================
|
||||
; lag-0 and lag-1 matrices
|
||||
; =================================================================
|
||||
|
||||
if (get_ncl_version().eq."6.1.2") then ; bug in 6.1.2
|
||||
cov0 = covcorm(eof_ts,(/1,0/)) ; lag-0 covariance matrix
|
||||
else
|
||||
cov0 = covcorm(eof_ts,(/0,1/)) ; lag-0 covariance matrix (n x n)
|
||||
end if
|
||||
; either
|
||||
cov1 = covcorm_xy(eof_ts, eof_ts, (/0,1,0/)) ; lag-1
|
||||
;cov1 = covcorm_xy(eof_ts(:,0:ntim-2) \ ; alternative, brute force
|
||||
; ,eof_ts(:,1:ntim-1), (/0,0,0/))
|
||||
;printVarSummary(cov1)
|
||||
|
||||
; =================================================================
|
||||
; matrix A contains information for evolution of the POP system.
|
||||
; POPs are eigenvectors of A.
|
||||
; =================================================================
|
||||
|
||||
cov0_inverse = inverse_matrix(cov0)
|
||||
A = cov1#inverse_matrix(cov0) ; [*][*] => neof x neof
|
||||
|
||||
; =================================================================
|
||||
; NCL 6.1.1 of dgeevx: evlr(2,2,N,N) ; (left(0)/right(1), real(0)/imag(1),:,:)
|
||||
; Eigenvalues are returned as attributes: eigi = evlr@eigi ; eigr = evlr@eigr
|
||||
; =================================================================
|
||||
|
||||
evlr = dgeevx_lapack(A, "B", "V", "V", "B", False)
|
||||
|
||||
; =================================================================
|
||||
; POP time series from eigenvalues and right eigenvectors
|
||||
; =================================================================
|
||||
;PR = (/ evlr(1,0,:,:) /) ; right ev (1), real part (0)
|
||||
;PI = (/ evlr(1,1,:,:) /) ; right ev (1), imag part (1)
|
||||
; kPOP is what we want; use righteigenvector
|
||||
pr = (/ evlr(1,0,kPOP-1,:) /) ; right ev (1), real part (0), row 'kPOP-1'
|
||||
pi = (/ evlr(1,1,kPOP-1,:) /) ; right ev (1), imag part (1), row 'kPOP-1'
|
||||
|
||||
z = inverse_matrix( (/ (/sum(pr*pr), sum(pr*pi)/) \
|
||||
, (/sum(pr*pi), sum(pi*pi)/) /))#(/pr,pi/)#eof_ts
|
||||
|
||||
; complex conjugate
|
||||
z = (/z(0,:), -z(1,:)/) ; real & imag series
|
||||
z = dim_rmvmean_n(z,1)
|
||||
mean = dim_avg_n(z,1) ; calculate mean
|
||||
stdev= dim_stddev_n(z,1) ; calculate stdev
|
||||
z = dim_standardize_n(z,1,1) ; standardize time series
|
||||
|
||||
z!0 = "nPOP" ; add meta data
|
||||
z!1 = dnam_ts(1)
|
||||
z&nPOP = (/0,1/)
|
||||
z&$dnam_ts(1)$ = eof_ts&$dnam_ts(1)$
|
||||
z@stdev = stdev
|
||||
z@mean = mean
|
||||
z@long_name = "POP timeseries"
|
||||
;printVarSummary(z)
|
||||
|
||||
; =================================================================
|
||||
; POP spatial patterns
|
||||
; =================================================================
|
||||
|
||||
zr = pr(0)*eof(0,:,:) ; construct POP spatial domain
|
||||
zi = pi(0)*eof(0,:,:)
|
||||
do j=1,neof-1
|
||||
zr = zr + pr(j)*eof(j,:,:)
|
||||
zi = zi + pi(j)*eof(j,:,:)
|
||||
end do
|
||||
|
||||
Z = (/zr*stdev(0), -zi*stdev(1)/) ; scale patterns by time series stdev
|
||||
|
||||
Z!0 = "nPOP" ; add meta data
|
||||
Z!1 = dnam_eof(1)
|
||||
Z!2 = dnam_eof(2)
|
||||
|
||||
Z&nPOP = (/0,1/)
|
||||
Z&$dnam_eof(1)$ = eof&$dnam_eof(1)$
|
||||
Z&$dnam_eof(2)$ = eof&$dnam_eof(2)$
|
||||
Z@long_name = "POP pattern"
|
||||
;printVarSummary(Z)
|
||||
|
||||
; =================================================================
|
||||
; return POP time series and POP spatial patterns as a
|
||||
; variable of type 'list' which contains 2 variables
|
||||
; =================================================================
|
||||
|
||||
return( [/z, Z/] ) ; this is type "list"
|
||||
end
|
||||
115
samples/NCL/WRF_static_2.ncl
Normal file
115
samples/NCL/WRF_static_2.ncl
Normal file
@@ -0,0 +1,115 @@
|
||||
;*************************************************
|
||||
; WRF static: panel different variables
|
||||
;************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
|
||||
begin
|
||||
;************************************************
|
||||
; open file and read in data
|
||||
;************************************************
|
||||
f = addfile("static.wrfsi.nc", "r")
|
||||
;************************************************
|
||||
; Read variables
|
||||
;************************************************
|
||||
use = f->use(0,0,:,:) ; land use dominant category
|
||||
stl = f->stl(0,0,:,:) ; top layer (0-30cm) dom cat soiltype
|
||||
sbl = f->sbl(0,0,:,:) ; bottom layer (30-90cm) dom cat soiltype
|
||||
lat2d = f->lat(0,0,:,:)
|
||||
lon2d = f->lon(0,0,:,:)
|
||||
lsMask= f->lnd(0,0,:,:) ; land (1) water (0) mas
|
||||
|
||||
;************************************************
|
||||
; Use mask function to set all ocean areas to _FillValue
|
||||
;************************************************
|
||||
use = mask(use,lsMask,1)
|
||||
stl = mask(stl,lsMask,1)
|
||||
sbl = mask(sbl,lsMask,1)
|
||||
|
||||
;************************************************
|
||||
; Associate 2D coordinates with variables for plotting
|
||||
;************************************************
|
||||
use@lat2d = lat2d
|
||||
use@lon2d = lon2d
|
||||
stl@lat2d = lat2d
|
||||
stl@lon2d = lon2d
|
||||
sbl@lat2d = lat2d
|
||||
sbl@lon2d = lon2d
|
||||
|
||||
;************************************************
|
||||
; The file should be examined via: ncdump -v grid_type static.wrsi
|
||||
; This will print the print type. then enter below.
|
||||
;************************************************
|
||||
projection = "mercator"
|
||||
|
||||
;************************************************
|
||||
; create plots
|
||||
;************************************************
|
||||
wks = gsn_open_wks("ps" ,"WRF_static") ; ps,pdf,x11,ncgm,eps
|
||||
gsn_define_colormap(wks ,"BlAqGrYeOrReVi200"); choose colormap
|
||||
|
||||
res = True ; plot mods desired
|
||||
res@gsnSpreadColors = True ; use full range of colormap
|
||||
res@cnFillOn = True ; color plot desired
|
||||
res@cnLinesOn = False ; turn off contour lines
|
||||
res@cnLineLabelsOn = False ; turn off contour labels
|
||||
res@cnLevelSpacingF = 1 ; manually specify interval
|
||||
res@cnFillMode = "RasterFill" ; activate raster mode
|
||||
res@lbLabelAutoStride = True ; let NCL figure lb stride
|
||||
|
||||
;************************************************
|
||||
; Turn on lat / lon labeling
|
||||
;************************************************
|
||||
;;res@pmTickMarkDisplayMode = "Always" ; turn on tickmarks
|
||||
|
||||
dimll = dimsizes(lat2d)
|
||||
nlat = dimll(0)
|
||||
mlon = dimll(1)
|
||||
|
||||
res@mpProjection = projection
|
||||
res@mpLimitMode = "Corners"
|
||||
res@mpLeftCornerLatF = lat2d(0,0)
|
||||
res@mpLeftCornerLonF = lon2d(0,0)
|
||||
res@mpRightCornerLatF = lat2d(nlat-1,mlon-1)
|
||||
res@mpRightCornerLonF = lon2d(nlat-1,mlon-1)
|
||||
|
||||
res@mpCenterLonF = f->LoV ; set center logitude
|
||||
|
||||
if (projection.eq."LambertConformal") then
|
||||
res@mpLambertParallel1F = f->Latin1
|
||||
res@mpLambertParallel2F = f->Latin2
|
||||
res@mpLambertMeridianF = f->LoV
|
||||
end if
|
||||
|
||||
res@mpFillOn = False ; turn off map fill
|
||||
res@mpOutlineDrawOrder = "PostDraw" ; draw continental outline last
|
||||
res@mpOutlineBoundarySets = "GeophysicalAndUSStates" ; state boundaries
|
||||
|
||||
;;res@tfDoNDCOverlay = True ; True only for 'native' grid
|
||||
res@gsnAddCyclic = False ; data are not cyclic
|
||||
|
||||
;************************************************
|
||||
; allocate array for 3 plots
|
||||
;************************************************
|
||||
plts = new (3,"graphic")
|
||||
|
||||
;************************************************
|
||||
; Tell NCL not to draw or advance frame for individual plots
|
||||
;************************************************
|
||||
res@gsnDraw = False ; (a) do not draw
|
||||
res@gsnFrame = False ; (b) do not advance 'frame'
|
||||
|
||||
plts(0) = gsn_csm_contour_map(wks,use,res)
|
||||
plts(1) = gsn_csm_contour_map(wks,stl,res)
|
||||
plts(2) = gsn_csm_contour_map(wks,sbl,res)
|
||||
;************************************************
|
||||
; create panel: panel plots have their own set of resources
|
||||
;************************************************
|
||||
resP = True ; modify the panel plot
|
||||
resP@txString = "Land Use and Soil Type"
|
||||
resP@gsnMaximize = True ; maximize panel area
|
||||
resP@gsnPanelRowSpec = True ; specify 1 top, 2 lower level
|
||||
gsn_panel(wks,plts,(/1,2/),resP) ; now draw as one plot
|
||||
|
||||
end
|
||||
|
||||
160
samples/NCL/WRF_track_1.ncl
Normal file
160
samples/NCL/WRF_track_1.ncl
Normal file
@@ -0,0 +1,160 @@
|
||||
;********************************************************
|
||||
; Plot storm stracks from wrfout files.
|
||||
;********************************************************
|
||||
;
|
||||
; JUN-18-2005
|
||||
; So-Young Ha (MMM/NCAR)
|
||||
; SEP-01-2006
|
||||
; Slightly modified by Mary Haley to add some extra comments.
|
||||
; ===========================================
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
|
||||
|
||||
|
||||
begin
|
||||
|
||||
; DATES
|
||||
date = (/1512,1600,1612,1700,1712,1800,1812,1900/)
|
||||
ndate = dimsizes(date)
|
||||
|
||||
sdate = sprinti("%4.0i",date)
|
||||
|
||||
; Experiment name (for legend)
|
||||
EXP = (/"EXP_I"/) ; (/"EXP_I","EXP_II","EXP_III"/)
|
||||
nexp = dimsizes(EXP)
|
||||
|
||||
; To get lat/lon info.
|
||||
|
||||
a = addfile("wrfout_d01_2003-07-15_00:00:00.nc","r")
|
||||
|
||||
lat2d = a->XLAT(0,:,:)
|
||||
lon2d = a->XLONG(0,:,:)
|
||||
dimll = dimsizes(lat2d)
|
||||
nlat = dimll(0)
|
||||
mlon = dimll(1)
|
||||
|
||||
; Sea Level Pressure
|
||||
slp = wrf_user_getvar(a,"slp",0)
|
||||
dims = dimsizes(slp)
|
||||
|
||||
; Array for track
|
||||
time = new(ndate,string)
|
||||
imin = new(ndate,integer)
|
||||
jmin = new(ndate,integer)
|
||||
smin = new(ndate,integer)
|
||||
|
||||
; =======
|
||||
; ndate
|
||||
; =======
|
||||
fs = systemfunc("ls wrfout*00")
|
||||
nfs= dimsizes(fs)
|
||||
if(nfs .ne. ndate) then
|
||||
print("Check input data:"+nfs+" .ne. "+ndate)
|
||||
end if
|
||||
|
||||
do ifs=0,nfs-1
|
||||
f = addfile(fs(ifs)+".nc","r")
|
||||
time(ifs) = wrf_user_list_times(f)
|
||||
; print(time(ifs))
|
||||
slp2d = wrf_user_getvar(f,"slp",0)
|
||||
|
||||
; We need to convert 2-D array to 1-D array to find the minima.
|
||||
slp1d = ndtooned(slp2d)
|
||||
smin(ifs) = minind(slp1d)
|
||||
|
||||
; Convert the index for 1-D array back to the indeces for 2-D array.
|
||||
minij = ind_resolve(ind(slp1d.eq.min(slp2d)),dims)
|
||||
imin(ifs) = minij(0,0)
|
||||
jmin(ifs) = minij(0,1)
|
||||
|
||||
; print(time(ifs)+" : "+min(slp2d)+" ("+imin(ifs)+","+jmin(ifs)+")")
|
||||
end do
|
||||
;
|
||||
|
||||
; Graphics section
|
||||
|
||||
wks=gsn_open_wks("ps","track") ; Open PS file.
|
||||
gsn_define_colormap(wks,"BlGrYeOrReVi200") ; Change color map.
|
||||
|
||||
res = True
|
||||
res@gsnDraw = False ; Turn off draw.
|
||||
res@gsnFrame = False ; Turn off frame advance.
|
||||
res@gsnMaximize = True ; Maximize plot in frame.
|
||||
|
||||
res@tiMainString = "Hurricane Isabel" ; Main title
|
||||
|
||||
WRF_map_c(a,res,0) ; Set up map resources
|
||||
; (plot options)
|
||||
plot = gsn_csm_map(wks,res) ; Create a map.
|
||||
|
||||
; Set up resources for polymarkers.
|
||||
gsres = True
|
||||
gsres@gsMarkerIndex = 16 ; filled dot
|
||||
;gsres@gsMarkerSizeF = 0.005 ; default - 0.007
|
||||
cols = (/5,160,40/)
|
||||
|
||||
; Set up resources for polylines.
|
||||
res_lines = True
|
||||
res_lines@gsLineThicknessF = 3. ; 3x as thick
|
||||
|
||||
dot = new(ndate,graphic) ; Make sure each gsn_add_polyxxx call
|
||||
line = new(ndate,graphic) ; is assigned to a unique variable.
|
||||
|
||||
; Loop through each date and add polylines to the plot.
|
||||
do i = 0,ndate-2
|
||||
res_lines@gsLineColor = cols(0)
|
||||
xx=(/lon2d(imin(i),jmin(i)),lon2d(imin(i+1),jmin(i+1))/)
|
||||
yy=(/lat2d(imin(i),jmin(i)),lat2d(imin(i+1),jmin(i+1))/)
|
||||
line(i) = gsn_add_polyline(wks,plot,xx,yy,res_lines)
|
||||
end do
|
||||
|
||||
lon1d = ndtooned(lon2d)
|
||||
lat1d = ndtooned(lat2d)
|
||||
|
||||
; Loop through each date and add polymarkers to the plot.
|
||||
do i = 0,ndate-1
|
||||
print("dot:"+lon1d(smin(i))+","+lat1d(smin(i)))
|
||||
gsres@gsMarkerColor = cols(0)
|
||||
dot(i)=gsn_add_polymarker(wks,plot,lon1d(smin(i)),lat1d(smin(i)),gsres)
|
||||
end do
|
||||
|
||||
; Date (Legend)
|
||||
txres = True
|
||||
txres@txFontHeightF = 0.015
|
||||
txres@txFontColor = cols(0)
|
||||
|
||||
txid1 = new(ndate,graphic)
|
||||
; Loop through each date and draw a text string on the plot.
|
||||
do i = 0, ndate-1
|
||||
txres@txJust = "CenterRight"
|
||||
ix = smin(i) - 4
|
||||
print("Eye:"+ix)
|
||||
if(i.eq.1) then
|
||||
txres@txJust = "CenterLeft"
|
||||
ix = ix + 8
|
||||
end if
|
||||
txid1(i) = gsn_add_text(wks,plot,sdate(i),lon1d(ix),lat1d(ix),txres)
|
||||
end do
|
||||
|
||||
; Add marker and text for legend. (Or you can just use "pmLegend" instead.)
|
||||
txres@txJust = "CenterLeft"
|
||||
|
||||
txid2 = new(nexp,graphic)
|
||||
pmid2 = new(nexp,graphic)
|
||||
do i = 0,nexp-1
|
||||
gsres@gsMarkerColor = cols(i)
|
||||
txres@txFontColor = cols(i)
|
||||
ii = ((/129,119,109/)) ; ilat
|
||||
jj = ((/110,110,110/)) ; jlon
|
||||
ji = ii*mlon+jj ; col x row
|
||||
pmid2(i) = gsn_add_polymarker(wks,plot,lon1d(ji(i)),lat1d(ji(i)),gsres)
|
||||
txid2(i) = gsn_add_text(wks,plot,EXP(i),lon1d(ji(i)+5),lat1d(ji(i)),txres)
|
||||
end do
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
end
|
||||
129
samples/NCL/cru_8.ncl
Normal file
129
samples/NCL/cru_8.ncl
Normal file
@@ -0,0 +1,129 @@
|
||||
;*****************************************************
|
||||
; cru_8.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Plotting CRU (Climate Research Unit)/ BADC data
|
||||
; - Selecting a sub-period
|
||||
; - calculating a climatology
|
||||
; - Drawing raster contours; very basic graphics
|
||||
;
|
||||
;*****************************************************
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; not needed 6.20 onward
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
; create references (pointers) to the files
|
||||
|
||||
diri = "./"
|
||||
fcld = addfile(diri+"cru_ts3.21.1901.2012.cld.dat.nc", "r")
|
||||
fdtr = addfile(diri+"cru_ts3.21.1901.2012.dtr.dat.nc", "r")
|
||||
ffrs = addfile(diri+"cru_ts3.21.1901.2012.frs.dat.nc", "r")
|
||||
fpet = addfile(diri+"cru_ts3.21.1901.2012.pet.dat.nc", "r")
|
||||
fpre = addfile(diri+"cru_ts3.21.1901.2012.pre.dat.nc", "r")
|
||||
ftmn = addfile(diri+"cru_ts3.21.1901.2012.tmn.dat.nc", "r")
|
||||
ftmp = addfile(diri+"cru_ts3.21.1901.2012.tmp.dat.nc", "r")
|
||||
ftmx = addfile(diri+"cru_ts3.21.1901.2012.tmx.dat.nc", "r")
|
||||
fvap = addfile(diri+"cru_ts3.21.1901.2012.vap.dat.nc", "r")
|
||||
fwet = addfile(diri+"cru_ts3.21.1901.2012.wet.dat.nc", "r")
|
||||
|
||||
; specify start & last dates (arbitrary)
|
||||
|
||||
ymStrt = 199101
|
||||
ymLast = 200012
|
||||
|
||||
; get index values of start/lat dates
|
||||
|
||||
time = fcld->time
|
||||
yyyymm = cd_calendar(time, -1)
|
||||
|
||||
ntStrt = ind(yyyymm.eq.ymStrt) ; index values
|
||||
ntLast = ind(yyyymm.eq.ymLast)
|
||||
|
||||
; read time segment
|
||||
|
||||
cld = fcld->cld(ntStrt:ntLast,:,:)
|
||||
dtr = fdtr->dtr(ntStrt:ntLast,:,:)
|
||||
frs = ffrs->frs(ntStrt:ntLast,:,:)
|
||||
pet = fpet->pet(ntStrt:ntLast,:,:)
|
||||
pre = fpre->pre(ntStrt:ntLast,:,:)
|
||||
tmn = ftmn->tmn(ntStrt:ntLast,:,:)
|
||||
tmp = ftmp->tmp(ntStrt:ntLast,:,:)
|
||||
tmx = ftmx->tmx(ntStrt:ntLast,:,:)
|
||||
vap = fvap->vap(ntStrt:ntLast,:,:)
|
||||
wet = fwet->wet(ntStrt:ntLast,:,:)
|
||||
|
||||
printVarSummary(cld) ; [time | 120] x [lat | 360] x [lon | 720]
|
||||
|
||||
; calculate monthly climatologies
|
||||
|
||||
cldclm = clmMonTLL(cld)
|
||||
dtrclm = clmMonTLL(dtr)
|
||||
frsclm = clmMonTLL(frs)
|
||||
petclm = clmMonTLL(pet)
|
||||
preclm = clmMonTLL(pre)
|
||||
tmnclm = clmMonTLL(tmn)
|
||||
tmpclm = clmMonTLL(tmp)
|
||||
tmxclm = clmMonTLL(tmx)
|
||||
vapclm = clmMonTLL(vap)
|
||||
wetclm = clmMonTLL(wet)
|
||||
|
||||
|
||||
printVarSummary(cldclm) ; [month | 12] x [lat | 360] x [lon | 720]
|
||||
|
||||
;************************************
|
||||
; create plots ... very simple
|
||||
;************************************
|
||||
|
||||
nt = 6
|
||||
month = "July"
|
||||
yrStrt = ymStrt/100
|
||||
yrLast = ymLast/100
|
||||
title = month+": "+yrStrt+"-"+yrLast
|
||||
|
||||
wks = gsn_open_wks("ps","cru") ; open a ps file
|
||||
gsn_define_colormap(wks,"ncl_default") ; choose colormap; not needed 6.20 onward
|
||||
plot = new(2,graphic) ; create graphic array
|
||||
|
||||
res = True
|
||||
res@cnFillOn = True ; turn on color fill; not needed 6.20 onward
|
||||
res@cnFillMode = "RasterFill" ; Raster Mode
|
||||
res@cnLinesOn = False ; Turn off contour lines
|
||||
|
||||
res@gsnDraw = False ; do not draw picture
|
||||
res@gsnFrame = False ; do not advance frame
|
||||
res@lbOrientation = "Vertical" ; vertical label bar
|
||||
|
||||
resp = True
|
||||
resp@gsnMaximize = True ; make ps, eps, pdf large
|
||||
|
||||
resp@txString = title+": CLD, FRS"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,cldclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,frsclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": PET, VAP"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,petclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,vapclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": TMN, TMX"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,tmnclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,tmxclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": TMP, DTR"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,tmpclm(nt,:,:),res)
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,dtrclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
|
||||
resp@txString = title+": WET, PRE"
|
||||
plot(0)=gsn_csm_contour_map_ce(wks,wetclm(nt,:,:),res)
|
||||
|
||||
;colors = (/ ... /)
|
||||
;res@cnFillPalette = colors ; optional: distinct colors for categories
|
||||
res@cnLevelSelectionMode = "ExplicitLevels" ; use unequal spacing
|
||||
res@cnLevels = (/2.0,10,25,37.5,50,75,100,125,150,175,200,300,400,500,750/)
|
||||
|
||||
plot(1)=gsn_csm_contour_map_ce(wks,preclm(nt,:,:),res)
|
||||
gsn_panel(wks,plot,(/2,1/),resp)
|
||||
20
samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
Normal file
20
samples/NCL/gsn_csm_xy2_time_series_inputs.ncl
Normal file
@@ -0,0 +1,20 @@
|
||||
;******************** Inputs Regarding Input and Output Data *************************************
|
||||
|
||||
;netCDFFilePath = "NULL-MYD04_L2.051-MIL2ASAE.0022-AERONET_AOD_L2.2-20112106165049.nc"
|
||||
;outputFilePath = "plot-output"
|
||||
|
||||
;******************* Inputs Regarding Data Structure ***********************************************
|
||||
|
||||
;lPlotVariablesList = "mean_AERONET_AOD_L2_2_AOD0558intrp_Ames,mean_MIL2ASAE_0022_AOD0866b_Ames"
|
||||
;rPlotVariablesList = "medn_MYD04_L2_051_AOD0550dpbl_l_Ames"
|
||||
|
||||
;xDimName = "time"
|
||||
;xDimSize = 365
|
||||
|
||||
;******************* Inputs Regarding the View Annotations ****************************************
|
||||
|
||||
;title = "MAPSS Time Series"
|
||||
;yLAxisLabel = "Mean AOD"
|
||||
;yRAxisLabel = "Median AOD"
|
||||
|
||||
;*******************END INPUTS ********************************************************************
|
||||
128
samples/NCL/hdf4sds_7.ncl
Normal file
128
samples/NCL/hdf4sds_7.ncl
Normal file
@@ -0,0 +1,128 @@
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
;**************************************************************
|
||||
; User Input
|
||||
;***************************************************************
|
||||
; INPUT
|
||||
diri = "./" ; input directory
|
||||
fili = "wv_LV3_MET08_20050102_12345678_L00013712E00013712.hdf"
|
||||
|
||||
pltDir = "./" ; directory for plot output
|
||||
sfx = get_file_suffix(fili,1)
|
||||
;pltName = sfx@fBase ; output graphic name
|
||||
pltName = "hdf4sds"
|
||||
pltType = "ps"
|
||||
|
||||
;***************************************************************
|
||||
; End User Input
|
||||
;***************************************************************
|
||||
|
||||
;***************************************************************
|
||||
; Open SEVIRI L3 'wv' HDF file
|
||||
;***************************************************************
|
||||
; Note the rather unusual data format: flag *prepended* to data value
|
||||
;***************************************************************
|
||||
; integer twc_lv3 ( fakeDim0, fakeDim1 )
|
||||
; long_name : total water vapour column + flag
|
||||
; units : fmmmm
|
||||
; format : I4
|
||||
; valid_range : ( 10000, 38000 )
|
||||
; _FillValue : -99
|
||||
; legend_01 : f = flag
|
||||
; legend_02 : f = 1 averaged level 2 values
|
||||
; legend_03 : f = 2 interpolated from averaged level 2 values
|
||||
; legend_04 : f = 3 gaps filled with NVAP climatology
|
||||
; legend_05 : mmmm = water vapour column in mm * 100. as integer
|
||||
; legend_06 : Example: 11025 means: flag = 1, 10.25 mm water vapour column
|
||||
; min_lat : -74.75
|
||||
; max_lat : 61.75
|
||||
; min_lon : -75.25
|
||||
; max_lon : 75.25
|
||||
; dlat : 0.5
|
||||
; dlon : 0.5
|
||||
;---------------------------------------------------------------
|
||||
|
||||
f = addfile (diri+fili, "r")
|
||||
ifx = f->twc_lv3 ; fmmmm (integer)
|
||||
printVarSummary(ifx)
|
||||
|
||||
flag = ifx/10000 ; extract flag
|
||||
ix = ifx - flag*10000 ; extract mmmm
|
||||
x = ix*0.01 ; scale
|
||||
|
||||
; create meta data for 'x'
|
||||
|
||||
dimx = dimsizes(x)
|
||||
nlat = dimx(0) ; grid size x(nlat,mlon)
|
||||
mlon = dimx(1)
|
||||
|
||||
lat = fspan(ifx@min_lat, ifx@max_lat, nlat)
|
||||
lat@units = "degrees_north"
|
||||
lon = fspan(ifx@min_lon, ifx@max_lon, mlon)
|
||||
lon@units = "degrees_east"
|
||||
|
||||
x!0 = "lat"
|
||||
x!1 = "lon"
|
||||
x&lat = lat
|
||||
x&lon = lon
|
||||
x@long_name = "SEVIRI: Total Water Vapor"
|
||||
x@units = "mm"
|
||||
|
||||
delete( [/ifx, ix/] ) ; no longer needed
|
||||
|
||||
;***************************************************************
|
||||
; Create plot
|
||||
;***************************************************************
|
||||
wks = gsn_open_wks(pltType, pltDir+pltName)
|
||||
|
||||
plot = new (2, "graphic")
|
||||
|
||||
res = True ; plot mods desired
|
||||
res@gsnAddCyclic = False ; data noty global
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
|
||||
res@cnFillOn = True ; turn on color fill
|
||||
res@cnLinesOn = False ; turn of contour lines
|
||||
res@cnFillMode = "RasterFill" ; Raster Mode
|
||||
res@cnLinesOn = False ; Turn off contour lines
|
||||
res@cnLineLabelsOn = False ; Turn off contour lines
|
||||
res@cnMissingValFillColor= "background" ; "foreground"
|
||||
|
||||
res@mpCenterLonF = 0.5*(min(x&lon) + max(x&lon))
|
||||
res@mpMinLatF = min(x&lat)
|
||||
res@mpMaxLatF = max(x&lat)
|
||||
res@mpMinLonF = min(x&lon)
|
||||
res@mpMaxLonF = max(x&lon)
|
||||
|
||||
;res@lbOrientation = "Vertical"
|
||||
|
||||
plot(0) = gsn_csm_contour_map_ce(wks,x, res)
|
||||
|
||||
; plot flag
|
||||
|
||||
copy_VarCoords(x, flag)
|
||||
flag@long_name = "Flag"
|
||||
flag@units = "1=avg(L2), 2=int(L2), 3=NVAP"
|
||||
print(flag&lat+" "+flag(:,{30}))
|
||||
|
||||
res@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
|
||||
res@cnMinLevelValF = 2 ; set min contour level
|
||||
res@cnMaxLevelValF = 3 ; one less than max
|
||||
res@cnLevelSpacingF = 1 ; set contour spacing
|
||||
|
||||
res@lbLabelStrings = ispan(1,3,1) ; 1, 2, 3
|
||||
res@lbLabelPosition = "Center" ; label position
|
||||
res@lbLabelAlignment = "BoxCenters"
|
||||
|
||||
res@gsnLeftString = ""
|
||||
res@gsnRightString = ""
|
||||
res@gsnCenterString = "flag: 1=avg(L2), 2=int(L2), 3=NVAP"
|
||||
|
||||
plot(1) = gsn_csm_contour_map_ce(wks,flag, res)
|
||||
|
||||
resP = True ; modify the panel plot
|
||||
resP@txString = fili
|
||||
resP@gsnMaximize = True
|
||||
gsn_panel(wks,plot,(/1,2/),resP) ; now draw as one plot
|
||||
125
samples/NCL/mask_12.ncl
Normal file
125
samples/NCL/mask_12.ncl
Normal file
@@ -0,0 +1,125 @@
|
||||
;----------------------------------------------------------------------
|
||||
; mask_12.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Using a worldwide shapefile to create a land/ocean mask
|
||||
; - Masking a data array based on a geographical area
|
||||
; - Attaching shapefile polylines to a map plot
|
||||
; - Attaching lat/lon points to a map using gsn_coordinates
|
||||
;----------------------------------------------------------------------
|
||||
; Downloaded GSHHS shapefiles from:
|
||||
;
|
||||
; http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/
|
||||
;
|
||||
; Used the "coarsest" one: "GSHHS_shp/c/GSHHS_c_L1.shp".
|
||||
;----------------------------------------------------------------------
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "./shapefile_mask_data.ncl"
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Main code
|
||||
;----------------------------------------------------------------------
|
||||
begin
|
||||
WRITE_MASK = True
|
||||
DEBUG = False
|
||||
|
||||
;---Read data to plot and mask
|
||||
dir = "$NCARG_ROOT/lib/ncarg/data/cdf/"
|
||||
cdf_prefix = "uv300"
|
||||
cdf_file = dir + cdf_prefix + ".nc"
|
||||
fin = addfile(cdf_file,"r")
|
||||
u = fin->U(1,:,:)
|
||||
;
|
||||
; Create a mask array the same size as "u", using
|
||||
; lat/lon data read off a shapefile.
|
||||
;
|
||||
shpfile = "GSHHS_shp/c/GSHHS_c_L1.shp"
|
||||
opt = True
|
||||
opt@return_mask = True
|
||||
|
||||
land_mask = shapefile_mask_data(u,shpfile,opt)
|
||||
|
||||
;---Mask "u" against land and ocean.
|
||||
u_land_mask = where(land_mask.eq.1,u,u@_FillValue)
|
||||
u_ocean_mask = where(land_mask.eq.0,u,u@_FillValue)
|
||||
copy_VarMeta(u,u_land_mask)
|
||||
copy_VarMeta(u,u_ocean_mask)
|
||||
|
||||
;---Start the graphics
|
||||
wks = gsn_open_wks("ps","mask")
|
||||
|
||||
res = True
|
||||
|
||||
res@gsnMaximize = True ; maximize plot in frame
|
||||
res@gsnDraw = False ; don't draw plot yet
|
||||
res@gsnFrame = False ; don't advance frame yet
|
||||
|
||||
res@cnFillOn = True
|
||||
res@cnLineLabelsOn = False
|
||||
res@cnLinesOn = False
|
||||
|
||||
;---Make sure both plots have same contour levels
|
||||
mnmxint = nice_mnmxintvl(min(u),max(u),25,False)
|
||||
res@cnLevelSelectionMode = "ManualLevels"
|
||||
res@cnMinLevelValF = mnmxint(0)
|
||||
res@cnMaxLevelValF = mnmxint(1)
|
||||
res@cnLevelSpacingF = mnmxint(2)
|
||||
|
||||
res@lbLabelBarOn = False
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
res@mpFillOn = False
|
||||
res@mpOutlineOn = False
|
||||
|
||||
res@gsnRightString = ""
|
||||
res@gsnLeftString = ""
|
||||
|
||||
;---Create plot of original data and attach shapefile outlines
|
||||
res@tiMainString = "Original data with shapefile outlines"
|
||||
map_data = gsn_csm_contour_map(wks,u,res)
|
||||
dum1 = gsn_add_shapefile_polylines(wks,map_data,shpfile,False)
|
||||
|
||||
;---Create plots of masked data
|
||||
res@tiMainString = "Original data masked against land"
|
||||
map_land_mask = gsn_csm_contour_map(wks,u_land_mask,res)
|
||||
res@tiMainString = "Original data masked against ocean"
|
||||
map_ocean_mask = gsn_csm_contour_map(wks,u_ocean_mask,res)
|
||||
|
||||
if(DEBUG) then
|
||||
mkres = True
|
||||
; mkres@gsMarkerSizeF = 0.007
|
||||
mkres@gsnCoordsAttach = True
|
||||
gsn_coordinates(wks,map_data,u,mkres)
|
||||
mkres@gsnCoordsNonMissingColor = "yellow"
|
||||
mkres@gsnCoordsMissingColor = "black"
|
||||
gsn_coordinates(wks,map_land_mask,u_land_mask,mkres)
|
||||
gsn_coordinates(wks,map_ocean_mask,u_ocean_mask,mkres)
|
||||
end if
|
||||
|
||||
;---Add shapefile outlines
|
||||
dum2 = gsn_add_shapefile_polylines(wks,map_land_mask,shpfile,False)
|
||||
dum3 = gsn_add_shapefile_polylines(wks,map_ocean_mask,shpfile,False)
|
||||
|
||||
;---Draw all three plots on one page
|
||||
pres = True
|
||||
pres@gsnMaximize = True
|
||||
pres@gsnPanelLabelBar = True
|
||||
gsn_panel(wks,(/map_data,map_land_mask,map_ocean_mask/),(/3,1/),pres)
|
||||
|
||||
if(WRITE_MASK) then
|
||||
delete(fin) ; Close file before we open again.
|
||||
;
|
||||
; Make copy of file so we don't overwrite original.
|
||||
; This is not necessary, but it's safer.
|
||||
;
|
||||
new_cdf_file = cdf_prefix + "_with_mask.nc"
|
||||
system("/bin/cp " + cdf_file + " " + new_cdf_file)
|
||||
finout = addfile(new_cdf_file,"w")
|
||||
filevardef(finout, "land_mask", typeof(land_mask), (/ "lat", "lon" /) )
|
||||
finout->land_mask = (/land_mask/)
|
||||
end if
|
||||
end
|
||||
|
||||
115
samples/NCL/mcsst_1.ncl
Normal file
115
samples/NCL/mcsst_1.ncl
Normal file
@@ -0,0 +1,115 @@
|
||||
;*****************************************************
|
||||
; mcsst_1.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Plotting NAVO MCSST data
|
||||
; - Using fbindirread to read in fortran binary data
|
||||
; - Converting "byte" data to "float"
|
||||
; - Adding meta data (attributes and coordinates) to a variable
|
||||
; - Adding gray to an existing color map
|
||||
; - Spanning all but the last two colors in a color map for contour fill
|
||||
; - Drawing raster contours
|
||||
;
|
||||
;*****************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
;***************************************
|
||||
; type of data available on file
|
||||
;***************************************
|
||||
; ipar=0 Weekly Binned Sea Surface Temperature
|
||||
; ipar=1 Number of Points in Bin
|
||||
; ipar=2 Weekly Binned Sea Surface Temperature Anomaly
|
||||
; ipar=3 Interpolated Sea Surface Temperature
|
||||
; ipar=4 Interpolated Sea Surface Temperature Anomaly
|
||||
;***************************************
|
||||
begin
|
||||
ipar = 3
|
||||
fname = "2001311d18N16.dat"
|
||||
tmp = fbindirread(fname,ipar,(/1024,2048/),"byte")
|
||||
;***************************************
|
||||
; convert to float and then change to true SST
|
||||
;***************************************
|
||||
xslope = 0.15
|
||||
if(ipar.eq.4.or.ipar.eq.2)then ; anom has different intercept
|
||||
yint = -20.0
|
||||
end if
|
||||
if(ipar.eq.3.or.ipar.eq.0)then
|
||||
yint = -3.0
|
||||
end if
|
||||
sst = new((/1024,2048/),"float") ; create float var
|
||||
sst = tmp*xslope+yint ; convert to float
|
||||
delete(tmp) ; delete unecessary array
|
||||
;***************************************
|
||||
; assign missing values. The original missing value was zero, but since it was
|
||||
; not assigned in NCL, it was not recognized. The new missing values are
|
||||
; listed below. These will be changed later.
|
||||
;***************************************
|
||||
if(ipar.eq.4)then
|
||||
sst@_FillValue = -20
|
||||
end if
|
||||
if(ipar.eq.3.or.ipar.eq.0)then
|
||||
sst@_FillValue = -3
|
||||
end if
|
||||
;***************************************
|
||||
; create coordinate variables
|
||||
;***************************************
|
||||
nlat = 1024
|
||||
dy = 180./nlat
|
||||
lat = (90. -(ispan(0,1023,1)*dy))-dy/2
|
||||
lat!0 = "lat"
|
||||
lat&lat = lat
|
||||
lat@units = "degrees_north"
|
||||
|
||||
nlon = 2048
|
||||
dx = 360./nlon
|
||||
lon = (ispan(0,2047,1)*dx)+dx/2-180. ; note -180. added by sjm to align
|
||||
lon!0 = "lon"
|
||||
lon&lon = lon
|
||||
lon@units = "degrees_east"
|
||||
;***************************************
|
||||
; fill out the netCDF data model
|
||||
;***************************************
|
||||
sst!0 = "lat" ; name dimensions
|
||||
sst!1 = "lon" ; ditto
|
||||
sst = sst(::-1,:) ; reverse lat orientation
|
||||
sst@long_name = "NAVO MCSST" ; assign long_name
|
||||
sst@units = "deg C" ; assign units
|
||||
sst&lat = lat ; assign lat cv
|
||||
sst&lon = lon ; assign lon cv
|
||||
sst@_FillValue = -999. ; assign missing value
|
||||
;***************************************
|
||||
; get year and day from filename
|
||||
;***************************************
|
||||
res = True ; plot mods desired
|
||||
title = stringtochar(fname) ; parse file name to get date
|
||||
year = title(0:3)
|
||||
jday = title(4:6)
|
||||
res@gsnCenterString = year+" "+jday ; create center string
|
||||
;***************************************
|
||||
; create plot
|
||||
;***************************************
|
||||
wks = gsn_open_wks("ps","mcsst") ; open workstation (plot destination)
|
||||
gsn_define_colormap(wks,"BlGrYeOrReVi200") ; choose colormap
|
||||
;
|
||||
; This will not be necessary in V6.1.0 and later. Named colors can
|
||||
; be used without having to first add them to the color map.
|
||||
;
|
||||
d = NhlNewColor(wks,0.8,0.8,0.8) ; add gray to colormap
|
||||
|
||||
|
||||
res@cnFillOn = True ; turn on color
|
||||
res@gsnSpreadColors = True ; use full range of colormap
|
||||
res@gsnSpreadColorStart = 2 ; start at color 2
|
||||
res@gsnSpreadColorEnd = -3 ; don't use added gray
|
||||
res@cnLinesOn = False ; no contour lines
|
||||
res@cnFillDrawOrder = "PreDraw" ; draw contours before continents
|
||||
res@gsnMaximize = True ; maximize plot
|
||||
|
||||
|
||||
; For a grid this size, it is better to use raster mode. It will be
|
||||
; significantly faster, and will not go over NCL's 16mb default plot size.
|
||||
res@cnFillMode = "RasterFill" ; turn on raster mode
|
||||
|
||||
plot = gsn_csm_contour_map_ce(wks,sst,res) ; contour the variable
|
||||
|
||||
end
|
||||
3
samples/NCL/primero.ncl
Normal file
3
samples/NCL/primero.ncl
Normal file
@@ -0,0 +1,3 @@
|
||||
val=102
|
||||
a=val/4.
|
||||
print(a)
|
||||
172
samples/NCL/topo_9.ncl
Normal file
172
samples/NCL/topo_9.ncl
Normal file
@@ -0,0 +1,172 @@
|
||||
;----------------------------------------------------------------------
|
||||
; topo_9.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Recreating a jpeg topographic image as an NCL map object
|
||||
; - Zooming in on a jpeg image
|
||||
; - Drawing a box around an area of interest on a map
|
||||
; - Attaching polylines to a map
|
||||
; - Using "overlay" to overlay multiple contour plots
|
||||
; - Using more than 256 colors per frame
|
||||
; - Using functions for cleaner code
|
||||
;----------------------------------------------------------------------
|
||||
; NOTE: This example will only work with NCL V6.1.0 and later.
|
||||
;
|
||||
; This script recreates a JPEG image that was converted to a NetCDF
|
||||
; file with color separated bands using the open source tool
|
||||
; "gdal_translate":
|
||||
;
|
||||
; gdal_translate -ot Int16 -of netCDF EarthMap_2500x1250.jpg \
|
||||
; EarthMap_2500x1250.nc
|
||||
;----------------------------------------------------------------------
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; This function imports a JPEG image that's on the whole globe,
|
||||
; and recreates it as an NCL map object that is zoomed in on the
|
||||
; southern tip of Africa.
|
||||
;----------------------------------------------------------------------
|
||||
undef("recreate_jpeg_image")
|
||||
function recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon)
|
||||
begin
|
||||
orig_jpg_filename = "EarthMap_2500x1250.jpg"
|
||||
nc_filename = "EarthMap_2500x1250.nc"
|
||||
|
||||
;--You could use a system call to do the NetCDF conversion
|
||||
; cmd = "gdal_translate -ot Int16 -of netCDF " + jpeg_filename + \
|
||||
; " " + nc_filename)
|
||||
; system(cmd)
|
||||
|
||||
;---Read the three bands of data
|
||||
f = addfile(nc_filename,"r")
|
||||
Band1 = where(f->Band1.gt.255, 255, f->Band1) ; red channel
|
||||
Band2 = where(f->Band2.gt.255, 255, f->Band2) ; green channel
|
||||
Band3 = where(f->Band3.gt.255, 255, f->Band3) ; blue channel
|
||||
|
||||
band_dims = dimsizes(Band3)
|
||||
nlat = band_dims(0)
|
||||
nlon = band_dims(1)
|
||||
print("dimensions of image = " + nlat + " x " + nlon)
|
||||
|
||||
;
|
||||
; Add lat/lon data so we can overlay on a map, and/or
|
||||
; overlay contours. We know the image is global,
|
||||
; cylindrical equidistant, and centered about lon=0.
|
||||
;
|
||||
lat = fspan( -90, 90,nlat)
|
||||
lon = fspan(-180,180,nlon)
|
||||
lat@units = "degrees_north"
|
||||
lon@units = "degrees_east"
|
||||
|
||||
Band1!0 = "lat"
|
||||
Band1!1 = "lon"
|
||||
Band2!0 = "lat"
|
||||
Band2!1 = "lon"
|
||||
Band3!0 = "lat"
|
||||
Band3!1 = "lon"
|
||||
Band1&lat = lat
|
||||
Band1&lon = lon
|
||||
Band2&lat = lat
|
||||
Band2&lon = lon
|
||||
Band3&lat = lat
|
||||
Band3&lon = lon
|
||||
|
||||
res = True
|
||||
|
||||
res@gsnMaximize = True
|
||||
|
||||
res@gsnFrame = False ; Don't draw or advance
|
||||
res@gsnDraw = False ; frame yet.
|
||||
|
||||
res@cnFillOn = True
|
||||
res@cnFillMode = "RasterFill" ; Raster fill can be faster
|
||||
|
||||
res@cnLevelSelectionMode = "EqualSpacedLevels"
|
||||
res@cnMaxLevelCount = 254
|
||||
res@cnFillBackgroundColor = (/ 1., 1., 1., 1./)
|
||||
|
||||
res@cnLinesOn = False ; Turn off contour lines .
|
||||
res@cnLineLabelsOn = False ; Turn off contour labels
|
||||
res@cnInfoLabelOn = False ; Turn off info label
|
||||
res@lbLabelBarOn = False ; Turn off labelbar
|
||||
res@gsnRightString = "" ; Turn off subtitles
|
||||
res@gsnLeftString = ""
|
||||
res@pmTickMarkDisplayMode = "Always"
|
||||
|
||||
;---Construct RGBA colormaps...
|
||||
ramp = fspan(0., 1., 255)
|
||||
reds = new((/255, 4/), float)
|
||||
greens = new((/255, 4/), float)
|
||||
blues = new((/255, 4/), float)
|
||||
|
||||
reds = 0
|
||||
greens = 0
|
||||
blues = 0
|
||||
|
||||
reds(:,0) = ramp
|
||||
greens(:,1) = ramp
|
||||
blues(:,2) = ramp
|
||||
|
||||
; The red contour map is plotted fully opaque; the green and blue
|
||||
; are plotted completely transparent. When overlain, the colors
|
||||
; combine (rather magically).
|
||||
reds(:,3) = 1.
|
||||
greens(:,3) = 0
|
||||
blues(:,3) = 0
|
||||
|
||||
res@cnFillColors = greens
|
||||
greenMap = gsn_csm_contour(wks, Band2, res)
|
||||
|
||||
res@cnFillColors = blues
|
||||
blueMap = gsn_csm_contour(wks, Band3, res)
|
||||
|
||||
;---This will be our base, so make it a map plot.
|
||||
res@cnFillColors = reds
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
res@mpFillOn = False
|
||||
|
||||
;---Zoom in on area of interest
|
||||
res@mpMinLatF = minlat
|
||||
res@mpMaxLatF = maxlat
|
||||
res@mpMinLonF = minlon
|
||||
res@mpMaxLonF = maxlon
|
||||
|
||||
redMap = gsn_csm_contour_map(wks, Band1, res)
|
||||
|
||||
;---Overlay everything to create the topo map
|
||||
overlay(redMap, greenMap)
|
||||
overlay(redMap, blueMap)
|
||||
|
||||
return(redMap)
|
||||
end
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Main code
|
||||
;----------------------------------------------------------------------
|
||||
begin
|
||||
;---Recreating jpeg images only works for X11 and PNG.
|
||||
wks = gsn_open_wks("png","topo")
|
||||
|
||||
;---Southern part of Africa
|
||||
minlat = -40
|
||||
maxlat = 5
|
||||
minlon = 10
|
||||
maxlon = 40
|
||||
|
||||
map = recreate_jpeg_image(wks,minlat,maxlat,minlon,maxlon)
|
||||
|
||||
;---Overlay a red box
|
||||
lonbox = (/ 15, 35, 35, 15, 15/)
|
||||
latbox = (/-30,-30,-10,-10,-30/)
|
||||
|
||||
lnres = True
|
||||
lnres@gsLineColor = "red" ; red box
|
||||
lnres@gsLineThicknessF = 4.0 ; make box thicker
|
||||
box = gsn_add_polyline(wks,map,lonbox,latbox,lnres)
|
||||
|
||||
draw(map) ; Drawing the map will draw the red box
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
120
samples/NCL/traj_3.ncl
Normal file
120
samples/NCL/traj_3.ncl
Normal file
@@ -0,0 +1,120 @@
|
||||
;*************************************************
|
||||
; traj_3.ncl
|
||||
;*************************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
external TRAJ "./particle.so"
|
||||
;*************************************************
|
||||
begin
|
||||
|
||||
path = "./data.asc"
|
||||
data = asciiread(path,(/500,6/),"float")
|
||||
;*************************************************
|
||||
; some parameters
|
||||
;*************************************************
|
||||
np = 1
|
||||
nq = 500
|
||||
ncor= 8
|
||||
xrot = new((/np,nq/),float)
|
||||
yrot = new((/np,nq/),float)
|
||||
xaxis = new(ncor,float)
|
||||
yaxis = new(ncor,float)
|
||||
;**************************************************
|
||||
; convert data into rotated format
|
||||
;**************************************************
|
||||
TRAJ::particle(path,xrot,yrot,nq,np,xaxis,yaxis,ncor)
|
||||
;**************************************************
|
||||
; create plot
|
||||
;**************************************************
|
||||
wks = gsn_open_wks("ps","traj") ; Open an ps file
|
||||
|
||||
xyres = True
|
||||
xyres@gsnFrame = False ; don't advance the frame
|
||||
xyres@gsnDraw = False ; don't draw indivdual plots
|
||||
xyres@tmXTBorderOn = False ; don't draw top axis
|
||||
xyres@tmXBBorderOn = False ; don't draw bottom axis
|
||||
xyres@tmYRBorderOn = False ; don't draw right axis
|
||||
xyres@tmYLBorderOn = False ; don't draw left axis
|
||||
xyres@tmXTOn = False ; don't draw top-axis tick marks
|
||||
xyres@tmXBOn = False ; don't draw bottom-axis tick marks
|
||||
xyres@tmYROn = False ; don't draw right-axis tick marks
|
||||
xyres@tmYLOn = False ; don't draw left-axis tick marks
|
||||
|
||||
xyres@xyLineColors = (/"red"/) ; set the line color to red
|
||||
xyres@xyLineThicknessF = 4.0 ; 4 times the line thickness
|
||||
|
||||
xyres@trXMaxF = 15000 ; choose range of axis even though
|
||||
xyres@trXMinF = -10000 ; we don't see them
|
||||
xyres@trYMaxF = 1000
|
||||
xyres@trYMinF = -1000
|
||||
|
||||
plot = gsn_xy(wks,xrot,yrot,xyres) ; Draw trajectory
|
||||
;**********************************************
|
||||
; create arrays needed for the bounding box
|
||||
;**********************************************
|
||||
a1 = new(5,float)
|
||||
b1 = new(5,float)
|
||||
a2 = new(5,float)
|
||||
b2 = new(5,float)
|
||||
a3 = new(2,float)
|
||||
b3 = new(2,float)
|
||||
a4 = new(2,float)
|
||||
b4 = new(2,float)
|
||||
a5 = new(2,float)
|
||||
b5 = new(2,float)
|
||||
a6 = new(2,float)
|
||||
b6 = new(2,float)
|
||||
a0 = new(2,float)
|
||||
b0 = new(2,float)
|
||||
;**********************************************
|
||||
; determine values of each bounding line from information
|
||||
; returned from particle.f
|
||||
;**********************************************
|
||||
a1(0:3) = xaxis(:3)
|
||||
b1(0:3) = yaxis(:3)
|
||||
a1(4) = xaxis(0)
|
||||
b1(4) = yaxis(0)
|
||||
|
||||
a2(0:3) = xaxis(4:)
|
||||
b2(0:3) = yaxis(4:)
|
||||
a2(4) = xaxis(4)
|
||||
b2(4) = yaxis(4)
|
||||
|
||||
a3 = xaxis(0:4:4)
|
||||
b3 = yaxis(0:4:4)
|
||||
a4 = xaxis(1:5:4)
|
||||
b4 = yaxis(1:5:4)
|
||||
|
||||
a5 = xaxis(2:6:4)
|
||||
b5 = yaxis(2:6:4)
|
||||
a6 = xaxis(3:7:4)
|
||||
b6 = yaxis(3:7:4)
|
||||
|
||||
a0(0) = xaxis(3)
|
||||
b0(0) = yaxis(3)
|
||||
a0(1) = xrot(0,0)
|
||||
b0(1) = yrot(0,0)
|
||||
;***************************************************************
|
||||
; create bounding box by drawing multiple xy plots on top of
|
||||
; each other. each with their individual axis turned off.
|
||||
;***************************************************************
|
||||
xyres@xyLineColors = (/"black"/) ; line color
|
||||
xyres@xyLineThicknessF = 1.0 ; regular line thickness
|
||||
|
||||
bottom = gsn_xy(wks,a1,b1,xyres) ; Draw the bottom bounding box.
|
||||
top = gsn_xy(wks,a2,b2,xyres) ; Draw the top bounding box.
|
||||
side1 = gsn_xy(wks,a3,b3,xyres) ; Draw a side line.
|
||||
side2 = gsn_xy(wks,a4,b4,xyres) ; Draw a side line.
|
||||
side3 = gsn_xy(wks,a5,b5,xyres) ; Draw a side line.
|
||||
side4 = gsn_xy(wks,a6,b6,xyres) ; Draw a side line.
|
||||
;***************************************************************
|
||||
; now draw a large brown line to represent the chimney
|
||||
;***************************************************************
|
||||
xyres@xyLineColors = (/"brown"/) ; chimney color
|
||||
xyres@xyLineThicknessF = 9.0 ; thick line
|
||||
xyres@tiMainString = "Pollutant Trajectory in a 3D Volume"
|
||||
chimney = gsn_xy(wks,a0,b0,xyres) ; Draw the chimney.
|
||||
|
||||
draw(wks)
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
167
samples/NCL/tsdiagram_1.ncl
Normal file
167
samples/NCL/tsdiagram_1.ncl
Normal file
@@ -0,0 +1,167 @@
|
||||
; Read potential temp (TEMP), salinity (SALT)
|
||||
; Compute potential density (PD) for specified range PD(t,s)
|
||||
; (use ncl function based on Yeager's algorithm for rho computation)
|
||||
; Assumes annual and zonally avgeraged input data set (i.e, one time slice)
|
||||
; Used K.Lindsay's "za" for zonal avg -- already binned into basins
|
||||
; Plots temp vs salt (scatter plot), pd overlay
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
|
||||
|
||||
begin
|
||||
; ================================> ; PARAMETERS
|
||||
case = "PHC2_gx1v3"
|
||||
ocnfile = "za_PHC2_T_S_gx1v3.nc"
|
||||
|
||||
depth_min = 14895.82 ; in cm, depth of first layer to be included
|
||||
depth_max = 537499.9
|
||||
;
|
||||
; plot limits
|
||||
;
|
||||
smincn = 32.5
|
||||
smaxcn = 37.0
|
||||
tmincn = -2.
|
||||
tmaxcn = 22.
|
||||
;
|
||||
; Choose basin index
|
||||
;
|
||||
; 0 = global 1 = southern ocean 2 = pacific 3 = indian 6 = atlantic
|
||||
; 8 = labrador 9 = GIN 10 = arctic
|
||||
;
|
||||
bi = 2
|
||||
|
||||
;=====> basin check
|
||||
|
||||
if(bi.lt.0.or.bi.gt.10) then
|
||||
print("basin index "+ bi + " not supported")
|
||||
exit
|
||||
end if
|
||||
|
||||
if(bi.eq.0) then
|
||||
basin = "Global"
|
||||
blab = "global"
|
||||
end if
|
||||
if(bi.eq.1) then
|
||||
basin = "Southern Ocean"
|
||||
blab = "so"
|
||||
end if
|
||||
if(bi.eq.2) then
|
||||
basin = "Pacific Ocean"
|
||||
blab = "pacific"
|
||||
end if
|
||||
if(bi.eq.3) then
|
||||
basin = "Indian Ocean"
|
||||
blab = "indian"
|
||||
end if
|
||||
if(bi.eq.6) then
|
||||
basin = "Atlantic Ocean"
|
||||
blab = "atlanticn"
|
||||
end if
|
||||
if(bi.eq.8) then
|
||||
basin = "Labrador Sea"
|
||||
blab = "lab"
|
||||
end if
|
||||
if(bi.eq.9) then
|
||||
basin = "GIN Sea"
|
||||
blab = "gin"
|
||||
end if
|
||||
if(bi.eq.10) then
|
||||
basin = "Arctic Ocean"
|
||||
blab = "arctic"
|
||||
end if
|
||||
|
||||
;=====> initial resource settings
|
||||
|
||||
wks = gsn_open_wks("ps","tsdiagram") ; Open a Postscript file
|
||||
|
||||
;===== data
|
||||
focn = addfile(ocnfile, "r")
|
||||
salt = focn->SALT(0,:,{depth_min:depth_max},:) ;(basins, z_t, lat_t)
|
||||
temp = focn->TEMP(0,:,{depth_min:depth_max},:)
|
||||
|
||||
;====section out choice basin
|
||||
temp_ba = temp(bi,:,:)
|
||||
salt_ba = salt(bi,:,:)
|
||||
|
||||
;===== put into scatter array format
|
||||
tdata_ba = ndtooned(temp_ba)
|
||||
sdata_ba = ndtooned(salt_ba)
|
||||
|
||||
ydata = tdata_ba
|
||||
xdata = sdata_ba
|
||||
|
||||
;============== compute potenial density (PD), using rho_mwjf
|
||||
;
|
||||
; for potential density, depth = 0. (i.e. density as if brought to surface)
|
||||
;
|
||||
;===========================================================================
|
||||
; WARNING: T-S diagrams use POTENTIAL DENSITY... if set depth to something
|
||||
; other then 0, then you will be plotting density contours computed for the
|
||||
; specified depth layer.
|
||||
;===========================================================================
|
||||
|
||||
depth = 0. ;in meters
|
||||
tspan = fspan(tmincn,tmaxcn,51)
|
||||
sspan = fspan(smincn,smaxcn,51)
|
||||
|
||||
; the more points the better... using Yeager's numbers
|
||||
|
||||
t_range = conform_dims((/51,51/),tspan,0)
|
||||
s_range = conform_dims((/51,51/),sspan,1)
|
||||
|
||||
pd = rho_mwjf(t_range,s_range,depth)
|
||||
|
||||
pd!0 = "temp"
|
||||
pd!1 = "salt"
|
||||
pd&temp = tspan
|
||||
pd&salt = sspan
|
||||
pd = 1000.*(pd-1.) ; Put into kg/m3 pot den units
|
||||
|
||||
; printVarSummary(pd)
|
||||
; printVarInfo(pd,"rho_mwjf")
|
||||
|
||||
;=================Graphics
|
||||
|
||||
;--- scatter plot
|
||||
res = True
|
||||
res@gsnMaximize = True
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
|
||||
res@xyMarkLineModes = "Markers"
|
||||
res@xyMarkers = 16
|
||||
res@xyMarkerColors = "black"
|
||||
res@pmLegendDisplayMode = "Never"
|
||||
res@txFontHeightF = 0.01
|
||||
res@tiMainString = case + " ANN AVG: T-S Diagram"
|
||||
res@tiXAxisString = salt@units
|
||||
res@tiXAxisFontHeightF = 0.02
|
||||
res@tiYAxisString = temp@units
|
||||
res@tiYAxisFontHeightF = 0.02
|
||||
res@trXMinF = smincn
|
||||
res@trXMaxF = smaxcn
|
||||
res@trYMinF = tmincn
|
||||
res@trYMaxF = tmaxcn
|
||||
res@gsnRightString = depth_min/100. + "-"+depth_max/100. +"m"
|
||||
res@gsnLeftString = basin
|
||||
|
||||
plot = gsn_csm_xy(wks,xdata,ydata,res)
|
||||
|
||||
;----- pd overlay
|
||||
resov = True
|
||||
resov@gsnDraw = False
|
||||
resov@gsnFrame = False
|
||||
resov@cnLevelSelectionMode = "AutomaticLevels"
|
||||
resov@cnInfoLabelOn = "False"
|
||||
resov@cnLineLabelPlacementMode = "Constant"
|
||||
resov@cnLineLabelFontHeightF = ".02"
|
||||
|
||||
plotpd = gsn_csm_contour(wks,pd,resov)
|
||||
overlay(plot,plotpd)
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
141
samples/NCL/unique_9.ncl
Normal file
141
samples/NCL/unique_9.ncl
Normal file
@@ -0,0 +1,141 @@
|
||||
;************************************
|
||||
; unique_9.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Drawing raster contours over a map
|
||||
; - Creating a topography plot using raster contours
|
||||
; - Reading data from binary files
|
||||
; - Manually creating lat/lon coordinate arrays
|
||||
; - Customizing a labelbar for a contour plot
|
||||
;************************************
|
||||
; This example generates a topo map over
|
||||
; the area of Trinidad, Colorado.
|
||||
;************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
|
||||
begin
|
||||
|
||||
wks = gsn_open_wks("ps","unique")
|
||||
|
||||
;----------------- read the west binary data -------------------------
|
||||
binfile = "trinidad-w.bin"
|
||||
|
||||
quad_name = fbinrecread(binfile,0,60,"character")
|
||||
|
||||
map_cornersW = fbinrecread(binfile,1,4,"double")
|
||||
|
||||
lonW = fbinrecread(binfile,2,(/1201/),"double")
|
||||
|
||||
latW = fbinrecread(binfile,3,(/1201/),"double")
|
||||
|
||||
minmax_elevW = fbinrecread(binfile,4,2,"double")
|
||||
|
||||
tmpW = fbinrecread(binfile,5,(/1201,1201/),"integer")
|
||||
|
||||
;----------------- read the east binary data -------------------------
|
||||
binfile = "trinidad-e.bin"
|
||||
|
||||
quad_name = fbinrecread(binfile,0,60,"character")
|
||||
|
||||
map_cornersE = fbinrecread(binfile,1,4,"double")
|
||||
|
||||
lonE = fbinrecread(binfile,2,(/1201/),"double")
|
||||
|
||||
latE = fbinrecread(binfile,3,(/1201/),"double")
|
||||
|
||||
minmax_elevE = fbinrecread(binfile,4,2,"double")
|
||||
|
||||
tmpE = fbinrecread(binfile,5,(/1201,1201/),"integer")
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
min_elev = min((/minmax_elevW(0),minmax_elevE(0)/))*3.28
|
||||
max_elev = max((/minmax_elevW(1),minmax_elevE(1)/))*3.28
|
||||
|
||||
lat = new(1201,"double")
|
||||
lat = latW
|
||||
lat!0 = "lat"
|
||||
lat&lat = latW ; same as latE
|
||||
lat@long_name = "latitude"
|
||||
lat@units = "degrees_north"
|
||||
|
||||
lon = new(2401,"double")
|
||||
lon(0:1200) = lonW
|
||||
lon(1201:2400) = lonE(1:1200)
|
||||
lon!0 = "lon"
|
||||
lon&lon = lon
|
||||
lon@long_name = "longitude"
|
||||
lon@units = "degrees_east"
|
||||
|
||||
data = new((/1201,2401/),"float") ; (lat,lon)
|
||||
data!0 = "lat"
|
||||
data&lat = lat
|
||||
data!1 = "lon"
|
||||
data&lon = lon
|
||||
data(:,0:1200) = (/tmpW*3.28/) ; convert to feet
|
||||
data(:,1201:2400) = (/tmpE(:,1:1200)*3.28/) ; convert to feet
|
||||
;-------------------------------------------------------------
|
||||
|
||||
;
|
||||
; Define colormap.
|
||||
;
|
||||
cmap = (/(/1.00, 1.00, 1.00/),(/0.00, 0.00, 0.00/), \
|
||||
(/0.51, 0.13, 0.94/),(/0.00, 0.00, 0.59/), \
|
||||
(/0.00, 0.00, 0.80/),(/0.25, 0.41, 0.88/), \
|
||||
(/0.12, 0.56, 1.00/),(/0.00, 0.75, 1.00/), \
|
||||
(/0.63, 0.82, 1.00/),(/0.82, 0.96, 1.00/), \
|
||||
(/1.00, 1.00, 0.78/),(/1.00, 0.88, 0.20/), \
|
||||
(/1.00, 0.67, 0.00/),(/1.00, 0.43, 0.00/), \
|
||||
(/1.00, 0.00, 0.00/),(/0.78, 0.00, 0.00/), \
|
||||
(/0.63, 0.14, 0.14/),(/1.00, 0.41, 0.70/)/)
|
||||
|
||||
gsn_define_colormap(wks,cmap)
|
||||
|
||||
res = True
|
||||
res@gsnMaximize = True
|
||||
res@gsnAddCyclic = False
|
||||
|
||||
; map plot resources
|
||||
res@mpFillOn = False
|
||||
res@mpLimitMode = "Corners"
|
||||
res@mpDataBaseVersion = "Ncarg4_1"
|
||||
res@mpOutlineBoundarySets = "AllBoundaries"
|
||||
res@mpLeftCornerLonF = map_cornersW(0)
|
||||
res@mpLeftCornerLatF = map_cornersW(1)
|
||||
res@mpRightCornerLonF = map_cornersE(2)
|
||||
res@mpRightCornerLatF = map_cornersE(3)
|
||||
|
||||
; contour resources
|
||||
res@cnFillOn = True
|
||||
res@cnLinesOn = False
|
||||
res@cnFillMode = "RasterFill"
|
||||
res@cnLevelSelectionMode = "ExplicitLevels"
|
||||
res@cnLevels = (/ 5000., 6000., 7000., 8000., 8500., 9000., \
|
||||
9500.,10000.,10500.,11000.,11500.,12000., \
|
||||
12500.,13000.,13500./)
|
||||
|
||||
; tickmark resources
|
||||
res@pmTickMarkDisplayMode = "Always"
|
||||
res@tmXBLabelFontHeightF = 0.010
|
||||
|
||||
; labelbar resources
|
||||
res@pmLabelBarWidthF = 0.60
|
||||
res@txFontHeightF = 0.012
|
||||
res@lbTitleString = "elevation above mean sea level (feet)"
|
||||
res@lbTitleFontHeightF = 0.012
|
||||
res@lbLabelFontHeightF = 0.008
|
||||
res@lbTitleOffsetF = -0.27
|
||||
res@lbBoxMinorExtentF = 0.15
|
||||
res@pmLabelBarOrthogonalPosF = -.05
|
||||
|
||||
; title resources
|
||||
res@tiMainString = "USGS DEM TRINIDAD (1 x 2 degrees)"
|
||||
res@tiMainOffsetYF = -0.02 ; Move title down towards graphic.
|
||||
res@tiMainFontHeightF = 0.015
|
||||
res@gsnLeftString = "Min Elevation: "+min_elev
|
||||
res@gsnRightString = "Max Elevation: "+max_elev
|
||||
res@gsnCenterString = "Scale 1:250,000"
|
||||
|
||||
plot = gsn_csm_contour_map(wks,data,res)
|
||||
|
||||
end
|
||||
131
samples/NCL/viewport_4.ncl
Normal file
131
samples/NCL/viewport_4.ncl
Normal file
@@ -0,0 +1,131 @@
|
||||
; ***********************************************
|
||||
; viewport_4.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Drawing an XY plot with multiple curves
|
||||
; - Using drawNDCGrid to draw a nicely labeled NDC grid
|
||||
; - Changing the size/shape of an XY plot using viewport resources
|
||||
; - Drawing two XY plots on the same page using viewport resources
|
||||
; - Drawing polylines, polymarkers, and text in NDC space
|
||||
; - Using "getvalues" to retrieve resource values
|
||||
; - Maximizing plots after they've been created
|
||||
; ***********************************************
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
|
||||
|
||||
;********************************************************************
|
||||
; Draw a box around the viewport of the given object..
|
||||
;********************************************************************
|
||||
procedure draw_vp_box(wks,plot)
|
||||
local vpx, vpy, vpw, vph, xbox, ybox, lnres, mkres, txres
|
||||
begin
|
||||
|
||||
; Retrieve the viewport values of the drawable object.
|
||||
getvalues plot
|
||||
"vpXF" : vpx
|
||||
"vpYF" : vpy
|
||||
"vpWidthF" : vpw
|
||||
"vpHeightF" : vph
|
||||
end getvalues
|
||||
|
||||
; Set up some marker resources.
|
||||
mkres = True
|
||||
mkres@gsMarkerIndex = 16 ; filled dot
|
||||
mkres@gsMarkerSizeF = 0.02 ; larger than default
|
||||
mkres@gsMarkerColor = "Red"
|
||||
|
||||
; Draw a single marker at the vpXF/vpYF location.
|
||||
gsn_polymarker_ndc(wks,vpx,vpy,mkres)
|
||||
|
||||
|
||||
; Set up some text resources.
|
||||
txres = True
|
||||
txres@txJust = "BottomLeft"
|
||||
txres@txFontHeightF = 0.018
|
||||
txres@txFontColor = "Blue"
|
||||
txres@txBackgroundFillColor = "white"
|
||||
|
||||
gsn_text_ndc(wks,"(vpXF="+vpx+", vpYF="+vpy+")",vpx,vpy+0.02,txres)
|
||||
; Set up some line resources.
|
||||
lnres = True
|
||||
lnres@gsLineColor = "Red" ; line color
|
||||
lnres@gsLineThicknessF = 2.0 ; 3.5 times as thick
|
||||
|
||||
; Draw lines indicating the width and height
|
||||
xline = (/vpx, vpx+vpw/)
|
||||
yline = (/vpy-0.05,vpy-0.05/)
|
||||
gsn_polyline_ndc(wks,xline,yline,lnres)
|
||||
|
||||
xline = (/vpx+0.05,vpx+0.05/)
|
||||
yline = (/vpy,vpy-vph/)
|
||||
gsn_polyline_ndc(wks,xline,yline,lnres)
|
||||
|
||||
txres@txJust = "CenterCenter"
|
||||
gsn_text_ndc(wks,"vpWidthF = " + vpw,vpx+vpw/2.,vpy-0.05,txres)
|
||||
|
||||
txres@txAngleF = 90.
|
||||
gsn_text_ndc(wks,"vpHeightF = " + vph,vpx+0.05,vpy-vph/2.,txres)
|
||||
end
|
||||
|
||||
;********************************************************************
|
||||
; Main code
|
||||
;********************************************************************
|
||||
begin
|
||||
;************************************************
|
||||
; read in data
|
||||
;************************************************
|
||||
f = addfile ("$NCARG_ROOT/lib/ncarg/data/cdf/uv300.nc","r")
|
||||
u = f->U ; get u data
|
||||
;************************************************
|
||||
; plotting parameters
|
||||
;************************************************
|
||||
wks = gsn_open_wks ("ps","viewport") ; open workstation
|
||||
|
||||
res = True ; plot mods desired
|
||||
|
||||
res@gsnFrame = False ; don't advance frame yet
|
||||
|
||||
res@vpWidthF = 0.8 ; set width and height
|
||||
res@vpHeightF = 0.3
|
||||
|
||||
; First plot
|
||||
res@tiMainString = "Plot 1"
|
||||
|
||||
res@vpXF = 0.15
|
||||
res@vpYF = 0.9 ; Higher on the page
|
||||
|
||||
plot1 = gsn_csm_xy (wks,u&lat,u(0,:,{82}),res) ; create plot
|
||||
|
||||
; Second plot
|
||||
res@tiMainString = "Plot 2"
|
||||
|
||||
res@vpXF = 0.15 ; Same X location as first plot
|
||||
res@vpYF = 0.4 ; Lower on the page
|
||||
|
||||
plot2 = gsn_csm_xy (wks,u&lat,u(0,:,{3}),res) ; create plot
|
||||
|
||||
; Advance the frame
|
||||
frame(wks)
|
||||
|
||||
; Now draw the two plots with illustrations.
|
||||
|
||||
drawNDCGrid(wks) ; Draw helpful grid lines showing NDC square.
|
||||
|
||||
draw(plot1) ; Draw the two plots
|
||||
draw(plot2)
|
||||
|
||||
draw_vp_box(wks,plot1) ; Draw boxes around the two viewports.
|
||||
draw_vp_box(wks,plot2)
|
||||
|
||||
frame(wks) ; Advance the frame.
|
||||
|
||||
|
||||
;
|
||||
; Uncomment the next two lines if you want to maximize these plots for
|
||||
; PS or PDF output.
|
||||
;
|
||||
; psres = True
|
||||
; maximize_output(wks,psres) ; calls draw and frame for you
|
||||
end
|
||||
120
samples/NCL/weather_sym_6.ncl
Normal file
120
samples/NCL/weather_sym_6.ncl
Normal file
@@ -0,0 +1,120 @@
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
|
||||
begin
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; Example of plotting station model data over a map
|
||||
; illustrating how the wind barb directions are adjusted
|
||||
; for the map projection.
|
||||
;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; City names.
|
||||
;
|
||||
cities = (/ "NCAR", "Seattle", "San Francisco", \
|
||||
"Los Angeles", "Billings", "El Paso", \
|
||||
"Houston", "Kansas City", "Minneapolis", \
|
||||
"Chicago", "Detroit", "Atlanta", \
|
||||
"Miami", "New York", "Eugene", \
|
||||
"Boise", "Salt Lake", "Phoenix", \
|
||||
"Albuquerque", "Bismarck", "Tulsa", \
|
||||
"Dallas", "Little Rock", "Lexington", \
|
||||
"Charlotte", "Norfolk", "Bangor" \
|
||||
/)
|
||||
city_lats = (/ 40.0, 47.6, 37.8, \
|
||||
34.1, 45.8, 31.8, \
|
||||
29.8, 39.1, 45.0, \
|
||||
41.9, 42.3, 33.8, \
|
||||
25.8, 40.8, 44.1, \
|
||||
43.6, 40.7, 33.5, \
|
||||
35.1, 46.7, 36.0, \
|
||||
32.8, 34.7, 38.1, \
|
||||
35.2, 36.8, 44.8 \
|
||||
/)
|
||||
city_lons = (/ -105.0, -122.3, -122.4, \
|
||||
-118.3, -108.5, -106.5, \
|
||||
-095.3, -094.1, -093.8, \
|
||||
-087.6, -083.1, -084.4, \
|
||||
-080.2, -074.0, -123.1, \
|
||||
-116.2, -111.9, -112.1, \
|
||||
-106.6, -100.8, -096.0, \
|
||||
-096.8, -092.3, -084.1, \
|
||||
-080.8, -076.3, -068.8 \
|
||||
/)
|
||||
;
|
||||
; Station model data for the 27 cities.
|
||||
;
|
||||
imdat = (/"11000000751126021360300004955054054600007757087712", \
|
||||
"11103100011104021080300004959055050600517043080369", \
|
||||
"11206200031102021040300004963056046601517084081470", \
|
||||
"11309300061000021020300004967057042602017125082581", \
|
||||
"11412400091002021010300004971058038602517166083592", \
|
||||
"11515500121004020000300004975050034603017207084703", \
|
||||
"11618600151006020030300004979051030603507248085814", \
|
||||
"11721700181008020050300004983052026604007289086925", \
|
||||
"11824800211009020070300004987053022604507323087036", \
|
||||
"11927900241011020110300004991054018605017364088147", \
|
||||
"11030000271013020130300004995055014605517405089258", \
|
||||
"11133100301015020170300004999056010606017446080369", \
|
||||
"11236200331017020200300004000057006606517487081470", \
|
||||
"11339300361019020230300004004058002607017528082581", \
|
||||
"11442400391021020250300004008050000607517569083692", \
|
||||
"11545500421023020270300004012051040608017603084703", \
|
||||
"11648600451025020290300004017052008608517644085814", \
|
||||
"11751700481027020310300004021053012609017685086925", \
|
||||
"11854800511029020330300004025054016609507726087036", \
|
||||
"11958900541031020360300004029055018610007767088147", \
|
||||
"11060000571033020380300004033056030610507808089258", \
|
||||
"11163100601035020410300004037057034611007849080369", \
|
||||
"11266200631037020430300004041058043611507883081470", \
|
||||
"11369300661039020470300004045050041612007924082581", \
|
||||
"11472400691041020500300004048051025612507965083692", \
|
||||
"11575500721043020530300004051052022613507996084703", \
|
||||
"11678600751048021580300004055053013614007337085814" \
|
||||
/)
|
||||
|
||||
;
|
||||
; Define a color map and open a workstation.
|
||||
;
|
||||
cmap = (/ \
|
||||
(/ 1., 1., 1. /), \ ; color index 0 - white
|
||||
(/ 0., 0., 0. /) \ ; color index 1 - black
|
||||
/)
|
||||
wks = gsn_open_wks("ps","weather_sym")
|
||||
gsn_define_colormap(wks,cmap)
|
||||
|
||||
;
|
||||
; Draw a world map.
|
||||
;
|
||||
mpres = True
|
||||
mpres@gsnFrame = False
|
||||
mpres@mpSatelliteDistF = 1.3
|
||||
mpres@mpOutlineBoundarySets = "USStates"
|
||||
mpres@mpCenterLatF = 40.
|
||||
mpres@mpCenterLonF = -97.
|
||||
mpres@mpCenterRotF = 35.
|
||||
map = gsn_map(wks,"Satellite",mpres)
|
||||
|
||||
;
|
||||
; Scale the station model plot (all aspects of the station
|
||||
; model plots are scaled as per the size of the wind barb).
|
||||
;
|
||||
wmsetp("wbs",0.018)
|
||||
;
|
||||
; In the middle of Nebraska, draw a wind barb for a north wind
|
||||
; with a magnitude of 15 knots.
|
||||
;
|
||||
wmbarbmap(wks,42.,-99.,0.,-15.)
|
||||
|
||||
;
|
||||
; Draw the station model data at the selected cities. The call
|
||||
; to wmsetp informs wmstnm that the wind barbs will be drawn over
|
||||
; a map. To illustrate the adjustment for plotting the model
|
||||
; data over a map, all winds are from the north.
|
||||
;
|
||||
wmsetp("ezf",1)
|
||||
wmstnm(wks,city_lats,city_lons,imdat)
|
||||
|
||||
frame(wks)
|
||||
|
||||
end
|
||||
151
samples/NCL/xy_29.ncl
Normal file
151
samples/NCL/xy_29.ncl
Normal file
@@ -0,0 +1,151 @@
|
||||
; xy_29.ncl
|
||||
;
|
||||
; Concepts illustrated:
|
||||
; - Reading data from an ASCII file with headers
|
||||
; - Creating a separate procedure to create a specific plot
|
||||
; - Attaching polymarkers to an XY plot
|
||||
;
|
||||
; This script was originally from Dr. Birgit Hassler (NOAA)
|
||||
;****************************************************
|
||||
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
|
||||
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
|
||||
|
||||
;************************************************
|
||||
; Plot Procedure
|
||||
;************************************************
|
||||
procedure plotTCOPolym(pltName[1]:string, pltType[1]:string, filName[1]:string \
|
||||
,xTitle[1]:string , yTitle[1]:string \
|
||||
,year[*]:numeric, y[*]:numeric)
|
||||
local wks, res, ntim, gsres, MarkerCol, OldYear, i, xmarker, ymarker
|
||||
|
||||
begin
|
||||
wks = gsn_open_wks(pltType,pltName)
|
||||
gsn_define_colormap(wks,"default")
|
||||
|
||||
res = True
|
||||
res@gsnMaximize = True ; make "ps", "eps", "pdf" large
|
||||
|
||||
res@vpHeightF = 0.5 ; change aspect ratio of plot
|
||||
res@vpWidthF = 0.75
|
||||
res@vpXF = 0.15 ; start plot at x ndc coord
|
||||
res@tiXAxisString = xTitle
|
||||
res@tiYAxisString = yTitle
|
||||
res@tiMainString = filName
|
||||
|
||||
ntim = dimsizes(year)
|
||||
res@trXMinF = year(0)-1
|
||||
res@trXMaxF = year(ntim-1)+1
|
||||
|
||||
res@gsnDraw = False
|
||||
res@gsnFrame = False
|
||||
res@xyMarkLineMode = "markers"
|
||||
res@xyMarker = 16
|
||||
res@xyMarkerColor = "Background"
|
||||
plot = gsn_csm_xy (wks,year,y,res) ; create plot frame ork
|
||||
|
||||
; add different color polymarkers for each year
|
||||
gsres = True
|
||||
MarkerCol = 2
|
||||
OldYear = year(0)
|
||||
|
||||
do i=0,ntim-1
|
||||
xmarker = year(i)
|
||||
ymarker = y(i)
|
||||
|
||||
if (i.gt.0) then
|
||||
if (year(i).gt.OldYear) then
|
||||
MarkerCol = MarkerCol+1
|
||||
end if
|
||||
OldYear = year(i)
|
||||
end if
|
||||
|
||||
gsres@gsMarkerColor = MarkerCol
|
||||
gsres@gsMarkerIndex = 16
|
||||
;gsres@gsMarkerSizeF = 15.0
|
||||
; add (attach) polymarkers to existing plot object
|
||||
plot@$unique_string("dum")$ = gsn_add_polymarker(wks,plot,xmarker,ymarker,gsres)
|
||||
end do
|
||||
|
||||
draw(plot)
|
||||
frame(wks)
|
||||
end
|
||||
|
||||
;***********************************************************
|
||||
; MAIN
|
||||
;***********************************************************
|
||||
pltType = "ps" ; "ps", "eps", "png", "x11"
|
||||
|
||||
; read multiple ascii file names
|
||||
;;fili = "Southpole_TCOTimeSeries_11.dat"
|
||||
|
||||
diri = "./"
|
||||
fili = systemfunc("cd "+diri+" ; ls *TCOT*dat")
|
||||
print(fili)
|
||||
|
||||
nfil = dimsizes(fili)
|
||||
|
||||
nhead= 4 ; number of header lines on ascii file(s)
|
||||
ncol = 4 ; year, month, day, O3
|
||||
|
||||
do nf=0,nfil-1
|
||||
sfx = get_file_suffix(fili(nf), 0) ; sfx = ".dat"
|
||||
filx = sfx@fBase ; filx= "Southpole_TCOTimeSeries_11"
|
||||
; read ascii files
|
||||
data = readAsciiTable(diri+fili(nf), ncol, "float", nhead)
|
||||
dimd = dimsizes(data)
|
||||
ntim = dimd(0) ; # rows
|
||||
|
||||
year = toint( data(:,0) ) ; user decision ... convert to integer
|
||||
mon = toint( data(:,1) )
|
||||
day = toint( data(:,2) )
|
||||
|
||||
hour = new (ntim, "integer", "No_FillValue")
|
||||
mn = new (ntim, "integer", "No_FillValue")
|
||||
sec = new (ntim, "double" , "No_FillValue")
|
||||
hour = 0
|
||||
mn = 0
|
||||
sec = 0d0
|
||||
; create COARDS/udunits time variable
|
||||
;;tunits = "days since 1900-01-01 00:00:0.0"
|
||||
tunits = "days since "+year(0)+"-"+mon(0)+"-"+day(0)+" 00:00:0.0"
|
||||
time = cd_inv_calendar(year,mon,day,hour,mn,sec,tunits, 0)
|
||||
time!0 = "time"
|
||||
time&time = time
|
||||
;printVarSummary(time)
|
||||
|
||||
; create a Gregorin 'date' variable
|
||||
date = year*10000 + mon*100 + day
|
||||
date!0 = "time"
|
||||
date@units = "yyyymmdd"
|
||||
date&time = time
|
||||
;printVarSummary(date)
|
||||
|
||||
O3 = data(:,3)
|
||||
O3@long_name = "total column ozone"
|
||||
O3@units = "DU"
|
||||
|
||||
O3!0 = "time"
|
||||
O3&time = time
|
||||
;printVarSummary(O3)
|
||||
;print(" ")
|
||||
;print(date+" "+time+" "+O3)
|
||||
|
||||
; plot
|
||||
yTitle = O3@long_name
|
||||
year@long_name = "YEAR"
|
||||
|
||||
plotTCOPolym (filx, pltType, fili(nf), year@long_name, yTitle, year, O3)
|
||||
|
||||
delete(time) ; delete ... size (# rows) may change in the next file
|
||||
delete(date)
|
||||
delete(year)
|
||||
delete(mon )
|
||||
delete(day )
|
||||
delete(mn )
|
||||
delete(sec )
|
||||
delete(O3 )
|
||||
delete(data)
|
||||
end do
|
||||
|
||||
242
samples/Nginx/example.com.vhost
Normal file
242
samples/Nginx/example.com.vhost
Normal file
@@ -0,0 +1,242 @@
|
||||
# Move the www people to no-www
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.example.com;
|
||||
return 301 $scheme://example.com$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen 443 ssl;
|
||||
server_name example.com;
|
||||
|
||||
# Certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
|
||||
ssl_certificate /srv/www/example.com/ssl/example.com.crt;
|
||||
ssl_certificate_key /srv/www/example.com/ssl/example.com.key;
|
||||
|
||||
# Allow multiple connections to use the same key data
|
||||
ssl_session_timeout 5m;
|
||||
ssl_session_cache shared:SSL:50m;
|
||||
|
||||
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
|
||||
ssl_dhparam /etc/ssl/certs/dhparam.pem;
|
||||
|
||||
# Intermediate configuration. tweak to your needs
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
include snippets/ssl_ciphers_intermediate.conf;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
|
||||
#add_header Strict-Transport-Security max-age=15768000;
|
||||
|
||||
# OCSP Stapling - fetch OCSP records from URL in ssl_certificate and cache them
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
|
||||
# Verify chain of trust of OCSP response using Root CA and Intermediate certs
|
||||
ssl_trusted_certificate /srv/www/example.com/ssl/unified-ssl.crt;
|
||||
resolver 8.8.8.8 8.8.4.4;
|
||||
resolver_timeout 10s;
|
||||
|
||||
root /srv/www/example.com/htdocs;
|
||||
index index.php index.html index.htm;
|
||||
charset UTF-8;
|
||||
autoindex off;
|
||||
|
||||
# Deny access based on HTTP method (set in HTTP level)
|
||||
if ($bad_method = 1) {
|
||||
return 444;
|
||||
}
|
||||
|
||||
# Show "Not Found" 404 errors in place of "Forbidden" 403 errors, because
|
||||
# forbidden errors allow attackers potential insight into your server's
|
||||
# layout and contents
|
||||
error_page 403 = 404;
|
||||
|
||||
# It's always good to set logs, note however you cannot turn off the error log
|
||||
# setting error_log off; will simply create a file called 'off'.
|
||||
access_log /var/log/nginx/example.com.access.log;
|
||||
error_log /var/log/nginx/example.com.error.log;
|
||||
|
||||
# Add trailing slash to */wp-admin requests.
|
||||
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
|
||||
|
||||
location / {
|
||||
# This try_files directive is used to enable pretty, SEO-friendly URLs
|
||||
# and permalinks for Wordpress. Leave it *off* to start with, and then
|
||||
# turn it on once you've gotten Wordpress configured!
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
|
||||
# Option to create password protected directory
|
||||
# http://www.howtoforge.com/basic-http-authentication-with-nginx
|
||||
# location /admin {
|
||||
# auth_basic "Administrator Login";
|
||||
# auth_basic_user_file /var/www/domain.com/admin/.htpasswd;
|
||||
# }
|
||||
|
||||
# Do not log access to these to keep the logs cleaner
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /apple-touch-icon.png {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /apple-touch-icon-precomposed.png {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
# This block will catch static file requests, such as images, css, js
|
||||
# The ?: prefix is a 'non-capturing' mark, meaning we do not require
|
||||
# the pattern to be captured into $1 which should help improve performance
|
||||
location ~* \.(?:3gp|gif|jpg|jpe?g|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|woff)$ {
|
||||
# Some basic cache-control for static files to be sent to the browser
|
||||
expires max;
|
||||
add_header Pragma public;
|
||||
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
|
||||
}
|
||||
|
||||
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
|
||||
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
|
||||
location ~ /\. {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ ~$ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
deny all;
|
||||
}
|
||||
|
||||
# Common deny or internal locations, to help prevent access to areas of
|
||||
# the site that should not be public
|
||||
location ~* wp-admin/includes {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~* wp-includes/theme-compat/ {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~* wp-includes/js/tinymce/langs/.*\.php {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /wp-content/ {
|
||||
internal;
|
||||
}
|
||||
|
||||
# Deny access to any files with a .php extension in the uploads directory
|
||||
# Works in sub-directory installs and also in multisite network
|
||||
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
|
||||
location ~* /(?:uploads|files)/.*\.php$ {
|
||||
deny all;
|
||||
}
|
||||
|
||||
# Make sure these get through, esp with dynamic WP sitmap plugin
|
||||
location = /robots.txt {
|
||||
try_files $uri /index.php;
|
||||
}
|
||||
|
||||
location = /sitemap.xml {
|
||||
try_files $uri /index.php;
|
||||
}
|
||||
|
||||
location = /sitemap.xml.gz {
|
||||
try_files $uri /index.php;
|
||||
}
|
||||
|
||||
# Fix for Firefox issue with cross site font icons
|
||||
location ~* \.(eot|otf|ttf|woff)$ {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
# Redirect server error pages to the static page /50x.html
|
||||
# Make sure 50x.html exists at that location
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root /usr/share/nginx/html;
|
||||
}
|
||||
|
||||
# Cache everything by default
|
||||
set $skip_cache 0;
|
||||
|
||||
# POST requests and urls with a query string should always go to PHP
|
||||
if ($request_method = POST) {
|
||||
set $skip_cache 1;
|
||||
}
|
||||
if ($query_string != "") {
|
||||
set $skip_cache 1;
|
||||
}
|
||||
|
||||
# Don't cache uris containing the following segments
|
||||
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
|
||||
set $skip_cache 1;
|
||||
}
|
||||
|
||||
# Don't use the cache for logged in users or recent commenters
|
||||
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
|
||||
set $skip_cache 1;
|
||||
}
|
||||
|
||||
# Pass all .php files onto a php-fpm/php-fcgi server.
|
||||
location ~ [^/]\.php(/|$) {
|
||||
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
|
||||
# Check that the PHP script exists before passing it
|
||||
try_files $fastcgi_script_name =404;
|
||||
|
||||
# Bypass the fact that try_files resets $fastcgi_path_info
|
||||
# see: http://trac.nginx.org/nginx/ticket/321
|
||||
set $path_info $fastcgi_path_info;
|
||||
fastcgi_param PATH_INFO $path_info;
|
||||
|
||||
fastcgi_pass unix:/var/run/example.com.sock;
|
||||
fastcgi_index index.php;
|
||||
# Uncomment if site is HTTPS
|
||||
#fastcgi_param HTTPS on;
|
||||
include fastcgi.conf;
|
||||
|
||||
fastcgi_cache_bypass $skip_cache;
|
||||
fastcgi_no_cache $skip_cache;
|
||||
|
||||
fastcgi_cache WORDPRESS;
|
||||
fastcgi_cache_valid 60m;
|
||||
}
|
||||
|
||||
location ~ /purge(/.*) {
|
||||
fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
|
||||
}
|
||||
|
||||
# Use this block if PHPMyAdmin is enabled for this domain
|
||||
location /phpmyadmin {
|
||||
root /usr/share/;
|
||||
index index.php index.html index.htm;
|
||||
|
||||
location ~ ^/phpmyadmin/(.+\.php)$ {
|
||||
try_files $uri =404;
|
||||
root /usr/share/;
|
||||
fastcgi_pass unix:/var/run/example.com.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
|
||||
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
|
||||
root /usr/share/;
|
||||
}
|
||||
}
|
||||
|
||||
location /phpMyAdmin {
|
||||
rewrite ^/* /phpmyadmin last;
|
||||
}
|
||||
# End PHPMyAdmin block
|
||||
|
||||
} # End of server block.
|
||||
176
samples/Objective-C/gen-cocoa-linguist-thrift.m
Normal file
176
samples/Objective-C/gen-cocoa-linguist-thrift.m
Normal file
@@ -0,0 +1,176 @@
|
||||
/**
|
||||
* Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
*
|
||||
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
* @generated
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "TProtocol.h"
|
||||
#import "TApplicationException.h"
|
||||
#import "TProtocolException.h"
|
||||
#import "TProtocolUtil.h"
|
||||
#import "TProcessor.h"
|
||||
#import "TObjective-C.h"
|
||||
#import "TBase.h"
|
||||
|
||||
|
||||
#import "linguist.h"
|
||||
|
||||
@implementation PullRequest
|
||||
|
||||
- (id) init
|
||||
{
|
||||
self = [super init];
|
||||
#if TARGET_OS_IPHONE || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
#endif
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initWithTitle: (NSString *) title
|
||||
{
|
||||
self = [super init];
|
||||
__title = [title retain_stub];
|
||||
__title_isset = YES;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initWithCoder: (NSCoder *) decoder
|
||||
{
|
||||
self = [super init];
|
||||
if ([decoder containsValueForKey: @"title"])
|
||||
{
|
||||
__title = [[decoder decodeObjectForKey: @"title"] retain_stub];
|
||||
__title_isset = YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) encodeWithCoder: (NSCoder *) encoder
|
||||
{
|
||||
if (__title_isset)
|
||||
{
|
||||
[encoder encodeObject: __title forKey: @"title"];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSUInteger) hash
|
||||
{
|
||||
NSUInteger hash = 17;
|
||||
hash = (hash * 31) ^ __title_isset ? 2654435761 : 0;
|
||||
if (__title_isset)
|
||||
{
|
||||
hash = (hash * 31) ^ [__title hash];
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
- (BOOL) isEqual: (id) anObject
|
||||
{
|
||||
if (self == anObject) {
|
||||
return YES;
|
||||
}
|
||||
if (![anObject isKindOfClass:[PullRequest class]]) {
|
||||
return NO;
|
||||
}
|
||||
PullRequest *other = (PullRequest *)anObject;
|
||||
if ((__title_isset != other->__title_isset) ||
|
||||
(__title_isset && ((__title || other->__title) && ![__title isEqual:other->__title]))) {
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
[__title release_stub];
|
||||
[super dealloc_stub];
|
||||
}
|
||||
|
||||
- (NSString *) title {
|
||||
return [[__title retain_stub] autorelease_stub];
|
||||
}
|
||||
|
||||
- (void) setTitle: (NSString *) title {
|
||||
[title retain_stub];
|
||||
[__title release_stub];
|
||||
__title = title;
|
||||
__title_isset = YES;
|
||||
}
|
||||
|
||||
- (BOOL) titleIsSet {
|
||||
return __title_isset;
|
||||
}
|
||||
|
||||
- (void) unsetTitle {
|
||||
[__title release_stub];
|
||||
__title = nil;
|
||||
__title_isset = NO;
|
||||
}
|
||||
|
||||
- (void) read: (id <TProtocol>) inProtocol
|
||||
{
|
||||
NSString * fieldName;
|
||||
int fieldType;
|
||||
int fieldID;
|
||||
|
||||
[inProtocol readStructBeginReturningName: NULL];
|
||||
while (true)
|
||||
{
|
||||
[inProtocol readFieldBeginReturningName: &fieldName type: &fieldType fieldID: &fieldID];
|
||||
if (fieldType == TType_STOP) {
|
||||
break;
|
||||
}
|
||||
switch (fieldID)
|
||||
{
|
||||
case 1:
|
||||
if (fieldType == TType_STRING) {
|
||||
NSString * fieldValue = [inProtocol readString];
|
||||
[self setTitle: fieldValue];
|
||||
} else {
|
||||
[TProtocolUtil skipType: fieldType onProtocol: inProtocol];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
[TProtocolUtil skipType: fieldType onProtocol: inProtocol];
|
||||
break;
|
||||
}
|
||||
[inProtocol readFieldEnd];
|
||||
}
|
||||
[inProtocol readStructEnd];
|
||||
}
|
||||
|
||||
- (void) write: (id <TProtocol>) outProtocol {
|
||||
[outProtocol writeStructBeginWithName: @"PullRequest"];
|
||||
if (__title_isset) {
|
||||
if (__title != nil) {
|
||||
[outProtocol writeFieldBeginWithName: @"title" type: TType_STRING fieldID: 1];
|
||||
[outProtocol writeString: __title];
|
||||
[outProtocol writeFieldEnd];
|
||||
}
|
||||
}
|
||||
[outProtocol writeFieldStop];
|
||||
[outProtocol writeStructEnd];
|
||||
}
|
||||
|
||||
- (void) validate {
|
||||
// check for required fields
|
||||
}
|
||||
|
||||
- (NSString *) description {
|
||||
NSMutableString * ms = [NSMutableString stringWithString: @"PullRequest("];
|
||||
[ms appendString: @"title:"];
|
||||
[ms appendFormat: @"\"%@\"", __title];
|
||||
[ms appendString: @")"];
|
||||
return [NSString stringWithString: ms];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation linguistConstants
|
||||
+ (void) initialize {
|
||||
}
|
||||
@end
|
||||
|
||||
142
samples/PHP/file_display.inc
Normal file
142
samples/PHP/file_display.inc
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Plugins are described by creating a $plugin array which will be used
|
||||
* by the system that includes this file.
|
||||
*/
|
||||
$plugin = array(
|
||||
'single' => TRUE,
|
||||
'title' => t('File display'),
|
||||
'description' => t('Displays the file with a configurable style.'),
|
||||
'required context' => new ctools_context_required(t('File'), 'entity:file'),
|
||||
'category' => t('File'),
|
||||
'defaults' => array(
|
||||
'displays' => array(),
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Render the node content.
|
||||
*/
|
||||
function file_entity_file_display_content_type_render($subtype, $conf, $panel_args, $context) {
|
||||
if (!empty($context) && empty($context->data)) {
|
||||
return;
|
||||
}
|
||||
$file = isset($context->data) ? clone($context->data) : NULL;
|
||||
$block = new stdClass();
|
||||
$block->module = 'file_entity';
|
||||
$block->delta = $file->fid;
|
||||
|
||||
if (empty($file)) {
|
||||
$block->delta = 'placeholder';
|
||||
$block->title = t('File display');
|
||||
$block->content = t('File display goes here.');
|
||||
}
|
||||
else {
|
||||
if (!empty($conf['identifier'])) {
|
||||
$file->ctools_template_identifier = $conf['identifier'];
|
||||
}
|
||||
|
||||
$block->title = $file->filename;
|
||||
$block->content = file_view_file($file, $conf['displays']);
|
||||
}
|
||||
|
||||
if (!empty($conf['link']) && $file) {
|
||||
$block->title_link = entity_uri('file', $file);
|
||||
}
|
||||
|
||||
return $block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit form for this plugin.
|
||||
*/
|
||||
function file_entity_file_display_content_type_edit_form($form, &$form_state) {
|
||||
$conf = $form_state['conf'];
|
||||
$form['#tree'] = TRUE;
|
||||
$form['#attached']['js'][] = drupal_get_path('module', 'file_entity') . '/file_entity.admin.js';
|
||||
|
||||
// Retrieve available formatters for this file. We can load all file types
|
||||
// since we don't know which type the file is at this point.
|
||||
$formatters = file_info_formatter_types();
|
||||
|
||||
// Formatter status.
|
||||
$form['displays']['status'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Enabled displays'),
|
||||
'#prefix' => '<div id="file-displays-status-wrapper">',
|
||||
'#suffix' => '</div>',
|
||||
);
|
||||
$i=0;
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
$form['displays']['status'][$name] = array(
|
||||
'#type' => 'checkbox',
|
||||
'#title' => check_plain($formatter['label']),
|
||||
'#default_value' => !empty($conf['displays'][$name]['status']),
|
||||
'#description' => isset($formatter['description']) ? filter_xss($formatter['description']) : NULL,
|
||||
'#parents' => array('displays', $name, 'status'),
|
||||
'#weight' => (isset($formatter['weight']) ? $formatter['weight'] : 0) + ($i / 1000),
|
||||
);
|
||||
$i++;
|
||||
}
|
||||
// Formatter order (tabledrag).
|
||||
$form['displays']['order'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Display precedence order'),
|
||||
'#theme' => 'file_entity_file_display_order',
|
||||
);
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
$form['displays']['order'][$name]['label'] = array(
|
||||
'#markup' => check_plain($formatter['label']),
|
||||
);
|
||||
$form['displays']['order'][$name]['weight'] = array(
|
||||
'#type' => 'weight',
|
||||
'#title' => t('Weight for @title', array('@title' => $formatter['label'])),
|
||||
'#title_display' => 'invisible',
|
||||
'#delta' => 50,
|
||||
'#default_value' => isset($conf['displays'][$name]['weight']) ? $conf['displays'][$name]['weight'] : 0,
|
||||
'#parents' => array('displays', $name, 'weight'),
|
||||
);
|
||||
$form['displays']['order'][$name]['#weight'] = $form['displays']['order'][$name]['weight']['#default_value'];
|
||||
}
|
||||
|
||||
// Formatter settings.
|
||||
$form['display_settings_title'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Display settings'),
|
||||
);
|
||||
$form['display_settings'] = array(
|
||||
'#type' => 'vertical_tabs',
|
||||
);
|
||||
$i=0;
|
||||
foreach ($formatters as $name => $formatter) {
|
||||
if (isset($formatter['settings callback']) && ($function = $formatter['settings callback']) && function_exists($function)) {
|
||||
$defaults = !empty($formatter['default settings']) ? $formatter['default settings'] : array();
|
||||
$settings = !empty($conf['displays'][$name]['settings']) ? $conf['displays'][$name]['settings'] : array();
|
||||
$settings += $defaults;
|
||||
$settings_form = $function($form, $form_state, $settings, $name, $file_type, $view_mode);
|
||||
if (!empty($settings_form)) {
|
||||
$form['displays']['settings'][$name] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => check_plain($formatter['label']),
|
||||
'#parents' => array('displays', $name, 'settings'),
|
||||
'#group' => 'display_settings',
|
||||
'#weight' => (isset($formatter['weight']) ? $formatter['weight'] : 0) + ($i / 1000),
|
||||
) + $settings_form;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return $form;
|
||||
}
|
||||
|
||||
function file_entity_file_display_content_type_edit_form_submit($form, &$form_state) {
|
||||
// Copy everything from our defaults.
|
||||
foreach (array_keys($form_state['plugin']['defaults']) as $key) {
|
||||
$form_state['conf'][$key] = $form_state['values'][$key];
|
||||
}
|
||||
}
|
||||
|
||||
function file_entity_file_display_content_type_admin_title($subtype, $conf, $context) {
|
||||
return t('"@s" content', array('@s' => $context->identifier));
|
||||
}
|
||||
6
samples/PHP/root.php
Normal file
6
samples/PHP/root.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
////////////////////////////////////
|
||||
// I am not Isabelle ROOT //
|
||||
////////////////////////////////////
|
||||
|
||||
?>
|
||||
37
samples/Pascal/image_url.inc
Normal file
37
samples/Pascal/image_url.inc
Normal file
@@ -0,0 +1,37 @@
|
||||
function GetUnixMangaImageURL: Boolean;
|
||||
var
|
||||
i: Integer;
|
||||
l: TStringList;
|
||||
s: String;
|
||||
begin
|
||||
l := TStringList.Create;
|
||||
s := manager.container.PageContainerLinks[workCounter];
|
||||
Result := GetPage(TObject(l), s , manager.container.Manager.retryConnect);
|
||||
|
||||
if Self.Terminated then
|
||||
begin
|
||||
l.Free;
|
||||
parse.Free;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
parse := TStringList.Create;
|
||||
Parser := THTMLParser.Create(PChar(l.Text));
|
||||
Parser.OnFoundTag := OnTag;
|
||||
Parser.OnFoundText := OnText;
|
||||
Parser.Exec;
|
||||
Parser.Free;
|
||||
l.Free;
|
||||
if parse.Count > 0 then
|
||||
begin
|
||||
for i := 0 to parse.Count - 1 do
|
||||
begin
|
||||
if (Pos('STYLE="border', parse[i]) > 0) and (Pos('<IMG', parse[i]) > 0) then
|
||||
begin
|
||||
manager.container.PageLinks[workCounter] := Trim(GetVal(parse[i], 'SRC'));
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
parse.Free;
|
||||
end;
|
||||
56
samples/Pascal/libc.inc
Normal file
56
samples/Pascal/libc.inc
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
This file is part of the Free Component Library (FCL)
|
||||
Copyright (c) 1999-2002 by the Free Pascal development team
|
||||
|
||||
BIOS functions unit for Nintendo DS
|
||||
Copyright (c) 2006 by Francesco Lombardi
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
*****************************************************************************}
|
||||
|
||||
function __errno: plongint; cdecl; export;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
|
||||
function S_ISBLK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFBLK;
|
||||
end;
|
||||
|
||||
function S_ISCHR(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFCHR;
|
||||
end;
|
||||
|
||||
function S_ISDIR(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFDIR;
|
||||
end;
|
||||
|
||||
function S_ISFIFO(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFIFO;
|
||||
end;
|
||||
|
||||
function S_ISREG(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFREG;
|
||||
end;
|
||||
|
||||
function S_ISLNK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFLNK;
|
||||
end;
|
||||
|
||||
function S_ISSOCK(m: longint): boolean; inline;
|
||||
begin
|
||||
result := (m and _IFMT) = _IFSOCK;
|
||||
end;
|
||||
502
samples/Pascal/vmops_impl.inc
Normal file
502
samples/Pascal/vmops_impl.inc
Normal file
@@ -0,0 +1,502 @@
|
||||
operator+(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] + b[i mod bn];
|
||||
end;
|
||||
|
||||
operator+(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] + b;
|
||||
end;
|
||||
|
||||
operator+(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a + b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := -a[i];
|
||||
end;
|
||||
|
||||
operator-(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] - b[i mod bn];
|
||||
end;
|
||||
|
||||
operator-(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] - b;
|
||||
end;
|
||||
|
||||
operator-(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a - b[i];
|
||||
end;
|
||||
|
||||
operator*(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] * b[i mod bn];
|
||||
end;
|
||||
|
||||
operator*(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] * b;
|
||||
end;
|
||||
|
||||
operator*(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a * b[i];
|
||||
end;
|
||||
|
||||
operator/(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] / b[i mod bn];
|
||||
end;
|
||||
|
||||
operator/(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] / b;
|
||||
end;
|
||||
|
||||
operator/(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a / b[i];
|
||||
end;
|
||||
|
||||
operator**(a, b: Double)res: Double;
|
||||
begin
|
||||
if IsNan(a) or IsNan(b) then res := NaN
|
||||
else if b = Infinity then begin
|
||||
if a = NegInfinity then res := NaN
|
||||
else case sign(a) of
|
||||
1: res := Infinity;
|
||||
0: res := 0;
|
||||
-1: res := NegInfinity;
|
||||
end;
|
||||
end else if b = NegInfinity then begin
|
||||
if a = NegInfinity then res := NaN
|
||||
else case sign(a) of
|
||||
1: res := 0;
|
||||
0: res := Infinity;
|
||||
-1: res := 0;
|
||||
end;
|
||||
end else res := power(a, b);
|
||||
end;
|
||||
|
||||
operator**(a, b: TVector)res: TVector;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, rn);
|
||||
for i := 0 to rn - 1 do res[i] := a[i mod an] ** b[i mod bn];
|
||||
end;
|
||||
|
||||
operator**(a: TVector; b: Double)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] ** b;
|
||||
end;
|
||||
|
||||
operator**(a: Double; b: TVector)res: TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a ** b[i];
|
||||
end;
|
||||
|
||||
operator><(a: TVector; b: TVector)res: TMatrix;
|
||||
var
|
||||
i, an, bn, rn: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
bn := Length(b);
|
||||
if an * bn = 0 then Exit(nil);
|
||||
rn := math.max(an, bn);
|
||||
SetLength(res, 1);
|
||||
SetLength(res[0], 1);
|
||||
res[0][0] := 0;
|
||||
for i := 0 to rn - 1 do res[0][0] := res[0][0] + a[i mod an] * b[i mod bn];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] + b[i];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] + b;
|
||||
end;
|
||||
|
||||
operator+(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a + b[i];
|
||||
end;
|
||||
|
||||
operator+(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a + matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator+(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b + matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := -a[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] - b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] - b;
|
||||
end;
|
||||
|
||||
operator-(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a - b[i];
|
||||
end;
|
||||
|
||||
operator-(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a - matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator-(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b - matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] * b[i];
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] * b;
|
||||
end;
|
||||
|
||||
operator*(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a * b[i];
|
||||
end;
|
||||
|
||||
operator*(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a * matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator*(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b * matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] / b[i];
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] / b;
|
||||
end;
|
||||
|
||||
operator/(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a / b[i];
|
||||
end;
|
||||
|
||||
operator/(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a / matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator/(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b / matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, an: Integer;
|
||||
begin
|
||||
an := Length(a);
|
||||
SetLength(res, an);
|
||||
for i := 0 to an - 1 do res[i] := a[i] ** b[i];
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: Double)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a[i] ** b;
|
||||
end;
|
||||
|
||||
operator**(a: Double; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(b);
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do res[i] := a ** b[i];
|
||||
end;
|
||||
|
||||
operator**(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a ** matrix(b, Length(a), Length(a[0]));
|
||||
end;
|
||||
|
||||
operator**(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := b ** matrix(a, Length(b), Length(b[0]));
|
||||
end;
|
||||
|
||||
operator><(a: TMatrix; b: TMatrix)res: TMatrix;
|
||||
var
|
||||
i, j, n, m: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
m := Length(b);
|
||||
if (n = 1) and (m = 1) then Exit(vector(a) >< vector(b));
|
||||
SetLength(res, n);
|
||||
for i := 0 to n - 1 do begin
|
||||
j := 0;
|
||||
res[i] := a[i][j] * b[j];
|
||||
for j := 1 to m - 1 do res[i] := res[i] + a[i][j] * b[j];
|
||||
end;
|
||||
end;
|
||||
|
||||
operator><(a: TMatrix; b: TVector)res: TMatrix;
|
||||
begin
|
||||
res := a >< matrix(b, 1, Length(b));
|
||||
end;
|
||||
|
||||
operator><(a: TVector; b: TMatrix)res: TMatrix;
|
||||
begin
|
||||
res := matrix(a, 1, Length(a)) >< b;
|
||||
end;
|
||||
|
||||
function vector(a: array of const): TVector;
|
||||
var
|
||||
i, n: Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
SetLength(Result, n);
|
||||
for i := 0 to n - 1 do case a[i].VType of
|
||||
vtInteger: Result[i] := a[i].VInteger;
|
||||
vtExtended: Result[i] := a[i].VExtended^;
|
||||
vtCurrency: Result[i] := a[i].VCurrency^;
|
||||
vtInt64: Result[i] := a[i].VInt64^;
|
||||
end;
|
||||
end;
|
||||
|
||||
function vector(a: TMatrix): TVector; inline;
|
||||
var
|
||||
i, j, n, m : Integer;
|
||||
begin
|
||||
n := Length(a);
|
||||
if n = 0 then Exit(nil);
|
||||
m := Length(a[0]);
|
||||
if m = 0 then Exit(nil);
|
||||
SetLength(Result, m * n);
|
||||
for i := 0 to m - 1 do
|
||||
for j := 0 to n - 1 do
|
||||
Result[i * n + j] := a[j][i];
|
||||
end;
|
||||
|
||||
function matrix(data: TVector; nrow, ncol: Integer; byrow: Boolean): TMatrix;
|
||||
var
|
||||
i, j, n, c: Integer;
|
||||
begin
|
||||
n := Length(data);
|
||||
if n = 0 then Exit(nil);
|
||||
if (nrow = 0) and (ncol = 0) then ncol := 1;
|
||||
if nrow = 0 then nrow := (n div ncol) + sign(n mod ncol);
|
||||
if ncol = 0 then ncol := (n div nrow) + sign(n mod nrow);
|
||||
SetLength(Result, nrow);
|
||||
for i := 0 to nrow - 1 do begin
|
||||
SetLength(Result[i], ncol);
|
||||
for j := 0 to ncol - 1 do begin
|
||||
if byrow then c := i * ncol + j else c := j * nrow + i;
|
||||
Result[i][j] := data[c mod n];
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function matrix(data: TMatrix; nrow, ncol: Integer; byrow: Boolean): TMatrix;
|
||||
begin
|
||||
Result := matrix(vector(data), nrow, ncol, byrow);
|
||||
end;
|
||||
|
||||
function rep(data: TVector; times: TVector): TVector;
|
||||
var
|
||||
i, j, n, m, s, c: Integer;
|
||||
begin
|
||||
Result := nil;
|
||||
n := Length(data);
|
||||
m := Length(times);
|
||||
if n * m = 0 then Exit;
|
||||
s := 0;
|
||||
for i := 0 to n - 1 do begin
|
||||
c := trunc(times[i mod m]);
|
||||
if c > 0 then s += c;
|
||||
end;
|
||||
SetLength(Result, s);
|
||||
c := 0;
|
||||
for i := 0 to n - 1 do begin
|
||||
s := trunc(times[i mod m]);
|
||||
for j := 1 to s do begin
|
||||
Result[c] := data[i];
|
||||
Inc(c);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function rep(data: TVector; len: Integer): TVector;
|
||||
var
|
||||
i, j, n: Integer;
|
||||
begin
|
||||
n := Length(data);
|
||||
SetLength(Result, n * len);
|
||||
if n = 0 then Exit;
|
||||
for i := 0 to len - 1 do
|
||||
for j := 0 to n - 1 do
|
||||
Result[i * n + j] := data[j];
|
||||
end;
|
||||
|
||||
function rep(data: Double; len: Integer): TVector;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
SetLength(Result, len);
|
||||
for i := 0 to len - 1 do Result[i] := data;
|
||||
end;
|
||||
13
samples/Perl/getchar.al
Normal file
13
samples/Perl/getchar.al
Normal file
@@ -0,0 +1,13 @@
|
||||
# NOTE: Derived from ../../lib/POSIX.pm.
|
||||
# Changes made here will be lost when autosplit is run again.
|
||||
# See AutoSplit.pm.
|
||||
package POSIX;
|
||||
|
||||
#line 318 "../../lib/POSIX.pm (autosplit into ../../lib/auto/POSIX/getchar.al)"
|
||||
sub getchar {
|
||||
usage "getchar()" if @_ != 0;
|
||||
CORE::getc(STDIN);
|
||||
}
|
||||
|
||||
# end of POSIX::getchar
|
||||
1;
|
||||
@@ -1,4 +1,5 @@
|
||||
use Test::Base;
|
||||
use Test::More;
|
||||
|
||||
__DATA__
|
||||
=== Strict Test
|
||||
|
||||
699
samples/Perl6/List.pm
Normal file
699
samples/Perl6/List.pm
Normal file
@@ -0,0 +1,699 @@
|
||||
# for our tantrums
|
||||
my class X::TypeCheck { ... }
|
||||
my role Supply { ... }
|
||||
|
||||
my sub combinations($n, $k) {
|
||||
my @result;
|
||||
my @stack;
|
||||
|
||||
return ([],) unless $k;
|
||||
|
||||
@stack.push(0);
|
||||
gather while @stack {
|
||||
my $index = @stack - 1;
|
||||
my $value = @stack.pop;
|
||||
|
||||
while $value < $n {
|
||||
@result[$index++] = $value++;
|
||||
@stack.push($value);
|
||||
if $index == $k {
|
||||
take [@result];
|
||||
$value = $n; # fake a last
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my sub permutations(Int $n) {
|
||||
$n == 1 ?? ( [0,] ) !!
|
||||
gather for ^$n -> $i {
|
||||
my @i = grep none($i), ^$n;
|
||||
take [$i, @i[@$_]] for permutations($n - 1);
|
||||
}
|
||||
}
|
||||
|
||||
my class List does Positional { # declared in BOOTSTRAP
|
||||
# class List is Iterable is Cool
|
||||
# has Mu $!items; # VM's array of our reified elements
|
||||
# has Mu $!flattens; # true if this list flattens its parcels
|
||||
# has Mu $!nextiter; # iterator for generating remaining elements
|
||||
|
||||
method new(|) {
|
||||
my Mu $args := nqp::p6argvmarray();
|
||||
nqp::shift($args);
|
||||
|
||||
nqp::p6list($args, self.WHAT, Mu);
|
||||
}
|
||||
|
||||
multi method Bool(List:D:) { self.gimme(1).Bool }
|
||||
multi method Int(List:D:) { self.elems }
|
||||
multi method end(List:D:) { self.elems - 1 }
|
||||
multi method Numeric(List:D:) { self.elems }
|
||||
multi method Str(List:D:) { self.join(' ') }
|
||||
|
||||
# Pretend we're a Match assuming we're a list of Matches
|
||||
method to() { self.elems ?? self[self.end].to !! Nil }
|
||||
method from() { self.elems ?? self[0].from !! Nil }
|
||||
|
||||
method fmt($format = '%s', $separator = ' ') {
|
||||
self.map({ .fmt($format) }).join($separator);
|
||||
}
|
||||
|
||||
method flat() { self.flattens
|
||||
?? self
|
||||
!! nqp::p6list(nqp::list(self), List, Bool::True)
|
||||
}
|
||||
method list() { self }
|
||||
method lol() {
|
||||
self.gimme(0);
|
||||
my Mu $rpa := nqp::clone($!items);
|
||||
nqp::push($rpa, $!nextiter) if $!nextiter.defined;
|
||||
nqp::p6list($rpa, LoL, Mu);
|
||||
}
|
||||
|
||||
method flattens() { $!flattens }
|
||||
|
||||
method Capture() {
|
||||
self.gimme(*);
|
||||
my $cap := nqp::create(Capture);
|
||||
nqp::bindattr($cap, Capture, '$!list', $!items);
|
||||
$cap
|
||||
}
|
||||
|
||||
method Parcel() {
|
||||
my Mu $rpa := nqp::clone(nqp::p6listitems(self));
|
||||
nqp::push($rpa, $!nextiter) if $!nextiter.defined;
|
||||
nqp::p6parcel($rpa, Any);
|
||||
}
|
||||
|
||||
method Supply(List:D:) { Supply.from-list(self) }
|
||||
|
||||
multi method at_pos(List:D: int \pos) is rw {
|
||||
fail X::OutOfRange.new(:what<Index>,:got(pos),:range<0..Inf>)
|
||||
if nqp::islt_i(pos,0);
|
||||
self.exists_pos(pos) ?? nqp::atpos($!items,pos) !! Nil;
|
||||
}
|
||||
multi method at_pos(List:D: Int:D \pos) is rw {
|
||||
my int $pos = nqp::unbox_i(pos);
|
||||
fail X::OutOfRange.new(:what<Index>,:got(pos),:range<0..Inf>)
|
||||
if nqp::islt_i($pos,0);
|
||||
self.exists_pos($pos) ?? nqp::atpos($!items,$pos) !! Nil;
|
||||
}
|
||||
|
||||
method eager() { self.gimme(*); self }
|
||||
|
||||
method elems() {
|
||||
return 0 unless self.DEFINITE;
|
||||
return nqp::elems(nqp::p6listitems(self)) unless nqp::defined($!nextiter);
|
||||
# Get as many elements as we can. If gimme stops before
|
||||
# reaching the end of the list, assume the list is infinite.
|
||||
my $n := self.gimme(*);
|
||||
nqp::defined($!nextiter) ?? Inf !! $n
|
||||
}
|
||||
|
||||
multi method exists_pos(List:D: int $pos) {
|
||||
return False if nqp::islt_i($pos,0);
|
||||
self.gimme($pos + 1);
|
||||
nqp::p6bool(
|
||||
nqp::not_i(nqp::isnull(nqp::atpos($!items,$pos)))
|
||||
);
|
||||
}
|
||||
multi method exists_pos(List:D: Int:D $pos) {
|
||||
return False if $pos < 0;
|
||||
self.gimme($pos + 1);
|
||||
nqp::p6bool(
|
||||
nqp::not_i(nqp::isnull(nqp::atpos($!items,nqp::unbox_i($pos))))
|
||||
);
|
||||
}
|
||||
|
||||
method gimme($n, :$sink) {
|
||||
return unless self.DEFINITE;
|
||||
# loop through iterators until we have at least $n elements
|
||||
my int $count = nqp::elems(nqp::p6listitems(self));
|
||||
if nqp::istype($n, Whatever) || nqp::istype($n, Num) && nqp::istrue($n == Inf) {
|
||||
while $!nextiter.DEFINITE && !$!nextiter.infinite {
|
||||
$!nextiter.reify(*, :$sink);
|
||||
$count = nqp::elems($!items);
|
||||
}
|
||||
}
|
||||
else {
|
||||
my int $target = $n.Int;
|
||||
while nqp::isconcrete($!nextiter) && $count < $target {
|
||||
$!nextiter.reify($target - $count, :$sink);
|
||||
$count = nqp::elems($!items);
|
||||
}
|
||||
}
|
||||
|
||||
# return the number of elements we have now
|
||||
$count
|
||||
}
|
||||
|
||||
multi method infinite(List:D:) { $!nextiter.infinite }
|
||||
|
||||
method iterator() {
|
||||
# Return a reified ListIter containing our currently reified elements
|
||||
# and any subsequent iterator.
|
||||
my $iter := nqp::create(ListIter);
|
||||
nqp::bindattr($iter, ListIter, '$!nextiter', $!nextiter);
|
||||
nqp::bindattr($iter, ListIter, '$!reified', self.Parcel());
|
||||
$iter;
|
||||
}
|
||||
|
||||
method munch($n is copy) {
|
||||
$n = 0 if $n < 0;
|
||||
$n = self.gimme($n) if nqp::not_i(nqp::istype($n, Int))
|
||||
|| nqp::not_i(nqp::islist($!items))
|
||||
|| nqp::islt_i(nqp::elems($!items), nqp::unbox_i($n));
|
||||
nqp::p6parcel(
|
||||
nqp::p6shiftpush(nqp::list(), $!items, nqp::unbox_i($n)),
|
||||
Any
|
||||
)
|
||||
}
|
||||
|
||||
proto method pick(|) { * }
|
||||
multi method pick() {
|
||||
fail "Cannot .pick from infinite list" if self.infinite;
|
||||
my $elems = self.elems;
|
||||
$elems ?? self.at_pos($elems.rand.floor) !! Nil;
|
||||
}
|
||||
multi method pick($n is copy) {
|
||||
fail "Cannot .pick from infinite list" if self.infinite;
|
||||
## We use a version of Fisher-Yates shuffle here to
|
||||
## replace picked elements with elements from the end
|
||||
## of the list, resulting in an O(n) algorithm.
|
||||
my $elems = self.elems;
|
||||
return unless $elems;
|
||||
$n = Inf if nqp::istype($n, Whatever);
|
||||
$n = $elems if $n > $elems;
|
||||
return self.at_pos($elems.rand.floor) if $n == 1;
|
||||
my Mu $rpa := nqp::clone($!items);
|
||||
my $i;
|
||||
my Mu $v;
|
||||
gather while $n > 0 {
|
||||
$i = nqp::rand_I(nqp::decont($elems), Int);
|
||||
$elems--; $n--;
|
||||
$v := nqp::atpos($rpa, nqp::unbox_i($i));
|
||||
# replace selected element with last unpicked one
|
||||
nqp::bindpos($rpa, nqp::unbox_i($i),
|
||||
nqp::atpos($rpa, nqp::unbox_i($elems)));
|
||||
take-rw $v;
|
||||
}
|
||||
}
|
||||
|
||||
method pop() is parcel {
|
||||
my $elems = self.gimme(*);
|
||||
fail 'Cannot .pop from an infinite list' if $!nextiter.defined;
|
||||
$elems > 0
|
||||
?? nqp::pop($!items)
|
||||
!! fail 'Element popped from empty list';
|
||||
}
|
||||
|
||||
method shift() is parcel {
|
||||
# make sure we have at least one item, then shift+return it
|
||||
nqp::islist($!items) && nqp::existspos($!items, 0) || self.gimme(1)
|
||||
?? nqp::shift($!items)
|
||||
!! fail 'Element shifted from empty list';
|
||||
}
|
||||
|
||||
my &list_push = multi method push(List:D: *@values) {
|
||||
fail 'Cannot .push an infinite list' if @values.infinite;
|
||||
nqp::p6listitems(self);
|
||||
my $elems = self.gimme(*);
|
||||
fail 'Cannot .push to an infinite list' if $!nextiter.DEFINITE;
|
||||
|
||||
# push is always eager
|
||||
@values.gimme(*);
|
||||
|
||||
# need type checks?
|
||||
my $of := self.of;
|
||||
|
||||
unless $of =:= Mu {
|
||||
X::TypeCheck.new(
|
||||
operation => '.push',
|
||||
expected => $of,
|
||||
got => $_,
|
||||
).throw unless nqp::istype($_, $of) for @values;
|
||||
}
|
||||
|
||||
nqp::splice($!items,
|
||||
nqp::getattr(@values, List, '$!items'),
|
||||
$elems, 0);
|
||||
|
||||
self;
|
||||
}
|
||||
|
||||
multi method push(List:D: \value) {
|
||||
if nqp::iscont(value) || nqp::not_i(nqp::istype(value, Iterable)) && nqp::not_i(nqp::istype(value, Parcel)) {
|
||||
$!nextiter.DEFINITE && self.gimme(*);
|
||||
fail 'Cannot .push to an infinite list' if $!nextiter.DEFINITE;
|
||||
nqp::p6listitems(self);
|
||||
nqp::istype(value, self.of)
|
||||
?? nqp::push($!items, nqp::assign(nqp::p6scalarfromdesc(nqp::null), value))
|
||||
!! X::TypeCheck.new(
|
||||
operation => '.push',
|
||||
expected => self.of,
|
||||
got => value,
|
||||
).throw;
|
||||
self
|
||||
}
|
||||
else {
|
||||
list_push(self, value)
|
||||
}
|
||||
}
|
||||
|
||||
multi method unshift(List:D: \value) {
|
||||
if nqp::iscont(value) || !(nqp::istype(value, Iterable) || nqp::istype(value, Parcel)) {
|
||||
nqp::p6listitems(self);
|
||||
value.gimme(*) if nqp::istype(value, List); # fixes #121994
|
||||
nqp::istype(value, self.of)
|
||||
?? nqp::unshift($!items, my $ = value)
|
||||
!! X::TypeCheck.new(
|
||||
operation => '.push',
|
||||
expected => self.of,
|
||||
got => value,
|
||||
).throw;
|
||||
self
|
||||
}
|
||||
else {
|
||||
callsame();
|
||||
}
|
||||
}
|
||||
|
||||
multi method unshift(List:D: *@values) {
|
||||
fail 'Cannot .unshift an infinite list' if @values.infinite;
|
||||
nqp::p6listitems(self);
|
||||
|
||||
# don't bother with type checks
|
||||
my $of := self.of;
|
||||
if ( $of =:= Mu ) {
|
||||
nqp::unshift($!items, @values.pop) while @values;
|
||||
}
|
||||
|
||||
# we must check types
|
||||
else {
|
||||
while @values {
|
||||
my $value := @values.pop;
|
||||
if nqp::istype($value, $of) {
|
||||
nqp::unshift($!items, $value);
|
||||
}
|
||||
|
||||
# huh?
|
||||
else {
|
||||
X::TypeCheck.new(
|
||||
operation => '.unshift',
|
||||
expected => $of,
|
||||
got => $value,
|
||||
).throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
method plan(List:D: |args) {
|
||||
nqp::p6listitems(self);
|
||||
my $elems = self.gimme(*);
|
||||
fail 'Cannot add plan to an infinite list' if $!nextiter.defined;
|
||||
|
||||
# # need type checks?
|
||||
# my $of := self.of;
|
||||
#
|
||||
# unless $of =:= Mu {
|
||||
# X::TypeCheck.new(
|
||||
# operation => '.push',
|
||||
# expected => $of,
|
||||
# got => $_,
|
||||
# ).throw unless nqp::istype($_, $of) for @values;
|
||||
# }
|
||||
|
||||
nqp::bindattr(self, List, '$!nextiter', nqp::p6listiter(nqp::list(args.list), self));
|
||||
Nil;
|
||||
}
|
||||
|
||||
proto method roll(|) { * }
|
||||
multi method roll() {
|
||||
fail "Cannot .roll from infinite list" if self.infinite;
|
||||
my $elems = self.elems;
|
||||
$elems ?? self.at_pos($elems.rand.floor) !! Nil;
|
||||
}
|
||||
multi method roll($n is copy) {
|
||||
fail "Cannot .roll from infinite list" if self.infinite;
|
||||
my $elems = self.elems;
|
||||
return unless $elems;
|
||||
$n = Inf if nqp::istype($n, Whatever);
|
||||
return self.at_pos($elems.rand.floor) if $n == 1;
|
||||
|
||||
gather while $n > 0 {
|
||||
take nqp::atpos($!items, nqp::unbox_i($elems.rand.floor.Int));
|
||||
$n--;
|
||||
}
|
||||
}
|
||||
|
||||
method reverse() {
|
||||
self.gimme(*);
|
||||
fail 'Cannot .reverse from an infinite list' if $!nextiter.defined;
|
||||
my Mu $rev := nqp::list();
|
||||
my Mu $orig := nqp::clone($!items);
|
||||
nqp::push($rev, nqp::pop($orig)) while $orig;
|
||||
my $rlist := nqp::create(self.WHAT);
|
||||
nqp::bindattr($rlist, List, '$!items', $rev);
|
||||
$rlist;
|
||||
}
|
||||
|
||||
method rotate(Int $n is copy = 1) {
|
||||
self.gimme(*);
|
||||
fail 'Cannot .rotate an infinite list' if $!nextiter.defined;
|
||||
my $items = nqp::p6box_i(nqp::elems($!items));
|
||||
return self if !$items;
|
||||
|
||||
$n %= $items;
|
||||
return self if $n == 0;
|
||||
|
||||
my Mu $res := nqp::clone($!items);
|
||||
if $n > 0 {
|
||||
nqp::push($res, nqp::shift($res)) while $n--;
|
||||
}
|
||||
elsif $n < 0 {
|
||||
nqp::unshift($res, nqp::pop($res)) while $n++;
|
||||
}
|
||||
my $rlist := nqp::create(self.WHAT);
|
||||
nqp::bindattr($rlist, List, '$!items', $res);
|
||||
$rlist;
|
||||
}
|
||||
|
||||
method splice($offset = 0, $size?, *@values) {
|
||||
self.gimme(*);
|
||||
my $o = $offset;
|
||||
my $s = $size;
|
||||
my $elems = self.elems;
|
||||
$o = $o($elems) if nqp::istype($o, Callable);
|
||||
X::OutOfRange.new(
|
||||
what => 'offset argument to List.splice',
|
||||
got => $offset,
|
||||
range => (0..^self.elems),
|
||||
).fail if $o < 0;
|
||||
$s //= self.elems - ($o min $elems);
|
||||
$s = $s(self.elems - $o) if nqp::istype($s, Callable);
|
||||
X::OutOfRange.new(
|
||||
what => 'size argument to List.splice',
|
||||
got => $size,
|
||||
range => (0..^(self.elems - $o)),
|
||||
).fail if $s < 0;
|
||||
|
||||
my @ret = self[$o..($o + $s - 1)];
|
||||
nqp::splice($!items,
|
||||
nqp::getattr(@values.eager, List, '$!items'),
|
||||
$o.Int, $s.Int);
|
||||
@ret;
|
||||
}
|
||||
|
||||
method sort($by = &infix:<cmp>) {
|
||||
fail 'Cannot .sort an infinite list' if self.infinite; #MMD?
|
||||
|
||||
# Instead of sorting elements directly, we sort a Parcel of
|
||||
# indices from 0..^$list.elems, then use that Parcel as
|
||||
# a slice into self. This is for historical reasons: on
|
||||
# Parrot we delegate to RPA.sort. The JVM implementation
|
||||
# uses a Java collection sort. MoarVM has its sort algorithm
|
||||
# implemented in NQP.
|
||||
|
||||
# nothing to do here
|
||||
my $elems := self.elems;
|
||||
return self if $elems < 2;
|
||||
|
||||
# Range is currently optimized for fast Parcel construction.
|
||||
my $index := Range.new(0, $elems, :excludes-max).reify(*);
|
||||
my Mu $index_rpa := nqp::getattr($index, Parcel, '$!storage');
|
||||
|
||||
# if $by.arity < 2, then we apply the block to the elements
|
||||
# for sorting.
|
||||
if ($by.?count // 2) < 2 {
|
||||
my $list = self.map($by).eager;
|
||||
nqp::p6sort($index_rpa, -> $a, $b { $list.at_pos($a) cmp $list.at_pos($b) || $a <=> $b });
|
||||
}
|
||||
else {
|
||||
my $list = self.eager;
|
||||
nqp::p6sort($index_rpa, -> $a, $b { $by($list.at_pos($a), $list.at_pos($b)) || $a <=> $b });
|
||||
}
|
||||
self[$index];
|
||||
}
|
||||
|
||||
multi method ACCEPTS(List:D: $topic) { self }
|
||||
|
||||
method uniq(|c) {
|
||||
DEPRECATED('unique', |<2014.11 2015.11>);
|
||||
self.unique(|c);
|
||||
}
|
||||
|
||||
proto method unique(|) {*}
|
||||
multi method unique() {
|
||||
my $seen := nqp::hash();
|
||||
my str $target;
|
||||
gather for @.list {
|
||||
$target = nqp::unbox_s($_.WHICH);
|
||||
unless nqp::existskey($seen, $target) {
|
||||
nqp::bindkey($seen, $target, 1);
|
||||
take $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
multi method unique( :&as!, :&with! ) {
|
||||
my @seen = "should be Mu, but doesn't work in settings :-("
|
||||
my Mu $target;
|
||||
gather for @.list {
|
||||
$target = &as($_);
|
||||
if first( { with($target,$_) }, @seen ) =:= Nil {
|
||||
@seen.push($target);
|
||||
take $_;
|
||||
}
|
||||
};
|
||||
}
|
||||
multi method unique( :&as! ) {
|
||||
my $seen := nqp::hash();
|
||||
my str $target;
|
||||
gather for @.list {
|
||||
$target = &as($_).WHICH;
|
||||
unless nqp::existskey($seen, $target) {
|
||||
nqp::bindkey($seen, $target, 1);
|
||||
take $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
multi method unique( :&with! ) {
|
||||
nextwith() if &with === &[===]; # use optimized version
|
||||
|
||||
my @seen; # should be Mu, but doesn't work in settings :-(
|
||||
my Mu $target;
|
||||
gather for @.list {
|
||||
$target := $_;
|
||||
if first( { with($target,$_) }, @seen ) =:= Nil {
|
||||
@seen.push($target);
|
||||
take $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my @secret;
|
||||
proto method squish(|) {*}
|
||||
multi method squish( :&as!, :&with = &[===] ) {
|
||||
my $last = @secret;
|
||||
my str $which;
|
||||
gather for @.list {
|
||||
$which = &as($_).Str;
|
||||
unless with($which,$last) {
|
||||
$last = $which;
|
||||
take $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
multi method squish( :&with = &[===] ) {
|
||||
my $last = @secret;
|
||||
gather for @.list {
|
||||
unless with($_,$last) {
|
||||
$last = $_;
|
||||
take $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proto method rotor(|) {*}
|
||||
multi method rotor(1, 0) { self }
|
||||
multi method rotor($elems = 2, $overlap = 1) {
|
||||
X::OutOfRange.new(
|
||||
what => 'Overlap argument to List.rotor',
|
||||
got => $overlap,
|
||||
range => (0 .. $elems - 1),
|
||||
).fail unless 0 <= $overlap < $elems;
|
||||
X::OutOfRange.new(
|
||||
what => 'Elements argument to List.rotor',
|
||||
got => $elems,
|
||||
range => (0 .. *),
|
||||
).fail unless 0 <= $elems;
|
||||
|
||||
my $finished = 0;
|
||||
gather while $finished + $overlap < self.gimme($finished + $elems) {
|
||||
take item self[$finished ..^ $finished + $elems];
|
||||
$finished += $elems - $overlap
|
||||
}
|
||||
}
|
||||
|
||||
multi method gist(List:D:) {
|
||||
@(self).map( -> $elem {
|
||||
given ++$ {
|
||||
when 101 { '...' }
|
||||
when 102 { last }
|
||||
default { $elem.gist }
|
||||
}
|
||||
} ).join: ' ';
|
||||
}
|
||||
multi method perl(List:D \SELF:) {
|
||||
self.gimme(*);
|
||||
self.Parcel.perl ~ '.list'
|
||||
~ (nqp::iscont(SELF) ?? '.item' !! '')
|
||||
}
|
||||
|
||||
method REIFY(Parcel \parcel, Mu \nextiter) {
|
||||
nqp::splice($!items, nqp::getattr(parcel, Parcel, '$!storage'),
|
||||
nqp::elems($!items), 0);
|
||||
nqp::bindattr(self, List, '$!nextiter', nextiter);
|
||||
parcel
|
||||
}
|
||||
|
||||
method FLATTENABLE_LIST() { self.gimme(*); $!items }
|
||||
method FLATTENABLE_HASH() { nqp::hash() }
|
||||
|
||||
multi method DUMP(List:D: :$indent-step = 4, :%ctx?) {
|
||||
return DUMP(self, :$indent-step) unless %ctx;
|
||||
|
||||
my $flags := ("\x221e" if self.infinite);
|
||||
my Mu $attrs := nqp::list();
|
||||
nqp::push($attrs, '$!flattens');
|
||||
nqp::push($attrs, $!flattens );
|
||||
nqp::push($attrs, '$!items' );
|
||||
nqp::push($attrs, $!items );
|
||||
nqp::push($attrs, '$!nextiter');
|
||||
nqp::push($attrs, $!nextiter );
|
||||
self.DUMP-OBJECT-ATTRS($attrs, :$indent-step, :%ctx, :$flags);
|
||||
}
|
||||
|
||||
multi method keys(List:D:) {
|
||||
self.values.map: { (state $)++ }
|
||||
}
|
||||
multi method kv(List:D:) {
|
||||
gather for self.values {
|
||||
take (state $)++;
|
||||
take-rw $_;
|
||||
}
|
||||
}
|
||||
multi method values(List:D:) {
|
||||
my Mu $rpa := nqp::clone(nqp::p6listitems(self));
|
||||
nqp::push($rpa, $!nextiter) if $!nextiter.defined;
|
||||
nqp::p6list($rpa, List, self.flattens);
|
||||
}
|
||||
multi method pairs(List:D:) {
|
||||
self.values.map: {; (state $)++ => $_ }
|
||||
}
|
||||
|
||||
method reduce(List: &with) {
|
||||
fail('can only reduce with arity 2')
|
||||
unless &with.arity <= 2 <= &with.count;
|
||||
return unless self.DEFINITE;
|
||||
my \vals = self.values;
|
||||
my Mu $val = vals.shift;
|
||||
$val = with($val, $_) for vals;
|
||||
$val;
|
||||
}
|
||||
|
||||
method sink() {
|
||||
self.gimme(*, :sink) if self.DEFINITE && $!nextiter.DEFINITE;
|
||||
Nil;
|
||||
}
|
||||
|
||||
# this is a remnant of a previous implementation of .push(), which
|
||||
# apparently is used by LoL. Please remove when no longer necessary.
|
||||
method STORE_AT_POS(Int \pos, Mu \v) is rw {
|
||||
nqp::bindpos($!items, nqp::unbox_i(pos), v)
|
||||
}
|
||||
|
||||
proto method combinations($?) {*}
|
||||
multi method combinations( Int $of ) {
|
||||
([self[@$_]] for combinations(self.elems, $of).eager)
|
||||
}
|
||||
multi method combinations( Range $of = 0 .. * ) {
|
||||
gather for @$of {
|
||||
last if $_ > self.elems;
|
||||
take self.combinations($_);
|
||||
}
|
||||
}
|
||||
|
||||
method permutations() {
|
||||
# need block on Moar because of RT#121830
|
||||
gather { take [self[@$_]] for permutations(self.elems).eager }
|
||||
}
|
||||
}
|
||||
|
||||
sub eager(|) {
|
||||
nqp::p6parcel(nqp::p6argvmarray(), Any).eager
|
||||
}
|
||||
|
||||
sub flat(|) {
|
||||
nqp::p6list(nqp::p6argvmarray(), List, Bool::True)
|
||||
}
|
||||
|
||||
sub list(|) {
|
||||
nqp::p6list(nqp::p6argvmarray(), List, Mu)
|
||||
}
|
||||
|
||||
proto sub infix:<xx>(|) { * }
|
||||
multi sub infix:<xx>() { fail "No zero-arg meaning for infix:<xx>" }
|
||||
multi sub infix:<xx>(Mu \x) {x }
|
||||
multi sub infix:<xx>(Mu \x, $n is copy, :$thunked!) {
|
||||
$n = nqp::p6bool(nqp::istype($n, Whatever)) ?? Inf !! $n.Int;
|
||||
GatherIter.new({ take x.() while --$n >= 0; }, :infinite($n == Inf)).list
|
||||
}
|
||||
multi sub infix:<xx>(Mu \x, Whatever, :$thunked!) {
|
||||
GatherIter.new({ loop { take x.() } }, :infinite(True)).flat
|
||||
}
|
||||
multi sub infix:<xx>(Mu \x, Whatever) {
|
||||
GatherIter.new({ loop { take x } }, :infinite(True)).flat
|
||||
}
|
||||
multi sub infix:<xx>(Mu \x, $n) {
|
||||
my int $size = $n.Int;
|
||||
|
||||
my Mu $rpa := nqp::list();
|
||||
if $size > 0 {
|
||||
nqp::setelems($rpa, $size);
|
||||
nqp::setelems($rpa, 0);
|
||||
|
||||
$size = $size + 1;
|
||||
nqp::push($rpa,x) while $size = $size - 1;
|
||||
}
|
||||
|
||||
nqp::p6parcel($rpa, Any);
|
||||
}
|
||||
|
||||
proto sub pop(@) {*}
|
||||
multi sub pop(@a) { @a.pop }
|
||||
|
||||
proto sub shift(@) {*}
|
||||
multi sub shift(@a) { @a.shift }
|
||||
|
||||
proto sub unshift(|) {*}
|
||||
multi sub unshift(\a, \elem) { a.unshift: elem }
|
||||
multi sub unshift(\a, *@elems) { a.unshift: @elems }
|
||||
|
||||
proto sub push(|) {*}
|
||||
multi sub push(\a, \elem) { a.push: elem }
|
||||
multi sub push(\a, *@elems) { a.push: @elems }
|
||||
|
||||
sub reverse(*@a) { @a.reverse }
|
||||
sub rotate(@a, Int $n = 1) { @a.rotate($n) }
|
||||
sub reduce (&with, *@list) { @list.reduce(&with) }
|
||||
sub splice(@arr, $offset = 0, $size?, *@values) {
|
||||
@arr.splice($offset, $size, @values)
|
||||
}
|
||||
|
||||
multi sub infix:<cmp>(@a, @b) { (@a Zcmp @b).first(&prefix:<?>) || @a <=> @b }
|
||||
|
||||
# vim: ft=perl6 expandtab sw=4
|
||||
@@ -73,26 +73,6 @@ Here's some POD! Wooo
|
||||
|
||||
say('this is not!');
|
||||
|
||||
=table
|
||||
Of role things
|
||||
|
||||
say('not in your table');
|
||||
#= A single line declarator "block" (with a keyword like role)
|
||||
#| Another single line declarator "block" (with a keyword like role)
|
||||
#={
|
||||
A declarator block (with a keyword like role)
|
||||
}
|
||||
#|{
|
||||
Another declarator block (with a keyword like role)
|
||||
}
|
||||
#= { A single line declarator "block" with a brace (with a keyword like role)
|
||||
#=«
|
||||
More declarator blocks! (with a keyword like role)
|
||||
»
|
||||
#|«
|
||||
More declarator blocks! (with a keyword like role)
|
||||
»
|
||||
|
||||
say 'Moar code!';
|
||||
|
||||
my $don't = 16;
|
||||
|
||||
165
samples/PicoLisp/simul.l
Normal file
165
samples/PicoLisp/simul.l
Normal file
@@ -0,0 +1,165 @@
|
||||
# 11dec13abu
|
||||
# (c) Software Lab. Alexander Burger
|
||||
|
||||
(de permute (Lst)
|
||||
(ifn (cdr Lst)
|
||||
(cons Lst)
|
||||
(mapcan
|
||||
'((X)
|
||||
(mapcar
|
||||
'((Y) (cons X Y))
|
||||
(permute (delete X Lst)) ) )
|
||||
Lst ) ) )
|
||||
|
||||
(de subsets (N Lst)
|
||||
(cond
|
||||
((=0 N) '(NIL))
|
||||
((not Lst))
|
||||
(T
|
||||
(conc
|
||||
(mapcar
|
||||
'((X) (cons (car Lst) X))
|
||||
(subsets (dec N) (cdr Lst)) )
|
||||
(subsets N (cdr Lst)) ) ) ) )
|
||||
|
||||
(de shuffle (Lst)
|
||||
(by '(NIL (rand)) sort Lst) )
|
||||
|
||||
(de samples (Cnt Lst)
|
||||
(make
|
||||
(until (=0 Cnt)
|
||||
(when (>= Cnt (rand 1 (length Lst)))
|
||||
(link (car Lst))
|
||||
(dec 'Cnt) )
|
||||
(pop 'Lst) ) ) )
|
||||
|
||||
|
||||
# Genetic Algorithm
|
||||
(de gen ("Pop" "Cond" "Re" "Mu" "Se")
|
||||
(until ("Cond" "Pop")
|
||||
(for ("P" "Pop" "P" (cdr "P"))
|
||||
(set "P"
|
||||
(maxi "Se" # Selection
|
||||
(make
|
||||
(for ("P" "Pop" "P")
|
||||
(rot "P" (rand 1 (length "P")))
|
||||
(link # Recombination + Mutation
|
||||
("Mu" ("Re" (pop '"P") (pop '"P"))) ) ) ) ) ) ) )
|
||||
(maxi "Se" "Pop") )
|
||||
|
||||
|
||||
# Alpha-Beta tree search
|
||||
(de game ("Flg" "Cnt" "Moves" "Move" "Cost")
|
||||
(let ("Alpha" '(1000000) "Beta" -1000000)
|
||||
(recur ("Flg" "Cnt" "Alpha" "Beta")
|
||||
(let? "Lst" ("Moves" "Flg")
|
||||
(if (=0 (dec '"Cnt"))
|
||||
(loop
|
||||
("Move" (caar "Lst"))
|
||||
(setq "*Val" (list ("Cost" "Flg") (car "Lst")))
|
||||
("Move" (cdar "Lst"))
|
||||
(T (>= "Beta" (car "*Val"))
|
||||
(cons "Beta" (car "Lst") (cdr "Alpha")) )
|
||||
(when (> (car "Alpha") (car "*Val"))
|
||||
(setq "Alpha" "*Val") )
|
||||
(NIL (setq "Lst" (cdr "Lst")) "Alpha") )
|
||||
(setq "Lst"
|
||||
(sort
|
||||
(mapcar
|
||||
'(("Mov")
|
||||
(prog2
|
||||
("Move" (car "Mov"))
|
||||
(cons ("Cost" "Flg") "Mov")
|
||||
("Move" (cdr "Mov")) ) )
|
||||
"Lst" ) ) )
|
||||
(loop
|
||||
("Move" (cadar "Lst"))
|
||||
(setq "*Val"
|
||||
(if (recurse (not "Flg") "Cnt" (cons (- "Beta")) (- (car "Alpha")))
|
||||
(cons (- (car @)) (cdar "Lst") (cdr @))
|
||||
(list (caar "Lst") (cdar "Lst")) ) )
|
||||
("Move" (cddar "Lst"))
|
||||
(T (>= "Beta" (car "*Val"))
|
||||
(cons "Beta" (cdar "Lst") (cdr "Alpha")) )
|
||||
(when (> (car "Alpha") (car "*Val"))
|
||||
(setq "Alpha" "*Val") )
|
||||
(NIL (setq "Lst" (cdr "Lst")) "Alpha") ) ) ) ) ) )
|
||||
|
||||
|
||||
### Grids ###
|
||||
(de grid (DX DY FX FY)
|
||||
(let Grid
|
||||
(make
|
||||
(for X DX
|
||||
(link
|
||||
(make
|
||||
(for Y DY
|
||||
(set
|
||||
(link
|
||||
(if (> DX 26)
|
||||
(box)
|
||||
(intern (pack (char (+ X 96)) Y)) ) )
|
||||
(cons (cons) (cons)) ) ) ) ) ) )
|
||||
(let West (and FX (last Grid))
|
||||
(for (Lst Grid Lst)
|
||||
(let
|
||||
(Col (pop 'Lst)
|
||||
East (or (car Lst) (and FX (car Grid)))
|
||||
South (and FY (last Col)) )
|
||||
(for (L Col L)
|
||||
(with (pop 'L)
|
||||
(set (: 0 1) (pop 'West)) # west
|
||||
(con (: 0 1) (pop 'East)) # east
|
||||
(set (: 0 -1) South) # south
|
||||
(con (: 0 -1) # north
|
||||
(or (car L) (and FY (car Col))) )
|
||||
(setq South This) ) )
|
||||
(setq West Col) ) ) )
|
||||
Grid ) )
|
||||
|
||||
(de west (This)
|
||||
(: 0 1 1) )
|
||||
|
||||
(de east (This)
|
||||
(: 0 1 -1) )
|
||||
|
||||
(de south (This)
|
||||
(: 0 -1 1) )
|
||||
|
||||
(de north (This)
|
||||
(: 0 -1 -1) )
|
||||
|
||||
(de disp ("Grid" "How" "Fun" "X" "Y" "DX" "DY")
|
||||
(setq "Grid"
|
||||
(if "X"
|
||||
(mapcar
|
||||
'((L) (flip (head "DY" (nth L "Y"))))
|
||||
(head "DX" (nth "Grid" "X")) )
|
||||
(mapcar reverse "Grid") ) )
|
||||
(let (N (+ (length (cdar "Grid")) (or "Y" 1)) Sp (length N))
|
||||
("border" north)
|
||||
(while (caar "Grid")
|
||||
(prin " " (align Sp N) " "
|
||||
(and "How" (if (and (nT "How") (west (caar "Grid"))) " " '|)) )
|
||||
(for L "Grid"
|
||||
(prin
|
||||
("Fun" (car L))
|
||||
(and "How" (if (and (nT "How") (east (car L))) " " '|)) ) )
|
||||
(prinl)
|
||||
("border" south)
|
||||
(map pop "Grid")
|
||||
(dec 'N) )
|
||||
(unless (> (default "X" 1) 26)
|
||||
(space (inc Sp))
|
||||
(for @ "Grid"
|
||||
(prin " " (and "How" " ") (char (+ 96 "X")))
|
||||
(T (> (inc '"X") 26)) )
|
||||
(prinl) ) ) )
|
||||
|
||||
(de "border" (Dir)
|
||||
(when "How"
|
||||
(space Sp)
|
||||
(prin " +")
|
||||
(for L "Grid"
|
||||
(prin (if (and (nT "How") (Dir (car L))) " +" "---+")) )
|
||||
(prinl) ) )
|
||||
1
samples/Puppet/hiera_include.pp
Normal file
1
samples/Puppet/hiera_include.pp
Normal file
@@ -0,0 +1 @@
|
||||
hiera_include('classes')
|
||||
83
samples/Python/gen-py-linguist-thrift.py
Normal file
83
samples/Python/gen-py-linguist-thrift.py
Normal file
@@ -0,0 +1,83 @@
|
||||
#
|
||||
# Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
#
|
||||
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
#
|
||||
# options string: py
|
||||
#
|
||||
|
||||
from thrift.Thrift import TType, TMessageType, TException, TApplicationException
|
||||
|
||||
from thrift.transport import TTransport
|
||||
from thrift.protocol import TBinaryProtocol, TProtocol
|
||||
try:
|
||||
from thrift.protocol import fastbinary
|
||||
except:
|
||||
fastbinary = None
|
||||
|
||||
|
||||
|
||||
class PullRequest:
|
||||
"""
|
||||
Attributes:
|
||||
- title
|
||||
"""
|
||||
|
||||
thrift_spec = (
|
||||
None, # 0
|
||||
(1, TType.STRING, 'title', None, None, ), # 1
|
||||
)
|
||||
|
||||
def __init__(self, title=None,):
|
||||
self.title = title
|
||||
|
||||
def read(self, iprot):
|
||||
if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
|
||||
fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
|
||||
return
|
||||
iprot.readStructBegin()
|
||||
while True:
|
||||
(fname, ftype, fid) = iprot.readFieldBegin()
|
||||
if ftype == TType.STOP:
|
||||
break
|
||||
if fid == 1:
|
||||
if ftype == TType.STRING:
|
||||
self.title = iprot.readString()
|
||||
else:
|
||||
iprot.skip(ftype)
|
||||
else:
|
||||
iprot.skip(ftype)
|
||||
iprot.readFieldEnd()
|
||||
iprot.readStructEnd()
|
||||
|
||||
def write(self, oprot):
|
||||
if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
|
||||
oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
|
||||
return
|
||||
oprot.writeStructBegin('PullRequest')
|
||||
if self.title is not None:
|
||||
oprot.writeFieldBegin('title', TType.STRING, 1)
|
||||
oprot.writeString(self.title)
|
||||
oprot.writeFieldEnd()
|
||||
oprot.writeFieldStop()
|
||||
oprot.writeStructEnd()
|
||||
|
||||
def validate(self):
|
||||
return
|
||||
|
||||
|
||||
def __hash__(self):
|
||||
value = 17
|
||||
value = (value * 31) ^ hash(self.title)
|
||||
return value
|
||||
|
||||
def __repr__(self):
|
||||
L = ['%s=%r' % (key, value)
|
||||
for key, value in self.__dict__.iteritems()]
|
||||
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
|
||||
|
||||
def __eq__(self, other):
|
||||
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
|
||||
|
||||
def __ne__(self, other):
|
||||
return not (self == other)
|
||||
155
samples/QML/common.qbs
Normal file
155
samples/QML/common.qbs
Normal file
@@ -0,0 +1,155 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing
|
||||
**
|
||||
** This file is part of the Qt Build Suite.
|
||||
**
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms and
|
||||
** conditions see http://www.qt.io/terms-conditions. For further information
|
||||
** use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, The Qt Company gives you certain additional
|
||||
** rights. These rights are described in The Qt Company LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import qbs 1.0
|
||||
import qbs.FileInfo
|
||||
import qbs.ModUtils
|
||||
|
||||
Module {
|
||||
property string buildVariant: "debug"
|
||||
property bool enableDebugCode: buildVariant == "debug"
|
||||
property bool debugInformation: (buildVariant == "debug")
|
||||
property string optimization: (buildVariant == "debug" ? "none" : "fast")
|
||||
readonly property stringList hostOS: undefined // set internally
|
||||
property string hostOSVersion: {
|
||||
if (hostOS && hostOS.contains("osx")) {
|
||||
return getNativeSetting("/System/Library/CoreServices/ServerVersion.plist", "ProductVersion") ||
|
||||
getNativeSetting("/System/Library/CoreServices/SystemVersion.plist", "ProductVersion");
|
||||
} else if (hostOS && hostOS.contains("windows")) {
|
||||
var version = getNativeSetting("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion", "CurrentVersion");
|
||||
return version + "." + hostOSBuildVersion;
|
||||
}
|
||||
}
|
||||
|
||||
property string hostOSBuildVersion: {
|
||||
if (hostOS.contains("osx")) {
|
||||
return getNativeSetting("/System/Library/CoreServices/ServerVersion.plist", "ProductBuildVersion") ||
|
||||
getNativeSetting("/System/Library/CoreServices/SystemVersion.plist", "ProductBuildVersion");
|
||||
} else if (hostOS.contains("windows")) {
|
||||
return getNativeSetting("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion", "CurrentBuildNumber");
|
||||
}
|
||||
}
|
||||
|
||||
readonly property var hostOSVersionParts: hostOSVersion ? hostOSVersion.split('.').map(function(item) { return parseInt(item, 10); }) : []
|
||||
readonly property int hostOSVersionMajor: hostOSVersionParts[0] || 0
|
||||
readonly property int hostOSVersionMinor: hostOSVersionParts[1] || 0
|
||||
readonly property int hostOSVersionPatch: hostOSVersionParts[2] || 0
|
||||
|
||||
property stringList targetOS: hostOS
|
||||
property string pathListSeparator: hostOS.contains("windows") ? ";" : ":"
|
||||
property string pathSeparator: hostOS.contains("windows") ? "\\" : "/"
|
||||
property string profile
|
||||
property stringList toolchain
|
||||
property string architecture
|
||||
property bool install: false
|
||||
property string installSourceBase
|
||||
readonly property string installRoot: undefined
|
||||
property string installDir
|
||||
property string installPrefix: ""
|
||||
property path sysroot
|
||||
|
||||
PropertyOptions {
|
||||
name: "buildVariant"
|
||||
allowedValues: ['debug', 'release']
|
||||
description: "name of the build variant"
|
||||
}
|
||||
|
||||
PropertyOptions {
|
||||
name: "optimization"
|
||||
allowedValues: ['none', 'fast', 'small']
|
||||
description: "optimization level"
|
||||
}
|
||||
|
||||
validate: {
|
||||
var validator = new ModUtils.PropertyValidator("qbs");
|
||||
validator.setRequiredProperty("architecture", architecture,
|
||||
"you might want to re-run 'qbs-setup-toolchains'");
|
||||
validator.setRequiredProperty("hostOS", hostOS);
|
||||
validator.setRequiredProperty("targetOS", targetOS);
|
||||
if (hostOS && (hostOS.contains("windows") || hostOS.contains("osx"))) {
|
||||
validator.setRequiredProperty("hostOSVersion", hostOSVersion,
|
||||
"could not detect host operating system version; " +
|
||||
"verify that system files and registry keys have not " +
|
||||
"been modified.");
|
||||
if (hostOSVersion)
|
||||
validator.addVersionValidator("hostOSVersion", hostOSVersion, 2, 4);
|
||||
|
||||
validator.setRequiredProperty("hostOSBuildVersion", hostOSBuildVersion,
|
||||
"could not detect host operating system build version; " +
|
||||
"verify that system files or registry have not been " +
|
||||
"tampered with.");
|
||||
}
|
||||
|
||||
validator.addCustomValidator("architecture", architecture, function (value) {
|
||||
return architecture === canonicalArchitecture(architecture);
|
||||
}, "'" + architecture + "' is invalid. You must use the canonical name '" +
|
||||
canonicalArchitecture(architecture) + "'");
|
||||
|
||||
validator.validate();
|
||||
}
|
||||
|
||||
// private properties
|
||||
property var commonRunEnvironment: {
|
||||
var env = {};
|
||||
if (targetOS.contains("windows")) {
|
||||
env["PATH"] = [
|
||||
FileInfo.joinPaths(installRoot, installPrefix)
|
||||
];
|
||||
} else if (hostOS.contains("darwin") && targetOS.contains("darwin")) {
|
||||
env["DYLD_FRAMEWORK_PATH"] = [
|
||||
FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"),
|
||||
FileInfo.joinPaths(installRoot, installPrefix, "lib"),
|
||||
FileInfo.joinPaths(installRoot, installPrefix)
|
||||
].join(pathListSeparator);
|
||||
|
||||
env["DYLD_LIBRARY_PATH"] = [
|
||||
FileInfo.joinPaths(installRoot, installPrefix, "lib"),
|
||||
FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"),
|
||||
FileInfo.joinPaths(installRoot, installPrefix)
|
||||
].join(pathListSeparator);
|
||||
|
||||
if (targetOS.contains("ios-simulator") && sysroot) {
|
||||
env["DYLD_ROOT_PATH"] = [sysroot];
|
||||
}
|
||||
} else if (hostOS.contains("unix") && targetOS.contains("unix")) {
|
||||
env["LD_LIBRARY_PATH"] = [
|
||||
FileInfo.joinPaths(installRoot, installPrefix, "lib")
|
||||
];
|
||||
}
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
// internal properties
|
||||
readonly property string version: [versionMajor, versionMinor, versionPatch].join(".")
|
||||
readonly property int versionMajor: undefined // set internally
|
||||
readonly property int versionMinor: undefined // set internally
|
||||
readonly property int versionPatch: undefined // set internally
|
||||
}
|
||||
9
samples/Ruby/filenames/Brewfile
Normal file
9
samples/Ruby/filenames/Brewfile
Normal file
@@ -0,0 +1,9 @@
|
||||
tap 'caskroom/cask'
|
||||
tap 'telemachus/brew', 'https://telemachus@bitbucket.org/telemachus/brew.git'
|
||||
brew 'emacs', args: ['with-cocoa', 'with-gnutls']
|
||||
brew 'redis', restart_service: true
|
||||
brew 'mongodb'
|
||||
brew 'sphinx'
|
||||
brew 'imagemagick'
|
||||
brew 'mysql'
|
||||
cask 'google-chrome'
|
||||
9
samples/Ruby/gen-rb-linguist-thrift.rb
Normal file
9
samples/Ruby/gen-rb-linguist-thrift.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# Autogenerated by Thrift Compiler (1.0.0-dev)
|
||||
#
|
||||
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
||||
#
|
||||
|
||||
require 'thrift'
|
||||
require 'linguist_types'
|
||||
|
||||
4
samples/Ruby/rexpl
Executable file
4
samples/Ruby/rexpl
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env rbx
|
||||
$: << 'lib'
|
||||
require 'rexpl'
|
||||
Rexpl::Environment.run
|
||||
11
samples/Ruby/shoes-swt
Executable file
11
samples/Ruby/shoes-swt
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env jruby
|
||||
lib_directory = File.expand_path('../../lib', __FILE__)
|
||||
$LOAD_PATH << lib_directory
|
||||
|
||||
if File.exist?("Gemfile")
|
||||
require "bundler/setup"
|
||||
Bundler.require
|
||||
end
|
||||
|
||||
require 'shoes/ui/cli'
|
||||
Shoes::CLI.new("swt").run ARGV
|
||||
2324
samples/Rust/hashmap.rs
Normal file
2324
samples/Rust/hashmap.rs
Normal file
File diff suppressed because it is too large
Load Diff
12
samples/Rust/main.rs
Normal file
12
samples/Rust/main.rs
Normal file
@@ -0,0 +1,12 @@
|
||||
extern crate foo;
|
||||
extern crate bar;
|
||||
|
||||
use foo::{self, quix};
|
||||
use bar::car::*;
|
||||
use bar;
|
||||
|
||||
fn main() {
|
||||
println!("Hello {}", "World");
|
||||
|
||||
panic!("Goodbye")
|
||||
}
|
||||
20
samples/SMT/bignum_lia1.smt2
Normal file
20
samples/SMT/bignum_lia1.smt2
Normal file
@@ -0,0 +1,20 @@
|
||||
(set-logic QF_LIA)
|
||||
(set-info :source | SMT-COMP'06 organizers |)
|
||||
(set-info :smt-lib-version 2.0)
|
||||
(set-info :category "check")
|
||||
(set-info :status unsat)
|
||||
(set-info :notes |This benchmark is designed to check if the DP supports bignumbers.|)
|
||||
(declare-fun x1 () Int)
|
||||
(declare-fun x2 () Int)
|
||||
(declare-fun x3 () Int)
|
||||
(declare-fun x4 () Int)
|
||||
(declare-fun x5 () Int)
|
||||
(declare-fun x6 () Int)
|
||||
(assert (and (or (>= x1 1000) (>= x1 1002))
|
||||
(or (>= x2 (* 1230 x1)) (>= x2 (* 1003 x1)))
|
||||
(or (>= x3 (* 1310 x2)) (>= x3 (* 1999 x2)))
|
||||
(or (>= x4 (* 4000 x3)) (>= x4 (* 8000 x3)))
|
||||
(or (<= x5 (* (- 4000) x4)) (<= x5 (* (- 8000) x4)))
|
||||
(or (>= x6 (* (- 3) x5)) (>= x6 (* (- 2) x5))) (< x6 0)))
|
||||
(check-sat)
|
||||
(exit)
|
||||
20
samples/SMT/list4.smt2
Normal file
20
samples/SMT/list4.smt2
Normal file
@@ -0,0 +1,20 @@
|
||||
(set-logic AUFLIRA)
|
||||
(set-info :source | Buggy list theorem |)
|
||||
(set-info :smt-lib-version 2.0)
|
||||
(set-info :category "crafted")
|
||||
(set-info :status sat)
|
||||
(declare-sort List 0)
|
||||
(declare-fun cons (Real List) List)
|
||||
(declare-fun nil () List)
|
||||
(declare-fun car (List) Real)
|
||||
(declare-fun cdr (List) List)
|
||||
(declare-fun len (List) Int)
|
||||
(assert (forall ((?x Real) (?y List)) (= (car (cons ?x ?y)) ?x)))
|
||||
(assert (forall ((?x Real) (?y List)) (= (cdr (cons ?x ?y)) ?y)))
|
||||
(assert (= (len nil) 0))
|
||||
(assert (forall ((?x Real) (?y List)) (= (len (cons ?x ?y)) (+ (len ?y) 1))))
|
||||
(declare-fun append (List List) List)
|
||||
(assert (forall ((?x Real) (?y1 List) (?y2 List)) (= (append (cons ?x ?y1) ?y2) (cons ?x (append ?y1 ?y2)))))
|
||||
(assert (not (forall ((?x Real) (?y List)) (= (append (cons ?x nil) ?y) (cons ?x ?y)))))
|
||||
(check-sat)
|
||||
(exit)
|
||||
123
samples/SMT/queen10-1.smt2
Normal file
123
samples/SMT/queen10-1.smt2
Normal file
@@ -0,0 +1,123 @@
|
||||
(set-logic QF_IDL)
|
||||
(set-info :source |
|
||||
Queens benchmarks generated by Hyondeuk Kim in SMT-LIB format.
|
||||
|)
|
||||
(set-info :smt-lib-version 2.0)
|
||||
(set-info :category "crafted")
|
||||
(set-info :status sat)
|
||||
(declare-fun x0 () Int)
|
||||
(declare-fun x1 () Int)
|
||||
(declare-fun x2 () Int)
|
||||
(declare-fun x3 () Int)
|
||||
(declare-fun x4 () Int)
|
||||
(declare-fun x5 () Int)
|
||||
(declare-fun x6 () Int)
|
||||
(declare-fun x7 () Int)
|
||||
(declare-fun x8 () Int)
|
||||
(declare-fun x9 () Int)
|
||||
(declare-fun x10 () Int)
|
||||
(assert
|
||||
(let
|
||||
((?v_0 (- x0 x10))
|
||||
(?v_1 (- x1 x10))
|
||||
(?v_2 (- x2 x10))
|
||||
(?v_3 (- x3 x10))
|
||||
(?v_4 (- x4 x10))
|
||||
(?v_5 (- x5 x10))
|
||||
(?v_6 (- x6 x10))
|
||||
(?v_7 (- x7 x10))
|
||||
(?v_8 (- x8 x10))
|
||||
(?v_9 (- x9 x10))
|
||||
(?v_10 (- x0 x1))
|
||||
(?v_11 (- x0 x2))
|
||||
(?v_12 (- x0 x3))
|
||||
(?v_13 (- x0 x4))
|
||||
(?v_14 (- x0 x5))
|
||||
(?v_15 (- x0 x6))
|
||||
(?v_16 (- x0 x7))
|
||||
(?v_17 (- x0 x8))
|
||||
(?v_18 (- x0 x9))
|
||||
(?v_19 (- x1 x2))
|
||||
(?v_20 (- x1 x3))
|
||||
(?v_21 (- x1 x4))
|
||||
(?v_22 (- x1 x5))
|
||||
(?v_23 (- x1 x6))
|
||||
(?v_24 (- x1 x7))
|
||||
(?v_25 (- x1 x8))
|
||||
(?v_26 (- x1 x9))
|
||||
(?v_27 (- x2 x3))
|
||||
(?v_28 (- x2 x4))
|
||||
(?v_29 (- x2 x5))
|
||||
(?v_30 (- x2 x6))
|
||||
(?v_31 (- x2 x7))
|
||||
(?v_32 (- x2 x8))
|
||||
(?v_33 (- x2 x9))
|
||||
(?v_34 (- x3 x4))
|
||||
(?v_35 (- x3 x5))
|
||||
(?v_36 (- x3 x6))
|
||||
(?v_37 (- x3 x7))
|
||||
(?v_38 (- x3 x8))
|
||||
(?v_39 (- x3 x9))
|
||||
(?v_40 (- x4 x5))
|
||||
(?v_41 (- x4 x6))
|
||||
(?v_42 (- x4 x7))
|
||||
(?v_43 (- x4 x8))
|
||||
(?v_44 (- x4 x9))
|
||||
(?v_45 (- x5 x6))
|
||||
(?v_46 (- x5 x7))
|
||||
(?v_47 (- x5 x8))
|
||||
(?v_48 (- x5 x9))
|
||||
(?v_49 (- x6 x7))
|
||||
(?v_50 (- x6 x8))
|
||||
(?v_51 (- x6 x9))
|
||||
(?v_52 (- x7 x8))
|
||||
(?v_53 (- x7 x9))
|
||||
(?v_54 (- x8 x9)))
|
||||
(and (<= ?v_0 9) (>= ?v_0 0) (<= ?v_1 9) (>= ?v_1 0) (<= ?v_2 9) (>= ?v_2 0)
|
||||
(<= ?v_3 9) (>= ?v_3 0) (<= ?v_4 9) (>= ?v_4 0) (<= ?v_5 9) (>= ?v_5 0)
|
||||
(<= ?v_6 9) (>= ?v_6 0) (<= ?v_7 9) (>= ?v_7 0) (<= ?v_8 9) (>= ?v_8 0)
|
||||
(<= ?v_9 9) (>= ?v_9 0)
|
||||
(not (= x0 x1)) (not (= x0 x2)) (not (= x0 x3)) (not (= x0 x4))
|
||||
(not (= x0 x5)) (not (= x0 x6)) (not (= x0 x7)) (not (= x0 x8))
|
||||
(not (= x0 x9)) (not (= x1 x2)) (not (= x1 x3)) (not (= x1 x4))
|
||||
(not (= x1 x5)) (not (= x1 x6)) (not (= x1 x7)) (not (= x1 x8))
|
||||
(not (= x1 x9)) (not (= x2 x3)) (not (= x2 x4)) (not (= x2 x5))
|
||||
(not (= x2 x6)) (not (= x2 x7)) (not (= x2 x8)) (not (= x2 x9))
|
||||
(not (= x3 x4)) (not (= x3 x5)) (not (= x3 x6)) (not (= x3 x7))
|
||||
(not (= x3 x8)) (not (= x3 x9)) (not (= x4 x5)) (not (= x4 x6))
|
||||
(not (= x4 x7)) (not (= x4 x8)) (not (= x4 x9)) (not (= x5 x6))
|
||||
(not (= x5 x7)) (not (= x5 x8)) (not (= x5 x9)) (not (= x6 x7))
|
||||
(not (= x6 x8)) (not (= x6 x9)) (not (= x7 x8)) (not (= x7 x9))
|
||||
(not (= x8 x9))
|
||||
(not (= ?v_10 1)) (not (= ?v_10 (- 1))) (not (= ?v_11 2))
|
||||
(not (= ?v_11 (- 2))) (not (= ?v_12 3)) (not (= ?v_12 (- 3)))
|
||||
(not (= ?v_13 4)) (not (= ?v_13 (- 4))) (not (= ?v_14 5))
|
||||
(not (= ?v_14 (- 5))) (not (= ?v_15 6)) (not (= ?v_15 (- 6)))
|
||||
(not (= ?v_16 7)) (not (= ?v_16 (- 7))) (not (= ?v_17 8))
|
||||
(not (= ?v_17 (- 8))) (not (= ?v_18 9)) (not (= ?v_18 (- 9)))
|
||||
(not (= ?v_19 1)) (not (= ?v_19 (- 1))) (not (= ?v_20 2))
|
||||
(not (= ?v_20 (- 2))) (not (= ?v_21 3)) (not (= ?v_21 (- 3)))
|
||||
(not (= ?v_22 4)) (not (= ?v_22 (- 4))) (not (= ?v_23 5))
|
||||
(not (= ?v_23 (- 5))) (not (= ?v_24 6)) (not (= ?v_24 (- 6)))
|
||||
(not (= ?v_25 7)) (not (= ?v_25 (- 7))) (not (= ?v_26 8))
|
||||
(not (= ?v_26 (- 8))) (not (= ?v_27 1)) (not (= ?v_27 (- 1)))
|
||||
(not (= ?v_28 2)) (not (= ?v_28 (- 2))) (not (= ?v_29 3))
|
||||
(not (= ?v_29 (- 3))) (not (= ?v_30 4)) (not (= ?v_30 (- 4)))
|
||||
(not (= ?v_31 5)) (not (= ?v_31 (- 5))) (not (= ?v_32 6))
|
||||
(not (= ?v_32 (- 6))) (not (= ?v_33 7)) (not (= ?v_33 (- 7)))
|
||||
(not (= ?v_34 1)) (not (= ?v_34 (- 1))) (not (= ?v_35 2))
|
||||
(not (= ?v_35 (- 2))) (not (= ?v_36 3)) (not (= ?v_36 (- 3)))
|
||||
(not (= ?v_37 4)) (not (= ?v_37 (- 4))) (not (= ?v_38 5))
|
||||
(not (= ?v_38 (- 5))) (not (= ?v_39 6)) (not (= ?v_39 (- 6)))
|
||||
(not (= ?v_40 1)) (not (= ?v_40 (- 1))) (not (= ?v_41 2))
|
||||
(not (= ?v_41 (- 2))) (not (= ?v_42 3)) (not (= ?v_42 (- 3)))
|
||||
(not (= ?v_43 4)) (not (= ?v_43 (- 4))) (not (= ?v_44 5))
|
||||
(not (= ?v_44 (- 5))) (not (= ?v_45 1)) (not (= ?v_45 (- 1)))
|
||||
(not (= ?v_46 2)) (not (= ?v_46 (- 2))) (not (= ?v_47 3))
|
||||
(not (= ?v_47 (- 3))) (not (= ?v_48 4)) (not (= ?v_48 (- 4)))
|
||||
(not (= ?v_49 1)) (not (= ?v_49 (- 1))) (not (= ?v_50 2))
|
||||
(not (= ?v_50 (- 2))) (not (= ?v_51 3)) (not (= ?v_51 (- 3)))
|
||||
(not (= ?v_52 1)) (not (= ?v_52 (- 1))) (not (= ?v_53 2))
|
||||
(not (= ?v_53 (- 2))) (not (= ?v_54 1)) (not (= ?v_54 (- 1))))))
|
||||
(check-sat)
|
||||
(exit)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user