HalconAPI.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*****************************************************************************
  2. * HalconAPI.h
  3. *****************************************************************************
  4. *
  5. * Project: HALCON/C++
  6. * Description: Internal communication with HALCON library.
  7. * Exposed for use by extension packages only.
  8. *
  9. * (c) 2010-2020 by MVTec Software GmbH
  10. * www.mvtec.com
  11. *
  12. *****************************************************************************
  13. *
  14. *
  15. *****************************************************************************/
  16. #ifndef HCPP_HALCON_API_H
  17. #define HCPP_HALCON_API_H
  18. #include "HalconCDefs.h"
  19. #include "hlib/DBNew.h"
  20. #include "hlib/HInstance.h"
  21. namespace HalconCpp
  22. {
  23. class LIntExport HalconAPI
  24. {
  25. public:
  26. // Create operator call
  27. static Hproc_handle PreCall(HINT proc_index);
  28. // Execute operator call
  29. static void CallProcedure(Hproc_handle proc);
  30. // Finalize operator call
  31. static void PostCall(Hproc_handle proc, Herror err = H_MSG_OK);
  32. // Store iconic input parameters
  33. static void Store(Hproc_handle proc, HINT par, const HObjectBase& obj);
  34. static void Store(Hproc_handle proc, HINT par, Hkey key);
  35. // Load iconic output parameters
  36. static void Load(Hproc_handle proc, HINT par, HObjectBase* obj);
  37. static void Load(Hproc_handle proc, HINT par, Hkey* key);
  38. // Store input control parameters
  39. static void Store(Hproc_handle proc, HINT par, Hlong value);
  40. static void Store(Hproc_handle proc, HINT par, double value);
  41. static void Store(Hproc_handle proc, HINT par, const char *value);
  42. static void StoreEnc(Hproc_handle proc, HINT par, const char *value);
  43. #ifdef _WIN32
  44. static void Store(Hproc_handle proc, HINT par, const wchar_t* value);
  45. #endif
  46. static void Store(Hproc_handle proc, HINT par, const HString& value);
  47. static void StoreEnc(Hproc_handle proc, HINT par, const HString& value);
  48. static void Store(Hproc_handle proc, HINT par, const HTuple& tuple);
  49. static void StoreEnc(Hproc_handle proc, HINT par, const HTuple& tuple);
  50. static void Store(Hproc_handle proc, HINT par, const HHandle& handle);
  51. static void Store(Hproc_handle proc, HINT par, void* pointer);
  52. static HTuple StoreKA(Hproc_handle proc, HINT par, const HDataBase &data);
  53. static HTuple StoreKA(Hproc_handle proc, HINT par, const HHandleBaseArray& tools);
  54. static HTuple StoreKA(Hproc_handle proc, HINT par, const HDataArray& data);
  55. // Load output control parameters
  56. static void Load(Hproc_handle proc, HINT par, Hlong* value);
  57. static void Load(Hproc_handle proc, HINT par, double* value);
  58. static void LoadEnc(Hproc_handle proc, HINT par, HString* value);
  59. static void Load(Hproc_handle proc, HINT par, HTuple* tuple);
  60. static void LoadEnc(Hproc_handle proc, HINT par, HTuple* tuple);
  61. static void Load(Hproc_handle proc, HINT par, HHandle* tool);
  62. static void Load(Hproc_handle proc, HINT par, HDataBase* data);
  63. static void Load(Hproc_handle proc, HINT par, HHandleBaseArray* tools);
  64. static void Load(Hproc_handle proc, HINT par, HDataArray* data);
  65. static void Load(Hproc_handle proc, HINT par, void** pointer);
  66. // Initialize output control parameters
  67. static void InitOutp(Hproc_handle proc, HINT par);
  68. // Handle control parameters
  69. static Hphandle CopyHandle(Hphandle key);
  70. static void ClearHandle(Hphandle key);
  71. static Hlong AcquireExternalOwnership(Hphandle handle);
  72. static void ReleaseExternalOwnership(Hphandle handle);
  73. static Hlong HandleToHlong(Hphandle handle);
  74. static HBOOL HandleIsValid(Hphandle handle);
  75. static const char* GetHandleSemType(Hphandle handle);
  76. static bool TestEqualHandle(Hphandle handle1, Hphandle handle2);
  77. static bool IsLegacyHandleMode();
  78. // Iconic object manipulation
  79. static Hkey CopyObject(Hkey key);
  80. static Hkey SelectObject(Hkey key, Hlong index);
  81. static bool TestEqualObj(Hkey key1, Hkey key2);
  82. static void ClearObject(Hkey key);
  83. static void AssertObjectClass(Hkey key, const char* assert_class);
  84. static void AssertHandleType(Hphandle handle, const char* assert_type);
  85. // Engine helpers
  86. static bool NeedsTranscodeToFromUtf8(const Htuple* value);
  87. static void TranscodeToUtf8FromInterfaceEncoding(Htuple* value);
  88. static void TranscodeFromUtf8ToInterfaceEncoding(Htuple* value);
  89. };
  90. }
  91. #endif