50 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Factor
		
	
	
| USING: arrays help.markup help.syntax kernel
 | |
| kernel.private prettyprint strings vectors sbufs ;
 | |
| IN: bit-arrays
 | |
| 
 | |
| ARTICLE: "bit-arrays" "Bit arrays"
 | |
| "Bit array are a fixed-size mutable sequences (" { $link "sequence-protocol" } ") whose elements are either " { $link t } " or " { $link f } ". Each element only uses one bit of storage, hence the name. The literal syntax is covered in " { $link "syntax-bit-arrays" } "."
 | |
| $nl
 | |
| "Bit array words are in the " { $vocab-link "bit-arrays" } " vocabulary."
 | |
| $nl
 | |
| "Bit arrays play a special role in the C library interface; they can be used to pass binary data back and forth between Factor and C. See " { $link "c-byte-arrays" } "."
 | |
| $nl
 | |
| "Bit arrays form a class of objects:"
 | |
| { $subsection bit-array }
 | |
| { $subsection bit-array? }
 | |
| "Creating new bit arrays:"
 | |
| { $subsection >bit-array }
 | |
| { $subsection <bit-array> }
 | |
| "Efficiently setting and clearing all bits in a bit array:"
 | |
| { $subsection set-bits }
 | |
| { $subsection clear-bits } ;
 | |
| 
 | |
| ABOUT: "bit-arrays"
 | |
| 
 | |
| HELP: bit-array
 | |
| { $description "The class of fixed-length bit arrays. See " { $link "syntax-bit-arrays" } " for syntax and " { $link "bit-arrays" } " for general information." } ;
 | |
| 
 | |
| HELP: <bit-array> ( n -- bit-array )
 | |
| { $values { "n" "a non-negative integer" } { "bit-array" "a new " { $link bit-array } } }
 | |
| { $description "Creates a new bit array with the given length and all elements initially set to " { $link f } "." } ;
 | |
| 
 | |
| HELP: >bit-array
 | |
| { $values { "seq" "a sequence" } { "bit-array" bit-array } }
 | |
| { $description "Outputs a freshly-allocated bit array whose elements have the same boolean values as a given sequence." } ;
 | |
| 
 | |
| HELP: clear-bits
 | |
| { $values { "bit-array" bit-array } }
 | |
| { $description "Sets all elements of the bit array to " { $link f } "." }
 | |
| { $notes "Calling this word is more efficient than the following:"
 | |
|     { $code "[ drop f ] change-each" }
 | |
| }
 | |
| { $side-effects "bit-array" } ;
 | |
| 
 | |
| HELP: set-bits
 | |
| { $values { "bit-array" bit-array } }
 | |
| { $description "Sets all elements of the bit array to " { $link t } "." }
 | |
| { $notes "Calling this word is more efficient than the following:"
 | |
|     { $code "[ drop t ] change-each" }
 | |
| }
 | |
| { $side-effects "bit-array" } ;
 |