Contains this child’s tag name
as string tag
Declares the template tname_ with targs_.
# macro fbext_TDeclare( tname_, targs_ )
Defines the template tname_ with targs_.
# macro fbext_TDefine( tname_, linkage_, targs_ )
# define fbext_TemplateID( tname_, targs_, deftargs_ ) fbext_TemplateID_I( tname_, fbext_GetTArgsWithDefaults__( targs_, deftargs_) )
Function prototype for testcases.
type test_func_t as sub()
#define testly_assert_equal( __expected__, __actual__ ) ext.Testly.customAssertion((__actual__) = (__expected__), __FILE__, __LINE__, ("expected {" #__expected__ "} but was {" #__actual__ "}"))
#define testly_assert_equal_error( __expected__, __actual__ ) if (ext.Testly.customAssertion((__actual__) = (__expected__), __FILE__, __LINE__, ("expected {" #__expected__ "} but was {" #__actual__ "}"), true) = false) then exit sub
#define testly_assert_error( __message__ ) if (ext.Testly.customAssertion((false), __FILE__, __LINE__, __message__, true) = false) then exit sub
#define testly_assert_fail( __message__ ) ext.Testly.customAssertion((false), __FILE__, __LINE__, __message__)
#define testly_assert_false( __value__ ) ext.Testly.customAssertion((__value__) = (false), __FILE__, __LINE__, ("{" #__value__ "} is not false."))
#define testly_assert_false_error( __value__ ) if (ext.Testly.customAssertion((__value__) = (false), __FILE__, __LINE__, ("{" #__value__ "} is not false."), true) = false) then exit sub
#define testly_assert_not_equal( __expected__, __actual__ ) ext.Testly.customAssertion((__actual__) <> (__expected__), __FILE__, __LINE__, ("{" #__actual__ "} expected to be != to {" #__expected__ "}"))
#define testly_assert_not_equal_error( __expected__, __actual__ ) if (ext.Testly.customAssertion((__actual__) <> (__expected__), __FILE__, __LINE__, ("{" #__actual__ "} expected to be != to {" #__expected__ "}"), true) = false) then exit sub
#define testly_assert_pass( __message__ ) ext.Testly.customAssertion((true), __FILE__, __LINE__, __message__)
#define testly_assert_string_equal( __expected__, __actual__ ) ext.Testly.customAssertion((str(__actual__) = str(__expected__)), __FILE__, __LINE__, ("expected {" #__expected__ "} but was {" #__actual__ "}"))
#define testly_assert_string_equal_error( __expected__, __actual__ ) if (ext.Testly.customAssertion((str(__actual__) = str(__expected__)), __FILE__, __LINE__, ("expected {" #__expected__ "} but was {" #__actual__ "}"), true) = false) then exit sub
#define testly_assert_string_not_equal( __expected__, __actual__ ) ext.Testly.customAssertion((str(__actual__) <> str(__expected__)), __FILE__, __LINE__, ("{" #__actual__ "} expected to be != to {" #__expected__ "}"))
#define testly_assert_string_not_equal_error( __expected__, __actual__ ) if (ext.Testly.customAssertion((str(__actual__) <> str(__expected__)), __FILE__, __LINE__, ("{" #__actual__ "} expected to be != to {" #__expected__ "}"), true) = false) then exit sub
#define testly_assert_true( __value__ ) ext.Testly.customAssertion((__value__) = (true), __FILE__, __LINE__, ("{" #__value__ "} is not true."))
#define testly_assert_true_error( __value__ ) if (ext.Testly.customAssertion((__value__) = (true), __FILE__, __LINE__, ("{" #__value__ "} is not true."), true) = false) then exit sub
const three_div_pi2 as double = 0.303963550927013
Gets the concatenated name of T_, which is often a template type parameter.
# define fbext_TID( tname_, targs_ ) fbext_TypeID((tname_) fbextPP_SeqTransform(fbext_TID_O, __, targs_))
Toggles the value of a certain bit.
declare sub toggle( byval bit_ as SizeType )
Returns a pointer to the top-most element in the stack.
declare function Top ( ) as fbext_TypeName(T_) ptr
Applies an operation //op// on each element in the range [//first//, //last//), storing the results of the transformation in the range starting at //result//.
declare function Transform overload ( byval first as fbext_TypeName(T_) ptr, byval last as fbext_TypeName(T_) ptr, byval result as fbext_TypeName(T_) ptr, byval op as function ( byref as fbext_TypeName(T_) ) as fbext_TypeName(T_) ) as fbext_TypeName(T_) ptr
type fbext_TypeID( (Transformation) T_ ) as function ( byref x as fbext_TypeName(T_) ) as fbext_TypeName(T_)
generic translation function
declare sub Translate( byref x as single, byref y as single, byref z as single )
Draws a flat shaded triangle.
declare sub Triangle overload ( byval dst as FB. IMAGE ptr = 0, byval x1 as integer, byval y1 as integer, byval x2 as integer, byval y2 as integer, byval x3 as integer, byval y3 as integer, byval col as uinteger = rgba(255,255,255,255) )
Trims whitespace from both sides of the XString object
declare sub Trim ( )
consumes a tuple of size size, which must be specified immediately following the call to this macro.
# define fbextPP_TupleEat( size ) fbextPP_TupleEat__##size
gets the element value at position index stored in the tuple tuple of size size.
# define fbextPP_TupleElem( size, index, tuple ) fbextPP_TupleElem__##size##__##index tuple
enumerates (lists) all of the elements, in order, of the tuple tuple of size size.
# define fbextPP_TupleEnum( size, tuple ) _fbextPP_TupleEnum__##size tuple
repeatedly expands the user-defined macro m, passing it, in order, each element stored in the tuple tuple of size size.
# define fbextPP_TupleForEach( size, tuple, m ) _fbextPP_TupleForEach__##size (m, fbextPP_TupleRemParens(size, tuple))
repeatedly expands the user-defined macro m, passing it, in order, each element stored in the tuple tuple of size size along with the element’s position in the tuple.
# define fbextPP_TupleForEachI( size, tuple, m ) _fbextPP_TupleForEachI__##size (m, fbextPP_TupleRemParens(size, tuple))
expands to a tuple with size number of elements all having the value of value.
# define fbextPP_TupleFromValue( size, value ) _fbextPP_TupleFromValue_##size(value)
removes the element at position index stored in the tuple tuple of size size.
# define fbextPP_TupleRemove( size, index, tuple ) fbextPP_TupleRemove__##size##__##index tuple
removes the parenthesis from a tuple.
# define fbextPP_TupleRemParens( size, tuple ) fbextPP_TupleRemParens__##size tuple
expands to a copy of tuple of size with the element value at index replaced with value.
# define fbextPP_TupleReplace( size, index, tuple, value ) _fbextPP_TupleReplace__##size##__##index(value, fbextPP_TupleRemParens(size, tuple))
reverses the order of elements stored in the tuple tuple of size size.
# define fbextPP_TupleReverse( size, tuple ) fbextPP_TupleReverse__##size tuple
converts the tuple tuple of size size into a sequence.
# define fbextPP_TupleToSeq( size, tuple ) fbextPP_TupleToSeq__##size##tuple
Gets the concatenated name of T_, which is often a template type parameter.
# define fbext_TypeID( T_ ) fbextPP_SeqCat(T_)
Gets the qualified name of T_, which is often a template type parameter.
# define fbext_TypeName( T_ ) fbextPP_SeqCat(fbextPP_SeqForEachI(fbext_TypeName_I, __, T_))