FastDeploy  latest
Fast & Easy to Deploy!
fd_type.h
Go to the documentation of this file.
1 // Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #include <stdint.h>
18 #include <stdio.h>
19 
22 
23 typedef struct FD_C_OneDimArrayUint8 {
24  size_t size;
25  uint8_t* data;
26 } FD_C_OneDimArrayUint8; // std::vector<uint8>
27 
28 typedef struct FD_C_OneDimArrayInt8 {
29  size_t size;
30  int8_t* data;
31 } FD_C_OneDimArrayInt8; // std::vector<int8>
32 
33 typedef struct FD_C_OneDimArrayInt32 {
34  size_t size;
35  int32_t* data;
36 } FD_C_OneDimArrayInt32; // std::vector<int32_t>
37 
38 typedef struct FD_C_OneDimArraySize {
39  size_t size;
40  size_t* data;
41 } FD_C_OneDimArraySize; // std::vector<size_t>
42 
43 typedef struct FD_C_OneDimArrayInt64 {
44  size_t size;
45  int64_t* data;
46 } FD_C_OneDimArrayInt64; // std::vector<int64_t>
47 
48 typedef struct FD_C_OneDimArrayFloat {
49  size_t size;
50  float* data;
51 } FD_C_OneDimArrayFloat; // std::vector<float>
52 
53 typedef struct FD_C_Cstr {
54  size_t size;
55  char* data;
56 } FD_C_Cstr; // std::string
57 
58 typedef struct FD_C_OneDimArrayCstr {
59  size_t size;
61 } FD_C_OneDimArrayCstr; // std::vector<std::string>
62 
63 typedef struct FD_C_TwoDimArraySize {
64  size_t size;
66 } FD_C_TwoDimArraySize; // std::vector<std::vector<size_t>>
67 
68 typedef struct FD_C_TwoDimArrayInt8 {
69  size_t size;
71 } FD_C_TwoDimArrayInt8; // std::vector<std::vector<int8>>
72 
73 typedef struct FD_C_TwoDimArrayInt32 {
74  size_t size;
76 } FD_C_TwoDimArrayInt32; // std::vector<std::vector<int32_t>>
77 
78 typedef struct FD_C_ThreeDimArrayInt32 {
79  size_t size;
81 } FD_C_ThreeDimArrayInt32; // std::vector<std::vector<std::vector<int32_t>>>
82 
83 typedef struct FD_C_TwoDimArrayFloat {
84  size_t size;
86 } FD_C_TwoDimArrayFloat; // std::vector<std::vector<float>>
87 
88 typedef void* FD_C_Mat;
89 
90 typedef struct FD_C_OneDimMat {
91  size_t size;
94 
95 #ifdef __cplusplus
96 extern "C" {
97 #endif
98 
99 #define DECLARE_DESTROY_FD_TYPE_FUNCTION(typename) FASTDEPLOY_CAPI_EXPORT extern void FD_C_Destroy##typename (__fd_take FD_C_##typename *)
100 #define DECLARE_AND_IMPLEMENT_FD_TYPE_ONEDIMARRAY(typename) void FD_C_Destroy##typename (__fd_take FD_C_##typename * ptr) \
101  { \
102  delete[] ptr->data; \
103  }
104 
105 #define DECLARE_AND_IMPLEMENT_FD_TYPE_TWODIMARRAY(typename, one_dim_type) void FD_C_Destroy##typename (__fd_take FD_C_##typename * ptr) \
106  { \
107  for(int i=0; i< ptr->size; i++) { \
108  FD_C_Destroy##one_dim_type(ptr->data + i); \
109  } \
110  delete[] ptr->data; \
111  }
112 
113 #define DECLARE_AND_IMPLEMENT_FD_TYPE_THREEDIMARRAY(typename, two_dim_type) void FD_C_Destroy##typename (__fd_take FD_C_##typename * ptr) \
114  { \
115  for(int i=0; i< ptr->size; i++) { \
116  FD_C_Destroy##two_dim_type(ptr->data + i); \
117  } \
118  delete[] ptr->data; \
119  }
120 
121 // FD_C_OneDimArrayUint8
122 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayUint8);
123 // FD_C_OneDimArrayInt8
124 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayInt8);
125 // FD_C_OneDimArrayInt32
126 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayInt32);
127 // FD_C_OneDimArraySize
128 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArraySize);
129 // FD_C_OneDimArrayInt64
130 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayInt64);
131 // FD_C_OneDimArrayFloat
132 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayFloat);
133 // FD_C_Cstr
135 // FD_C_OneDimArrayCstr
136 DECLARE_DESTROY_FD_TYPE_FUNCTION(OneDimArrayCstr);
137 // FD_C_TwoDimArraySize
138 DECLARE_DESTROY_FD_TYPE_FUNCTION(TwoDimArraySize);
139 // FD_C_TwoDimArrayInt8
140 DECLARE_DESTROY_FD_TYPE_FUNCTION(TwoDimArrayInt8);
141 // FD_C_TwoDimArrayInt32
142 DECLARE_DESTROY_FD_TYPE_FUNCTION(TwoDimArrayInt32);
143 // FD_C_ThreeDimArrayInt32
144 DECLARE_DESTROY_FD_TYPE_FUNCTION(ThreeDimArrayInt32);
145 // FD_C_TwoDimArrayFloat
146 DECLARE_DESTROY_FD_TYPE_FUNCTION(TwoDimArrayFloat);
147 // FD_C_OneDimMat
149 
151 FD_C_Imread(const char* imgpath);
152 
153 FASTDEPLOY_CAPI_EXPORT extern FD_C_Bool FD_C_Imwrite(const char* savepath,
155 
157 
158 #ifdef __cplusplus
159 }
160 #endif
#define DECLARE_DESTROY_FD_TYPE_FUNCTION(typename)
Definition: fd_type.h:99
int8_t FD_C_Bool
Definition: fd_common.h:58
float * data
Definition: fd_type.h:50
size_t size
Definition: fd_type.h:24
#define FASTDEPLOY_CAPI_EXPORT
Definition: fd_common.h:27
int32_t * data
Definition: fd_type.h:35
Definition: fd_type.h:38
size_t size
Definition: fd_type.h:59
struct FD_C_TwoDimArrayFloat FD_C_TwoDimArrayFloat
size_t size
Definition: fd_type.h:39
struct FD_C_OneDimArrayInt32 FD_C_OneDimArrayInt32
uint8_t * data
Definition: fd_type.h:25
size_t size
Definition: fd_type.h:64
FASTDEPLOY_CAPI_EXPORT void FD_C_DestroyMat(__fd_take FD_C_Mat mat)
struct FD_C_TwoDimArrayInt8 FD_C_TwoDimArrayInt8
FD_C_OneDimArrayInt32 * data
Definition: fd_type.h:75
Definition: fd_type.h:43
struct FD_C_ThreeDimArrayInt32 FD_C_ThreeDimArrayInt32
FD_C_OneDimArrayInt8 * data
Definition: fd_type.h:70
Definition: fd_type.h:48
Definition: fd_type.h:63
struct FD_C_OneDimArrayInt64 FD_C_OneDimArrayInt64
int8_t * data
Definition: fd_type.h:30
size_t size
Definition: fd_type.h:34
int64_t * data
Definition: fd_type.h:45
struct FD_C_OneDimArrayInt8 FD_C_OneDimArrayInt8
struct FD_C_OneDimArrayUint8 FD_C_OneDimArrayUint8
size_t size
Definition: fd_type.h:79
Definition: fd_type.h:53
FD_C_Cstr * data
Definition: fd_type.h:60
FASTDEPLOY_CAPI_EXPORT __fd_give FD_C_Mat FD_C_Imread(const char *imgpath)
Definition: fd_type.cc:55
size_t size
Definition: fd_type.h:54
size_t size
Definition: fd_type.h:44
Definition: fd_type.h:90
struct FD_C_OneDimMat FD_C_OneDimMat
size_t size
Definition: fd_type.h:29
char * data
Definition: fd_type.h:55
Definition: fd_type.h:78
struct FD_C_OneDimArrayFloat FD_C_OneDimArrayFloat
size_t size
Definition: fd_type.h:91
struct FD_C_OneDimArraySize FD_C_OneDimArraySize
size_t size
Definition: fd_type.h:74
struct FD_C_TwoDimArraySize FD_C_TwoDimArraySize
FASTDEPLOY_CAPI_EXPORT FD_C_Bool FD_C_Imwrite(const char *savepath, __fd_keep FD_C_Mat)
#define __fd_keep
Definition: fd_common.h:55
size_t size
Definition: fd_type.h:49
#define __fd_take
Definition: fd_common.h:46
size_t size
Definition: fd_type.h:84
Definition: fd_type.h:23
Definition: fd_type.h:28
size_t * data
Definition: fd_type.h:40
#define __fd_give
Definition: fd_common.h:37
Definition: fd_type.h:73
struct FD_C_TwoDimArrayInt32 FD_C_TwoDimArrayInt32
struct FD_C_Cstr FD_C_Cstr
void * FD_C_Mat
Definition: fd_type.h:88
struct FD_C_OneDimArrayCstr FD_C_OneDimArrayCstr
FD_C_Mat * data
Definition: fd_type.h:92
size_t size
Definition: fd_type.h:69
Definition: fd_type.h:68
Definition: fd_type.h:58
FD_C_OneDimArrayFloat * data
Definition: fd_type.h:85
Definition: fd_type.h:33
FD_C_OneDimArraySize * data
Definition: fd_type.h:65
FD_C_TwoDimArrayInt32 * data
Definition: fd_type.h:80
Definition: fd_type.h:83