Bit sequence matchers for building emulators in Dart.
Patterns can be created from a sequence of 0s, 1s and variable length chunks.
// Create a pattern that matches any integer whose most significant byte is // 0x6 and whose least significant byte is anything. var pattern = new BitPattern([0, 1, 1, 0, v(4, 'lsb')]);
The pattern can be used to determine whether an integer uses an equivalent bit sequence.
pattern.matches(0x60); // == true pattern.matches(0x6F); // == true pattern.matches(0x50); // == false
Patterns can be put into groups to simplify matching multiple patterns against an integer using a PatternGroup.
var pattern0x1 = new BitPattern([0, 0, 0, 1]); var pattern0xF = new BitPattern([1, 1, 1, 1]); var patternGroup = new BitPatternGroup([pattern0x1, pattern0xF]); patternGroup.match(0x1) == pattern0x1; // true patternGroup.match(0xF) == pattern0xF; // true patternGroup.match(0x6) == null; // true
If there are multiple BitPatterns in a PatternGroup that match some integer, the group with the fewest number of non-variable bits is returned. If two or more matched patterns have an identical number of non-variable bits, then these two patterns are incompatible and a BitPatternException is raised.
var pattern0xE = new BitPattern([0, 1, 1, 1]); var patternAny1 = new BitPattern([v(4, 'any1')]); var patternAny2 = new BitPattern([v(4, 'any2')]); var patternGroup = new BitPatternGroup([patternAny1, pattern0xE, patternAny2]); patternGroup.match(0xE) == pattern0xE; // true patternGroup.match(0xF) == patternAny2; // error! Both patternAny1 and patternAny2 match!
Add this to your package's pubspec.yaml file:
dependencies: bit_pattern: "^0.0.1"
You can install packages from the command line:
$ pub get
Alternatively, your editor might support
Check the docs for your editor to learn more.
Now in your Dart code, you can use:
|0.0.1||May 22, 2017|
|0.0.4-alpha||May 27, 2017|
|0.0.3-alpha||May 23, 2017|
|0.0.2-alpha||May 22, 2017|
We analyzed this package, and provided a score, details, and suggestions below.
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Detected platforms: unsure
Error(s) prevent platform classification.
Strong-mode analysis of
lib/bit_pattern.dartfailed with the following error:
line: 4 col: 8
Target of URI doesn't exist: 'package:collection/collection.dart'.
Fix platform conflicts.
Make sure none of the libraries use mutually exclusive dependendencies.
Changelog entries help clients to follow the progress in your code.
Fix issues reported by
dartanalyzerreported 1 error(s) and 0 warning(s).
The description is too short.
Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.
Package is pre-v1 release.
While there is nothing inherently wrong with versions of
0.*.*, it usually means that the author is still experimenting with the general direction API.
Maintain an example.
Create a short demo in the
example/directory to show how to use this package. Common file name patterns include:
example.dartor you could also use