前面已经介绍过了,TLP库中通过IntType和BoolType对int和bool值进行封装,并且提供了对应的计算元函数。
TLP中定义了如下IntType的基本运算元函数:
__int()
:输入一个常整数,返回一个对应的IntType类型;__inc()
: 递增运算。例如__inc(__int(5))
的结果是__int(6)
;__dec()
: 递减运算。例如__dec(__int(5))
的结果是__int(4)
;__add()
: 加法运算。例如__add(__int(5), __int(2))
的结果是__int(7)
;__sub()
: 减法运算。例如__sub(__int(5), __int(2))
的结果是__int(3)
;__mul()
: 乘法运算。例如__mul(__int(5), __int(2))
的结果是__int(10)
;__div()
: 除法运算。例如__div(__int(5), __int(2))
的结果是__int(2)
;__mod()
: 取模运算。例如__mod(__int(5), __int(2))
的结果是__int(1)
;__sum()
: 求和运算,输入元素不定长。例如__sum(__int(0), __int(1), __int(2))
。
同样,对于BoolType我们定义如下元函数:
__bool()
:输入一个bool值,返回一个BoolType类型;__true()
:等价于__bool(true)
;__false()
:等价于__bool(false)
;__not()
:取非操作。例如:__not(__bool(true))
的结果是__false()
;__and()
:逻辑与操作。例如:__and(__true(), __false())
的结果是__false()
;__or()
:逻辑或操作。例如:__or(__true(), __false())
的结果是__true()
;
TLP同样提供了如下辅助元函数:
__is_eq()
:判断两个类型是否相等,返回一个BoolType。__if()
:根据第一个入参BoolType的值,选择返回第二和第三个类型中的一个。如果如果为__true()
,则返回第二个参数对应的类型,否则返回第三个参数对应的类型。__value()
:对类型进行求值。对于IntType和BoolType其值就是对应内部的Value值。__print()
:通过编译器告警打印出入参的类型值。
此外,TLP中有两个特殊类型,
NullType
:用于各种计算中返回的无效值;可以使用宏__null()
替代;EmptyType
:空类,大多数用于占桩;可以使用宏__empty()
替代;
对NullType
和EmptyType
分别调用__value()
元函数,将会返回0xFFFFFFFF
和0x0
。
最后,TLP提供了一个元函数,用于判断表达式的返回值是否有效:
-
__valid()
:用于判断参数中的返回值类型是否有效。默认只对NullType认为是无效的。