Compare commits

..

105 Commits

Author SHA1 Message Date
Arfon Smith
16a4b4947f Merge pull request #2526 from github/cut-releasev4.5.10
Bumping to v4.5.10
2015-07-29 15:21:31 +01:00
Arfon Smith
4b2abb2064 Bumping to v4.5.10 2015-07-29 14:50:11 +01:00
Arfon Smith
c581b6a5a7 Merge pull request #2525 from github/grammars-update
Grammars update
2015-07-29 14:37:08 +01:00
Arfon Smith
4c66582f87 Grammars update 2015-07-29 14:27:35 +01:00
Arfon Smith
11388a5355 Merge pull request #1899 from sethvargo/patch-1
Add HCL to languages.yml
2015-07-29 14:14:38 +01:00
Arfon Smith
24ca98b1a3 Merge pull request #2524 from github/more-encompassing-number-skips
More encompassing number skips
2015-07-29 14:07:04 +01:00
Arfon Smith
90a293727d Merge branch 'master' into more-encompassing-number-skips 2015-07-29 13:54:51 +01:00
Arfon Smith
e869f6c173 Merge pull request #2438 from edm00se/master
add support for XPages
2015-07-25 17:52:01 +01:00
Arfon Smith
07173d2238 Merge pull request #2515 from github/xbase-ch
xBase .ch
2015-07-21 15:26:45 +01:00
Arfon Smith
6b747f7d65 Adding Charity and heuristic for xBase .ch files 2015-07-21 14:59:47 +01:00
Arfon Smith
aef19d72f9 Merge branch 'master' into xbase-ch 2015-07-21 13:55:59 +01:00
Arfon Smith
e1a661bffc Merge pull request #2506 from hdgarrood/master
Use a different grammar for PureScript
2015-07-21 13:37:05 +01:00
Arfon Smith
560f9b15d7 Merge pull request #2510 from joelparkerhenderson/master
Add documentation categorization for CHANGELOG et. al.
2015-07-20 16:30:57 +01:00
Joel Parker Henderson
682cc2d82d Add documentation categorization for CHANGELOG et. al. 2015-07-19 19:36:12 -06:00
Harry Garrood
29197736c7 Use a different grammar for PureScript 2015-07-19 09:18:09 +01:00
Arfon Smith
e1dbd68713 Merge branch 'master' of github.com:github/linguist 2015-07-16 14:43:21 -07:00
Arfon Smith
0ecb865797 Merge branch 'rpavlick-master' 2015-07-16 14:40:52 -07:00
Arfon Smith
1ced06483e Merge branch 'master' of https://github.com/rpavlick/linguist into rpavlick-master 2015-07-16 14:40:21 -07:00
Garen Torikian
861cee33d5 Merge pull request #2502 from vszakats/patch-1
CONTRIBUTING.md: minor URL cleanups
2015-07-15 15:40:51 -07:00
Viktor Szakats
6b882438b0 CONTRIBUTING.md: minor URL cleanups
use `https://` and `.svg`, follow a redirect.
2015-07-15 13:39:27 +02:00
Arfon Smith
c570646c2d Merge pull request #2500 from github/cut-release-v4.5.9
Cut release v4.5.9
2015-07-14 16:22:23 -07:00
Arfon Smith
75f72578ad Bumping version to v4.5.9 2015-07-14 08:59:32 -07:00
Arfon Smith
4dc566e13f Updating OpenEdge-ABL grammars 2015-07-14 08:58:59 -07:00
Arfon Smith
bcfdbe3616 Grammars update 2015-07-14 08:56:44 -07:00
Arfon Smith
314b7f134d Merge pull request #2499 from vszakats/xgramm
add grammar for xbase and harbour languages
2015-07-14 08:48:24 -07:00
Eric McCormick
87eb4577ea trying this again 2015-07-13 21:31:02 -05:00
Eric McCormick
7563bf43e9 Revert "removed samples"
This reverts commit ce8cfed7ff.
2015-07-13 21:28:36 -05:00
Eric McCormick
ce8cfed7ff removed samples 2015-07-13 21:22:54 -05:00
Eric McCormick
8742de9a88 pulling .xsp, .form, .view from PR
Per comment in [PR 2438](https://github.com/github/linguist/pull/2438#issuecomment-120588670), pulling all but .xsp-config and .xsp.metadata for uniqueness and non-overlapping assignment based on file extension. This should be set / overridden in the `.gitattributes` file, [as demonstrated here](https://github.com/edm00se/AnAppOfIceAndFire/blob/master/.gitattributes), to assign the XPages language to the project files.
2015-07-13 21:11:06 -05:00
Arfon Smith
9c0af2ea5b Merge pull request #2488 from github/code-of-conduct
Add code of conduct to contributing guidelines
2015-07-13 15:14:20 -07:00
Viktor Szakats
4c81c0d904 add grammar for xbase and harbour languages 2015-07-13 15:28:42 +02:00
Viktor Szakats
4dcdb0c79c xBase: add .ch extension + sample 2015-07-13 10:32:08 +02:00
Arfon Smith
d459f7289e Merge pull request #2493 from miek/patch-1
Add .kicad_pcb extension for KiCad PCB design files
2015-07-12 13:44:17 +01:00
Arfon Smith
d2c4104d30 Merge pull request #2494 from k2b6s9j/crystal-grammar
Use a Crystal grammar over the Ruby grammar for Crystal files.
2015-07-12 13:42:53 +01:00
Kepler Sticka-Jones
89fabd9a89 Use a Crystal grammar over the Ruby grammar for Crystal files.
The Crystal does have several little differences which distinguish it from Ruby. Thus it needs it's own grammar.
2015-07-11 09:24:22 -07:00
Mike Walters
3f7ce832ab Add .kicad_pcb extension for KiCad PCB design files 2015-07-11 16:34:05 +01:00
Arfon Smith
3fdc904b18 Merge pull request #2487 from thorade/issue2486_Modelica
more samples for Modelica language,
2015-07-11 07:59:48 +01:00
Arfon Smith
cf471af677 Merge pull request #2483 from github/cut-release-v4.5.8
v4.5.8 release
2015-07-10 22:57:07 +01:00
rpavlick
2d392581e2 adding NCL language 2015-07-09 07:17:01 -07:00
Arfon Smith
79a428ab8d Merge pull request #2180 from pchaigno/inc-extension
.inc file extension
2015-07-08 19:25:50 +01:00
Brandon Keepers
7ed1b9b0b1 Add code of conduct to contributing guidelines 2015-07-08 14:10:59 -04:00
thorade
58fd8a5d87 more samples for Modelica language,
see issue #2486
2015-07-07 12:40:37 +02:00
Paul Chaignon
9f8c15ed6c Merge branch 'master' into inc-extension 2015-07-05 14:45:35 +02:00
Paul Chaignon
b94eda18ab New .inc Pascal samples 2015-07-05 12:48:22 +02:00
Paul Chaignon
849eb28b01 New .inc SourcePawn samples 2015-07-05 12:48:12 +02:00
Paul Chaignon
b0073d461c New .inc C++ samples 2015-07-05 12:47:57 +02:00
Arfon Smith
21e97cc65c Merge pull request #2170 from pchaigno/mod-extension
.mod extension
2015-07-04 20:57:40 +01:00
Paul Chaignon
06c1033952 Fix error from merge conflicts 2015-07-04 18:04:19 +02:00
Paul Chaignon
8c54f68040 Fix conflicts from merging master into 'mod-extension' 2015-07-04 18:01:56 +02:00
Arfon Smith
4c1f5c490f Merge pull request #2484 from pchaigno/fix-g-code-samples
Remove incorrect G-code samples
2015-07-04 16:58:42 +01:00
Arfon Smith
117735ffb9 Merge pull request #2179 from pchaigno/symlinks
Ignore symbolic links
2015-07-04 16:57:43 +01:00
Paul Chaignon
f98e6bdac7 Use proper format for symlinks, submodules and trees 2015-07-04 17:14:30 +02:00
Paul Chaignon
19d76306d3 Remove incorrect samples 2015-07-04 12:33:41 +02:00
Arfon Smith
a63a609ce1 v4.5.8 release 2015-07-04 10:36:45 +01:00
Arfon Smith
95fce2024d Merge pull request #2482 from github/grammar-updates
Grammar updates
2015-07-04 07:02:29 +01:00
Arfon Smith
f3b65015f4 Grammar updates 2015-07-04 06:55:51 +01:00
Arfon Smith
5431298b0d Merge pull request #2481 from github/1823-local
Isabelle ROOT support (updated PR)
2015-07-04 06:19:02 +01:00
Arfon Smith
8f651bca03 Adding PHP sample file for completeness 2015-07-04 06:01:06 +01:00
Arfon Smith
6c45e5ec19 Merge branch 'master' into 1823-local 2015-07-04 05:46:23 +01:00
Arfon Smith
95d394642c Merge pull request #2478 from mattn/perl-test-more
Append Test::More into strict.t
2015-07-04 05:32:30 +01:00
mattn
6a185a3d3a remove some text contents from test.pl since it affect to heuristic search. 2015-07-04 02:29:01 +09:00
Arfon Smith
6ae353706d Merge pull request #2479 from SRI-CSL/master
SMT-LIB language support
2015-07-01 14:10:28 -05:00
Ian A. Mason
77bc72be14 Added an ace mode, and put the SMT entry in the correct place, maybe. 2015-07-01 11:22:04 -07:00
Bruno Dutertre
0585c880de Example smt2 files 2015-07-01 10:38:17 -07:00
mattn
da5189e7fb Append Test::More into strict.t. Because, most of tap scripts on Perl5 are detected as Perl6. 2015-07-01 16:23:38 +09:00
Ian A. Mason
5f456d8b22 Some part way through the adding a language checklist. 2015-06-30 15:29:02 -07:00
Vicent Marti
a351cdd486 Merge pull request #2477 from github/vmg/release-4.5.7
Rrelease 4.5.7
2015-06-30 14:58:18 +02:00
Arfon Smith
6e71663fd6 Merge pull request #2463 from pchaigno/doc-add-extension
Instructions to add a new extension to a language
2015-06-29 21:18:47 -05:00
Arfon Smith
0b2e43cdee Merge pull request #2457 from drewcrawford/master
Adding some more vendered expressions
2015-06-29 21:16:08 -05:00
Paul Chaignon
9cbd280f79 New .inc SourcePawn sample 2015-06-28 16:05:47 +02:00
Paul Chaignon
947be9db0f New .inc Pascal sample 2015-06-28 15:54:25 +02:00
Paul Chaignon
dd55f929d4 New .inc HTML sample 2015-06-28 15:27:59 +02:00
Paul Chaignon
8b5399d568 New C++ .inc sample 2015-06-28 14:33:54 +02:00
Paul Chaignon
1b8b0c6229 New .inc Assembly samples 2015-06-28 13:24:42 +02:00
Vicent Marti
ee3081fb4c Bump to 4.5.7 2015-06-26 03:34:18 -07:00
Vicent Marti
119770a038 Update grammars 2015-06-26 03:33:37 -07:00
Vicent Marti
9d61487403 gemspec: Loosen up the restriction on Rugged betas 2015-06-26 03:11:31 -07:00
Paul Chaignon
56dec47561 Merge branch 'master' into inc 2015-06-21 14:20:53 +02:00
Paul Chaignon
3e793ab5b7 Precision on requirements to add a language 2015-06-21 10:07:18 +02:00
Garen Torikian
f6b50a67f9 Change Haxe and Ragel colors to pass tests 2015-06-20 09:55:33 -07:00
Zalim Bashorov
cd47798d13 try to fix conflicts 2015-06-20 09:49:51 -07:00
Zalim Bashorov
3b54df2cde Change color for Kotlin based on color in logo
IMHO it's more suitable.
2015-06-20 09:49:51 -07:00
Drew Crawford
8845b266de Adding some more vendered expressions
* `Vendor/`, the capitalized path
* Crashlytics, a common iOS framework
* Fabric, a common iOS framework
2015-06-17 21:25:54 -05:00
Paul Chaignon
786d1e4cfc Instructions to add a new extension to a language 2015-06-12 21:22:55 +02:00
Eric McCormick
26a5325dc3 undoing color
apparently a bad idea, Travis CI didn't like it
2015-06-05 11:04:34 -05:00
Eric McCormick
4881e0aa51 added color to languages.yml 2015-06-05 10:36:40 -05:00
Eric McCormick
743f7c76de resorted entry in languages.yml to be consistent with other blocks 2015-06-05 06:19:02 -05:00
Eric McCormick
f8ef01f557 updated tm_scope to none in languages.yml
It looks like it helps to read the comments at the top of the file, who knew!
2015-06-05 06:13:36 -05:00
Eric McCormick
402fa5c2cd added navbar.xsp, xsp-config, xsp.metadata for completeness of file extensions and corrected xsp.metadata extension in languages.yml 2015-06-04 22:51:55 -05:00
Eric McCormick
5ac1e847a5 samples added for XPages design elements (.xsp) and affiliated NSF-based elements (.form, .view)
- demoServerRESTconsumption, src: https://gist.github.com/edm00se/15249dba8ff3fea38312, license: Creative Commons 3.0
- house.form, houses.view, house.xsp, src: https://github.com/edm00se/AnAppOfIceAndFire, license: Creative Commons 3.0
- UnpMainxsp, src: https://github.com/teamstudio/xcontrols-domino/blob/master/sampler-app/XPages/UnpMain.xsp, license: Apache v2.0
- xLogin.xsp, src: http://openntf.org/XSnippets.nsf/snippet.xsp?id=xpages-form-login-with-session-variable, license: Apache 2.0
2015-06-04 22:09:49 -05:00
Eric McCormick
0737a21e38 XPages added as programming language
XPages design element extensions and NSF-based design elements (Form, View) extensions added (all readable when marked up using XML settings for ACE); .jss (Domino SSJS) already aliased under JavaScript
2015-06-04 21:37:58 -05:00
Paul Chaignon
0c2aeae00d .inc extension for PHP, Pascal, Assembly, SQL, C++, HTML and SourcePawn 2015-05-10 20:36:41 +02:00
Paul Chaignon
b6ee02f313 Merge branch 'master' into mod-extension 2015-05-04 21:44:23 +02:00
Paul Chaignon
fc1f8083ad Heuristic rules for XML and Modula-2 2015-04-25 23:36:15 +02:00
Paul Chaignon
af5e799a45 Merge branch 'master' into mod-extension 2015-04-22 21:14:24 +02:00
Paul Chaignon
e073e91d62 Detect GFortran module files as generated 2015-04-19 16:56:38 +02:00
Paul Chaignon
da9bda0e27 Detect KiCAD module files as generated 2015-04-19 16:19:52 +02:00
Paul Chaignon
0e996e4bb7 Grammar for Modula-2 from Sublime Text package 2015-04-19 12:41:41 +02:00
Paul Chaignon
63fbbd6e0a .mod file extension for AMPL, Linux Kernel Module, Modula-2 and XML 2015-04-19 12:39:21 +02:00
Paul Chaignon
730be65514 Ignore symlinks in repository statistics 2015-02-28 16:08:16 +01:00
Stefan Johnson
885b5aab41 Changed tokenizer number literals to be more encompassing
Number literals now skips hexadecimal, and C style literals.
2015-02-20 14:08:39 +11:00
Gerwin Klein
f18ae4f99f add support for Isabelle ROOT file syntax 2014-12-27 10:13:02 +11:00
Seth Vargo
5217f19faa Alphabetize order 2014-12-18 17:53:53 -05:00
Seth Vargo
296d170ba9 Add sample for HCL 2014-12-18 17:52:30 -05:00
Seth Vargo
a97fd74399 Add HCL to languages.yml
More information on HCL: https://github.com/hashicorp/hcl
2014-12-18 17:46:26 -05:00
137 changed files with 13711 additions and 55735 deletions

18
.gitmodules vendored
View File

@@ -629,6 +629,9 @@
[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
@@ -647,3 +650,18 @@
[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

View File

@@ -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: [![Build Status](https://api.travis-ci.org/github/linguist.svg?branch=master)](https://travis-ci.org/github/linguist)
Here's our current build status: [![Build Status](https://secure.travis-ci.org/github/linguist.png?branch=master)](http://travis-ci.org/github/linguist)
## Releasing

View File

@@ -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|

View 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'

View File

@@ -85,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
@@ -107,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:
@@ -119,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:
@@ -171,6 +176,8 @@ vendor/grammars/assembly.tmbundle:
- 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
@@ -310,6 +317,8 @@ vendor/grammars/language-clojure:
vendor/grammars/language-coffee-script:
- source.coffee
- source.litcoffee
vendor/grammars/language-crystal:
- source.crystal
vendor/grammars/language-csharp:
- source.cs
- source.csx
@@ -324,6 +333,8 @@ vendor/grammars/language-javascript:
vendor/grammars/language-jsoniq/:
- source.jq
- source.xq
vendor/grammars/language-ncl:
- source.ncl
vendor/grammars/language-python:
- source.python
- source.regexp.python
@@ -332,6 +343,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:

View File

@@ -16,6 +16,7 @@
## Documentation files ##
- (^|/)CHANGE(S|LOG)?(\.|$)
- (^|/)CONTRIBUTING(\.|$)
- (^|/)COPYING(\.|$)
- (^|/)INSTALL(\.|$)

View File

@@ -69,8 +69,9 @@ module Linguist
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?
@@ -324,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:

View File

@@ -274,6 +274,22 @@ module Linguist
end
end
disambiguate "XML", "Modula-2", "Linux Kernel Module", "AMPL" 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 "Text", "NCL" do |data|
if data.include?("THE_TITLE")
Language["Text"]
end
end
disambiguate "NL", "NewLisp" do |data|
if /^(b|g)[0-9]+ /.match(data)
Language["NL"]
@@ -317,5 +333,11 @@ module Linguist
Language["GAS"]
end
end
disambiguate "xBase", "Charity" do |data|
if /^\s*#\s*(if|ifdef|ifndef|define|command|xcommand|translate|xtranslate|include|pragma|undef)\b/i.match(data)
Language["xBase"]
end
end
end
end

View File

@@ -49,6 +49,7 @@ AMPL:
color: "#E6EFBB"
extensions:
- .ampl
- .mod
tm_scope: source.ampl
ace_mode: text
@@ -225,6 +226,7 @@ Assembly:
extensions:
- .asm
- .a51
- .inc
- .nasm
tm_scope: source.asm.x86
ace_mode: assembly_x86
@@ -411,6 +413,7 @@ C++:
- .hh
- .hpp
- .hxx
- .inc
- .inl
- .ipp
- .tcc
@@ -498,6 +501,13 @@ Chapel:
- .chpl
ace_mode: text
Charity:
type: programming
extensions:
- .ch
tm_scope: none
ace_mode: text
ChucK:
type: programming
extensions:
@@ -667,7 +677,7 @@ Crystal:
extensions:
- .cr
ace_mode: ruby
tm_scope: source.ruby
tm_scope: source.crystal
interpreters:
- crystal
@@ -1258,6 +1268,14 @@ Groovy Server Pages:
tm_scope: text.html.jsp
ace_mode: jsp
HCL:
type: programming
extensions:
- .hcl
- .tf
ace_mode: javascript
tm_scope: source.json
HTML:
type: markup
tm_scope: text.html.basic
@@ -1269,6 +1287,7 @@ HTML:
- .html
- .htm
- .html.hl
- .inc
- .st
- .xht
- .xhtml
@@ -1345,7 +1364,7 @@ Harbour:
color: "#0e60e3"
extensions:
- .hb
tm_scope: none
tm_scope: source.harbour
ace_mode: text
Haskell:
@@ -1359,7 +1378,7 @@ Haskell:
Haxe:
type: programming
ace_mode: haxe
color: "#f7941e"
color: "#df7900"
extensions:
- .hx
- .hxsl
@@ -1475,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"
@@ -1626,6 +1653,7 @@ KiCad:
type: programming
extensions:
- .sch
- .kicad_pcb
tm_scope: none
ace_mode: text
@@ -1638,7 +1666,7 @@ Kit:
Kotlin:
type: programming
color: "#EA4DFA"
color: "#F18E33"
extensions:
- .kt
- .ktm
@@ -1759,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:
@@ -2025,6 +2060,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:
@@ -2064,6 +2106,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:
@@ -2357,6 +2407,7 @@ PHP:
- .aw
- .ctp
- .fcgi
- .inc
- .php3
- .php4
- .php5
@@ -2444,6 +2495,7 @@ Pascal:
- .pas
- .dfm
- .dpr
- .inc
- .lpr
- .pp
ace_mode: pascal
@@ -2630,7 +2682,7 @@ PureScript:
color: "#1D222D"
extensions:
- .purs
tm_scope: source.haskell
tm_scope: source.purescript
ace_mode: haskell
Python:
@@ -2768,7 +2820,7 @@ Racket:
Ragel in Ruby Host:
type: programming
color: "#e17600"
color: "#9d5200"
extensions:
- .rl
aliases:
@@ -2919,6 +2971,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
@@ -2944,6 +3015,7 @@ SQL:
- .sql
- .cql
- .ddl
- .inc
- .prc
- .tab
- .udf
@@ -3142,6 +3214,7 @@ SourcePawn:
- sourcemod
extensions:
- .sp
- .inc
- .sma
tm_scope: source.sp
ace_mode: text
@@ -3286,6 +3359,7 @@ Text:
extensions:
- .txt
- .fr
- .ncl
tm_scope: none
ace_mode: text
@@ -3506,6 +3580,7 @@ XML:
- .launch
- .mdpolicy
- .mm
- .mod
- .mxml
- .nproj
- .nuspec
@@ -3561,6 +3636,14 @@ XML:
- Web.config
- packages.config
XPages:
type: programming
extensions:
- .xsp-config
- .xsp.metadata
tm_scope: none
ace_mode: xml
XProc:
type: programming
extensions:
@@ -3732,5 +3815,6 @@ xBase:
color: "#403a40"
extensions:
- .prg
tm_scope: none
- .ch
tm_scope: source.harbour
ace_mode: text

View File

@@ -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))

View File

@@ -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<>][^<>]*>/)

View File

@@ -70,6 +70,7 @@
- 3rd[-_]?party/
- vendors?/
- extern(al)?/
- (^|/)[Vv]+endor/
# Debian packaging
- ^debian/
@@ -172,6 +173,13 @@
# Sparkle
- (^|/)Sparkle/
# Crashlytics
- Crashlytics.framework/
# Fabric
- Fabric.framework/
## Groovy ##
# Gradle

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.5.6"
VERSION = "4.5.10"
end

58
samples/AMPL/CT2.mod Normal file
View 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];

View 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
View 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
View 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

View 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

File diff suppressed because it is too large Load Diff

34
samples/C++/instances.inc Normal file
View 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";
}

View File

@@ -0,0 +1,6 @@
%
% Some very badly written Charity
%
data LA(A) -> D = ss: A -> D
| ff: -> D.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

6
samples/HCL/example.hcl Normal file
View 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
View 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
View 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
View File

@@ -0,0 +1,5 @@
</UL>
<P><A HREF="devices.html">Supported Targets</A></P>
</BODY>
</HEAD>

File diff suppressed because it is too large Load Diff

View 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)
)
)
)
)

View 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

View File

@@ -0,0 +1,2 @@
fs/mbcache.ko
fs/mbcache.o

View File

@@ -0,0 +1,2 @@
crypto/md5.ko
crypto/md5.o

View 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;

View 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;

View 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
View 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;

View 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;

View 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;

View File

@@ -0,0 +1,4 @@
within ;
package ModelicaByExample
annotation (uses(Modelica(version="3.2.1")));
end ModelicaByExample;

View File

@@ -0,0 +1,3 @@
within ModelicaByExample;
package PackageExamples "Examples of using packages"
end PackageExamples;

View File

@@ -0,0 +1,3 @@
within ModelicaByExample.Subsystems;
package GearSubsystemModel "Build a subsystem model representing a gear with backlash"
end GearSubsystemModel;

View File

@@ -0,0 +1,3 @@
within ModelicaByExample.Subsystems;
package Pendula "Example of using arrays of subsystems to build complete systems"
end Pendula;

View 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.

View 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

View 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
View 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
View 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)

View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,3 @@
val=102
a=val/4.
print(a)

172
samples/NCL/topo_9.ncl Normal file
View 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
View 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
View 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
View 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
View 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

View 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
View 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

View 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
View File

@@ -0,0 +1,6 @@
<?php
////////////////////////////////////
// I am not Isabelle ROOT //
////////////////////////////////////
?>

View 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
View 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;

View 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;

View File

@@ -1,4 +1,5 @@
use Test::Base;
use Test::More;
__DATA__
=== Strict Test

View File

@@ -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;

View 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
View 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
View 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)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
# Helper for hostcache_*.test
# Set a known initial state for the test
flush status;
flush hosts;
flush user_resources;
flush privileges;
# Print critical setup
select @@global.debug;
select @@global.max_connect_errors;
select @@global.max_user_connections;
select @@global.max_connections;
# Make sure there are no remaining records that can change the test outcome
select `User`, `Host` from mysql.`user` where `host` like '%\\%%';
select `User`, `Host` from mysql.`user` where `user` like '192.%';
select `User`, `Host` from mysql.`user` where `user` like '2001:%';
select `User`, `Host` from mysql.`user` where `user` like 'santa.claus.%';

View File

@@ -0,0 +1,246 @@
// Checkpoint Manager
// (c) João Pedro Lopes, All right's reserved
//
// Feel free to change any line above, as long as you post the 'fix' / 'patch' at the forum
// and send a copy to jplopes@live.com.pt
/* natives
native CreateCheckpoint(ownerid, chpid, Float:posX, Float:posY, Float:posZ, Float:size); // Creates a checkpoint
native SetCheckpointInterior(chpid, interiorid); // Changes the checkpoint interior
native SetCheckpointVirtualWorld(chpid, VirtualWorldID); // Changes the Checkpoint vWorld
native ToggleCheckpointActive(chpid, bool:active); // Deactivates / Activates the checkpoint
native ChangeCheckpointOwner(chpid, owner); // Change the checkpoint owner
native RemoveCheckpoint(chpid); // Removes the specified checkpoint
native StartCheckpointSeeking(); // Starts seeking for each individual
native StopCheckpointSeeking(); // Stops the system
native VerifyCheckpoint(playerid); // Place this at OnPlayerEnterCheckpoint
*/
// Function Forwards
forward public OnCheckpointEnter(playerid, checkpointid);
#if defined _CHECKPOINT_MANAGER_INCLUDED
#endinput
#endif
#define _CHECKPOINT_MANAGER_INCLUDED
#pragma library CheckpointManager
#include <a_samp>
#define MAX_CHECKPOINTS 200
#define CHECKPOINT_SEEKER_DELAY 300
#define GLOBAL_OWNER_ID -1
// CHECKPOINT ENUMERATION
enum _checkpointEnum{
_chp_populated, // Is this slot of the memory populated?
_chp_id, // The ID of the checkpoint
_chp_owner, // The ID of the player who this checkpoint is visible too
Float:_chp_posX, // The X position of this checkpoint
Float:_chp_posY, // The Y position of this checkpoint
Float:_chp_posZ, // The Z position of this checkpoint
Float:_chp_size, // The checkpoint size
Float:_chp_viewDistance, // The checkpoint view distance
bool:_chp_active, // Is this checkpoint active?
_chp_interior_id, // The interior id of this checkpoint
_chp_world_id // The world id of this checkpoint
};
// DATA ARRAYS
new _checkpoints[MAX_CHECKPOINTS][_checkpointEnum];
new _p_VisibleCheckpoint[MAX_PLAYERS];
new _chp_manager_timer_id;
// DATA VARIABLES
new _totalCheckpoints;
// --------------------------------------------------------------------------------------------------------
// Creates a new checkpoint with some initial data
stock CreateCheckpoint(__ownerid, __chpid, Float:__posX, Float:__posY, Float:__posZ, Float:__size){
// Max checkpoint reached?
if(_totalCheckpoints == MAX_CHECKPOINTS) return 0;
// First checkpoint? Setting everything to unpopulated
if(!_totalCheckpoints){
for(new i; i < MAX_PLAYERS; i++) _p_VisibleCheckpoint[i] = -1;
for(new i; i < MAX_CHECKPOINTS; i++){
_checkpoints[i][_chp_populated] = false;
}
// Sending the Initialization Info
printf("[Checkpoint Manager : Version 0.1.1b] System Initialized...", __chpid);
}
// Getting the first open slot
new _slot;
for(new i = 0; i < MAX_CHECKPOINTS; i++){
if(!_checkpoints[i][_chp_populated]){
_slot = i;
break;
}
}
// Adding the new checkpoint
_checkpoints[_slot][_chp_populated] = true;
_checkpoints[_slot][_chp_id] = __chpid;
_checkpoints[_slot][_chp_owner] = __ownerid;
_checkpoints[_slot][_chp_posX] = __posX;
_checkpoints[_slot][_chp_posY] = __posY;
_checkpoints[_slot][_chp_posZ] = __posZ;
_checkpoints[_slot][_chp_size] = __size;
_checkpoints[_slot][_chp_viewDistance] = 50.0;
_checkpoints[_slot][_chp_active] = true;
_checkpoints[_slot][_chp_interior_id] = 0;
_checkpoints[_slot][_chp_world_id] = 0;
printf("[Checkpoint Manager] Checkpoint created (%d) at slot %d", __chpid, _slot);
printf("Checkpoint Position: { %f, %f, %f }", _checkpoints[_slot][_chp_posX], _checkpoints[_slot][_chp_posY], _checkpoints[_slot][_chp_posZ]);
_totalCheckpoints++;
return 1;
}
//---------------------------------------------------------------------------------------------
stock SetCheckpointInterior(__chpid, __interiorid){
new _slot = __ChpSlotByID(__chpid);
if(_slot > -1){
// Valid slot?
_checkpoints[_slot][_chp_interior_id] = __interiorid;
return 1;
}
return 0;
}
//---------------------------------------------------------------------------------------------
stock SetCheckpointVirtualWorld(__chpid, __virtual_world_id){
new _slot = __ChpSlotByID(__chpid);
if(_slot > -1){
_checkpoints[_slot][_chp_world_id] = __virtual_world_id;
return 1;
}
return 0;
}
stock ToggleCheckpointActive(__chpid, bool:__active){
new _slot = __ChpSlotByID(__chpid);
if(_slot > -1){
_checkpoints[_slot][_chp_active] = __active;
return 1;
}
return 0;
}
stock ChangeCheckpointOwner(__chpid, __owner){
new _slot = __ChpSlotByID(__chpid);
if(_slot > -1){
_checkpoints[_slot][_chp_owner] = __owner;
return 1;
}
return 0;
}
stock RemoveCheckpoint(__chpid){
new _slot = __ChpSlotByID(__chpid);
if(_slot > -1){
// Deleting the checkpoint
_checkpoints[_slot][_chp_populated] = false;
_checkpoints[_slot][_chp_id] = -1;
_checkpoints[_slot][_chp_owner] = 255;
_checkpoints[_slot][_chp_posX] = -1;
_checkpoints[_slot][_chp_posY] = -1;
_checkpoints[_slot][_chp_posZ] = -1;
_checkpoints[_slot][_chp_size] = -1;
_checkpoints[_slot][_chp_viewDistance] = -1;
_checkpoints[_slot][_chp_active] = false;
_checkpoints[_slot][_chp_interior_id] = -1;
_checkpoints[_slot][_chp_world_id] = -1;
_totalCheckpoints--;
printf("\n[Checkpoint Manager] Checkpoint removed (ID: %d)", __chpid);
return 1;
}
return 0;
}
//---------------------------------------------------------------------------------------------
// Gets the checkpoint slot by id
stock __ChpSlotByID(__chpid){
for(new i; i < MAX_CHECKPOINTS; i++){
if(_checkpoints[i][_chp_id] == __chpid) return i;
}
return -1;
}
forward CheckpointSeeker();
stock StartCheckpointSeeking(){
_chp_manager_timer_id = SetTimer("CheckpointSeeker", CHECKPOINT_SEEKER_DELAY, 1);
return 1;
}
stock StopCheckpointSeeking(){
KillTimer(_chp_manager_timer_id);
return 1;
}
public CheckpointSeeker(){
new Float:__posX, Float:__posY, Float:__posZ;
new __interior;
new __virtualWorld;
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
GetPlayerPos(i, Float:__posX, Float:__posY, Float:__posZ);
// Is the player near a checkpoint?
if(_p_VisibleCheckpoint[i] > -1)
{
// If the player is no longer near that point
if(__posX < (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posX] - _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|| __posX > (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posX] + _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|| __posY < (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posY] - _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])
|| __posY > (_checkpoints[_p_VisibleCheckpoint[i]][_chp_posY] + _checkpoints[_p_VisibleCheckpoint[i]][_chp_viewDistance])){
DisablePlayerCheckpoint(i);
_p_VisibleCheckpoint[i] = -1;
}
}
else
{
// Getting the player Interior and virtual world
__interior = GetPlayerInterior(i);
__virtualWorld = GetPlayerVirtualWorld(i);
// Looking for a new checkpoint
for(new j = 0; j < MAX_CHECKPOINTS; j++){
if(!_checkpoints[j][_chp_populated]) continue;
if((_checkpoints[j][_chp_owner] != i) && (_checkpoints[j][_chp_owner] != -1)) continue;
if(_checkpoints[j][_chp_interior_id] != __interior) continue;
if(_checkpoints[j][_chp_world_id] != __virtualWorld) continue;
if(__posX > (_checkpoints[j][_chp_posX] - _checkpoints[j][_chp_viewDistance])
&& __posX < (_checkpoints[j][_chp_posX] + _checkpoints[j][_chp_viewDistance])
&& __posY > (_checkpoints[j][_chp_posY] - _checkpoints[j][_chp_viewDistance])
&& __posY < (_checkpoints[j][_chp_posY] + _checkpoints[j][_chp_viewDistance])){
SetPlayerCheckpoint(i, _checkpoints[j][_chp_posX], _checkpoints[j][_chp_posY], _checkpoints[j][_chp_posZ], _checkpoints[j][_chp_size]);
_p_VisibleCheckpoint[i] = j;
break;
}
}
}
}
return 1;
}
stock VerifyCheckpoint(__playerid){
if(_p_VisibleCheckpoint[__playerid] >= 0){
OnCheckpointEnter(__playerid, _checkpoints[_p_VisibleCheckpoint[__playerid]][_chp_id]);
return 1;
}
return 0;
}

View File

@@ -0,0 +1,91 @@
/* Fixed point arithmetic
*
* (c) Copyright 1998-2011, ITB CompuPhase
* This file is provided as is (no warranties).
*/
#pragma library Fixed
const fround_method: {
fround_round = 0,
fround_floor,
fround_ceil,
fround_tozero,
fround_unbiased
}
native Fixed:fixed(value);
native Fixed:strfixed(const string[]);
native Fixed:fmul(Fixed:oper1, Fixed:oper2);
native Fixed:fdiv(Fixed:dividend, Fixed:divisor);
native Fixed:ffract(Fixed:value);
native fround(Fixed:value, fround_method:method=fround_round);
native Fixed:fpower(Fixed:value, exponent);
native Fixed:fsqroot(Fixed:value);
native Fixed:fabs(Fixed:value);
#pragma rational Fixed(3)
/* user defined operators */
native Fixed:operator*(Fixed:oper1, Fixed:oper2) = fmul;
native Fixed:operator/(Fixed:oper1, Fixed:oper2) = fdiv;
native Fixed:operator=(oper) = fixed;
stock Fixed:operator++(Fixed:oper)
return oper + fixed(1);
stock Fixed:operator--(Fixed:oper)
return oper - fixed(1);
stock Fixed:operator*(Fixed:oper1, oper2)
return Fixed: (_:oper1 * oper2); /* "*" is commutative */
stock Fixed:operator/(Fixed:oper1, oper2)
return oper1 / fixed(oper2);
stock Fixed:operator/(oper1, Fixed:oper2)
return fdiv(fixed(oper1), oper2);
stock Fixed:operator+(Fixed:oper1, oper2)
return oper1 + fixed(oper2); /* "+" is commutative */
stock Fixed:operator-(Fixed:oper1, oper2)
return oper1 - fixed(oper2);
stock Fixed:operator-(oper1, Fixed:oper2)
return fixed(oper1) - oper2;
stock bool:operator>(Fixed:oper1, oper2)
return oper1 > fixed(oper2);
stock bool:operator>(oper1, Fixed:oper2)
return fixed(oper1) > oper2;
stock bool:operator>=(Fixed:oper1, oper2)
return oper1 >= fixed(oper2);
stock bool:operator>=(oper1, Fixed:oper2)
return fixed(oper1) >= oper2;
stock bool:operator<(Fixed:oper1, oper2)
return oper1 < fixed(oper2);
stock bool:operator<(oper1, Fixed:oper2)
return fixed(oper1) < oper2;
stock bool:operator<=(Fixed:oper1, oper2)
return oper1 <= fixed(oper2);
stock bool:operator<=(oper1, Fixed:oper2)
return fixed(oper1) <= oper2;
stock bool:operator==(Fixed:oper1, oper2) /* "==" is commutative */
return oper1 == fixed(oper2);
stock bool:operator!=(Fixed:oper1, oper2) /* "!=" is commutative */
return oper1 != fixed(oper2);
/* forbidden operations */
forward operator%(Fixed:oper1, Fixed:oper2);
forward operator%(Fixed:oper1, oper2);
forward operator%(oper1, Fixed:oper2);

View File

@@ -0,0 +1,289 @@
/* mFile 1.1 by Minokon
*
* (c) Copyright by Minokon 2010
* (c) y_files Copyright by Y_Less 2010
*
*/
#if defined _mfile_included
#endinput
#endif
#define _mfile_included
//Defines
#define MAX_LINE_SIZE 80 //Max lenght of one line in file
#define MAX_KEY_SIZE 50 //Max lenght of key in line (to =)
#define MAX_VALUE_SIZE 50 //Max lenght of value in line (past =)
#define TMP_FILE "tmpfile.txt"
//Natives
/*
native mCreateFile(const file[]);
native mRemoveFile(const file[]);
native mClearFile(const file[]);
native bool:mFileExist(const file[]);
native mRenameFile(const file[], const newname[]);
native mFindFile(const name[], dest[], &index, sizename=sizeof dest);
native mCreateDir(const name[]);
native mRenameDir(const dir[], const newname[]);
native mFindDir(const name[], dest[], &index, sizename=sizeof dest);
native mHowLines(const file[]);
native mRemoveNewLine(string[]); //removes "\n" from string
native mGetString(const file[], const key[], bool:ignorecase=false);
native mGetInt(const file[], const key[], bool:ignorecase=false);
native mGetFloat(const file[], const key[], &Float:value);
native mSetString(const file[], const key[], const new_value[]);
native mSetInt(const file[], const key[], new_value);
native mSetFloat(const file[], const key[], Float:new_value);
native mIsSet(const file[], const key[], bool:ignorecase=false);
native mUnSet(const file[], const key[]);
native mIsFileEmpty(const file[]);
native y_files
*/
//y_files by Y_Less Functions
native ffind(const pattern[], filename[], len, &idx);
native frename(const oldname[], const newname[]);
native dfind(const pattern[], filename[], len, &idx);
native dcreate(const name[]);
native drename(const oldname[], const newname[]);
//Forwards
forward OnFileCreated(file[]);
forward OnFileRemoved(file[]);
forward OnFileCleared(file[]);
forward OnFileRenamed(oldname[], newname[]);
forward OnDirCreated(dir[]);
forward OnDirRenamed(oldname[], newname[]);
stock mCreateFile(const file[])
{
if(fexist(file)) fremove(file);
new File:mfile = fopen(file, io_write);
fclose(mfile);
CallLocalFunction("OnFileCreated", "s", file);
return 1;
}
stock mRemoveFile(const file[])
{
CallLocalFunction("OnFileRemoved", "s", file);
return fremove(file);
}
stock mClearFile(const file[])
{
if(!fremove(file)) return 0;
new File:mfile = fopen(file, io_write);
fclose(mfile);
CallLocalFunction("OnFileCleared", "s", file);
return 1;
}
stock bool:mFileExist(const file[])
if(fexist(file)) return true; //dla ciekawych: fexist nie zwraca booleanu
else return false;
stock mRenameFile(const file[], const newname[])
{
CallLocalFunction("OnFileRenamed", "ss", file, newname);
return frename(file, newname);
}
stock mFindFile(const name[], dest[], &index, sizename=sizeof dest)
return ffind(name, dest, sizename, index);
stock mCreateDir(const name[])
{
CallLocalFunction("OnDirCreated", "s", name);
return dcreate(name);
}
stock mRenameDir(const dir[], const newname[])
{
CallLocalFunction("OnDirRenamed", "ss", dir, newname);
return drename(dir, newname);
}
stock mFindDir(const name[], dest[], &index, sizename=sizeof dest)
return dfind(name, dest, sizename, index);
stock mHowLines(const file[])
{
new lines, str[MAX_LINE_SIZE];
new File:mfile = fopen(file, io_read);
while(fread(mfile, str)) lines++;
fclose(mfile);
return lines;
}
stock mRemoveNewLine(string[])
{
new pos = strfind(string, "\n");
if(pos != -1)
{
strdel(string, pos, pos+2);
return 1;
}
return 0;
}
stock mGetString(const file[], const key[], bool:ignorecase=false)
{
//Create file if not exists
if(!fexist(file))
{
new File:created = fopen(file, io_write);
fclose(created);
}
new //Variables
File:mfile = fopen(file, io_read), //Open file
str[MAX_LINE_SIZE],
str2[MAX_KEY_SIZE],
str3[MAX_VALUE_SIZE],
pos;
//Find key in file
while(fread(mfile, str))
{
pos = strfind(str, "=", ignorecase);
strmid(str2, str, 0, pos);
if(!strcmp(str2, key, ignorecase, strlen(key)+1))
{
strmid(str3, str, pos+1, strlen(str));
mRemoveNewLine(str3);
break;
}
}
fclose(mfile);
return str3;
}
stock mGetInt(const file[], const key[], bool:ignorecase=false)
return strval(mGetString(file, key, ignorecase));
stock mGetFloat(const file[], const key[], &Float:value, bool:ignorecase=false)
value = floatstr(mGetString(file, key, ignorecase));
stock mSetString(const file[], const key[], const new_value[])
{
//Create file if not exists
if(!fexist(file))
{
new File:created = fopen(file, io_write);
fclose(created);
}
new //Variables
str[MAX_LINE_SIZE],
str2[MAX_KEY_SIZE],
str3[MAX_LINE_SIZE],
bool:lFinded = false;
//Open file
new File:mfile = fopen(file, io_read);
//Create cache file
new File:tmpfile = fopen(TMP_FILE, io_write);
fclose(tmpfile);
//Open cache file
tmpfile = fopen(TMP_FILE, io_append);
format(str3, sizeof str3, "%s=%s\n", key, new_value);
while(fread(mfile, str))
{
strmid(str2, str, 0, strfind(str, "="));
if(!strcmp(str2, key))
{
fwrite(tmpfile, str3);
lFinded = true;
}
else
fwrite(tmpfile, str);
}
if(!lFinded) //if line not found
fwrite(tmpfile, str3);
//Close and remove old file
fclose(mfile);
fremove(file);
//Close cache file and rename it
fclose(tmpfile);
frename(TMP_FILE, file);
return 1;
}
stock mSetInt(const file[], const key[], new_value)
{
new str[MAX_VALUE_SIZE];
valstr(str, new_value);
mSetString(file, key, str);
return 1;
}
stock mSetFloat(const file[], const key[], Float:new_value)
{
new str[MAX_VALUE_SIZE];
format(str, sizeof str, "%f", new_value);
return mSetString(file, key, str);
}
stock bool:mIsSet(const file[], const key[], bool:ignorecase=false)
{
//If fexists return false
if(!fexist(file)) return false;
new //Variables
File:mfile = fopen(file, io_read), //Open file
str[MAX_LINE_SIZE],
str2[MAX_KEY_SIZE],
bool:finded = false;
//Find key in file
while(fread(mfile, str))
{
strmid(str2, str, 0, strfind(str, "="));
if(!strcmp(str2, key, ignorecase, strlen(key)+1))
{
finded = true;
break;
}
}
fclose(mfile);
return finded;
}
stock mUnSet(const file[], const key[])
{
if(!fexist(file)) return 0;
new //Variables
str[MAX_LINE_SIZE],
str2[MAX_KEY_SIZE];
//Open file
new File:mfile = fopen(file, io_read);
//Create cache file
new File:tmpfile = fopen(TMP_FILE, io_write);
fclose(tmpfile);
//Open cache file
tmpfile = fopen(TMP_FILE, io_append);
while(fread(mfile, str))
{
strmid(str2, str, 0, strfind(str, "="));
if(strcmp(str2, key) != 0)
fwrite(tmpfile, str);
}
//Close and remove old file
fclose(mfile);
fremove(file);
//Close cache file and rename it
fclose(tmpfile);
frename(TMP_FILE, file);
return 1;
}
stock bool:mIsFileEmpty(const file[])
{
if(!fexist(file)) return true;
new File:mfile = fopen(file, io_read);
if(flength(mfile) <= 1)
{
fclose(mfile);
return true;
}
else
{
fclose(mfile);
return false;
}
}

View File

@@ -0,0 +1,633 @@
/**--------------------------------------------------------------------------**\
====================================
y_testing - Run unit tests easilly
====================================
Description:
Runs any functions named as tests when the Testing_Run function is called.
Legal:
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is the YSI testing include.
The Initial Developer of the Original Code is Alex "Y_Less" Cole.
Portions created by the Initial Developer are Copyright (C) 2011
the Initial Developer. All Rights Reserved.
Contributors:
ZeeX, koolk, JoeBullet/Google63, g_aSlice/Slice
Thanks:
JoeBullet/Google63 - Handy arbitrary ASM jump code using SCTRL.
ZeeX - Very productive conversations.
koolk - IsPlayerinAreaEx code.
TheAlpha - Danish translation.
breadfish - German translation.
Fireburn - Dutch translation.
yom - French translation.
50p - Polish translation.
Zamaroht - Spanish translation.
Dracoblue, sintax, mabako, Xtreme, other coders - Producing other modes
for me to strive to better.
Pixels^ - Running XScripters where the idea was born.
Matite - Pestering me to release it and using it.
Very special thanks to:
Thiadmer - PAWN, whose limits continue to amaze me!
Kye/Kalcor - SA:MP.
SA:MP Team past, present and future - SA:MP.
Version:
1.0
Changelog:
16/02/12:
Added better error reporting (less verbose passes).
Removed "Tests:".
Added player requiring tests.
25/10/10:
Integrated in to YSI.
06/08/10:
First version
</remarks>
\**--------------------------------------------------------------------------**/
/*#if defined _inc_a_samp || defined _samp_included || defined _inc_y_version
#error y_testing must be the VERY FIRST include in your mode if being used.
#endif
// Now we redefined "native" to do something clever!
// "IsPlayerAttachedObjectSlotUsed" is an issue for us...
// "y_renative" allows native functions to be declared without constantly trying
// to redefine it.
#include "internal\y_renative"
#define native%0(%1); _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0@|||%1|||%0>_YSI_RE_STOCK<%0|||%1|||_:%0@>
//stock%0(%1){printf(_:_YSI_NO_SQUARE:"native "#%0" called");return _:%0@(%1);}
#define _YSI_RE_STOCK<%0|||%1|||%2> stock%0(%1){print(_:_YSI_NO_SQUARE:"native "#%0" called");return %2(%1);}
#define _YSI_NO_SQUARE:%0);%1(%2[%3]%4);} _YSI_NO_SQUARE:%0);%1(%2%4);}
//#define _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0:%1|||%2|||%3:%4>%5{%6;%7:%8:%9} _YSI_RE_NATIVE<%1|||%2|||%4>%5{%6;return%8:%9}
#define _YSI_NO_TAG_NATIVE:_YSI_RE_NATIVE<%0:%1|||%2|||%3:%4>_YSI_RE_STOCK<%5:%6|||%7|||_:%8:%9> _YSI_RE_NATIVE<%1|||%2|||%4>_YSI_RE_STOCK<%5:%6|||%7|||%8:%9>*/
#include <a_samp>
#if defined YSI_TESTS
#if defined INCLUDE_TESTS
#error Incompatible testing options (YSI_TESTS + INCLUDE_TESTS)
#endif
#if !defined RUN_TESTS
#define RUN_TESTS
#endif
#endif
#if defined INCLUDE_TESTS
#define RUN_TESTS
#define Debug_PrintT va_printf
#elseif defined RUN_TESTS
#define _AUTO_RUN_TESTS
#define Debug_PrintT va_printf
#else
#if _DEBUG > 0 || defined _YSI_SPECIAL_DEBUG
#define RUN_TESTS
#define _AUTO_RUN_TESTS
//#if defined _YSI_SPECIAL_DEBUG
// #define TP printf
// //#define TC(%0); %0
#define Debug_PrintT va_printf
//#else
// //#define TP P:0
// //#define TC C:0
//#endif
#else
#define Debug_PrintT(%0);
// #define Tests:%1() stock bool:Tests_@%1()
// #define Test:%1() stock bool:Test_@%1()
// #define TestInit:%1() stock Init_@%1()
// #define TestClose:%1() stock Shut_@%1()
#endif
#endif
#define Y_TESTING_DIALOG_ID (0x7974) // "yt"
#define TEST_TRUE(%0) Testing_Test(!!%0)
#define TEST_FALSE(%0) Testing_Test(!%0)
#define TEST_NULL(%0) Testing_Test(0 == %0)
#define TEST_NOT_NULL(%0) Testing_Test(0 != %0)
#define TEST_N(%0,%1) Testing_Test(%1 == %0)
#define TEST_TRUE_EX(%0,%2) Testing_Test(bool:(%0), (%2))
#define TEST_FALSE_EX(%0,%2) Testing_Test(!(%0), (%2))
#define TEST_NULL_EX(%0,%2) Testing_Test((%0) == 0, (%2))
#define TEST_N_EX(%0,%1,%2) Testing_Test((%0) == (%1), (%2))
#define TEST_MSG "\2\2\2\2\2"
#define TEST_FAILED "FAIL:"
#define TEST_PASSED "PASS!"
//#define TEST_FAILED "*** Test Failed:"
//#define TEST_PASSED "*** Test Passed:"
#define _Y_TESTEQ(%0) "\"%0\"")
#define _Y_TESTDQ:_Y_TESTEQ(%0"%1"%2) _Y_TESTDQ:_Y_TESTEQ(%0\x22;%1\x22;%2)
//#define _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)%1) _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x29;%1)
#define _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)%1) _Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x29;%1)
#define _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0(%1) _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0\x28;%1)
#define ASSERT(%0) Testing_Test(%0,TEST_MSG" %s", _Y_TESTOB:_Y_TESTCB:_Y_TESTDQ:_Y_TESTEQ(%0)
#define ASSERT_TRUE(%0) ASSERT(!!%0) //Testing_Test(!!%0,__name)
#define ASSERT_FALSE(%0) ASSERT(!%0) //Testing_Test(!%0,__name)
#define ASSERT_NULL(%0) ASSERT(0 == %0) //Testing_Test(0==%0,__name)
#define ASSERT_N:%1(%0) ASSERT(%1 == %0) //Testing_Test(%1==%0,__name)
#define ASK(%0) Testing_Ask(playerid,%0)
static stock
YSI_g_sFailMessage[512],
YSI_g_sPlayer = cellmax,
bool:YSI_g_sAsked,
YSI_g_sTests,
YSI_g_sFails;
#if defined RUN_TESTS
#define Test:%1() forward bool:Tezt_@%1(); public bool:Tezt_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
#define TestInit:%1() forward Init_@%1(); public Init_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define TestClose:%1() forward Shut_@%1(); public Shut_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define PTest:%1(%2) forward bool:Tezp_@%1(%2); public bool:Tezp_@%1(%2) for(new string:__name[]=#%1,bool:__once=(printf("*** Player Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
#define PTestInit:%1(%2) forward Inip_@%1(%2); public Inip_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define PTestClose:%1(%2) forward Shup_@%1(%2); public Shup_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#else
#define Test:%1() stock bool:Test_@%1()
#define TestInit:%1() stock Init_@%1()
#define TestClose:%1() stock Shut_@%1()
#define PTest:%1(%2) stock bool:Test_@%1(%2)
#define PTestInit:%1(%2) stock Init_@%1(%2)
#define PTestClose:%1(%2) stock Shut_@%1(%2)
#endif
// These all need to come AFTER the types are defined in case the have tests.
#include "internal\y_version"
#include "y_amx"
#include "internal\y_shortfunc"
#include "y_debug"
#include "internal\y_natives"
#include "y_va"
/**--------------------------------------------------------------------------**\
<summary>Testing_Ask</summary>
<param name="playerid">Player to ask a question to.</param>
<param name="str[]">What to ask.</param>
<param name="va_args<>">Additional data.</param>
<returns>
-
</returns>
<remarks>
Calls a dialog to ask the player if the given test actually passed.
</remarks>
\**--------------------------------------------------------------------------**/
stock Testing_Ask(playerid, str[] = "", va_args<>)
{
va_format(YSI_g_sFailMessage, sizeof (YSI_g_sFailMessage), str, va_start<2>);
ShowPlayerDialog(playerid, Y_TESTING_DIALOG_ID, DIALOG_STYLE_MSGBOX, "Did the test pass?", YSI_g_sFailMessage, "Yes", "No");
YSI_g_sAsked = true;
}
stock Testing_Test(bool:x, str[] = "", va_args<>)
{
P:3("Testing_Test called: %i, \"%s\"", x, str);
++YSI_g_sTests;
if (!x)
{
++YSI_g_sFails;
if (numargs() == 2)
{
P:T(TEST_FAILED " %s", va_start<1>);
//printf("*** Test failed: %s", str);
}
else
{
if (str[0] == '\2')
{
strunpack(str, !TEST_FAILED, 6);
str[5] = ' ';
}
P:T(str, va_start<2>);
}
}
#if defined TEST_SHOW_PASSES
else /*if (numargs() == 2)
{
P:T(TEST_PASSED " %s", va_start<1>);
}
else
{
P:T(str, va_start<2>);
if (str[0] == '\2')
{
strunpack(str, !TEST_PASSED, 17);
str[16] = ' ';
}
printf(str);
P:T(str, va_start<2>);*/
{
P:T(TEST_PASSED, va_start<2>);
}
#endif
}
/**--------------------------------------------------------------------------**\
<summary>Testing_Run</summary>
<param name="&tests">Number of tests run.</param>
<param name="&fails">Number of tests which failed.</param>
<param name="buffer[33]">The name of the first test which failed.</param>
<returns>
Wether all tests were sucessful or not.
</returns>
<remarks>
-
native Testing_Run(&tests, &fails, buffer[33] = "");
</remarks>
\**--------------------------------------------------------------------------**/
stock bool:Testing_Run(&tests, &fails, lastfail[33] = "", bool:p = false)
{
P:3("bool:Testing_Run called: %i, %i, \"%s\", %i", tests, fails, lastfail, p);
#pragma unused p, lastfail
#if defined RUN_TESTS
P:2("Testing_Run() called");
new
idx,
buffer[32];
while ((idx = AMX_GetPublicName(idx, buffer, "Tezt_@")))
{
strunpack(buffer, buffer);
//++YSI_g_sTests;
// Call the setup function if there is one.
buffer[0] = 'I';
buffer[1] = 'n';
buffer[2] = 'i';
buffer[3] = 't';
CallLocalFunction(buffer, "");
// Call the test.
buffer[0] = 'T';
buffer[1] = 'e';
buffer[2] = 'z';
buffer[3] = 't';
fails = YSI_g_sFails;
P:5("Testing_Run(): Calling %s", buffer[6]);
CallLocalFunction(buffer, "");
#if !defined TEST_SHOW_PASSES
if (YSI_g_sFails == fails)
{
printf(TEST_PASSED);
printf(" ");
}
#endif
/*if (YSI_g_sFails != fails)
{
if (YSI_g_sFails)
{
++YSI_g_sFails;
}
else
{
fails = 0;
// Copy the string over.
while ((lastfail[fails] = buffer[fails + 6])) ++fails;
YSI_g_sFails = 1;
}
//C:1(if (p) printf("*** Test failed: %s", buffer[fails + 6]););
}*/
// Call the shutdown function if there is one.
buffer[0] = 'S';
buffer[1] = 'h';
buffer[2] = 'u';
buffer[3] = 't';
CallLocalFunction(buffer, "");
}
tests = YSI_g_sTests;
fails = YSI_g_sFails;
return fails == 0;
#else
#pragma unused tests, fails, lastfail
return true;
#endif
}
/**--------------------------------------------------------------------------**\
<summary>Testing_Player</summary>
<param name="playerid">Player to test on.</param>
<param name="&idx">Next test to run.</param>
<param name="&tests">Number of tests run.</param>
<param name="&fails">Number of tests which failed.</param>
<param name="buffer[33]">The name of the first test which failed.</param>
<returns>
Wether all tests were sucessful or not.
</returns>
<remarks>
-
native Testing_Run(&tests, &fails, buffer[33] = "");
</remarks>
\**--------------------------------------------------------------------------**/
stock bool:Testing_Player(playerid, &idx, &tests, &fails, lastfail[33] = "", bool:p = false)
{
P:3("bool:Testing_Player called: %i, %i, %i, %i, \"%s\", %i", playerid, idx, tests, fails, lastfail, p);
#pragma unused p
#if defined RUN_TESTS
P:2("Testing_Player() called");
new
//idx,
buffer[32];
//while ((idx = AMX_GetPublicName(idx, buffer, "Tezt_@")))
if ((idx = AMX_GetPublicName(idx, buffer, "Tezp_@")))
{
strunpack(buffer, buffer);
//++YSI_g_sTests;
// Call the setup function if there is one.
buffer[0] = 'I';
buffer[1] = 'n';
buffer[2] = 'i';
buffer[3] = 'p';
CallLocalFunction(buffer, "");
// Call the test.
buffer[0] = 'T';
buffer[1] = 'e';
buffer[2] = 'z';
buffer[3] = 'p';
fails = YSI_g_sFails;
P:5("Testing_Player(): Calling %s", buffer[6]);
CallLocalFunction(buffer, "");
#if !defined TEST_SHOW_PASSES
if (YSI_g_sFails == fails)
{
printf(TEST_PASSED);
printf(" ");
}
#endif
/*if (YSI_g_sFails != fails)
{
if (YSI_g_sFails)
{
++YSI_g_sFails;
}
else
{
fails = 0;
// Copy the string over.
while ((lastfail[fails] = buffer[fails + 6])) ++fails;
YSI_g_sFails = 1;
}
//C:1(if (p) printf("*** Test failed: %s", buffer[fails + 6]););
}*/
// Call the shutdown function if there is one.
//buffer[0] = 'S';
//buffer[1] = 'h';
//buffer[2] = 'u';
//buffer[3] = 'p';
//CallLocalFunction(buffer, "");
}
tests = YSI_g_sTests;
fails = YSI_g_sFails;
return fails == 0;
#else
#pragma unused tests, fails, lastfail
return true;
#endif
}
#if defined RUN_TESTS
/*#define Test:%1() forward bool:Tezt_@%1(); public bool:Tezt_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
#define TestInit:%1() forward Init_@%1(); public Init_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define TestClose:%1() forward Shut_@%1(); public Shut_@%1() for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define PTest:%1(%2) forward bool:Tezp_@%1(%2); public bool:Tezp_@%1(%2) for(new string:__name[]=#%1,bool:__once=(printf("*** Player Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
//#define Tests:%1() forward bool:Test_@%1(); public bool:Test_@%1() for(new string:__name[]=#%1,bool:__once=(printf("*** Test %s start", __name) || TRUE);__once;__once=(printf(" ") && FALSE))
#define PTestInit:%1(%2) forward Inip_@%1(%2); public Inip_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))
#define PTestClose:%1(%2) forward Shup_@%1(%2); public Shup_@%1(%2) for(new string:__name[]=#%1,bool:__once=TRUE;__once;__once=(printf(" ", __name) && FALSE))*/
#if defined _AUTO_RUN_TESTS
#if !defined FILTERSCRIPT
// Hook main in gamemodes.
main()
{
// Disable error messages (as we're likely to generate them).
state ysi_debug : off;
CallLocalFunction("Testing_main", "");
new
tests,
fails;
printf(" ");
printf(" ||===================|| ");
printf(" || STARTING TESTS... || ");
printf(" ||===================|| ");
printf(" ");
Testing_Run(tests, fails, _, true);
printf("*** Tests: %d, Fails: %d", tests, fails);
if (!fails)
{
printf(" ");
printf(" ||===================|| ");
printf(" || ALL TESTS PASSED! || ");
printf(" ||===================|| ");
printf(" ");
}
state ysi_debug : on;
}
#define main forward Testing_main(); public Testing_main
Testing_Next(playerid)
{
new
buffer[32];
for ( ; ; )
{
new
fails = YSI_g_sFails;
// Get the last test (nicely fails for cellmax).
if ((YSI_g_sPlayer = AMX_GetPublicName(YSI_g_sPlayer, buffer, "Tezp_@")))
{
strunpack(buffer, buffer);
// Call the shutdown function if there is one.
buffer[0] = 'S';
buffer[1] = 'h';
buffer[2] = 'u';
buffer[3] = 'p';
CallLocalFunction(buffer, "i", playerid);
}
// Get the new test, but don't store the index.
if (AMX_GetPublicName(YSI_g_sPlayer, buffer, "Tezp_@"))
{
YSI_g_sAsked = false;
//++YSI_g_sTests;
strunpack(buffer, buffer);
// Call the setup function if there is one.
buffer[0] = 'I';
buffer[1] = 'n';
buffer[2] = 'i';
buffer[3] = 'p';
CallLocalFunction(buffer, "i", playerid);
// Call the test.
buffer[0] = 'T';
buffer[1] = 'e';
buffer[2] = 'z';
buffer[3] = 'p';
P:5("Testing_Next(): Calling %s", buffer[6]);
CallLocalFunction(buffer, "i", playerid);
}
else
{
YSI_g_sAsked = true;
// No more tests.
printf("*** Tests: %d, Fails: %d", YSI_g_sTests, YSI_g_sFails);
if (!YSI_g_sFails)
{
printf(" ");
printf(" ||==========================|| ");
printf(" || ALL PLAYER TESTS PASSED! || ");
printf(" ||==========================|| ");
printf(" ");
}
}
// If the test needs a player but doesn't ask them anything
// then we can't wait for "OnDialogResponse" to run the next
// one.
if (YSI_g_sAsked)
{
break;
}
else if (fails == YSI_g_sFails)
{
printf(TEST_PASSED);
}
}
//while (!YSI_g_sAsked);
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == Y_TESTING_DIALOG_ID)
{
++YSI_g_sTests;
if (response)
{
// Pass.
printf(TEST_PASSED);
}
else
{
// Fail.
printf(TEST_FAILED " %s", YSI_g_sFailMessage);
++YSI_g_sFails;
}
Testing_Next(playerid);
return 1;
}
#if defined Testing_OnDialogResponse
return Testing_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
#else
return 1;
#endif
}
#if defined _ALS_OnDialogResponse
#undef OnDialogResponse
#else
#define _ALS_OnDialogResponse
#endif
#define OnDialogResponse Testing_OnDialogResponse
#if defined Testing_OnDialogResponse
forward Testing_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
#endif
public OnPlayerSpawn(playerid)
{
if (YSI_g_sPlayer == cellmax && !IsPlayerNPC(playerid))
{
printf(" ");
printf(" ||==========================|| ");
printf(" || STARTING PLAYER TESTS... || ");
printf(" ||==========================|| ");
printf(" ");
YSI_g_sTests = 0;
YSI_g_sFails = 0;
Testing_Next(playerid);
}
#if defined Testing_OnPlayerSpawn
return Testing_OnPlayerSpawn(playerid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn Testing_OnPlayerSpawn
#if defined Testing_OnPlayerSpawn
forward Testing_OnPlayerSpawn(playerid);
#endif
#endif
#else
Testing_RunAll()
{
// Disable error messages (as we're likely to generate them).
state ysi_debug : off;
new
tests,
fails;
printf(" ");
printf(" ||===================|| ");
printf(" || STARTING TESTS... || ");
printf(" ||===================|| ");
printf(" ");
Testing_Run(tests, fails, _, true);
printf("*** Tests: %d, Fails: %d", tests, fails);
if (!fails)
{
printf(" ");
printf(" ||===================|| ");
printf(" || ALL TESTS PASSED! || ");
printf(" ||===================|| ");
printf(" ");
}
state ysi_debug : on;
}
#endif
#else
//#define Tests:%1() stock bool:Tests_@%1()
/*#define Test:%1() stock bool:Test_@%1()
#define TestInit:%1() stock Init_@%1()
#define TestClose:%1() stock Shut_@%1()
#define PTest:%1(%2) stock bool:Test_@%1(%2)
#define PTestInit:%1(%2) stock Init_@%1(%2)
#define PTestClose:%1(%2) stock Shut_@%1(%2)*/
#endif

18
samples/Text/01_top.ncl Normal file
View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="topProperty" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region height="50%" id="imageReg" top="50%"/>
</regionBase>
<descriptorBase>
<descriptor id="imageDescriptor" region="imageReg"/>
</descriptorBase>
</head>
<body>
<port component="image" id="entry"/>
<media descriptor="imageDescriptor" id="image" src="../resources/images/background.jpg"/>
</body>
</ncl>

View File

@@ -0,0 +1,34 @@
G04 DipTrace 2.4.0.2*
%INLIDARLite.ncl*%
%MOIN*%
%ADD11C,0.0394*%
%FSLAX44Y44*%
G04*
G70*
G90*
G75*
G01*
%LNBoardOutline*%
%LPD*%
X0Y23622D2*
D11*
X27953D1*
Y0D1*
X0D1*
Y23622D1*
X591Y23110D2*
X13819D1*
X591Y591D2*
Y11614D1*
Y12087D2*
Y23110D1*
X14291D2*
X27520D1*
X591Y591D2*
X13819D1*
X14291D2*
X27520D1*
Y11614D1*
Y12087D2*
Y23110D1*
M02*

View File

@@ -0,0 +1,22 @@
#define YmakeRoot $(DESTDIR)@prefix@
#define ManRoot $(DESTDIR)@mandir@
#define LibRoot $(DESTDIR)@libdir@/ncarg
#define SharePath $(DESTDIR)@datadir@
#define BuildWithF90 TRUE
#define IncSearch -I/usr/include/netcdf -I/usr/include/udunits2 -I/usr/include/freetype2 -I/usr/include/gdal
#define LibSearch -L@libdir@/hdf
#define BuildNetCDF4 1
#define NetCDF4lib -lnetcdf
#define BuildCAIRO 1
#define CAIROlib -lcairo -lfreetype
#define BuildGDAL 1
#define GDALlib -lgdal
#define BuildHDFEOS 0
#define BuildHDFEOS5 0
#define BuildTRIANGLE 0
#define HDFlib -lmfhdf -ldf -ljpeg -lz
#define HDF5lib -lhdf5_hl -lhdf5
#define BuildUdunits 1
#define UdUnitslib -ludunits2

46
samples/Text/main.ncl Normal file
View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
2008 PUC-RIO/LABORATORIO TELEMIDIA,
Some Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 2 as published by
the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License version 2 for more
details.
You should have received a copy of the GNU General Public License version 2
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-->
<ncl id="teste" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile
http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd">
<head>
<regionBase>
<region id="luaRegion" width="100%" height="100%"/>
</regionBase>
<descriptorBase>
<descriptor id="luaDesc" region="luaRegion" focusIndex="luaIdx"/>
</descriptorBase>
</head>
<body>
<port id="init" component="lua"/>
<media type="application/x-ginga-settings" id="programSettings">
<property name="currentKeyMaster" value="luaIdx"/>
</media>
<media id="lua" descriptor="luaDesc" src="game.lua"/>
</body>
</ncl>

45
samples/Text/min-help.ncl Normal file
View File

@@ -0,0 +1,45 @@
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Built-in/min.shtml
THE_TITLE:min
NCL Home > Documentation > Functions > General applied math
min
Computes the minimum value of a multi-dimensional array.
Prototype
function min (
value : numeric
)
return_val [1] : numeric
Arguments
value
An array of one or more numeric values of any dimension.
Return value
Returns a scalar of the same type as value.
Description
This function returns the minimum value for an array of any dimensionality. Missing values are ignored; a missing value
is returned only if all values are missing.
See Also
max, minind, maxind, dim_min, dim_max, dim_min_n, dim_max_n
Examples
Example 1
f = (/2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8/)
min_f = min(f)
print(min_f) ; Should be 2.1
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF

21
samples/Text/receiver.ncl Normal file
View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="sender" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region id="rTV" width="100%" height="100%" zIndex="1"/>
</regionBase>
<descriptorBase>
<descriptor id="dTV" region="rTV" />
</descriptorBase>
</head>
<body>
<port id="pLua" component="lua" />
<media id="lua" descriptor="dTV" src="receiver.lua" />
</body>
</ncl>

View File

@@ -0,0 +1,40 @@
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/rmMonAnnCycLLT.shtml
THE_TITLE:rmMonAnnCycLLT
NCL Home > Documentation > Functions > Climatology
rmMonAnnCycLLT
Removes the annual cycle from "monthly" data.
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
function rmMonAnnCycLLT (
x [*][*][*] : numeric
)
return_val [dimsizes(x)] : typeof(x)
Arguments
x
A three-dimensional array of monthly values, dimensioned lat x lon x time. The time dimension must be a multiple of 12.
Return value
The results are returned in an array of the same type and dimensionality as x. If the input data contains metadata, these
will be retained.
Description
This function removes the annual cycle from month (number of months = 12) data and subtracts the long term means from
each month.
See Also
rmMonAnnCycLLT, rmMonAnnCycTLL, rmMonAnnCycLLLT
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF

View File

@@ -0,0 +1,35 @@
THE_URL:file://localhost/Users/hubery/Public/ucar/Document/Functions/Contributed/zonalAve.shtml
THE_TITLE:zonalAve
NCL Home > Documentation > Functions > General applied math
zonalAve
Computes a zonal average of the input array.
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
function zonalAve (
x : numeric
)
return_val : typeof(x)
Arguments
x
An array of any size and type.
Return value
The results are returned in an array of the same type and one dimension smaller than x. Metadata are preserved.
Description
This function computes a zonal average of the input array x. If the input array has a "long_name" or "short_name"
attribute, it will be updated.
©2015 UCAR | Privacy Policy | Terms of Use | Contact the Webmaster | Sponsored by NSF

View File

@@ -0,0 +1,125 @@
<!-- ...................................................................... -->
<!-- XHTML Structure Module .............................................. -->
<!-- file: xhtml-struct-1.mod
This is XHTML, a reformulation of HTML as a modular XML application.
Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
Revision: $Id: xhtml-struct-1.mod,v 1.1.1.1 2006/01/09 19:23:30 rcrews Exp $ SMI
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-struct-1.mod"
Revisions:
(none)
....................................................................... -->
<!-- Document Structure
title, head, body, html
The Structure Module defines the major structural elements and
their attributes.
Note that the content model of the head element type is redeclared
when the Base Module is included in the DTD.
The parameter entity containing the XML namespace URI value used
for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
-->
<!-- title: Document Title ............................. -->
<!-- The title element is not considered part of the flow of text.
It should be displayed, for example as the page header or
window title. Exactly one title is required per document.
-->
<!ENTITY % title.element "INCLUDE" >
<![%title.element;[
<!ENTITY % title.content "( #PCDATA )" >
<!ENTITY % title.qname "title" >
<!ELEMENT %title.qname; %title.content; >
<!-- end of title.element -->]]>
<!ENTITY % title.attlist "INCLUDE" >
<![%title.attlist;[
<!ATTLIST %title.qname;
%XHTML.xmlns.attrib;
%I18n.attrib;
>
<!-- end of title.attlist -->]]>
<!-- head: Document Head ............................... -->
<!ENTITY % head.element "INCLUDE" >
<![%head.element;[
<!ENTITY % head.content
"( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )"
>
<!ENTITY % head.qname "head" >
<!ELEMENT %head.qname; %head.content; >
<!-- end of head.element -->]]>
<!ENTITY % head.attlist "INCLUDE" >
<![%head.attlist;[
<!-- reserved for future use with document profiles
-->
<!ENTITY % profile.attrib
"profile %URI.datatype; '%XHTML.profile;'"
>
<!ATTLIST %head.qname;
%XHTML.xmlns.attrib;
%I18n.attrib;
%profile.attrib;
>
<!-- end of head.attlist -->]]>
<!-- body: Document Body ............................... -->
<!ENTITY % body.element "INCLUDE" >
<![%body.element;[
<!ENTITY % body.content
"( %Block.mix; )+"
>
<!ENTITY % body.qname "body" >
<!ELEMENT %body.qname; %body.content; >
<!-- end of body.element -->]]>
<!ENTITY % body.attlist "INCLUDE" >
<![%body.attlist;[
<!ATTLIST %body.qname;
%Common.attrib;
>
<!-- end of body.attlist -->]]>
<!-- html: XHTML Document Element ...................... -->
<!ENTITY % html.element "INCLUDE" >
<![%html.element;[
<!ENTITY % html.content "( %head.qname;, %body.qname; )" >
<!ENTITY % html.qname "html" >
<!ELEMENT %html.qname; %html.content; >
<!-- end of html.element -->]]>
<!ENTITY % html.attlist "INCLUDE" >
<![%html.attlist;[
<!-- version attribute value defined in driver
-->
<!ENTITY % XHTML.version.attrib
"version %FPI.datatype; #FIXED '%XHTML.version;'"
>
<!-- see the Qualified Names module for information
on how to extend XHTML using XML namespaces
-->
<!ATTLIST %html.qname;
%XHTML.xmlns.attrib;
%XHTML.version.attrib;
%I18n.attrib;
>
<!-- end of html.attlist -->]]>
<!-- end of xhtml-struct-1.mod -->

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<faces-config-extension>
<namespace-uri>http://www.ibm.com/xsp/custom</namespace-uri>
<default-prefix>xc</default-prefix>
</faces-config-extension>
<composite-component>
<component-type>navbar</component-type>
<composite-name>navbar</composite-name>
<composite-file>/navbar.xsp</composite-file>
<composite-extension>
<designer-extension>
<in-palette>true</in-palette>
</designer-extension>
</composite-extension>
</composite-component>
</faces-config>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?><note class="form" maintenanceversion="1.0" replicaid="88257E000001FF59" version="9.0" xmlns="http://www.lotus.com/dxl">
<noteinfo noteid="1aa" sequence="14" unid="47D707801D48026E85257C48007E06C7">
<created><datetime>20131221T175632,71-05</datetime></created>
<modified><datetime>20150305T194407,22-08</datetime></modified>
<revised><datetime>20150305T194407,21-08</datetime></revised>
<lastaccessed><datetime>20150305T194407,22-08</datetime></lastaccessed>
<addedtofile><datetime>20150305T162153,30-08</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Eric McCormick/O=Eric McCormick</name></updatedby>
<wassignedby><name>CN=Eric McCormick/O=Eric McCormick</name></wassignedby>
<item name="$Flags"><text>gC~4;</text></item>
<item name="$TITLE"><text>navbar.xsp</text></item>
<item name="$FileNames" sign="true"><text>navbar.xsp</text></item>
<item name="$DesignerVersion"><text>8.5.3</text></item>
</note>

30
samples/xBase/sample.ch Normal file
View File

@@ -0,0 +1,30 @@
#ifndef __HARBOUR__
#ifndef __XPP__
#ifndef __CLIP__
#ifndef FlagShip
#define __CLIPPER__
#endif
#endif
#endif
#endif
/* File create flags */
#define FC_NORMAL 0 /* No file attributes are set */
#define FC_READONLY 1
#define FC_HIDDEN 2
#define FC_SYSTEM 4
// New-style comment
#command SET DELETED <x:ON,OFF,&> => Set( _SET_DELETED, <(x)> )
#command SET DELETED (<x>) => Set( _SET_DELETED, <x> )
#command @ <row>, <col> SAY <exp> [PICTURE <pic>] [COLOR <clr>] => ;
DevPos( <row>, <col> ) ; DevOutPict( <exp>, <pic> [, <clr>] )
#command ENDIF <*x*> => endif
#ifdef __CLIPPER__
#xtranslate hb_MemoWrit( [<x,...>] ) => MemoWrit( <x> )
#xtranslate hb_dbExists( <t> ) => File( <t> )
#xtranslate hb_dbPack() => __dbPack()
#xtranslate hb_default( @<v>, <x> ) => iif( StrTran( ValType( <v> ), "M", "C" ) == StrTran( ValType( <x> ), "M", "C" ),, <v> := <x>, )
#endif

167
samples/xBase/sample.prg Normal file
View File

@@ -0,0 +1,167 @@
#require "hbtest"
#pragma linenumber=on
#include "hbclass.ch"
#stdout "stdout"
#warning "warning"
#define MYCONST 100
#undef MYCONST
#ifdef __HARBOUR__
#else
#endif
#if defined( __HARBOUR__ ) .OR. .T.
#elif defined( __HARBOUR__ )
#endif
THREAD STATIC t_var := "thread"
REQUEST AllTrim
ANNOUNCE my_module
PROCEDURE Main()
MEMVAR p_var, m_var
FIELD fld
STATIC s_test := "static"
LOCAL o := TTest():New( "one", "two" ), tmp
LOCAL oError
LOCAL bBlock := {| tmp | QOut( tmp ) }
LOCAL hHash := { "name" => "value", "name2" => "value2", 2 => 1 }
PUBLIC p_var := "public"
PRIVATE m_var := "private"
PARAMETERS p1
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
CLS
@ 10, 10 SAY "Hello world!"
? hb_ValToExp( o )
? m->p1
? hHash[ "name" ], hHash[ 2 ]
FOR tmp := 1 TO 10 STEP 2
? tmp
NEXT
FOR EACH tmp IN { "a", "b" } DESCEND
? tmp
NEXT
? 10.01 + 2 - 3 / 4 * 5 ^ 6 ** 1
? 2 < 1, 2 > 1, 2 >= 1, 2 <= 1, 2 == 1, 2 = 1, 2 != 1, 2 <> 1, 2 # 1
? -( 1 + 2 ), "a" $ "ab", 10 % 2
tmp := 0
DO WHILE tmp < 2
? tmp++
ENDDO
tmp := 0
WHILE tmp < 2
? ++tmp
IF tmp >= 0xFF
LOOP
ENDIF
EXIT
ENDDO
--tmp
tmp--
IF tmp < -10.0
? NIL
ELSEIF .F.
? 0d19800101
ELSE
? "string"
ENDIF
DO CASE
CASE tmp == 1
? "A"
OTHERWISE
? "B"
ENDCASE
SWITCH tmp
CASE 1
? "A"
EXIT
OTHERWISE
? "B"
ENDSWITCH
BEGIN SEQUENCE WITH __BreakBlock()
BREAK
RECOVER USING oError
END /* SEQUENCE */
local_func( @hHash )
RETURN
INIT PROCEDURE init_proc()
RETURN
EXIT PROCEDURE exit_proc()
RETURN
PROCEDURE returning_nothing()
RETURN
FUNCTION pub_func()
RETURN .T.
STATIC FUNCTION local_func()
RETURN .F.
CREATE CLASS TTest INHERIT TParent
VAR One, Two
METHOD New( One )
METHOD Test() INLINE QOut( "Hello" )
METHOD MethProc()
ENDCLASS
METHOD PROCEDURE MethProc()
RETURN
METHOD New( One ) CLASS TTest
::super:New()
::One := One
RETURN Self
CREATE CLASS TParent
VAR One
METHOD New()
ENDCLASS
METHOD New() CLASS TParent
? "TParent:New()"
RETURN Self
// This is a comment
/* This is a comment */
/* This is
a comment */
* This is a comment
&& This is a comment
NOTE This is a comment
note This is a comment
NOTE
FUNCTION pub_func2()
? "hello world!"
? 'hello world!'
? "hello\world!"
? "\"
? "hello world!"
RETURN .T.

50
test/fixtures/Generated/ABM8G.mod vendored Normal file
View File

@@ -0,0 +1,50 @@
PCBNEW-LibModule-V1 Wed 10 Aug 2011 05:57:27 PM COT
# encoding utf-8
$INDEX
ABM8G
$EndINDEX
$MODULE ABM8G
Po 0 0 0 15 4E430CBD 4E430CC5 ~~
Li ABM8G
Sc 4E430CC5
AR
Op 0 0 0
T0 591 -1378 354 354 0 39 N V 21 N "ABM8G"
T1 0 787 354 354 0 39 N V 21 N "VAL**"
DS -591 394 1299 394 79 21
DS 1299 394 1299 -1063 79 21
DS 1299 -1063 -472 -1063 79 21
DS -472 -1063 -472 472 79 21
DS -472 472 -472 551 79 21
DS -472 551 -591 551 79 21
DS -591 551 -591 433 79 21
$PAD
Sh "1" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 0 0
$EndPAD
$PAD
Sh "2" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 866 0
$EndPAD
$PAD
Sh "3" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 866 -669
$EndPAD
$PAD
Sh "4" R 551 472 0 0 0
Dr 0 0 0
At SMD N 00888000
Ne 0 ""
Po 0 -669
$EndPAD
$EndMODULE ABM8G
$EndLIBRARY

19
test/fixtures/Generated/ms2.mod vendored Normal file
View File

@@ -0,0 +1,19 @@
GFORTRAN module version '0' created from ms2.f90 on Thu Sep 5 10:09:19 2013
MD5:8a80cd5db1bc612a28603959302dbf37 -- If you edit this, you'll get what you deserve.
(() () () () () () () () () () () () () () () () () () () () () () () ()
() () ())
()
()
()
()
(2 'ms2' 'ms2' 'ms2' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
)
('ms2' 0 2)

1
test/fixtures/SVG/alg_schema.link.svg vendored Symbolic link
View File

@@ -0,0 +1 @@
alg_schema.svg

269
test/fixtures/SVG/alg_schema.svg vendored Normal file
View File

@@ -0,0 +1,269 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="alg_schema.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.834386"
inkscape:cx="409.42881"
inkscape:cy="681.83774"
inkscape:document-units="px"
inkscape:current-layer="g3759"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="993"
inkscape:window-x="1280"
inkscape:window-y="31"
inkscape:window-maximized="0"
showguides="true"
inkscape:snap-global="false">
<inkscape:grid
type="xygrid"
id="grid3914" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3759"
transform="translate(-3.3909149,-21.218048)">
<rect
ry="11.855058"
rx="14.468504"
y="138.58023"
x="108.08632"
height="66.263969"
width="247.48737"
id="rect2985"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755"
y="163.58023"
x="238.39091"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="163.58023"
x="238.39091"
id="tspan3757"
sodipodi:role="line">Sequence KEY</tspan><tspan
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="193.58023"
x="238.39091"
sodipodi:role="line"
id="tspan4055">256 bits</tspan></text>
</g>
<g
id="g3870"
transform="translate(-0.73178617,29.27145)">
<g
id="g3759-5"
transform="translate(-0.40143056,286.32219)">
<rect
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2985-5"
width="247.48737"
height="74.751289"
x="108.08632"
y="130.09291"
rx="14.468504"
ry="13.373494" />
<flowRoot
transform="translate(2.4712344,-292.01415)"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
id="flowRoot3797"
xml:space="preserve"><flowRegion
id="flowRegion3799"><rect
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="428.79074"
x="125"
height="58.346195"
width="86.479271"
id="rect3801" /></flowRegion><flowPara
id="flowPara3805">Salt</flowPara><flowPara
id="flowPara3841">96 bits</flowPara></flowRoot> <flowRoot
transform="translate(115.26831,-291.40674)"
style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
id="flowRoot3797-6"
xml:space="preserve"><flowRegion
id="flowRegion3799-5"><rect
style="font-size:24px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
y="428.79074"
x="125"
height="60.933453"
width="104.07261"
id="rect3801-6" /></flowRegion><flowPara
id="flowPara3805-9">Counter</flowPara><flowPara
id="flowPara3809-3">32 bits</flowPara></flowRoot> <path
inkscape:connector-curvature="0"
id="path3845"
d="m 229.11476,138.88943 0,57.95451"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
transform="matrix(0.6979728,0,0,0.6979728,71.363842,197.71804)"
id="g3759-7">
<rect
ry="13.373494"
rx="14.297379"
y="130.09291"
x="108.08632"
height="74.751289"
width="244.56023"
id="rect2985-4"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755-5"
y="178.58023"
x="141.31805"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:32px;fill:#beff83;fill-opacity:1"
y="178.58023"
x="141.31805"
id="tspan3757-2"
sodipodi:role="line">AES Cipher</tspan></text>
</g>
<path
style="fill:#6ea1cc;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
d="m 225,437.36218 0,-50 -15,5 25,-35 25,35 -15,-5 0,50 z"
id="path3912"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 340,302.36218 50,0 -5,-15 35,25 -35,25 5,-15 -50,0 z"
id="path3912-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 245,192.36218 0,50 15,-5 -25,35 -25,-35 15,5 0,-50 z"
id="path3912-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<g
transform="matrix(0.6979728,0,0,0.6979728,361.36384,197.71804)"
id="g3759-7-7">
<rect
ry="13.373494"
rx="17.857012"
y="130.09291"
x="108.08632"
height="74.751289"
width="305.44867"
id="rect2985-4-4"
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755-5-4"
y="159.80484"
x="255.9357"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1"
y="159.80484"
x="255.9357"
sodipodi:role="line"
id="tspan3979">Secure random data</tspan><tspan
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1"
y="192.04105"
x="255.9357"
sodipodi:role="line"
id="tspan3983">128 bits</tspan></text>
</g>
<path
style="fill:#6ea1cc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.45614035"
d="m 550,352.36218 0,50 15,-5 -25,35 -25,-35 15,5 0,-50 z"
id="path3912-5-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="540"
y="382.36218"
id="text4003"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="540"
y="382.36218"
id="tspan4007"
style="font-size:16px;text-align:center;text-anchor:middle">Division by alphabet length</tspan><tspan
sodipodi:role="line"
x="540"
y="402.36218"
style="font-size:16px;text-align:center;text-anchor:middle"
id="tspan4053">repeated passcode-length times.</tspan></text>
<g
transform="matrix(0.6979728,0,0,0.6979728,344.55869,369.3865)"
id="g3759-7-7-7">
<g
id="g4045"
transform="translate(-1.21417,-6.070852)">
<rect
style="fill:#1f3d55;fill-opacity:1;fill-rule:evenodd;stroke:#3f5d75;stroke-width:7.16360283;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2985-4-4-8"
width="305.44867"
height="74.751289"
x="131.15555"
y="130.09291"
rx="17.857012"
ry="13.373494" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#beff83;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="283.77673"
y="158.71724"
id="text3755-5-4-6"
sodipodi:linespacing="125%"><tspan
id="tspan3983-8"
sodipodi:role="line"
x="283.77673"
y="158.71724"
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1">Passcode</tspan><tspan
id="tspan4043"
sodipodi:role="line"
x="283.77673"
y="190.95346"
style="font-size:25.78897095px;text-align:center;text-anchor:middle;fill:#beff83;fill-opacity:1">2-16 characters</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -279,6 +279,9 @@ class TestBlob < Minitest::Test
# Rails vendor/
assert sample_blob("vendor/plugins/will_paginate/lib/will_paginate.rb").vendored?
# Vendor/
assert sample_blob("Vendor/my_great_file.h").vendored?
# 'thirdparty' directory
assert sample_blob("thirdparty/lib/main.c").vendored?
@@ -480,6 +483,12 @@ class TestBlob < Minitest::Test
# Vagrant
assert sample_blob("puphpet/file.pp").vendored?
# Fabric.io
assert sample_blob("Fabric.framework/Fabric.h").vendored?
# Crashlytics
assert sample_blob("Crashlytics.framework/Crashlytics.h").vendored?
end
def test_documentation
@@ -504,6 +513,21 @@ class TestBlob < Minitest::Test
assert_predicate fixture_blob("README.txt"), :documentation?
assert_predicate fixture_blob("foo/README"), :documentation?
assert_predicate fixture_blob("CHANGE"), :documentation?
assert_predicate fixture_blob("CHANGE.md"), :documentation?
assert_predicate fixture_blob("CHANGE.txt"), :documentation?
assert_predicate fixture_blob("foo/CHANGE"), :documentation?
assert_predicate fixture_blob("CHANGELOG"), :documentation?
assert_predicate fixture_blob("CHANGELOG.md"), :documentation?
assert_predicate fixture_blob("CHANGELOG.txt"), :documentation?
assert_predicate fixture_blob("foo/CHANGELOG"), :documentation?
assert_predicate fixture_blob("CHANGES"), :documentation?
assert_predicate fixture_blob("CHANGES.md"), :documentation?
assert_predicate fixture_blob("CHANGES.txt"), :documentation?
assert_predicate fixture_blob("foo/CHANGES"), :documentation?
assert_predicate fixture_blob("CONTRIBUTING"), :documentation?
assert_predicate fixture_blob("CONTRIBUTING.md"), :documentation?
assert_predicate fixture_blob("CONTRIBUTING.txt"), :documentation?
@@ -551,6 +575,8 @@ class TestBlob < Minitest::Test
blob = fixture_blob(filepath)
if language == 'Data'
assert blob.language.nil?, "A language was found for #{filepath}"
elsif language == 'Generated'
assert blob.generated?, "#{filepath} is not a generated file"
else
assert blob.language, "No language for #{filepath}"
assert_equal language, blob.language.name, blob.name

View File

@@ -22,6 +22,17 @@ class TestHeuristcs < Minitest::Test
assert_equal [], results
end
def assert_heuristics(hash)
candidates = hash.keys.map { |l| Language[l] }
hash.each do |language, blobs|
Array(blobs).each do |blob|
result = Heuristics.call(file_blob(blob), candidates)
assert_equal [Language[language]], result, "Failed for #{blob}"
end
end
end
# Candidate languages = ["C++", "Objective-C"]
def test_obj_c_by_heuristics
# Only calling out '.h' filenames as these are the ones causing issues
@@ -122,7 +133,7 @@ class TestHeuristcs < Minitest::Test
assert_heuristics({
"Frege" => all_fixtures("Frege"),
"Forth" => all_fixtures("Forth"),
"Text" => all_fixtures("Text")
"Text" => all_fixtures("Text", "*.fr")
})
end
@@ -147,17 +158,6 @@ class TestHeuristcs < Minitest::Test
})
end
def assert_heuristics(hash)
candidates = hash.keys.map { |l| Language[l] }
hash.each do |language, blobs|
Array(blobs).each do |blob|
result = Heuristics.call(file_blob(blob), candidates)
assert_equal [Language[language]], result, "Failed for #{blob}"
end
end
end
def test_ls_by_heuristics
assert_heuristics({
"LiveScript" => "LiveScript/hello.ls",
@@ -171,4 +171,10 @@ class TestHeuristcs < Minitest::Test
"XML" => all_fixtures("XML", "*.ts")
})
end
def test_ch_by_heuristics
assert_heuristics({
"xBase" => all_fixtures("xBase")
})
end
end

View File

@@ -25,6 +25,10 @@ class TestTokenizer < Minitest::Test
assert_equal %w(add \( \)), tokenize('add(123, 456)')
assert_equal %w(|), tokenize('0x01 | 0x10')
assert_equal %w(*), tokenize('500.42 * 1.0')
assert_equal %w(), tokenize('1.23e-04')
assert_equal %w(), tokenize('1.0f')
assert_equal %w(), tokenize('1234ULL')
assert_equal %w(G1 X55 Y5 F2000), tokenize('G1 X55 Y5 F2000')
end
def test_skip_comments

1
vendor/grammars/SMT.tmbundle vendored Submodule

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