[
0 B{ 1 2 3 4 } <displaced-alien> <void*>
] must-fail
-[ t ] [ { t f t } >c-bool-array { 1 0 1 } >c-int-array = ] unit-test
-
+
- [ -2147467259 ] [ 2147500037 <long> *long ] unit-test
+ os windows? cpu x86.64? and [
++ [ -2147467259 ] [ 2147500037 <long> *long ] unit-test
+ ] when
: new-c-type ( class -- type )
new
- int-regs >>reg-class ; inline
+ int-regs >>reg-class
- object >>class ;
++ object >>class ; inline
: <c-type> ( -- type )
\ c-type new-c-type ;
: if-void ( type true false -- )
pick "void" = [ drop nip call ] [ nip call ] if ; inline
+: primitive-types
+ {
+ "char" "uchar"
+ "short" "ushort"
+ "int" "uint"
+ "long" "ulong"
+ "longlong" "ulonglong"
+ "float" "double"
+ "void*" "bool"
+ } ;
+
[
<c-type>
+ c-ptr >>class
[ alien-cell ] >>getter
[ set-alien-cell ] >>setter
bootstrap-cell >>size
sequences sequences.private tools.test namespaces.private
slots.private sequences.private byte-arrays alien
alien.accessors layouts words definitions compiler.units io
- combinators vectors ;
-combinators vectors float-arrays grouping make ;
++combinators vectors grouping make ;
IN: compiler.tests
! Originally, this file did black box testing of templating
compiler.tree.propagation.info compiler.tree.def-use
compiler.tree.debugger compiler.tree.checker
slots.private words hashtables classes assocs locals
- specialized-arrays.double system sorting ;
-float-arrays system sorting math.libm ;
++specialized-arrays.double system sorting math.libm ;
IN: compiler.tree.propagation.tests
\ propagate must-infer
"|" parse-tokens make-locals dup push-locals
\ ] (parse-lambda) <lambda> ;
-: parse-binding ( -- pair/f )
+: parse-binding ( end -- pair/f )
- scan tuck = [
- drop f
- ] [
- scan-object 2array
- ] if ;
+ scan {
+ { [ dup not ] [ unexpected-eof ] }
- { [ dup "|" = ] [ drop f ] }
- { [ dup "!" = ] [ drop POSTPONE: ! parse-binding ] }
- [ scan-object 2array ]
++ { [ 2dup = ] [ 2drop f ] }
++ [ nip scan-object 2array ]
+ } cond ;
-: (parse-bindings) ( -- )
- parse-binding [
+: (parse-bindings) ( end -- )
+ dup parse-binding dup [
- first2 >r make-local r> 2array ,
+ first2 [ make-local ] dip 2array ,
(parse-bindings)
- ] when* ;
+ ] [ 2drop ] if ;
-: parse-bindings ( -- bindings vars )
+: parse-bindings ( end -- bindings vars )
[
[ (parse-bindings) ] H{ } make-assoc
dup push-locals
] { } make-assoc
] { } make swap ;
-: (parse-wbindings) ( -- )
- parse-binding [
- first2 [ make-local-word ] keep 2array ,
+: (parse-wbindings) ( end -- )
+ dup parse-binding dup [
- first2 >r make-local-word r> 2array ,
++ first2 [ make-local-word ] dip 2array ,
(parse-wbindings)
- ] when* ;
+ ] [ 2drop ] if ;
-: parse-wbindings ( -- bindings vars )
+: parse-wbindings ( end -- bindings vars )
[
[ (parse-wbindings) ] H{ } make-assoc
dup push-locals
let-rewrite ;
: parse-locals ( -- vars assoc )
- scan "(" assert= ")" parse-effect
- ")" parse-effect
++ scan ")" parse-effect
word [ over "declared-effect" set-word-prop ] when*
in>> [ dup pair? [ first ] when ] map make-locals dup push-locals ;
: [| parse-lambda parsed-lambda ; parsing
: [let
- scan "|" assert= "|" parse-bindings
- "|" expect parse-bindings
++ "|" expect "|" parse-bindings
\ ] (parse-lambda) <let> parsed-lambda ; parsing
: [let*
- scan "|" assert= "|" parse-bindings*
- "|" expect parse-bindings*
++ "|" expect "|" parse-bindings*
\ ] (parse-lambda) <let*> parsed-lambda ; parsing
: [wlet
- scan "|" assert= "|" parse-wbindings
- "|" expect parse-wbindings
++ "|" expect "|" parse-wbindings
\ ] (parse-lambda) <wlet> parsed-lambda ; parsing
: :: (::) define ; parsing
[ first 0.3 - 0.5 ]
[ [ first 0.3 - ] [ second 0.3 - ] bi ]
[ second 0.3 - 0.5 swap ]
- } cleave 8 float-array{ } nsequence ;
- [ drop 0.5 0.5 ]
- } cleave 10 narray >c-float-array ;
++ } cleave 10 float-array{ } nsequence ;
: rect-vertices ( dim -- )
(rect-vertices) gl-vertex-pointer ;
: circle-points ( loc dim steps -- points )
circle-steps unit-circle adjust-points scale-points ;
+ : close-path ( points -- points' )
+ dup first suffix ;
+
: circle-vertices ( loc dim steps -- vertices )
- circle-points close-path concat >c-float-array ;
+ #! We use GL_LINE_STRIP with a duplicated first vertex
+ #! instead of GL_LINE_LOOP to work around a bug in Apple's
+ #! X3100 driver.
- circle-points concat >c-float-array ;
++ circle-points close-path concat >float-array ;
+
+ : fill-circle-vertices ( loc dim steps -- vertices )
+ circle-points concat >float-array ;
: (gen-gl-object) ( quot -- id )
- >r 1 0 <uint> r> keep *uint ; inline
+ [ 1 0 <uint> ] dip keep *uint ; inline
: gen-texture ( -- id )
[ glGenTextures ] (gen-gl-object) ;
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays kernel math models namespaces sequences
strings quotations assocs combinators classes colors
-classes.tuple locals alien.c-types fry opengl opengl.gl
-math.vectors ui.commands ui.gadgets ui.gadgets.borders
-ui.gadgets.labels ui.gadgets.theme ui.gadgets.tracks
-ui.gadgets.packs ui.gadgets.worlds ui.gestures ui.render
-math.geometry.rect ;
++<<<<<<< HEAD:basis/ui/gadgets/buttons/buttons.factor
+classes.tuple opengl opengl.gl math.vectors ui.commands ui.gadgets
+ui.gadgets.borders ui.gadgets.labels ui.gadgets.theme
+ui.gadgets.tracks ui.gadgets.packs ui.gadgets.worlds ui.gestures
+ui.render math.geometry.rect locals alien.c-types
+specialized-arrays.float ;
IN: ui.gadgets.buttons
TUPLE: button < border pressed? selected? quot ;
} cleave ;
! Polygon pen
- TUPLE: polygon color vertex-array count ;
+ TUPLE: polygon color
+ interior-vertices
+ interior-count
+ boundary-vertices
+ boundary-count ;
: <polygon> ( color points -- polygon )
- [ concat >float-array ] [ length ] bi polygon boa ;
- dup close-path [ [ concat >c-float-array ] [ length ] bi ] bi@
++ dup close-path [ [ concat >float-array ] [ length ] bi ] bi@
+ polygon boa ;
- : draw-polygon ( polygon mode -- )
- swap
+ M: polygon draw-boundary
+ nip
[ color>> gl-color ]
- [ vertex-array>> gl-vertex-pointer ]
- [ 0 swap count>> glDrawArrays ]
+ [ boundary-vertices>> gl-vertex-pointer ]
+ [ [ GL_LINE_STRIP 0 ] dip boundary-count>> glDrawArrays ]
tri ;
- M: polygon draw-boundary
- GL_LINE_LOOP draw-polygon drop ;
-
M: polygon draw-interior
- dup count>> 2 > GL_POLYGON GL_LINES ?
- draw-polygon drop ;
+ nip
+ [ color>> gl-color ]
+ [ interior-vertices>> gl-vertex-pointer ]
+ [ [ GL_POLYGON 0 ] dip interior-count>> glDrawArrays ]
+ tri ;
: arrow-up { { 3 0 } { 6 6 } { 0 6 } } ;
: arrow-right { { 0 0 } { 6 3 } { 0 6 } } ;
"syntax" lookup t "delimiter" set-word-prop ;
: define-syntax ( name quot -- )
- >r "syntax" lookup dup r> define make-parsing ;
- [ "syntax" lookup dup ] dip define t "parsing" set-word-prop ;
++ [ "syntax" lookup dup ] dip define make-parsing ;
[
{ "]" "}" ";" ">>" } [ define-delimiter ] each
USING: tools.deploy.config ;
H{
- { deploy-threads? f }
+ { deploy-unicode? f }
+ { deploy-reflection 1 }
+ { deploy-word-props? f }
+ { deploy-math? f }
{ deploy-name "Hello world (console)" }
{ deploy-word-defs? f }
- { deploy-word-props? f }
+ { "stop-after-last-window?" t }
- { deploy-compiler? t }
{ deploy-ui? f }
- { deploy-threads? f }
+ { deploy-compiler? f }
{ deploy-io 2 }
- { deploy-math? f }
- { deploy-reflection 1 }
- { deploy-unicode? f }
- { "stop-after-last-window?" t }
{ deploy-c-types? f }
}