欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
halcon基礎數據類(lèi)型詳解
#if defined(__CHAR_UNSIGNED__) || defined(__sgi) #define  INT1      signed char       /* integer, signed 1 Byte         */#define  INT1_MIN  SCHAR_MIN#define  INT1_MAX  SCHAR_MAX#else#define  INT1      char              /* integer, signed 1 Byte         */#define  INT1_MIN  CHAR_MIN#define  INT1_MAX  CHAR_MAX#endif#define  UINT1     unsigned char     /* integer, unsigned 1 Byte       */#define  UINT1_MIN 0#define  UINT1_MAX UCHAR_MAX#define LONG_FORMAT _INT64_FORMATtypedef INT4_8  Hlong;typedef UINT4_8 Hulong;

 

  看粗體部分,可以看到 Hlong型在32位的機器上其實(shí)就是long型 代表4個(gè)字節 32位,在64位機器上有另一種定義

 

  再來(lái)看看halcon中最重要的數據類(lèi)型HTuple,在C++里面,halcon將HTuple類(lèi)型封裝了類(lèi),其始祖類(lèi)HRootObject,這個(gè)類(lèi)相當于MFC里面的CObject,halcon從HRootObject派生了HBaseArray,當然這兩個(gè)類(lèi)是虛基類(lèi),有一些方法需要我HTuple自己實(shí)現,當然也有一些方法可以直接用的。這兩個(gè)類(lèi)在HCPPUtil里,可以看看。

  HTuple類(lèi)就是從HBaseArray派生,元組基類(lèi),相當于數組,具有如下的構造函數:

  

  HTuple(int l);  HTuple(float f);  HTuple(double d);  HTuple(const char *s);  HTuple(const HCtrlVal &c);  HTuple(const HTuple &in):HBaseArray() {CopyTuple(in);}  HTuple(Hlong length, const HTuple &value);  HTuple(const HTuple &length, const HTuple &value);  HTuple(SpecialTuple d);

  

  HTuple對各種操作符進(jìn)行了重載:

  operator     HCtrlVal(void) const;  HTuple       operator () (Hlong min, Hlong max) const;  HTuple       operator () (const HTuple &min, const HTuple &max) const;  HCtrlVal    &operator [] (Hlong index);  HCtrlVal     operator [] (Hlong index) const;  HCtrlVal    &operator [] (const HTuple &index);  HCtrlVal     operator [] (const HTuple &index) const;  HTuple      &operator ++ (void); // nur fuer double und Hlong  HBool        operator !  (void) const;  HTuple       operator ~  (void) const;  HTuple       operator << (const HTuple &val) const;  HTuple       operator << (Hlong val) const;  HTuple       operator >> (const HTuple &val) const;  HTuple       operator >> (Hlong val) const;  HTuple       operator +  (const HTuple &val) const;  HTuple       operator +  (double val) const;  HTuple       operator +  (int val) const;

 

  在講解halcon是如何維護這樣一個(gè)HTuple中各種數據之前 ,先來(lái)看看這樣一個(gè)類(lèi):

  

class LIntExport HCtrlVal  {  friend class HTuple;public:  HCtrlVal(void)      {val.type  = UndefVal;  val.par.l = 0;}#if !defined(_TMS320C6X)  HCtrlVal(Hlong l)   {val.type  = LongVal;   val.par.l = l;}#endif  HCtrlVal(int l)     {val.type  = LongVal;   val.par.l = l;}  HCtrlVal(double d)  {val.type  = DoubleVal; val.par.f = d;}  HCtrlVal(const char *s);  HCtrlVal(const HCtrlVal &v) {CopyCtrlVal(v);}  ~HCtrlVal(void)             {ClearCtrlVal();}  HCtrlVal& operator = (const HCtrlVal &v);   // Type conversion  int         ValType() const          {return val.type;}  operator    int(void) const          {return I();}#if !defined(_TMS320C6X)  operator    Hlong(void) const        {return L();}#endif  operator    double(void) const       {return D();}  operator    const char*(void) const  {return S();}  operator    const Hcpar&(void)const  {return HCPAR();}  // Access contents  double          D() const;  Hlong           L() const;  int             I() const;  const char *    S() const;  const Hcpar&    HCPAR()const;  // Arithmetics  HCtrlVal     operator + (const HCtrlVal &val) const;  HTuple       operator + (const HTuple &val) const;  HCtrlVal     operator - (const HCtrlVal &val) const;  HTuple       operator - (const HTuple &val) const;  HCtrlVal     operator * (const HCtrlVal &val) const;  HTuple       operator * (const HTuple &val) const;  HCtrlVal     operator / (const HCtrlVal &val) const;  HTuple       operator / (const HTuple &val) const;  HCtrlVal     operator % (const HCtrlVal &val) const;  HTuple       operator % (const HTuple &val) const;  HBool        operator != (const HCtrlVal &val) const;  HBool        operator != (const HTuple &val) const;  HBool        operator == (const HCtrlVal &val) const;  HBool        operator == (const HTuple &val) const;  HBool        operator >= (const HCtrlVal &val) const;  HBool        operator >= (const HTuple &val) const;  HBool        operator <= (const HCtrlVal &val) const;  HBool        operator <= (const HTuple &val) const;  HBool        operator > (const HCtrlVal &val) const;  HBool        operator > (const HTuple &val) const;  HBool        operator < (const HCtrlVal &val) const;  HBool        operator < (const HTuple &val) const;  const char *ClassName(void) const { return "HCtrlVal"; }  int Version(void) const;  int Revision(void) const;  const char *Creation(void) const;  private:  // Data  Hcpar       val;        // Value: one of the three types and type specifyer  // Support operationen  void ClearCtrlVal();  void CopyCtrlVal(const HCtrlVal& source);};
typedef struct{  Hpar   par;             /* values                                          */  INT1   type;            /* type flag                                       */} Hcpar;                  /* parameter passing for the C interface           */
typedef union {  INT4_8  l;              /* 4/8 byte integer                       (input)  */  double  f;              /* 8 byte real                            (input)  */  char    *s;             /* pointer to strings                     (input)  */} Hpar;                   /* parameter passing for the C interface           */
typedef union {  INT4_8  *l;             /* 4/8 byte integer                       (output) */  double  *f;             /* 8 byte real                            (output) */  char    *s;             /* pointer to strings                     (output) */  VOIDP   p;              /* pointer to var. of any type (e.g. tuple)(output)*/} Hvar;                   /* parameter passing for the C interface           */

 

  仔細看我用紅色粗體并加大的部分,這四段代碼可以說(shuō)是halcon維護HTuple這種數據類(lèi)型的精髓了。下面我們來(lái)講解一下:

  首先HTuple類(lèi)中有私有成員變量:

private:  HCtrlVal    *tuple;       // values (array of Hlong/float/string)

  halcon給的注釋寫(xiě)的很清楚,tuple是一群值,指向一個(gè)數組,數組里面有long型,浮點(diǎn)型及字符串型數據。這是一個(gè)指針,這個(gè)類(lèi)就是維護這樣一個(gè)指針,具體此指針的內容,我們往下看HCtrlVal: (這里說(shuō)一下這幾個(gè)單詞的意義吧:H->Halcon   Ctrl->Control   Val->Values  表示Halcon的控制變量,當然還有圖形變量,以后再講吧。)

private:  // Data  Hcpar       val;        // Value: one of the three types and type specifyer

  HCtrlVal類(lèi)就維護了這樣一個(gè)成員變量,halcon給的注釋是說(shuō) val 代表數據的三種類(lèi)型中的一個(gè),并指向一個(gè)值。那么HTuple中的tuple指針就是維護了val組成的鏈表,這樣HTuple就可以維護多種不同類(lèi)型的數據。

  HTuple用起來(lái)的確很方便,halcon對其進(jìn)行了大量的運算符重載包括像強制類(lèi)型轉換,都不需要我們手動(dòng)去做,只需要在前面加個(gè)數據類(lèi)型就行了。

  好了,由于本人水平有限,文中可能會(huì )有紕漏,敬請指出!

  added by xiejl

 

 

 

 

 

 

 

 

 

 

 

 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Halcon與C++
C++一個(gè)二叉樹(shù)節點(diǎn)類(lèi)
string類(lèi)實(shí)現(C++)
高精度
C++ Primer 第三章補充String類(lèi)的實(shí)現
從一維到二維,C 復數運算總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久