/usr/lib/ats2-postiats-0.2.6/libc/gdbm/SATS/gdbm.sats is in ats2-lang 0.2.6-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | (***********************************************************************)
(* *)
(* Applied Type System *)
(* *)
(***********************************************************************)
(*
** ATS/Postiats - Unleashing the Potential of Types!
** Copyright (C) 2011-2013 Hongwei Xi, ATS Trustful Software, Inc.
** All rights reserved
**
** ATS is free software; you can redistribute it and/or modify it under
** the terms of the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
** Free Software Foundation; either version 3, or (at your option) any
** later version.
**
** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
** WARRANTY; without even the implied warranty of MERCHANTABILITY or
** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
** for more details.
**
** You should have received a copy of the GNU General Public License
** along with ATS; see the file COPYING. If not, please write to the
** Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
** 02110-1301, USA.
*)
(* ****** ****** *)
//
// Author: Hongwei Xi (gmhwxi AT gmail DOT com)
// Start Time: July, 2013
//
(* ****** ****** *)
#define ATS_PACKNAME "ATSLIB.libc.gdbm_gdbm"
#define ATS_STALOADFLAG 0 // no static loading at run-time
#define ATS_EXTERN_PREFIX "atslib_" // prefix for external names
(* ****** ****** *)
%{#
#include "libc/gdbm/CATS/gdbm.cats"
%} // end of [%{#]
(* ****** ****** *)
staload FCNTL = "libc/SATS/fcntl.sats"
staload TYPES = "libc/sys/SATS/types.sats"
typedef mode_t = $TYPES.mode_t
(* ****** ****** *)
#include "./SHARE/datum.hats"
(* ****** ****** *)
absvtype GDBMfilptr (lf:addr) = ptr
vtypedef GDBMfilptr = [lf:addr] GDBMfilptr (lf)
vtypedef GDBMfilptr0 = [lf:addr | lf >= null] GDBMfilptr (lf)
vtypedef GDBMfilptr1 = [lf:addr | lf > null] GDBMfilptr (lf)
(* ****** ****** *)
praxi
GDBMfilptr_free_null (GDBMfilptr (null)): void
castfn
GDBMfilptr2ptr {lf:addr} (!GDBMfilptr lf):<> ptr (lf)
overload ptrcast with GDBMfilptr2ptr
(* ****** ****** *)
//
typedef GDBMerror = int
//
macdef
GDBM_NO_ERROR = $extval (GDBMerror, "GDBM_NO_ERROR")
macdef
GDBM_MALLOC_ERROR = $extval (GDBMerror, "GDBM_MALLOC_ERROR")
macdef
GDBM_BLOCK_SIZE_ERROR = $extval (GDBMerror, "GDBM_BLOCK_SIZE_ERROR")
macdef
GDBM_FILE_OPEN_ERROR = $extval (GDBMerror, "GDBM_FILE_OPEN_ERROR")
macdef
GDBM_FILE_WRITE_ERROR = $extval (GDBMerror, "GDBM_FILE_WRITE_ERROR")
macdef
GDBM_FILE_SEEK_ERROR = $extval (GDBMerror, "GDBM_FILE_SEEK_ERROR")
macdef
GDBM_FILE_READ_ERROR = $extval (GDBMerror, "GDBM_FILE_READ_ERROR")
macdef
GDBM_BAD_MAGIC_NUMBER = $extval (GDBMerror, "GDBM_BAD_MAGIC_NUMBER")
macdef
GDBM_EMPTY_DATABASE = $extval (GDBMerror, "GDBM_EMPTY_DATABASE")
macdef
GDBM_CANT_BE_READER = $extval (GDBMerror, "GDBM_CANT_BE_READER")
macdef
GDBM_CANT_BE_WRITER = $extval (GDBMerror, "GDBM_CANT_BE_WRITER")
macdef
GDBM_READER_CANT_DELETE = $extval (GDBMerror, "GDBM_READER_CANT_DELETE")
macdef
GDBM_READER_CANT_STORE = $extval (GDBMerror, "GDBM_READER_CANT_STORE")
macdef
GDBM_READER_CANT_REORGANIZE = $extval (GDBMerror, "GDBM_READER_CANT_REORGANIZE")
macdef
GDBM_UNKNOWN_UPDATE = $extval (GDBMerror, "GDBM_UNKNOWN_UPDATE")
macdef
GDBM_ITEM_NOT_FOUND = $extval (GDBMerror, "GDBM_ITEM_NOT_FOUND")
macdef
GDBM_REORGANIZE_FAILED = $extval (GDBMerror, "GDBM_REORGANIZE_FAILED")
macdef
GDBM_CANNOT_REPLACE = $extval (GDBMerror, "GDBM_CANNOT_REPLACE")
macdef
GDBM_ILLEGAL_DATA = $extval (GDBMerror, "GDBM_ILLEGAL_DATA")
macdef
GDBM_OPT_ALREADY_SET = $extval (GDBMerror, "GDBM_OPT_ALREADY_SET")
macdef
GDBM_OPT_ILLEGAL = $extval (GDBMerror, "GDBM_OPT_ILLEGAL")
macdef
GDBM_BYTE_SWAPPED = $extval (GDBMerror, "GDBM_BYTE_SWAPPED")
macdef
GDBM_BAD_FILE_OFFSET = $extval (GDBMerror, "GDBM_BAD_FILE_OFFSET")
macdef
GDBM_BAD_OPEN_FLAGS = $extval (GDBMerror, "GDBM_BAD_OPEN_FLAGS")
//
(* ****** ****** *)
//
fun gdbm_errno_get (): GDBMerror = "mac#%"
//
(* ****** ****** *)
//
// statically-allocated
//
val gdbm_version : string = "mac#%"
val gdbm_version_number : array (int, 3) = "mac#mac%"
//
(* ****** ****** *)
fun gdm_version_cmp
(v1: &(@[int][3]), v2: &(@[int][3])):<> int = "mac#%"
// end of [gdm_version_cmp]
(* ****** ****** *)
(*
#define GDBM_READER 0 /* A reader. */
#define GDBM_WRITER 1 /* A writer. */
#define GDBM_WRCREAT 2 /* A writer. Create the db if needed. */
#define GDBM_NEWDB 3 /* A writer. Always create a new db. */
*)
macdef GDBM_READER = $extval (int, "GDBM_READER")
macdef GDBM_WRITER = $extval (int, "GDBM_WRITER")
macdef GDBM_WRCREAT = $extval (int, "GDBM_WRCREAT")
macdef GDBM_NEWDB = $extval (int, "GDBM_NEWDB")
(*
#define GDBM_FAST 0x10 /* Write fast! => No fsyncs. OBSOLETE. */
#define GDBM_SYNC 0x20 /* Sync operations to the disk. */
#define GDBM_NOLOCK 0x40 /* Don't do file locking operations. */
*)
macdef GDBM_FAST = $extval (int, "GDBM_FAST")
macdef GDBM_SYNC = $extval (int, "GDBM_SYNC")
macdef GDBM_NOLOCK = $extval (int, "GDBM_NOLOCK")
(* ****** ****** *)
(*
GDBM_FILE gdbm_open
(name, block_size, flags, mode, fatal_func);
*)
//
// fatal_func: (string) -> void
//
fun gdbm_open
(
name: string
, block_size: int, flags: int, mode: mode_t, fatal_func: ptr
) : GDBMfilptr0 = "mac#%" // end of [gdbm_open]
(* ****** ****** *)
(*
void gdbm_close(dbf);
*)
fun gdbm_close (dbf: GDBMfilptr) : void = "mac#%"
(* ****** ****** *)
(*
int gdbm_store(dbf, key, content, flag);
*)
(*
#define GDBM_INSERT 0 /* Never replace old data with new. */
#define GDBM_REPLACE 1 /* Always replace old data with new. */
*)
macdef GDBM_INSERT = $extval (int, "GDBM_INSERT")
macdef GDBM_REPLACE = $extval (int, "GDBM_REPLACE")
fun gdbm_store
{l1,l2:addr}{n1,n2:nat}
(
dbf: !GDBMfilptr1, key: !datum(l1, n1), content: !datum(l2, n2), flag: int
) : int(*err*) = "mac#%" // end of [gdbm_store]
(* ****** ****** *)
(*
datum gdbm_fetch(dbf, key);
*)
//
// HX: the return value is allocated
//
fun gdbm_fetch
{l:agz}{n:int}
(dbf: !GDBMfilptr1, key: !datum (l, n)): datum0 = "mac#%"
// end of [gdbm_fetch]
(* ****** ****** *)
(*
int gdbm_exists(dbf, key);
*)
fun gdbm_exists
{l:agz}{n:int} // true/false: 0/1
(dbf: !GDBMfilptr1, key: !datum (l, n)): int = "mac#%"
// end of [gdbm_exists]
(* ****** ****** *)
(*
int gdbm_delete(dbf, key);
*)
fun gdbm_delete
{l:agz}{n:int} // succ/fail: 0/-1
(dbf: !GDBMfilptr1, key: !datum (l, n)) : int = "mac#%"
// end of [gdbm_delete]
(* ****** ****** *)
(*
datum gdbm_firstkey(dbf);
*)
fun gdbm_firstkey (dbf: !GDBMfilptr1): datum0 = "mac#%"
(* ****** ****** *)
(*
datum gdbm_nextkey(dbf, key);
*)
fun gdbm_nextkey
{l:agz}{n:int}
(dbf: !GDBMfilptr, key: !datum(l, n) >> _): datum0 = "mac#%"
// end of [gdbm_nextkey]
(* ****** ****** *)
(*
int gdbm_reorganize(dbf);
*)
fun gdbm_reorganize (!GDBMfilptr1): int = "mac#%"
(* ****** ****** *)
(*
void gdbm_sync(dbf);
*)
fun gdbm_sync (dbf: !GDBMfilptr1): void = "mac#%"
(* ****** ****** *)
(*
int gdbm_export
(
GDBM FILE dbf
, const char *exportfile,int flag, int mode
) ;
*)
fun gdbm_export
(
dbf: !GDBMfilptr1
, exportfile: string, flag: int, mode: mode_t
) : int = "mac#%" // end of [gdbm_export]
(* ****** ****** *)
(*
int gdbm_import
(
GDBM FILE dbf , const char *importfile , int flag
) ;
*)
fun gdbm_import
(
dbf: !GDBMfilptr1, importfile: string, flag: int
) : int = "mac#%" // end of [gdbm_import]
(* ****** ****** *)
(*
char *gdbm_strerror(int errno);
*)
fun gdbm_strerror
(errno: GDBMerror): string(*pre-allocated*) = "mac#%"
// end of [gdbm_strerror]
(* ****** ****** *)
(*
int gdbm_setopt(dbf, option, value, size);
*)
abst@ype
gdbmsetopt_t0ype (a:t@ype) = int
stadef gdbmsetopt = gdbmsetopt_t0ype
abst@ype
gdbmgetopt_t0ype (a:t@ype) = int
stadef gdbmgetopt = gdbmgetopt_t0ype
//
macdef
GDBM_CACHESIZE = $extval (gdbmsetopt(size_t), "GDBM_CACHESIZE")
macdef
GDBM_SETCACHESIZE = $extval (gdbmsetopt(size_t), "GDBM_SETCACHESIZE")
macdef
GDBM_GETCACHESIZE = $extval (gdbmgetopt(size_t), "GDBM_GETCACHESIZE")
//
macdef GDBM_GETFLAGS = $extval (gdbmgetopt(int), "GDBM_GETFLAGS")
//
macdef GDBM_FASTMODE = $extval (gdbmsetopt(int), "GDBM_FASTMODE")
//
macdef
GDBM_SYNCMODE = $extval (gdbmsetopt(int), "GDBM_SYNCMODE")
macdef
GDBM_SETSYNCMODE = $extval (gdbmsetopt(int), "GDBM_SETSYNCMODE")
macdef
GDBM_GETSYNCMODE = $extval (gdbmgetopt(int), "GDBM_GETSYNCMODE")
//
macdef
GDBM_COALESCEBLKS = $extval (gdbmsetopt(int), "GDBM_COALESCEBLKS")
macdef
GDBM_SETCOALESCEBLKS = $extval (gdbmsetopt(int), "GDBM_SETCOALESCEBLKS")
macdef
GDBM_GETCOALESCEBLKS = $extval (gdbmgetopt(int), "GDBM_GETCOALESCEBLKS")
//
macdef
GDBM_SETMAXMAPSIZE = $extval (gdbmsetopt(size_t), "GDBM_SETMAXMAPSIZE")
macdef
GDBM_GETMAXMAPSIZE = $extval (gdbmgetopt(size_t), "GDBM_GETMAXMAPSIZE")
//
macdef
GDBM_SETMMAP = $extval (gdbmsetopt(int), "GDBM_SETMMAP")
macdef
GDBM_GETMMAP = $extval (gdbmgetopt(int), "GDBM_GETMMAP")
//
macdef
GDBM_GETDBNAME = $extval (gdbmgetopt(ptr), "GDBM_GETDBNAME")
//
(* ****** ****** *)
fun
gdbm_setopt
{a:t@ype} (
dbf: !GDBMfilptr1
, option: gdbmsetopt(a), value: &a, size: sizeof_t(a)
) : int(*err*) = "mac#%" // end of [gdbm_setopt]
fun
gdbm_getopt
{a:t@ype} (
dbf: !GDBMfilptr1
, option: gdbmgetopt(a), value: &a? >> a, size: sizeof_t(a)
) : int(*err*) = "mac#%" // end of [gdbm_getopt]
fun gdbm_getdbname (dbf: !GDBMfilptr1): Strptr0 = "mac#%"
(* ****** ****** *)
(*
int gdbm_fdesc(dbf);
*)
fun gdbm_fdesc (!GDBMfilptr1): int(*fd*) = "mac#%" // no failure
(* ****** ****** *)
(* end of [gdbm.sats] *)
|