Skip to content

Commit 4c26ea8

Browse files
committed
add ADOLC_API to all friends ... its a declaration
1 parent 21c0a6b commit 4c26ea8

File tree

3 files changed

+189
-183
lines changed

3 files changed

+189
-183
lines changed

ADOL-C/include/adolc/adtl.h

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ class adouble;
4343
class refcounter {
4444
private:
4545
static size_t refcnt;
46-
friend void setNumDir(const size_t p);
47-
friend class adouble;
46+
ADOLC_API friend void setNumDir(const size_t p);
47+
ADOLC_API friend class adouble;
4848

4949
public:
5050
refcounter() { ++refcnt; }
@@ -73,22 +73,22 @@ class adouble {
7373
// addition
7474
inline adouble operator+(const double v) const;
7575
inline adouble operator+(const adouble &a) const;
76-
inline friend adouble operator+(const double v, const adouble &a);
76+
ADOLC_API inline friend adouble operator+(const double v, const adouble &a);
7777

7878
// subtraction
7979
inline adouble operator-(const double v) const;
8080
inline adouble operator-(const adouble &a) const;
81-
inline friend adouble operator-(const double v, const adouble &a);
81+
ADOLC_API inline friend adouble operator-(const double v, const adouble &a);
8282

8383
// multiplication
8484
inline adouble operator*(const double v) const;
8585
inline adouble operator*(const adouble &a) const;
86-
inline friend adouble operator*(const double v, const adouble &a);
86+
ADOLC_API inline friend adouble operator*(const double v, const adouble &a);
8787

8888
// division
8989
inline adouble operator/(const double v) const;
9090
inline adouble operator/(const adouble &a) const;
91-
inline friend adouble operator/(const double v, const adouble &a);
91+
ADOLC_API inline friend adouble operator/(const double v, const adouble &a);
9292

9393
// inc/dec
9494
inline adouble operator++();
@@ -97,53 +97,55 @@ class adouble {
9797
inline adouble operator--(int);
9898

9999
// functions
100-
inline friend adouble tan(const adouble &a);
101-
inline friend adouble exp(const adouble &a);
102-
inline friend adouble log(const adouble &a);
103-
inline friend adouble sqrt(const adouble &a);
104-
inline friend adouble cbrt(const adouble &a);
105-
inline friend adouble sin(const adouble &a);
106-
inline friend adouble cos(const adouble &a);
107-
inline friend adouble asin(const adouble &a);
108-
inline friend adouble acos(const adouble &a);
109-
inline friend adouble atan(const adouble &a);
110-
111-
inline friend adouble atan2(const adouble &a, const adouble &b);
112-
inline friend adouble pow(const adouble &a, double v);
113-
inline friend adouble pow(const adouble &a, const adouble &b);
114-
inline friend adouble pow(double v, const adouble &a);
115-
inline friend adouble log10(const adouble &a);
116-
117-
inline friend adouble sinh(const adouble &a);
118-
inline friend adouble cosh(const adouble &a);
119-
inline friend adouble tanh(const adouble &a);
120-
inline friend adouble asinh(const adouble &a);
121-
inline friend adouble acosh(const adouble &a);
122-
inline friend adouble atanh(const adouble &a);
123-
inline friend adouble fabs(const adouble &a);
124-
inline friend adouble ceil(const adouble &a);
125-
inline friend adouble floor(const adouble &a);
126-
inline friend adouble fmax(const adouble &a, const adouble &b);
127-
inline friend adouble fmax(double v, const adouble &a);
128-
inline friend adouble fmax(const adouble &a, double v);
129-
inline friend adouble fmin(const adouble &a, const adouble &b);
130-
inline friend adouble fmin(double v, const adouble &a);
131-
inline friend adouble fmin(const adouble &a, double v);
132-
inline friend adouble ldexp(const adouble &a, const adouble &b);
133-
inline friend adouble ldexp(const adouble &a, const double v);
134-
inline friend adouble ldexp(const double v, const adouble &a);
135-
inline friend double frexp(const adouble &a, int *v);
136-
inline friend adouble erf(const adouble &a);
137-
inline friend adouble erfc(const adouble &a);
138-
139-
inline friend void condassign(adouble &res, const adouble &cond,
140-
const adouble &arg1, const adouble &arg2);
141-
inline friend void condassign(adouble &res, const adouble &cond,
142-
const adouble &arg);
143-
inline friend void condeqassign(adouble &res, const adouble &cond,
144-
const adouble &arg1, const adouble &arg2);
145-
inline friend void condeqassign(adouble &res, const adouble &cond,
146-
const adouble &arg);
100+
ADOLC_API inline friend adouble tan(const adouble &a);
101+
ADOLC_API inline friend adouble exp(const adouble &a);
102+
ADOLC_API inline friend adouble log(const adouble &a);
103+
ADOLC_API inline friend adouble sqrt(const adouble &a);
104+
ADOLC_API inline friend adouble cbrt(const adouble &a);
105+
ADOLC_API inline friend adouble sin(const adouble &a);
106+
ADOLC_API inline friend adouble cos(const adouble &a);
107+
ADOLC_API inline friend adouble asin(const adouble &a);
108+
ADOLC_API inline friend adouble acos(const adouble &a);
109+
ADOLC_API inline friend adouble atan(const adouble &a);
110+
111+
ADOLC_API inline friend adouble atan2(const adouble &a, const adouble &b);
112+
ADOLC_API inline friend adouble pow(const adouble &a, double v);
113+
ADOLC_API inline friend adouble pow(const adouble &a, const adouble &b);
114+
ADOLC_API inline friend adouble pow(double v, const adouble &a);
115+
ADOLC_API inline friend adouble log10(const adouble &a);
116+
117+
ADOLC_API inline friend adouble sinh(const adouble &a);
118+
ADOLC_API inline friend adouble cosh(const adouble &a);
119+
ADOLC_API inline friend adouble tanh(const adouble &a);
120+
ADOLC_API inline friend adouble asinh(const adouble &a);
121+
ADOLC_API inline friend adouble acosh(const adouble &a);
122+
ADOLC_API inline friend adouble atanh(const adouble &a);
123+
ADOLC_API inline friend adouble fabs(const adouble &a);
124+
ADOLC_API inline friend adouble ceil(const adouble &a);
125+
ADOLC_API inline friend adouble floor(const adouble &a);
126+
ADOLC_API inline friend adouble fmax(const adouble &a, const adouble &b);
127+
ADOLC_API inline friend adouble fmax(double v, const adouble &a);
128+
ADOLC_API inline friend adouble fmax(const adouble &a, double v);
129+
ADOLC_API inline friend adouble fmin(const adouble &a, const adouble &b);
130+
ADOLC_API inline friend adouble fmin(double v, const adouble &a);
131+
ADOLC_API inline friend adouble fmin(const adouble &a, double v);
132+
ADOLC_API inline friend adouble ldexp(const adouble &a, const adouble &b);
133+
ADOLC_API inline friend adouble ldexp(const adouble &a, const double v);
134+
ADOLC_API inline friend adouble ldexp(const double v, const adouble &a);
135+
ADOLC_API inline friend double frexp(const adouble &a, int *v);
136+
ADOLC_API inline friend adouble erf(const adouble &a);
137+
ADOLC_API inline friend adouble erfc(const adouble &a);
138+
139+
ADOLC_API inline friend void condassign(adouble &res, const adouble &cond,
140+
const adouble &arg1,
141+
const adouble &arg2);
142+
ADOLC_API inline friend void condassign(adouble &res, const adouble &cond,
143+
const adouble &arg);
144+
ADOLC_API inline friend void condeqassign(adouble &res, const adouble &cond,
145+
const adouble &arg1,
146+
const adouble &arg2);
147+
ADOLC_API inline friend void condeqassign(adouble &res, const adouble &cond,
148+
const adouble &arg);
147149

148150
/******************* nontemporary results ***************************/
149151
// assignment
@@ -172,27 +174,27 @@ class adouble {
172174
// comparison
173175
inline bool operator!=(const adouble &) const;
174176
inline bool operator!=(const double) const;
175-
inline friend bool operator!=(const double, const adouble &);
177+
ADOLC_API inline friend bool operator!=(const double, const adouble &);
176178

177179
inline bool operator==(const adouble &) const;
178180
inline bool operator==(const double) const;
179-
inline friend bool operator==(const double, const adouble &);
181+
ADOLC_API inline friend bool operator==(const double, const adouble &);
180182

181183
inline bool operator<=(const adouble &) const;
182184
inline bool operator<=(const double) const;
183-
inline friend bool operator<=(const double, const adouble &);
185+
ADOLC_API inline friend bool operator<=(const double, const adouble &);
184186

185187
inline bool operator>=(const adouble &) const;
186188
inline bool operator>=(const double) const;
187-
inline friend bool operator>=(const double, const adouble &);
189+
ADOLC_API inline friend bool operator>=(const double, const adouble &);
188190

189191
inline bool operator>(const adouble &) const;
190192
inline bool operator>(const double) const;
191-
inline friend bool operator>(const double, const adouble &);
193+
ADOLC_API inline friend bool operator>(const double, const adouble &);
192194

193195
inline bool operator<(const adouble &) const;
194196
inline bool operator<(const double) const;
195-
inline friend bool operator<(const double, const adouble &);
197+
ADOLC_API inline friend bool operator<(const double, const adouble &);
196198

197199
/******************* getter / setter ********************************/
198200
inline double getValue() const;
@@ -220,8 +222,8 @@ class adouble {
220222
refcounter __rcnt;
221223
#endif
222224
static size_t numDir;
223-
inline friend void setNumDir(const size_t p);
224-
inline friend size_t getNumDir();
225+
ADOLC_API inline friend void setNumDir(const size_t p);
226+
ADOLC_API inline friend size_t getNumDir();
225227
};
226228

227229
} // namespace adtl

ADOL-C/include/adolc/adtl_hov.h

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class ADOLC_API refcounter {
5252
ADOLC_API friend void setNumDir(const size_t p);
5353
ADOLC_API friend void setDegree(const size_t p);
5454
ADOLC_API friend void setMode(enum Mode newmode);
55-
friend class adouble;
55+
ADOLC_API friend class adouble;
5656

5757
public:
5858
refcounter() { ++refcnt; }
@@ -82,22 +82,22 @@ class ADOLC_API adouble {
8282
// addition
8383
inline adouble operator+(const double v) const;
8484
inline adouble operator+(const adouble &a) const;
85-
inline friend adouble operator+(const double v, const adouble &a);
85+
ADOLC_API inline friend adouble operator+(const double v, const adouble &a);
8686

8787
// subtraction
8888
inline adouble operator-(const double v) const;
8989
inline adouble operator-(const adouble &a) const;
90-
inline friend adouble operator-(const double v, const adouble &a);
90+
ADOLC_API inline friend adouble operator-(const double v, const adouble &a);
9191

9292
// multiplication
9393
inline adouble operator*(const double v) const;
9494
inline adouble operator*(const adouble &a) const;
95-
inline friend adouble operator*(const double v, const adouble &a);
95+
ADOLC_API inline friend adouble operator*(const double v, const adouble &a);
9696

9797
// division
9898
inline adouble operator/(const double v) const;
9999
inline adouble operator/(const adouble &a) const;
100-
inline friend adouble operator/(const double v, const adouble &a);
100+
ADOLC_API inline friend adouble operator/(const double v, const adouble &a);
101101

102102
// inc/dec
103103
inline adouble operator++();
@@ -106,53 +106,55 @@ class ADOLC_API adouble {
106106
inline adouble operator--(int);
107107

108108
// functions
109-
inline friend adouble tan(const adouble &a);
110-
inline friend adouble exp(const adouble &a);
111-
inline friend adouble log(const adouble &a);
112-
inline friend adouble sqrt(const adouble &a);
113-
inline friend adouble cbrt(const adouble &a);
114-
inline friend adouble sin(const adouble &a);
115-
inline friend adouble cos(const adouble &a);
116-
inline friend adouble asin(const adouble &a);
117-
inline friend adouble acos(const adouble &a);
118-
inline friend adouble atan(const adouble &a);
119-
120-
inline friend adouble atan2(const adouble &a, const adouble &b);
121-
inline friend adouble pow(const adouble &a, double v);
122-
inline friend adouble pow(const adouble &a, const adouble &b);
123-
inline friend adouble pow(double v, const adouble &a);
124-
inline friend adouble log10(const adouble &a);
125-
126-
inline friend adouble sinh(const adouble &a);
127-
inline friend adouble cosh(const adouble &a);
128-
inline friend adouble tanh(const adouble &a);
129-
inline friend adouble asinh(const adouble &a);
130-
inline friend adouble acosh(const adouble &a);
131-
inline friend adouble atanh(const adouble &a);
132-
inline friend adouble fabs(const adouble &a);
133-
inline friend adouble ceil(const adouble &a);
134-
inline friend adouble floor(const adouble &a);
135-
inline friend adouble fmax(const adouble &a, const adouble &b);
136-
inline friend adouble fmax(double v, const adouble &a);
137-
inline friend adouble fmax(const adouble &a, double v);
138-
inline friend adouble fmin(const adouble &a, const adouble &b);
139-
inline friend adouble fmin(double v, const adouble &a);
140-
inline friend adouble fmin(const adouble &a, double v);
141-
inline friend adouble ldexp(const adouble &a, const adouble &b);
142-
inline friend adouble ldexp(const adouble &a, const double v);
143-
inline friend adouble ldexp(const double v, const adouble &a);
144-
inline friend double frexp(const adouble &a, int *v);
145-
inline friend adouble erf(const adouble &a);
146-
inline friend adouble erfc(const adouble &a);
147-
148-
inline friend void condassign(adouble &res, const adouble &cond,
149-
const adouble &arg1, const adouble &arg2);
150-
inline friend void condassign(adouble &res, const adouble &cond,
151-
const adouble &arg);
152-
inline friend void condeqassign(adouble &res, const adouble &cond,
153-
const adouble &arg1, const adouble &arg2);
154-
inline friend void condeqassign(adouble &res, const adouble &cond,
155-
const adouble &arg);
109+
ADOLC_API inline friend adouble tan(const adouble &a);
110+
ADOLC_API inline friend adouble exp(const adouble &a);
111+
ADOLC_API inline friend adouble log(const adouble &a);
112+
ADOLC_API inline friend adouble sqrt(const adouble &a);
113+
ADOLC_API inline friend adouble cbrt(const adouble &a);
114+
ADOLC_API inline friend adouble sin(const adouble &a);
115+
ADOLC_API inline friend adouble cos(const adouble &a);
116+
ADOLC_API inline friend adouble asin(const adouble &a);
117+
ADOLC_API inline friend adouble acos(const adouble &a);
118+
ADOLC_API inline friend adouble atan(const adouble &a);
119+
120+
ADOLC_API inline friend adouble atan2(const adouble &a, const adouble &b);
121+
ADOLC_API inline friend adouble pow(const adouble &a, double v);
122+
ADOLC_API inline friend adouble pow(const adouble &a, const adouble &b);
123+
ADOLC_API inline friend adouble pow(double v, const adouble &a);
124+
ADOLC_API inline friend adouble log10(const adouble &a);
125+
126+
ADOLC_API inline friend adouble sinh(const adouble &a);
127+
ADOLC_API inline friend adouble cosh(const adouble &a);
128+
ADOLC_API inline friend adouble tanh(const adouble &a);
129+
ADOLC_API inline friend adouble asinh(const adouble &a);
130+
ADOLC_API inline friend adouble acosh(const adouble &a);
131+
ADOLC_API inline friend adouble atanh(const adouble &a);
132+
ADOLC_API inline friend adouble fabs(const adouble &a);
133+
ADOLC_API inline friend adouble ceil(const adouble &a);
134+
ADOLC_API inline friend adouble floor(const adouble &a);
135+
ADOLC_API inline friend adouble fmax(const adouble &a, const adouble &b);
136+
ADOLC_API inline friend adouble fmax(double v, const adouble &a);
137+
ADOLC_API inline friend adouble fmax(const adouble &a, double v);
138+
ADOLC_API inline friend adouble fmin(const adouble &a, const adouble &b);
139+
ADOLC_API inline friend adouble fmin(double v, const adouble &a);
140+
ADOLC_API inline friend adouble fmin(const adouble &a, double v);
141+
ADOLC_API inline friend adouble ldexp(const adouble &a, const adouble &b);
142+
ADOLC_API inline friend adouble ldexp(const adouble &a, const double v);
143+
ADOLC_API inline friend adouble ldexp(const double v, const adouble &a);
144+
ADOLC_API inline friend double frexp(const adouble &a, int *v);
145+
ADOLC_API inline friend adouble erf(const adouble &a);
146+
ADOLC_API inline friend adouble erfc(const adouble &a);
147+
148+
ADOLC_API inline friend void condassign(adouble &res, const adouble &cond,
149+
const adouble &arg1,
150+
const adouble &arg2);
151+
ADOLC_API inline friend void condassign(adouble &res, const adouble &cond,
152+
const adouble &arg);
153+
ADOLC_API inline friend void condeqassign(adouble &res, const adouble &cond,
154+
const adouble &arg1,
155+
const adouble &arg2);
156+
ADOLC_API inline friend void condeqassign(adouble &res, const adouble &cond,
157+
const adouble &arg);
156158

157159
/******************* nontemporary results ***************************/
158160
// assignment
@@ -181,27 +183,27 @@ class ADOLC_API adouble {
181183
// comparison
182184
inline int operator!=(const adouble &) const;
183185
inline int operator!=(const double) const;
184-
inline friend int operator!=(const double, const adouble &);
186+
ADOLC_API inline friend int operator!=(const double, const adouble &);
185187

186188
inline int operator==(const adouble &) const;
187189
inline int operator==(const double) const;
188-
inline friend int operator==(const double, const adouble &);
190+
ADOLC_API inline friend int operator==(const double, const adouble &);
189191

190192
inline int operator<=(const adouble &) const;
191193
inline int operator<=(const double) const;
192-
inline friend int operator<=(const double, const adouble &);
194+
ADOLC_API inline friend int operator<=(const double, const adouble &);
193195

194196
inline int operator>=(const adouble &) const;
195197
inline int operator>=(const double) const;
196-
inline friend int operator>=(const double, const adouble &);
198+
ADOLC_API inline friend int operator>=(const double, const adouble &);
197199

198200
inline int operator>(const adouble &) const;
199201
inline int operator>(const double) const;
200-
inline friend int operator>(const double, const adouble &);
202+
ADOLC_API inline friend int operator>(const double, const adouble &);
201203

202204
inline int operator<(const adouble &) const;
203205
inline int operator<(const double) const;
204-
inline friend int operator<(const double, const adouble &);
206+
ADOLC_API inline friend int operator<(const double, const adouble &);
205207

206208
/******************* getter / setter ********************************/
207209
inline double getValue() const;
@@ -257,9 +259,9 @@ class ADOLC_API adouble {
257259
static size_t numDir;
258260
static size_t degree;
259261
static enum Mode forward_mode;
260-
inline friend void setNumDir(const size_t p);
261-
inline friend void setDegree(const size_t p);
262-
inline friend void setMode(enum Mode newmode);
262+
ADOLC_API inline friend void setNumDir(const size_t p);
263+
ADOLC_API inline friend void setDegree(const size_t p);
264+
ADOLC_API inline friend void setMode(enum Mode newmode);
263265
};
264266

265267
} // namespace adtl_hov

0 commit comments

Comments
 (0)