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, nibble('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([nibble('any1')]); var patternAny2 = new BitPattern([nibble('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.2-alpha
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|
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]
This package version is not analyzed, because it is more than two years old. Check the latest stable version for its analysis.
The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.
dartdoc successfully runs on your package's source files. (-10 points)
Dependencies were not resolved.
|Dart SDK||>=1.22.0 <2.0.0|