PostgreSQL Source Code: contrib/intarray/_int_tool.c Source File (original) (raw)

1

2

3

5

6#include <limits.h>

7

12

13

14bool

16{

17 int na,

19 int i,

20 j,

21 n;

22 int *da,

23 *db;

24

29

30 i = j = n = 0;

31 while (i < na && j < nb)

32 {

33 if (da[i] < db[j])

34 i++;

35 else if (da[i] == db[j])

36 {

37 n++;

38 i++;

39 j++;

40 }

41 else

42 break;

43 }

44

45 return (n == nb);

46}

47

48

49bool

51{

52 int na,

54 int i,

55 j;

56 int *da,

57 *db;

58

63

64 i = j = 0;

65 while (i < na && j < nb)

66 {

67 if (da[i] < db[j])

68 i++;

69 else if (da[i] == db[j])

70 return true;

71 else

72 j++;

73 }

74

75 return false;

76}

77

80{

82

85

92

93 if (!r)

94 {

99 int i,

100 j,

102

105

106

107 i = j = 0;

108 while (i < na && j < nb)

109 {

110 if (da[i] == db[j])

111 {

113 j++;

114 }

115 else if (da[i] < db[j])

117 else

118 *dr++ = db[j++];

119 }

120

121 while (i < na)

123 while (j < nb)

124 *dr++ = db[j++];

125

127 }

128

131

132 return r;

133}

134

137{

139 int na,

141 int *da,

142 *db,

144 int i,

145 j,

146 k;

147

150

157

158 i = j = k = 0;

159 while (i < na && j < nb)

160 {

161 if (da[i] < db[j])

162 i++;

163 else if (da[i] == db[j])

164 {

165 if (k == 0 || dr[k - 1] != db[j])

166 dr[k++] = db[j];

167 i++;

168 j++;

169 }

170 else

171 j++;

172 }

173

174 if (k == 0)

175 {

178 }

179 else

181}

182

183void

188

189

190static inline int

192{

195

196 if (*((bool *) arg))

197 {

198

199 if (aval < bval)

200 return -1;

201 if (aval > bval)

202 return 1;

203 }

204 else

205 {

206 if (aval > bval)

207 return -1;

208 if (aval < bval)

209 return 1;

210 }

211 return 0;

212}

213

214#define ST_SORT isort

215#define ST_ELEMENT_TYPE int32

216#define ST_COMPARE(a, b, ascending) isort_cmp(a, b, ascending)

217#define ST_COMPARE_ARG_TYPE void

218#define ST_SCOPE

219#define ST_DEFINE

221

222

225{

227 int nbytes;

228

229

230 if (num <= 0)

231 {

234 return r;

235 }

236

238

240

243 r->dataoffset = 0;

247

248 return r;

249}

250

253{

254 int nbytes;

255 int i;

256

257

258 if (num <= 0)

259 {

262 return a;

263 }

264

266 return a;

267

269

271

273

275 {

277 num = 1;

278 }

279 return a;

280}

281

284{

287

290 return r;

291}

292

293

294int

296{

297 int i;

299

300 for (i = 0; i < len; i += 2)

301 {

302 if (i || a[i] != a[i - 1])

304 }

305

307 return -1;

308 return (int) size;

309}

310

311

323

324void

326{

327 int i;

328

329

330 for (i = 0; i < len; i++)

331 {

333 a++;

334 }

335}

336

339{

341 c,

342 i;

343

347 for (i = 0; i < c; i++)

348 if (aa[i] == elem)

349 return (i + 1);

350 return 0;

351}

352

355{

359

364 if (c > 0)

366 r[c] = elem;

367 return result;

368}

369

372{

376

380 if (ac)

382 if (bc)

384 return result;

385}

386

389{

392

395 aa[0] = elem;

396 return result;

397}

#define ARR_OVERHEAD_NONULLS(ndims)

#define ARR_DATA_OFFSET(a)

ArrayType * construct_empty_array(Oid elmtype)

#define Assert(condition)

#define HASH(sign, val, siglen)

void * repalloc(void *pointer, Size size)

void pfree(void *pointer)

void * palloc0(Size size)

static size_t qunique_arg(void *array, size_t elements, size_t width, int(*compare)(const void *, const void *, void *), void *arg)

static void SET_VARSIZE(void *PTR, Size len)