870920 Menu

JUCE类库的全局定义

OK,是时候了解一下JUCE类库的各种全局定义了。本节内容主要包括:类型重定义,全局函数,封装在类中的静态函数,宏定义。

如前所述,我没有搞清楚如何在WordPress后台编辑器里做表格。因此,本文排版很差,请谅解。希望难看的文字不会掩盖其确有的价值。此外,本文并未涵盖所有,极少数不常用的没有列举。可能有所遗漏,欢迎补充。

一、类型重定义
类型名 实际类型 说 明
int8 uint8 signed char unsigned char 独立于平台的8位有/无符号整数类型 -128~127;0~255

int16 uint16 signed short unsigned short 独立于平台的16位有/无符号整数类型 -32768~32767;0~65535

int32 uint32 signed int unsigned int 独立于平台的32位有/无符号整数类型 -21.474亿~21.474亿;0~42.948亿

int64 uint64 long long unsigned long long 独立于平台的64位有/无符号整数类型

juce_wchar wchar_t 独立于平台的32位Unicode宽字符
表 2 4 JUCE类库全局性类型重定义

二、全局函数
函数原型 说 明
Type jmax (Type a, Type b, Type c…) 返回多个参数中的最大值。Type均为模板类型
Type jmin (Type a, Type b, Type c…) 返回多个参数中的最小值
Type findMinimum (Type* data, int numValues) 返回数组data中的最小值
Type findMaximum (Type* data, int numValues) 返回数组data中的最大值
void findMinAndMax (Type*, int, Type&, Type&) 获取数组中的最小值和最大值
Type jlimit (Type, Type, Type) 如果3参已在1参和2参之间的范围中,则直接返回,否则返回最靠近该值的1参或2参
bool isPositiveAndBelow(Type, Type) 如果1参大于等于0且小于2参,则返回true
bool isPositiveAndNotGreaterThan (Type, Type) 如果1参大于等于0且不大于2参,则返回true
void swapVariables (Type&, Type&) 交换1参和2参
int numElementsInArray (Type array) 计算一个简单数组的元素个数
Type juce_hypot (Type a, Type b) 求三角形斜边
int64 abs64 (const int64 n) 64位取绝对值
Type juce_negate (Type n) 反绝对值(取负)
bool juce_isfinite (FloatingPointType value) 浮点参数值是否有穷
int roundToInt (const FloatType value) 浮点参数四舍五入为整数,精度不高
int roundToIntAccurate (const double value) double参数四舍五入为整数,精度高
int roundDoubleToInt (const double value) double参数四舍五入为整数,精度不高
int roundFloatToInt (const float value) float参数四舍五入为整数,精度不高
bool isPowerOfTwo (IntegerType value) 如果参数是2的n次方,则返回true
int nextPowerOfTwo (int n) 返回不小于参数的下一个为2的n次方的整数
int negativeAwareModulo (Type, Type) 可得到负数的模运算,2参是除数,必须大于0
void zeromem (void *memory, size_t numBytes) 0值填充给出的内存块
void zerostruct (Type &structure) 将结构体对象或类对象的内容重置为0值
void deleteAndZero (Type &pointer) 销毁某个指针所指向的堆对象并将其置为nullptr
Type* addBytesToPointer (Type*, int) 按字节数移动指针
int getAddressDifference(Type1*, Type2*) 获取任意两个指针之间的“距离”(字节差)
Type* createCopyIfNotNull (Type* pointer) 返回非空指针所指向的对象的副本
AudioProcessor* createPluginFilter () 开发插件所需的全局函数,创建本插件
表 2 5 JUCE类库全局函数

三、封装在类中的静态函数(内容实在太多,网站发布,略)

四、常用的宏定义
宏 说 明
JUCE_CALLTYPE 将传统的C调用作为JUCE类库的标准调用
DBG (text) 调试模式下,将字符串信息输出到调试器的控制台中
jassertfalse 调试模式下,代码执行到此宏时,无条件崩溃于此
jassert (expression) 调试模式下的断言宏,表达式为false则程序崩溃于此
JUCE_DECLARE_NON_COPYABLE (className) 此类不生成默认的拷贝构造函数和赋值运算符重载。使用该宏的类意味着永远无法通过值传递的方式传递本类对象,只能传递本类对象的内存地址(指针或引用)
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (className) 此类不生成拷构和赋值重载,一并检测内存泄露
JUCE_PREVENT_HEAP_ALLOCATION 该类禁用new和delete,只能创建栈对象
forcedinline 强制内联。取代C++建议性的inline关键字
JUCE_MODAL_LOOPS_PERMITTED Android安卓平台下不支持模态窗口,可用此宏进行判断
JUCE_LEAK_DETECTOR (OwnerClass) 本类进行内存泄露检测
START_JUCE_APPLICATION (AppClass) 主程序启动宏,将AppClass对象置于消息循环中
JUCE_API 标记了此宏的类供程序员直接使用并生成API文档
JUCE_MAJOR_VERSION JUCE类库主版本号,比如:版本3.0.25中的3
JUCE_MINOR_VERSION JUCE类库次版本号,比如:版本3.0.25中的0
JUCE_BUILDNUMBER JUCE类库小版本号,比如:版本3.0.25中的25
juce_DeclareSingleton () 单例类宏定义,此宏写在单例类的类定义中
juce_ImplementSingleton(classname) 单例类宏定义,置于单例类类实现中,并全局化之
juce_DeclareSingleton_SingleThreaded () 线程安全型单例类宏定义,写在单例类的类定义中
juce_DeclareSingleton_
SingleThreaded_Minimal() 类似于上一个宏,但不对递归式实例化进行检测
juce_ImplementSingleton_SingleThreaded () 单线程单例类宏定义,写在单例类的类实现中
TRANS (stringLiteral) 翻译宏

表 2 6 JUCE类库全局性宏定义