| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: arrays kernel kernel.private math sequences | 
					
						
							| 
									
										
										
										
											2008-04-19 23:56:28 -04:00
										 |  |  | sequences.private growable bit-arrays prettyprint.backend | 
					
						
							| 
									
										
										
										
											2008-04-20 03:30:52 -04:00
										 |  |  | parser accessors ;
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | IN: bit-vectors | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | TUPLE: bit-vector | 
					
						
							| 
									
										
										
										
											2008-07-02 03:03:30 -04:00
										 |  |  | { underlying bit-array initial: ?{ } } | 
					
						
							| 
									
										
										
										
											2008-06-29 22:37:57 -04:00
										 |  |  | { length array-capacity } ;
 | 
					
						
							| 
									
										
										
										
											2008-04-20 01:18:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | : <bit-vector> ( n -- bit-vector )
 | 
					
						
							| 
									
										
										
										
											2008-07-01 21:19:03 -04:00
										 |  |  |     <bit-array> 0 bit-vector boa ; inline
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-20 01:18:27 -04:00
										 |  |  | : >bit-vector ( seq -- bit-vector )
 | 
					
						
							|  |  |  |     T{ bit-vector f ?{ } 0 } clone-like ;
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: bit-vector like | 
					
						
							|  |  |  |     drop dup bit-vector? [ | 
					
						
							|  |  |  |         dup bit-array? | 
					
						
							| 
									
										
										
										
											2008-07-01 21:19:03 -04:00
										 |  |  |         [ dup length bit-vector boa ] [ >bit-vector ] if
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  |     ] unless ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-13 13:54:58 -04:00
										 |  |  | M: bit-vector new-sequence | 
					
						
							| 
									
										
										
										
											2008-07-01 21:19:03 -04:00
										 |  |  |     drop [ <bit-array> ] [ >fixnum ] bi bit-vector boa ;
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: bit-vector equal? | 
					
						
							|  |  |  |     over bit-vector? [ sequence= ] [ 2drop f ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-30 02:40:22 -05:00
										 |  |  | M: bit-array new-resizable drop <bit-vector> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | INSTANCE: bit-vector growable | 
					
						
							| 
									
										
										
										
											2008-04-19 23:56:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-20 03:30:52 -04:00
										 |  |  | : ?V{ \ } [ >bit-vector ] parse-literal ; parsing | 
					
						
							| 
									
										
										
										
											2008-04-19 23:56:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-20 01:18:27 -04:00
										 |  |  | M: bit-vector >pprint-sequence ;
 | 
					
						
							| 
									
										
										
										
											2008-04-19 23:56:28 -04:00
										 |  |  | M: bit-vector pprint-delims drop \ ?V{ \ } ;
 | 
					
						
							| 
									
										
										
										
											2008-09-06 04:23:54 -04:00
										 |  |  | M: bit-vector pprint* pprint-object ;
 |