openFOAM中的label

其实就是指i,j,k这类浮标使用的类型。我们通常就使用int就可以,但是这里也进行了封装。

label的头文件的源码如下:

#include "int.H"

#define INT_ADD_SIZE(x,s,y) x ## s ## y
#define INT_ADD_DEF_SIZE(x,s,y) INT_ADD_SIZE(x,s,y)
#define INT_SIZE(x,y) INT_ADD_DEF_SIZE(x,WM_LABEL_SIZE,y)

#if WM_LABEL_SIZE != 32 && WM_LABEL_SIZE != 64
    #error "label.H: WM_LABEL_SIZE must be set to either 32 or 64"
#endif

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{
typedef INT_SIZE(int, _t) label;  //label这个类型其实是int
//相当于int64_t,这在int64.H中有进行定义,如果机器是32位的,就是int32_t

static const label labelMin = INT_SIZE(INT, _MIN);
static const label labelMax = INT_SIZE(INT, _MAX);

inline label readLabel(Istream& is)
{ return INT_SIZE(readInt,) (is);}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//- Raise one label to the power of another
label pow(label a, label b);
//- Evaluate n! : 0 < n <= 12
label factorial(label n);
inline label& setComponent(label& l, const direction)
{  return l; }
inline label component(const label l, const direction)
{   return l;  }

} 

类似浮点数的scalar,首先根据WM_LABEL_SIZE判断使用多少位的int,然后将其定义为类型label。之后还给出了若干支持性的文件,以及读取用的函数readLabel

这里文件依赖了头文件int.H,其详细内容见如下链接:
https://blog.csdn.net/qq_40583925/article/details/107269342

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片