# 1 "../../src/sdbm.v0/sdbmfldu.c"
# 1 "<built-in>"
#define __VERSION__ "3.2.1 20020819 (prerelease)"
#define __USER_LABEL_PREFIX__ 
#define __REGISTER_PREFIX__ 
#define __HAVE_BUILTIN_SETJMP__ 1
#define __SIZE_TYPE__ unsigned int
#define __PTRDIFF_TYPE__ int
#define __WCHAR_TYPE__ long int
#define __WINT_TYPE__ unsigned int
#define __STDC__ 1
# 1 "<command line>"
#define __GNUC__ 3
# 1 "<command line>"
#define __GNUC_MINOR__ 2
# 1 "<command line>"
#define __GNUC_PATCHLEVEL__ 1
# 1 "<command line>"
#define __GXX_ABI_VERSION 102
# 1 "<command line>"
#define __ELF__ 1
# 1 "<command line>"
#define unix 1
# 1 "<command line>"
#define __gnu_linux__ 1
# 1 "<command line>"
#define linux 1
# 1 "<command line>"
#define __ELF__ 1
# 1 "<command line>"
#define __unix__ 1
# 1 "<command line>"
#define __gnu_linux__ 1
# 1 "<command line>"
#define __linux__ 1
# 1 "<command line>"
#define __unix 1
# 1 "<command line>"
#define __linux 1
# 1 "<command line>"
#define __OPTIMIZE__ 1
# 1 "<command line>"
#define __STDC_HOSTED__ 1
# 1 "<command line>"
#define i386 1
# 1 "<command line>"
#define __i386 1
# 1 "<command line>"
#define __i386__ 1
# 1 "<command line>"
#define __i586 1
# 1 "<command line>"
#define __i586__ 1
# 1 "<command line>"
#define __pentium 1
# 1 "<command line>"
#define __pentium__ 1
# 1 "<command line>"
#define __tune_i586__ 1
# 1 "<command line>"
#define __tune_pentium__ 1
# 1 "<command line>"
#define AXIS_LIBOBJ 1
# 1 "<command line>"
#define cCompo cCompoSdbmV0
# 1 "../../src/sdbm.v0/sdbmfldu.c"
# 13 "../../src/sdbm.v0/sdbmfldu.c"
#define _AXIS_SDBMFLDU_C_ 
static char const rcsid[] = "$Id: sdbmfldu.c,v 0.84 2001-08-27 21:30:11+09 sowhat Exp $"
"$Copyright: (C) 1998,1999,2000,2001 Amnis Corp. $";

# 1 "/usr/include/sys/types.h" 1 3
# 24 "/usr/include/sys/types.h" 3
#define _SYS_TYPES_H 1

# 1 "/usr/include/features.h" 1 3
# 20 "/usr/include/features.h" 3
#define _FEATURES_H 1
# 109 "/usr/include/features.h" 3
#define __KERNEL_STRICT_NAMES 



#define __USE_ANSI 1
# 150 "/usr/include/features.h" 3
#define _BSD_SOURCE 1
#define _SVID_SOURCE 1
# 167 "/usr/include/features.h" 3
#define _POSIX_SOURCE 1



#define _POSIX_C_SOURCE 199506L




#define __USE_POSIX 1



#define __USE_POSIX2 1



#define __USE_POSIX199309 1



#define __USE_POSIX199506 1
# 223 "/usr/include/features.h" 3
#define __USE_MISC 1



#define __USE_BSD 1



#define __USE_SVID 1
# 243 "/usr/include/features.h" 3
#define __STDC_IEC_559__ 1
#define __STDC_IEC_559_COMPLEX__ 1


#define __STDC_ISO_10646__ 200009L
# 256 "/usr/include/features.h" 3
#define __GNU_LIBRARY__ 6



#define __GLIBC__ 2
#define __GLIBC_MINOR__ 2
# 271 "/usr/include/features.h" 3
#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))





#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))





# 1 "/usr/include/sys/cdefs.h" 1 3
# 20 "/usr/include/sys/cdefs.h" 3
#define _SYS_CDEFS_H 1
# 46 "/usr/include/sys/cdefs.h" 3
#define __THROW 

#define __P(args) args __THROW


#define __PMT(args) args
# 70 "/usr/include/sys/cdefs.h" 3
#define __CONCAT(x,y) x ## y
#define __STRING(x) #x


#define __ptr_t void *
#define __long_double_t long double







#define __BEGIN_DECLS 
#define __END_DECLS 





#define __bounded 
#define __unbounded 
#define __ptrvalue 






#define __flexarr []
# 126 "/usr/include/sys/cdefs.h" 3
#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
#define __ASMNAME2(prefix,cname) __STRING (prefix) cname
# 149 "/usr/include/sys/cdefs.h" 3
#define __attribute_malloc__ __attribute__ ((__malloc__))
# 158 "/usr/include/sys/cdefs.h" 3
#define __attribute_pure__ __attribute__ ((__pure__))
# 167 "/usr/include/sys/cdefs.h" 3
#define __attribute_used__ __attribute__ ((__used__))
# 179 "/usr/include/sys/cdefs.h" 3
#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
# 189 "/usr/include/sys/cdefs.h" 3
#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
# 212 "/usr/include/sys/cdefs.h" 3
#define __restrict_arr __restrict
# 284 "/usr/include/features.h" 2 3
# 298 "/usr/include/features.h" 3
#define __USE_EXTERN_INLINES 1
# 312 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3




#define __stub___kernel_cosl 
#define __stub___kernel_sinl 
#define __stub___kernel_tanl 
#define __stub_chflags 
#define __stub_fattach 
#define __stub_fchflags 
#define __stub_fdetach 
#define __stub_fexecve 
#define __stub_gtty 
#define __stub_posix_fadvise 
#define __stub_posix_fadvise64 
#define __stub_revoke 
#define __stub_setlogin 
#define __stub_sigreturn 
#define __stub_sstk 
#define __stub_stty 
# 313 "/usr/include/features.h" 2 3
# 27 "/usr/include/sys/types.h" 2 3



# 1 "/usr/include/bits/types.h" 1 3
# 24 "/usr/include/bits/types.h" 3
#define _BITS_TYPES_H 1



#define __need_size_t 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 182 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#define __size_t__ 
#define __SIZE_T__ 
#define _SIZE_T 
#define _SYS_SIZE_T_H 
#define _T_SIZE_ 
#define _T_SIZE 
#define __SIZE_T 
#define _SIZE_T_ 
#define _BSD_SIZE_T_ 
#define _SIZE_T_DEFINED_ 
#define _SIZE_T_DEFINED 
#define ___int_size_t_h 
#define _GCC_SIZE_T 
#define _SIZET_ 
#define __size_t 




typedef unsigned int size_t;
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef int __clockid_t;


typedef int __timer_t;



#define __FD_SETSIZE 1024


typedef int __key_t;


typedef unsigned short int __ipc_pid_t;



typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_quad_t __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;


typedef unsigned int __socklen_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 20 "/usr/include/bits/pthreadtypes.h" 3
#define _BITS_PTHREADTYPES_H 1

#define __need_schedparam 
# 1 "/usr/include/bits/sched.h" 1 3
# 66 "/usr/include/bits/sched.h" 3
#define __defined_schedparam 1

struct __sched_param
  {
    int __sched_priority;
  };
#undef __need_schedparam
# 24 "/usr/include/bits/pthreadtypes.h" 2 3

typedef int __atomic_lock_t;


struct _pthread_fastlock
{
  long int __status;
  __atomic_lock_t __spinlock;

};



typedef struct _pthread_descr_struct *_pthread_descr;
#define _PTHREAD_DESCR_DEFINED 




typedef struct __pthread_attr_s
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;
# 142 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 144 "/usr/include/bits/types.h" 2 3
# 31 "/usr/include/sys/types.h" 2 3



typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
#define __u_char_defined 



typedef __loff_t loff_t;



typedef __ino_t ino_t;



#define __ino_t_defined 







typedef __dev_t dev_t;
#define __dev_t_defined 



typedef __gid_t gid_t;
#define __gid_t_defined 



typedef __mode_t mode_t;
#define __mode_t_defined 



typedef __nlink_t nlink_t;
#define __nlink_t_defined 



typedef __uid_t uid_t;
#define __uid_t_defined 




typedef __off_t off_t;



#define __off_t_defined 







typedef __pid_t pid_t;
#define __pid_t_defined 



typedef __id_t id_t;
#define __id_t_defined 



typedef __ssize_t ssize_t;
#define __ssize_t_defined 




typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
#define __daddr_t_defined 




typedef __key_t key_t;
#define __key_t_defined 





#define __need_time_t 
#define __need_timer_t 
#define __need_clockid_t 
# 1 "/usr/include/time.h" 1 3
# 65 "/usr/include/time.h" 3
#define __time_t_defined 1




typedef __time_t time_t;


#undef __need_time_t



#define __clockid_t_defined 1




typedef __clockid_t clockid_t;






#define __timer_t_defined 1




typedef __timer_t timer_t;


#undef __need_timer_t
# 133 "/usr/include/sys/types.h" 2 3
# 145 "/usr/include/sys/types.h" 3
#define __need_size_t 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 147 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 183 "/usr/include/sys/types.h" 3
#define __intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))

#define __u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))



#define __int8_t_defined 
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));





#define __BIT_TYPES_DEFINED__ 1




# 1 "/usr/include/endian.h" 1 3
# 20 "/usr/include/endian.h" 3
#define _ENDIAN_H 1
# 32 "/usr/include/endian.h" 3
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412


# 1 "/usr/include/bits/endian.h" 1 3






#define __BYTE_ORDER __LITTLE_ENDIAN
# 38 "/usr/include/endian.h" 2 3




#define __FLOAT_WORD_ORDER __BYTE_ORDER



#define LITTLE_ENDIAN __LITTLE_ENDIAN
#define BIG_ENDIAN __BIG_ENDIAN
#define PDP_ENDIAN __PDP_ENDIAN
#define BYTE_ORDER __BYTE_ORDER



#define __LONG_LONG_PAIR(HI,LO) LO, HI
# 213 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 23 "/usr/include/sys/select.h" 3
#define _SYS_SELECT_H 1







# 1 "/usr/include/bits/select.h" 1 3
# 26 "/usr/include/bits/select.h" 3
#define __FD_ZERO(fdsp) do { int __d0, __d1; __asm__ __volatile__ ("cld; rep; stosl" : "=c" (__d0), "=D" (__d1) : "a" (0), "0" (sizeof (fd_set) / sizeof (__fd_mask)), "1" (&__FDS_BITS (fdsp)[0]) : "memory"); } while (0)
# 37 "/usr/include/bits/select.h" 3
#define __FD_SET(fd,fdsp) __asm__ __volatile__ ("btsl %1,%0" : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) : "r" (((int) (fd)) % __NFDBITS) : "cc","memory")




#define __FD_CLR(fd,fdsp) __asm__ __volatile__ ("btrl %1,%0" : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) : "r" (((int) (fd)) % __NFDBITS) : "cc","memory")




#define __FD_ISSET(fd,fdsp) (__extension__ ({register char __result; __asm__ __volatile__ ("btl %1,%2 ; setcb %b0" : "=q" (__result) : "r" (((int) (fd)) % __NFDBITS), "m" (__FDS_BITS (fdsp)[__FDELT (fd)]) : "cc"); __result; }))
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 21 "/usr/include/bits/sigset.h" 3
#define _SIGSET_H_types 1

typedef int __sig_atomic_t;



#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3


#define __sigset_t_defined 
typedef __sigset_t sigset_t;



#define __need_time_t 
#define __need_timespec 
# 1 "/usr/include/time.h" 1 3
# 73 "/usr/include/time.h" 3
#undef __need_time_t
# 102 "/usr/include/time.h" 3
#define __timespec_defined 1



struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };


#undef __need_timespec
# 45 "/usr/include/sys/select.h" 2 3
#define __need_timeval 
# 1 "/usr/include/bits/time.h" 1 3
# 60 "/usr/include/bits/time.h" 3
#undef __need_timeval

#define _STRUCT_TIMEVAL 1




struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3


typedef __suseconds_t suseconds_t;
#define __suseconds_t_defined 




typedef long int __fd_mask;


#define __NFDBITS (8 * sizeof (__fd_mask))
#define __FDELT(d) ((d) / __NFDBITS)
#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))


typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
#define __FDS_BITS(set) ((set)->__fds_bits)

  } fd_set;


#define FD_SETSIZE __FD_SETSIZE



typedef __fd_mask fd_mask;


#define NFDBITS __NFDBITS




#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)









extern int select (int __nfds, fd_set *__restrict __readfds,
                   fd_set *__restrict __writefds,
                   fd_set *__restrict __exceptfds,
                   struct timeval *__restrict __timeout) ;
# 118 "/usr/include/sys/select.h" 3

# 216 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 21 "/usr/include/sys/sysmacros.h" 3
#define _SYS_SYSMACROS_H 1






#define major(dev) ((int)(((dev) >> 8) & 0xff))
#define minor(dev) ((int)((dev) & 0xff))
#define makedev(major,minor) ((((unsigned int) (major)) << 8) | ((unsigned int) (minor)))
# 219 "/usr/include/sys/types.h" 2 3
# 230 "/usr/include/sys/types.h" 3
typedef __blkcnt_t blkcnt_t;
#define __blkcnt_t_defined 


typedef __fsblkcnt_t fsblkcnt_t;
#define __fsblkcnt_t_defined 


typedef __fsfilcnt_t fsfilcnt_t;
#define __fsfilcnt_t_defined 
# 262 "/usr/include/sys/types.h" 3

# 18 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "/usr/include/unistd.h" 1 3
# 24 "/usr/include/unistd.h" 3
#define _UNISTD_H 1










#define _POSIX_VERSION 199506L





#define _POSIX2_C_VERSION 199209L


#define _POSIX2_VERSION 199209L



#define _POSIX2_C_BIND 1



#define _POSIX2_C_DEV 1



#define _POSIX2_SW_DEV 1



#define _POSIX2_LOCALEDEF 1





#define _XOPEN_VERSION 4



#define _XOPEN_XCU_VERSION 4


#define _XOPEN_XPG2 1
#define _XOPEN_XPG3 1
#define _XOPEN_XPG4 1


#define _XOPEN_UNIX 1


#define _XOPEN_CRYPT 1



#define _XOPEN_ENH_I18N 1


#define _XOPEN_LEGACY 1
# 175 "/usr/include/unistd.h" 3
# 1 "/usr/include/bits/posix_opt.h" 1 3
# 21 "/usr/include/bits/posix_opt.h" 3
#define _POSIX_OPT_H 1


#define _POSIX_JOB_CONTROL 1


#define _POSIX_SAVED_IDS 1


#define _POSIX_PRIORITY_SCHEDULING 1


#define _POSIX_SYNCHRONIZED_IO 1


#define _POSIX_FSYNC 1


#define _POSIX_MAPPED_FILES 1


#define _POSIX_MEMLOCK 1


#define _POSIX_MEMLOCK_RANGE 1


#define _POSIX_MEMORY_PROTECTION 1


#define _POSIX_POLL 1


#define _POSIX_SELECT 1


#define _POSIX_CHOWN_RESTRICTED 1



#define _POSIX_VDISABLE '\0'


#define _POSIX_NO_TRUNC 1


#define _XOPEN_REALTIME 1


#define _XOPEN_REALTIME_THREADS 1


#define _XOPEN_SHM 1


#define _POSIX_THREADS 1


#define _POSIX_REENTRANT_FUNCTIONS 1
#define _POSIX_THREAD_SAFE_FUNCTIONS 1


#define _POSIX_THREAD_PRIORITY_SCHEDULING 1


#define _POSIX_THREAD_ATTR_STACKSIZE 1


#define _POSIX_THREAD_ATTR_STACKADDR 1


#define _POSIX_SEMAPHORES 1


#define _POSIX_REALTIME_SIGNALS 1


#define _POSIX_ASYNCHRONOUS_IO 1
#define _POSIX_ASYNC_IO 1

#define _LFS_ASYNCHRONOUS_IO 1


#define _LFS64_ASYNCHRONOUS_IO 1


#define _LFS_LARGEFILE 1
#define _LFS64_LARGEFILE 1
#define _LFS64_STDIO 1


#define _POSIX_SHARED_MEMORY_OBJECTS 1


#define _POSIX_CPUTIME 200912L


#define _POSIX_THREAD_CPUTIME 200912L


#define _POSIX_REGEXP 1


#define _POSIX_READER_WRITER_LOCKS 200912L


#define _POSIX_SHELL 1


#define _POSIX_TIMEOUTS 200912L


#define _POSIX_SPIN_LOCKS 200912L


#define _POSIX_SPAWN 200912L


#define _POSIX_TIMERS 1


#define _POSIX_BARRIERS 200912L
# 176 "/usr/include/unistd.h" 2 3







#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
# 197 "/usr/include/unistd.h" 3
#define __need_size_t 
#define __need_NULL 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 369 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#define NULL ((void *)0)





#undef __need_NULL
# 200 "/usr/include/unistd.h" 2 3
# 240 "/usr/include/unistd.h" 3
typedef __intptr_t intptr_t;
#define __intptr_t_defined 





typedef __socklen_t socklen_t;
#define __socklen_t_defined 





#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0


extern int access (__const char *__name, int __type) ;
# 271 "/usr/include/unistd.h" 3
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2




#define L_SET SEEK_SET
#define L_INCR SEEK_CUR
#define L_XTND SEEK_END
# 290 "/usr/include/unistd.h" 3
extern __off_t lseek (int __fd, __off_t __offset, int __whence) ;
# 306 "/usr/include/unistd.h" 3
extern int close (int __fd) ;



extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;


extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
# 353 "/usr/include/unistd.h" 3
extern int pipe (int __pipedes[2]) ;
# 362 "/usr/include/unistd.h" 3
extern unsigned int alarm (unsigned int __seconds) ;
# 371 "/usr/include/unistd.h" 3
extern unsigned int sleep (unsigned int __seconds) ;






extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
     ;



extern int usleep (__useconds_t __useconds) ;





extern int pause (void) ;



extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
     ;



extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ;




extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
     ;




extern int chdir (__const char *__path) ;



extern int fchdir (int __fd) ;
# 423 "/usr/include/unistd.h" 3
extern char *getcwd (char *__buf, size_t __size) ;
# 436 "/usr/include/unistd.h" 3
extern char *getwd (char *__buf) ;




extern int dup (int __fd) ;


extern int dup2 (int __fd, int __fd2) ;


extern char **__environ;







extern int execve (__const char *__path, char *__const __argv[],
                   char *__const __envp[]) ;
# 467 "/usr/include/unistd.h" 3
extern int execv (__const char *__path, char *__const __argv[]) ;



extern int execle (__const char *__path, __const char *__arg, ...) ;



extern int execl (__const char *__path, __const char *__arg, ...) ;



extern int execvp (__const char *__file, char *__const __argv[]) ;




extern int execlp (__const char *__file, __const char *__arg, ...) ;




extern int nice (int __inc) ;




extern void _exit (int __status) __attribute__ ((__noreturn__));





# 1 "/usr/include/bits/confname.h" 1 3
# 25 "/usr/include/bits/confname.h" 3
enum
  {
    _PC_LINK_MAX,
#define _PC_LINK_MAX _PC_LINK_MAX
    _PC_MAX_CANON,
#define _PC_MAX_CANON _PC_MAX_CANON
    _PC_MAX_INPUT,
#define _PC_MAX_INPUT _PC_MAX_INPUT
    _PC_NAME_MAX,
#define _PC_NAME_MAX _PC_NAME_MAX
    _PC_PATH_MAX,
#define _PC_PATH_MAX _PC_PATH_MAX
    _PC_PIPE_BUF,
#define _PC_PIPE_BUF _PC_PIPE_BUF
    _PC_CHOWN_RESTRICTED,
#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
    _PC_NO_TRUNC,
#define _PC_NO_TRUNC _PC_NO_TRUNC
    _PC_VDISABLE,
#define _PC_VDISABLE _PC_VDISABLE
    _PC_SYNC_IO,
#define _PC_SYNC_IO _PC_SYNC_IO
    _PC_ASYNC_IO,
#define _PC_ASYNC_IO _PC_ASYNC_IO
    _PC_PRIO_IO,
#define _PC_PRIO_IO _PC_PRIO_IO
    _PC_SOCK_MAXBUF,
#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
    _PC_FILESIZEBITS,
#define _PC_FILESIZEBITS _PC_FILESIZEBITS
    _PC_REC_INCR_XFER_SIZE,
#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
    _PC_REC_MAX_XFER_SIZE,
#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
    _PC_REC_MIN_XFER_SIZE,
#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
    _PC_REC_XFER_ALIGN,
#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
    _PC_ALLOC_SIZE_MIN,
#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
    _PC_SYMLINK_MAX
#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
  };


enum
  {
    _SC_ARG_MAX,
#define _SC_ARG_MAX _SC_ARG_MAX
    _SC_CHILD_MAX,
#define _SC_CHILD_MAX _SC_CHILD_MAX
    _SC_CLK_TCK,
#define _SC_CLK_TCK _SC_CLK_TCK
    _SC_NGROUPS_MAX,
#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
    _SC_OPEN_MAX,
#define _SC_OPEN_MAX _SC_OPEN_MAX
    _SC_STREAM_MAX,
#define _SC_STREAM_MAX _SC_STREAM_MAX
    _SC_TZNAME_MAX,
#define _SC_TZNAME_MAX _SC_TZNAME_MAX
    _SC_JOB_CONTROL,
#define _SC_JOB_CONTROL _SC_JOB_CONTROL
    _SC_SAVED_IDS,
#define _SC_SAVED_IDS _SC_SAVED_IDS
    _SC_REALTIME_SIGNALS,
#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
    _SC_PRIORITY_SCHEDULING,
#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
    _SC_TIMERS,
#define _SC_TIMERS _SC_TIMERS
    _SC_ASYNCHRONOUS_IO,
#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
    _SC_PRIORITIZED_IO,
#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
    _SC_SYNCHRONIZED_IO,
#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
    _SC_FSYNC,
#define _SC_FSYNC _SC_FSYNC
    _SC_MAPPED_FILES,
#define _SC_MAPPED_FILES _SC_MAPPED_FILES
    _SC_MEMLOCK,
#define _SC_MEMLOCK _SC_MEMLOCK
    _SC_MEMLOCK_RANGE,
#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
    _SC_MEMORY_PROTECTION,
#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
    _SC_MESSAGE_PASSING,
#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
    _SC_SEMAPHORES,
#define _SC_SEMAPHORES _SC_SEMAPHORES
    _SC_SHARED_MEMORY_OBJECTS,
#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
    _SC_AIO_LISTIO_MAX,
#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
    _SC_AIO_MAX,
#define _SC_AIO_MAX _SC_AIO_MAX
    _SC_AIO_PRIO_DELTA_MAX,
#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
    _SC_DELAYTIMER_MAX,
#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
    _SC_MQ_OPEN_MAX,
#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
    _SC_MQ_PRIO_MAX,
#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
    _SC_VERSION,
#define _SC_VERSION _SC_VERSION
    _SC_PAGESIZE,
#define _SC_PAGESIZE _SC_PAGESIZE
#define _SC_PAGE_SIZE _SC_PAGESIZE
    _SC_RTSIG_MAX,
#define _SC_RTSIG_MAX _SC_RTSIG_MAX
    _SC_SEM_NSEMS_MAX,
#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
    _SC_SEM_VALUE_MAX,
#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
    _SC_SIGQUEUE_MAX,
#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
    _SC_TIMER_MAX,
#define _SC_TIMER_MAX _SC_TIMER_MAX



    _SC_BC_BASE_MAX,
#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
    _SC_BC_DIM_MAX,
#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
    _SC_BC_SCALE_MAX,
#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
    _SC_BC_STRING_MAX,
#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
    _SC_COLL_WEIGHTS_MAX,
#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
    _SC_EQUIV_CLASS_MAX,
#define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
    _SC_EXPR_NEST_MAX,
#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
    _SC_LINE_MAX,
#define _SC_LINE_MAX _SC_LINE_MAX
    _SC_RE_DUP_MAX,
#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
    _SC_CHARCLASS_NAME_MAX,
#define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX

    _SC_2_VERSION,
#define _SC_2_VERSION _SC_2_VERSION
    _SC_2_C_BIND,
#define _SC_2_C_BIND _SC_2_C_BIND
    _SC_2_C_DEV,
#define _SC_2_C_DEV _SC_2_C_DEV
    _SC_2_FORT_DEV,
#define _SC_2_FORT_DEV _SC_2_FORT_DEV
    _SC_2_FORT_RUN,
#define _SC_2_FORT_RUN _SC_2_FORT_RUN
    _SC_2_SW_DEV,
#define _SC_2_SW_DEV _SC_2_SW_DEV
    _SC_2_LOCALEDEF,
#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF

    _SC_PII,
#define _SC_PII _SC_PII
    _SC_PII_XTI,
#define _SC_PII_XTI _SC_PII_XTI
    _SC_PII_SOCKET,
#define _SC_PII_SOCKET _SC_PII_SOCKET
    _SC_PII_INTERNET,
#define _SC_PII_INTERNET _SC_PII_INTERNET
    _SC_PII_OSI,
#define _SC_PII_OSI _SC_PII_OSI
    _SC_POLL,
#define _SC_POLL _SC_POLL
    _SC_SELECT,
#define _SC_SELECT _SC_SELECT
    _SC_UIO_MAXIOV,
#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
    _SC_IOV_MAX = _SC_UIO_MAXIOV,
#define _SC_IOV_MAX _SC_IOV_MAX
    _SC_PII_INTERNET_STREAM,
#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
    _SC_PII_INTERNET_DGRAM,
#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
    _SC_PII_OSI_COTS,
#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
    _SC_PII_OSI_CLTS,
#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
    _SC_PII_OSI_M,
#define _SC_PII_OSI_M _SC_PII_OSI_M
    _SC_T_IOV_MAX,
#define _SC_T_IOV_MAX _SC_T_IOV_MAX


    _SC_THREADS,
#define _SC_THREADS _SC_THREADS
    _SC_THREAD_SAFE_FUNCTIONS,
#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
    _SC_GETGR_R_SIZE_MAX,
#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
    _SC_GETPW_R_SIZE_MAX,
#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
    _SC_LOGIN_NAME_MAX,
#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
    _SC_TTY_NAME_MAX,
#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
    _SC_THREAD_DESTRUCTOR_ITERATIONS,
#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
    _SC_THREAD_KEYS_MAX,
#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
    _SC_THREAD_STACK_MIN,
#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
    _SC_THREAD_THREADS_MAX,
#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
    _SC_THREAD_ATTR_STACKADDR,
#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
    _SC_THREAD_ATTR_STACKSIZE,
#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
    _SC_THREAD_PRIORITY_SCHEDULING,
#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
    _SC_THREAD_PRIO_INHERIT,
#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
    _SC_THREAD_PRIO_PROTECT,
#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
    _SC_THREAD_PROCESS_SHARED,
#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED

    _SC_NPROCESSORS_CONF,
#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
    _SC_NPROCESSORS_ONLN,
#define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
    _SC_PHYS_PAGES,
#define _SC_PHYS_PAGES _SC_PHYS_PAGES
    _SC_AVPHYS_PAGES,
#define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
    _SC_ATEXIT_MAX,
#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
    _SC_PASS_MAX,
#define _SC_PASS_MAX _SC_PASS_MAX

    _SC_XOPEN_VERSION,
#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
    _SC_XOPEN_XCU_VERSION,
#define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
    _SC_XOPEN_UNIX,
#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
    _SC_XOPEN_CRYPT,
#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
    _SC_XOPEN_ENH_I18N,
#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
    _SC_XOPEN_SHM,
#define _SC_XOPEN_SHM _SC_XOPEN_SHM

    _SC_2_CHAR_TERM,
#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
    _SC_2_C_VERSION,
#define _SC_2_C_VERSION _SC_2_C_VERSION
    _SC_2_UPE,
#define _SC_2_UPE _SC_2_UPE

    _SC_XOPEN_XPG2,
#define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
    _SC_XOPEN_XPG3,
#define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
    _SC_XOPEN_XPG4,
#define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4

    _SC_CHAR_BIT,
#define _SC_CHAR_BIT _SC_CHAR_BIT
    _SC_CHAR_MAX,
#define _SC_CHAR_MAX _SC_CHAR_MAX
    _SC_CHAR_MIN,
#define _SC_CHAR_MIN _SC_CHAR_MIN
    _SC_INT_MAX,
#define _SC_INT_MAX _SC_INT_MAX
    _SC_INT_MIN,
#define _SC_INT_MIN _SC_INT_MIN
    _SC_LONG_BIT,
#define _SC_LONG_BIT _SC_LONG_BIT
    _SC_WORD_BIT,
#define _SC_WORD_BIT _SC_WORD_BIT
    _SC_MB_LEN_MAX,
#define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
    _SC_NZERO,
#define _SC_NZERO _SC_NZERO
    _SC_SSIZE_MAX,
#define _SC_SSIZE_MAX _SC_SSIZE_MAX
    _SC_SCHAR_MAX,
#define _SC_SCHAR_MAX _SC_SCHAR_MAX
    _SC_SCHAR_MIN,
#define _SC_SCHAR_MIN _SC_SCHAR_MIN
    _SC_SHRT_MAX,
#define _SC_SHRT_MAX _SC_SHRT_MAX
    _SC_SHRT_MIN,
#define _SC_SHRT_MIN _SC_SHRT_MIN
    _SC_UCHAR_MAX,
#define _SC_UCHAR_MAX _SC_UCHAR_MAX
    _SC_UINT_MAX,
#define _SC_UINT_MAX _SC_UINT_MAX
    _SC_ULONG_MAX,
#define _SC_ULONG_MAX _SC_ULONG_MAX
    _SC_USHRT_MAX,
#define _SC_USHRT_MAX _SC_USHRT_MAX

    _SC_NL_ARGMAX,
#define _SC_NL_ARGMAX _SC_NL_ARGMAX
    _SC_NL_LANGMAX,
#define _SC_NL_LANGMAX _SC_NL_LANGMAX
    _SC_NL_MSGMAX,
#define _SC_NL_MSGMAX _SC_NL_MSGMAX
    _SC_NL_NMAX,
#define _SC_NL_NMAX _SC_NL_NMAX
    _SC_NL_SETMAX,
#define _SC_NL_SETMAX _SC_NL_SETMAX
    _SC_NL_TEXTMAX,
#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX

    _SC_XBS5_ILP32_OFF32,
#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
    _SC_XBS5_ILP32_OFFBIG,
#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
    _SC_XBS5_LP64_OFF64,
#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
    _SC_XBS5_LPBIG_OFFBIG,
#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG

    _SC_XOPEN_LEGACY,
#define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
    _SC_XOPEN_REALTIME,
#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
    _SC_XOPEN_REALTIME_THREADS,
#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS

    _SC_ADVISORY_INFO,
#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
    _SC_BARRIERS,
#define _SC_BARRIERS _SC_BARRIERS
    _SC_BASE,
#define _SC_BASE _SC_BASE
    _SC_C_LANG_SUPPORT,
#define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
    _SC_C_LANG_SUPPORT_R,
#define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
    _SC_CLOCK_SELECTION,
#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
    _SC_CPUTIME,
#define _SC_CPUTIME _SC_CPUTIME
    _SC_THREAD_CPUTIME,
#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
    _SC_DEVICE_IO,
#define _SC_DEVICE_IO _SC_DEVICE_IO
    _SC_DEVICE_SPECIFIC,
#define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
    _SC_DEVICE_SPECIFIC_R,
#define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
    _SC_FD_MGMT,
#define _SC_FD_MGMT _SC_FD_MGMT
    _SC_FIFO,
#define _SC_FIFO _SC_FIFO
    _SC_PIPE,
#define _SC_PIPE _SC_PIPE
    _SC_FILE_ATTRIBUTES,
#define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
    _SC_FILE_LOCKING,
#define _SC_FILE_LOCKING _SC_FILE_LOCKING
    _SC_FILE_SYSTEM,
#define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
    _SC_MONOTONIC_CLOCK,
#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
    _SC_MULTI_PROCESS,
#define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
    _SC_SINGLE_PROCESS,
#define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
    _SC_NETWORKING,
#define _SC_NETWORKING _SC_NETWORKING
    _SC_READER_WRITER_LOCKS,
#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
    _SC_SPIN_LOCKS,
#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
    _SC_REGEXP,
#define _SC_REGEXP _SC_REGEXP
    _SC_REGEX_VERSION,
#define _SC_REGEX_VERSION _SC_REGEX_VERSION
    _SC_SHELL,
#define _SC_SHELL _SC_SHELL
    _SC_SIGNALS,
#define _SC_SIGNALS _SC_SIGNALS
    _SC_SPAWN,
#define _SC_SPAWN _SC_SPAWN
    _SC_SPORADIC_SERVER,
#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
    _SC_THREAD_SPORADIC_SERVER,
#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
    _SC_SYSTEM_DATABASE,
#define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
    _SC_SYSTEM_DATABASE_R,
#define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
    _SC_TIMEOUTS,
#define _SC_TIMEOUTS _SC_TIMEOUTS
    _SC_TYPED_MEMORY_OBJECTS,
#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
    _SC_USER_GROUPS,
#define _SC_USER_GROUPS _SC_USER_GROUPS
    _SC_USER_GROUPS_R,
#define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
    _SC_2_PBS,
#define _SC_2_PBS _SC_2_PBS
    _SC_2_PBS_ACCOUNTING,
#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
    _SC_2_PBS_LOCATE,
#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
    _SC_2_PBS_MESSAGE,
#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
    _SC_2_PBS_TRACK,
#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
    _SC_SYMLOOP_MAX,
#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
    _SC_STREAMS,
#define _SC_STREAMS _SC_STREAMS
    _SC_2_PBS_CHECKPOINT,
#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT

    _SC_V6_ILP32_OFF32,
#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
    _SC_V6_ILP32_OFFBIG,
#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
    _SC_V6_LP64_OFF64,
#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
    _SC_V6_LPBIG_OFFBIG,
#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG

    _SC_HOST_NAME_MAX,
#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
    _SC_TRACE,
#define _SC_TRACE _SC_TRACE
    _SC_TRACE_EVENT_FILTER,
#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
    _SC_TRACE_INHERIT,
#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
    _SC_TRACE_LOG
#define _SC_TRACE_LOG _SC_TRACE_LOG
  };





enum
  {
    _CS_PATH,
#define _CS_PATH _CS_PATH
# 563 "/usr/include/bits/confname.h" 3
    _CS_V6_WIDTH_RESTRICTED_ENVS
#define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
  };
# 501 "/usr/include/unistd.h" 2 3


extern long int pathconf (__const char *__path, int __name) ;


extern long int fpathconf (int __fd, int __name) ;


extern long int sysconf (int __name) __attribute__ ((__const__));



extern size_t confstr (int __name, char *__buf, size_t __len) ;




extern __pid_t getpid (void) ;


extern __pid_t getppid (void) ;




extern __pid_t getpgrp (void) ;
# 536 "/usr/include/unistd.h" 3
extern __pid_t __getpgid (__pid_t __pid) ;
# 545 "/usr/include/unistd.h" 3
extern int setpgid (__pid_t __pid, __pid_t __pgid) ;
# 562 "/usr/include/unistd.h" 3
extern int setpgrp (void) ;
# 580 "/usr/include/unistd.h" 3
extern __pid_t setsid (void) ;







extern __uid_t getuid (void) ;


extern __uid_t geteuid (void) ;


extern __gid_t getgid (void) ;


extern __gid_t getegid (void) ;




extern int getgroups (int __size, __gid_t __list[]) ;
# 613 "/usr/include/unistd.h" 3
extern int setuid (__uid_t __uid) ;




extern int setreuid (__uid_t __ruid, __uid_t __euid) ;




extern int seteuid (__uid_t __uid) ;






extern int setgid (__gid_t __gid) ;




extern int setregid (__gid_t __rgid, __gid_t __egid) ;




extern int setegid (__gid_t __gid) ;






extern __pid_t fork (void) ;






extern __pid_t vfork (void) ;





extern char *ttyname (int __fd) ;



extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ;



extern int isatty (int __fd) ;





extern int ttyslot (void) ;




extern int link (__const char *__from, __const char *__to) ;



extern int symlink (__const char *__from, __const char *__to) ;




extern int readlink (__const char *__restrict __path, char *__restrict __buf,
                     size_t __len) ;



extern int unlink (__const char *__name) ;


extern int rmdir (__const char *__path) ;



extern __pid_t tcgetpgrp (int __fd) ;


extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ;



extern char *getlogin (void) ;
# 717 "/usr/include/unistd.h" 3
extern int setlogin (__const char *__name) ;







#define __need_getopt 
# 1 "/usr/include/getopt.h" 1 3
# 47 "/usr/include/getopt.h" 3
extern char *optarg;
# 61 "/usr/include/getopt.h" 3
extern int optind;




extern int opterr;



extern int optopt;
# 145 "/usr/include/getopt.h" 3
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
# 179 "/usr/include/getopt.h" 3
#undef __need_getopt
# 727 "/usr/include/unistd.h" 2 3







extern int gethostname (char *__name, size_t __len) ;






extern int sethostname (__const char *__name, size_t __len) ;



extern int sethostid (long int __id) ;





extern int getdomainname (char *__name, size_t __len) ;
extern int setdomainname (__const char *__name, size_t __len) ;





extern int vhangup (void) ;


extern int revoke (__const char *__file) ;







extern int profil (unsigned short int *__sample_buffer, size_t __size,
                   size_t __offset, unsigned int __scale) ;





extern int acct (__const char *__name) ;



extern char *getusershell (void) ;
extern void endusershell (void) ;
extern void setusershell (void) ;





extern int daemon (int __nochdir, int __noclose) ;






extern int chroot (__const char *__path) ;



extern char *getpass (__const char *__prompt) ;





extern int fsync (int __fd) ;






extern long int gethostid (void) ;


extern void sync (void) ;




extern int getpagesize (void) __attribute__ ((__const__));




extern int truncate (__const char *__file, __off_t __length) ;
# 841 "/usr/include/unistd.h" 3
extern int ftruncate (int __fd, __off_t __length) ;
# 857 "/usr/include/unistd.h" 3
extern int getdtablesize (void) ;
# 866 "/usr/include/unistd.h" 3
extern int brk (void *__addr) ;





extern void *sbrk (intptr_t __delta) ;
# 887 "/usr/include/unistd.h" 3
extern long int syscall (long int __sysno, ...) ;
# 901 "/usr/include/unistd.h" 3
#define F_ULOCK 0
#define F_LOCK 1
#define F_TLOCK 2
#define F_TEST 3


extern int lockf (int __fd, int __cmd, __off_t __len) ;
# 938 "/usr/include/unistd.h" 3
extern int fdatasync (int __fildes) ;
# 983 "/usr/include/unistd.h" 3
extern int pthread_atfork (void (*__prepare) (void),
                           void (*__parent) (void),
                           void (*__child) (void)) ;



# 19 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "/usr/include/sys/mman.h" 1 3
# 21 "/usr/include/sys/mman.h" 3
#define _SYS_MMAN_H 1



#define __need_size_t 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 27 "/usr/include/sys/mman.h" 2 3
# 42 "/usr/include/sys/mman.h" 3
# 1 "/usr/include/bits/mman.h" 1 3
# 33 "/usr/include/bits/mman.h" 3
#define PROT_READ 0x1
#define PROT_WRITE 0x2
#define PROT_EXEC 0x4
#define PROT_NONE 0x0


#define MAP_SHARED 0x01
#define MAP_PRIVATE 0x02

#define MAP_TYPE 0x0f



#define MAP_FIXED 0x10

#define MAP_FILE 0
#define MAP_ANONYMOUS 0x20
#define MAP_ANON MAP_ANONYMOUS




#define MAP_GROWSDOWN 0x0100
#define MAP_DENYWRITE 0x0800
#define MAP_EXECUTABLE 0x1000
#define MAP_LOCKED 0x2000
#define MAP_NORESERVE 0x4000



#define MS_ASYNC 1
#define MS_SYNC 4
#define MS_INVALIDATE 2


#define MCL_CURRENT 1
#define MCL_FUTURE 2
# 79 "/usr/include/bits/mman.h" 3
#define MADV_NORMAL 0
#define MADV_RANDOM 1
#define MADV_SEQUENTIAL 2
#define MADV_WILLNEED 3
#define MADV_DONTNEED 4
# 43 "/usr/include/sys/mman.h" 2 3


#define MAP_FAILED ((void *) -1)


# 58 "/usr/include/sys/mman.h" 3
extern void *mmap (void *__addr, size_t __len, int __prot,
                   int __flags, int __fd, __off_t __offset) ;
# 77 "/usr/include/sys/mman.h" 3
extern int munmap (void *__addr, size_t __len) ;




extern int mprotect (void *__addr, size_t __len, int __prot) ;




extern int msync (void *__addr, size_t __len, int __flags) ;




extern int madvise (void *__addr, size_t __len, int __advice) ;
# 101 "/usr/include/sys/mman.h" 3
extern int mlock (__const void *__addr, size_t __len) ;


extern int munlock (__const void *__addr, size_t __len) ;




extern int mlockall (int __flags) ;



extern int munlockall (void) ;





extern void *mremap (void *__addr, size_t __old_len, size_t __new_len,
                     int __may_move) ;






extern int mincore (void *__start, size_t __len, unsigned char *__vec);




extern int shm_open (__const char *__name, int __oflag, mode_t __mode);


extern int shm_unlink (__const char *__name);


# 20 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "/usr/include/string.h" 1 3
# 24 "/usr/include/string.h" 3
#define _STRING_H 1






#define __need_size_t 
#define __need_NULL 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 364 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL
# 34 "/usr/include/string.h" 2 3



extern void *memcpy (void *__restrict __dest,
                     __const void *__restrict __src, size_t __n) ;


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     ;





extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
                      int __c, size_t __n)
     ;




extern void *memset (void *__s, int __c, size_t __n) ;


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__pure__));


extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__pure__));
# 77 "/usr/include/string.h" 3
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncpy (char *__restrict __dest,
                      __const char *__restrict __src, size_t __n) ;


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
                      size_t __n) ;


extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__pure__));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__pure__));


extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__pure__));

extern size_t strxfrm (char *__restrict __dest,
                       __const char *__restrict __src, size_t __n) ;
# 120 "/usr/include/string.h" 3
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
# 155 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));

extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
# 167 "/usr/include/string.h" 3
extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__pure__));


extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__pure__));

extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__pure__));

extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__pure__));
# 187 "/usr/include/string.h" 3
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     ;



extern char *__strtok_r (char *__restrict __s,
                         __const char *__restrict __delim,
                         char **__restrict __save_ptr) ;

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
                       char **__restrict __save_ptr) ;
# 218 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
# 229 "/usr/include/string.h" 3
extern char *strerror (int __errnum) ;



extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;




extern void __bzero (void *__s, size_t __n) ;



extern void bcopy (__const void *__src, void *__dest, size_t __n) ;


extern void bzero (void *__s, size_t __n) ;


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__pure__));


extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));


extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));



extern int ffs (int __i) __attribute__ ((__const__));
# 272 "/usr/include/string.h" 3
extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__pure__));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__pure__));
# 294 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp,
                     __const char *__restrict __delim) ;
# 357 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 25 "/usr/include/bits/string.h" 3
#define _STRING_ARCH_unaligned 1
# 358 "/usr/include/string.h" 2 3


# 1 "/usr/include/bits/string2.h" 1 3
# 46 "/usr/include/bits/string2.h" 3
#define __STRING_INLINE extern __inline
# 56 "/usr/include/bits/string2.h" 3
#define __STRING2_SMALL_GET16(src,idx) (((__const unsigned char *) (__const char *) (src))[idx + 1] << 8 | ((__const unsigned char *) (__const char *) (src))[idx])


#define __STRING2_SMALL_GET32(src,idx) (((((__const unsigned char *) (__const char *) (src))[idx + 3] << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 2]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 1]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx])
# 93 "/usr/include/bits/string2.h" 3
#define __string2_1bptr_p(__x) ((size_t)(const void *)((__x) + 1) - (size_t)(const void *)(__x) == 1)





#define memset(s,c,n) (__extension__ (__builtin_constant_p (n) && (n) <= 16 ? ((n) == 1 ? __memset_1 (s, c) : __memset_gc (s, c, n)) : (__builtin_constant_p (c) && (c) == '\0' ? ({ void *__s = (s); __bzero (__s, n); __s; }) : memset (s, c, n))))
# 108 "/usr/include/bits/string2.h" 3
#define __memset_1(s,c) ({ void *__s = (s); *((__uint8_t *) __s) = (__uint8_t) c; __s; })


#define __memset_gc(s,c,n) ({ void *__s = (s); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (c); switch ((unsigned int) (n)) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })
# 190 "/usr/include/bits/string2.h" 3
#define __bzero(s,n) __builtin_memset (s, '\0', n)
# 387 "/usr/include/bits/string2.h" 3
extern void *__rawmemchr (const void *__s, int __c);
#define strchr(s,c) (__extension__ (__builtin_constant_p (c) && (c) == '\0' ? (char *) __rawmemchr (s, c) : strchr (s, c)))
# 754 "/usr/include/bits/string2.h" 3
#define strncpy(dest,src,n) (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) ? (strlen (src) + 1 >= ((size_t) (n)) ? (char *) memcpy (dest, src, n) : strncpy (dest, src, n)) : strncpy (dest, src, n)))
# 776 "/usr/include/bits/string2.h" 3
#define strncat(dest,src,n) (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) ? (strlen (src) < ((size_t) (n)) ? strcat (dest, src) : strncat (dest, src, n)) : strncat (dest, src, n)))
# 788 "/usr/include/bits/string2.h" 3
#define strcmp(s1,s2) __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (s1) && __builtin_constant_p (s2) && (__s1_len = strlen (s1), __s2_len = strlen (s2), (!__string2_1bptr_p (s1) || __s1_len >= 4) && (!__string2_1bptr_p (s2) || __s2_len >= 4)) ? memcmp ((__const char *) (s1), (__const char *) (s2), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (s1) && __string2_1bptr_p (s1) && (__s1_len = strlen (s1), __s1_len < 4) ? (__builtin_constant_p (s2) && __string2_1bptr_p (s2) ? __strcmp_cc (s1, s2, __s1_len) : __strcmp_cg (s1, s2, __s1_len)) : (__builtin_constant_p (s2) && __string2_1bptr_p (s2) && (__s2_len = strlen (s2), __s2_len < 4) ? (__builtin_constant_p (s1) && __string2_1bptr_p (s1) ? __strcmp_cc (s1, s2, __s2_len) : __strcmp_gc (s1, s2, __s2_len)) : strcmp (s1, s2)))); })
# 809 "/usr/include/bits/string2.h" 3
#define __strcmp_cc(s1,s2,l) (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (s1))[0] - ((__const unsigned char *) (__const char *)(s2))[0]); if (l > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (s1))[1] - ((__const unsigned char *) (__const char *) (s2))[1]); if (l > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (s1))[2] - ((__const unsigned char *) (__const char *) (s2))[2]); if (l > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (s1))[3] - ((__const unsigned char *) (__const char *) (s2))[3]); } } __result; }))
# 836 "/usr/include/bits/string2.h" 3
#define __strcmp_cg(s1,s2,l1) (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (s2); register int __result = (((__const unsigned char *) (__const char *) (s1))[0] - __s2[0]); if (l1 > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (s1))[1] - __s2[1]); if (l1 > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (s1))[2] - __s2[2]); if (l1 > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (s1))[3] - __s2[3]); } } __result; }))
# 858 "/usr/include/bits/string2.h" 3
#define __strcmp_gc(s1,s2,l2) (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (s1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (s2))[0]; if (l2 > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (s2))[1]); if (l2 > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (s2))[2]); if (l2 > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (s2))[3]); } } __result; }))
# 887 "/usr/include/bits/string2.h" 3
#define strncmp(s1,s2,n) (__extension__ (__builtin_constant_p (n) && ((__builtin_constant_p (s1) && strlen (s1) < ((size_t) (n))) || (__builtin_constant_p (s2) && strlen (s2) < ((size_t) (n)))) ? strcmp (s1, s2) : strncmp (s1, s2, n)))
# 901 "/usr/include/bits/string2.h" 3
#define strcspn(s,reject) __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (reject) && __string2_1bptr_p (reject) ? ((__r0 = ((__const char *) (reject))[0], __r0 == '\0') ? strlen (s) : ((__r1 = ((__const char *) (reject))[1], __r1 == '\0') ? __strcspn_c1 (s, __r0) : ((__r2 = ((__const char *) (reject))[2], __r2 == '\0') ? __strcspn_c2 (s, __r0, __r1) : (((__const char *) (reject))[3] == '\0' ? __strcspn_c3 (s, __r0, __r1, __r2) : strcspn (s, reject))))) : strcspn (s, reject)); })
# 917 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
                                     int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
                                     int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
              int __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}







#define strspn(s,accept) __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (accept) && __string2_1bptr_p (accept) ? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') ? ((void) (s), 0) : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') ? __strspn_c1 (s, __a0) : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') ? __strspn_c2 (s, __a0, __a1) : (((__const char *) (accept))[3] == '\0' ? __strspn_c3 (s, __a0, __a1, __a2) : strspn (s, accept))))) : strspn (s, accept)); })
# 974 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
                                    int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
                                    int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
         || __s[__result] == __accept3)
    ++__result;
  return __result;
}






#define strpbrk(s,accept) __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (accept) && __string2_1bptr_p (accept) ? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') ? ((void) (s), NULL) : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') ? strchr (s, __a0) : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') ? __strpbrk_c2 (s, __a0, __a1) : (((__const char *) (accept))[3] == '\0' ? __strpbrk_c3 (s, __a0, __a1, __a2) : strpbrk (s, accept))))) : strpbrk (s, accept)); })
# 1031 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
                                     int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
                                     int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
              int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
         && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1074 "/usr/include/bits/string2.h" 3
#define __strtok_r(s,sep,nextp) (__extension__ (__builtin_constant_p (sep) && __string2_1bptr_p (sep) ? (((__const char *) (sep))[0] != '\0' && ((__const char *) (sep))[1] == '\0' ? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp) : __strtok_r (s, sep, nextp)) : __strtok_r (s, sep, nextp)))
# 1083 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  __result = ((void *)0);
  if (*__s != '\0')
    {
      __result = __s++;
      while (*__s != '\0')
        if (*__s++ == __sep)
          {
            __s[-1] = '\0';
            break;
          }
      *__nextp = __s;
    }
  return __result;
}

#define strtok_r(s,sep,nextp) __strtok_r (s, sep, nextp)







extern char *__strsep_g (char **__stringp, __const char *__delim);
#define __strsep(s,reject) __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (reject) && __string2_1bptr_p (reject) && (__r0 = ((__const char *) (reject))[0], ((__const char *) (reject))[0] != '\0') ? ((__r1 = ((__const char *) (reject))[1], ((__const char *) (reject))[1] == '\0') ? __strsep_1c (s, __r0) : ((__r2 = ((__const char *) (reject))[2], __r2 == '\0') ? __strsep_2c (s, __r0, __r1) : (((__const char *) (reject))[3] == '\0' ? __strsep_3c (s, __r0, __r1, __r2) : __strsep_g (s, reject)))) : __strsep_g (s, reject)); })
# 1133 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
        {
          if (*__cp == '\0')
            {
              __cp = ((void *)0);
          break;
            }
          if (*__cp == __reject1 || *__cp == __reject2)
            {
              *__cp++ = '\0';
              break;
            }
          ++__cp;
        }
      *__s = __cp;
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
                                   char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
        {
          if (*__cp == '\0')
            {
              __cp = ((void *)0);
          break;
            }
          if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
            {
              *__cp++ = '\0';
              break;
            }
          ++__cp;
        }
      *__s = __cp;
    }
  return __retval;
}

#define strsep(s,reject) __strsep (s, reject)
# 1208 "/usr/include/bits/string2.h" 3
#define __need_malloc_and_calloc 
# 1 "/usr/include/stdlib.h" 1 3
# 28 "/usr/include/stdlib.h" 3
#define __need_size_t 




# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 34 "/usr/include/stdlib.h" 2 3


# 525 "/usr/include/stdlib.h" 3
#define __malloc_and_calloc_defined 

extern void *malloc (size_t __size) __attribute__ ((__malloc__));

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__malloc__));
# 862 "/usr/include/stdlib.h" 3
#undef __need_malloc_and_calloc


# 1210 "/usr/include/bits/string2.h" 2 3




extern char *__strdup (__const char *__string) __attribute__ ((__malloc__));
#define __strdup(s) (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) ? (((__const char *) (s))[0] == '\0' ? (char *) calloc (1, 1) : ({ size_t __len = strlen (s) + 1; char *__retval = (char *) malloc (__len); if (__retval != NULL) __retval = (char *) memcpy (__retval, s, __len); __retval; })) : __strdup (s)))
# 1227 "/usr/include/bits/string2.h" 3
#define strdup(s) __strdup (s)





extern char *__strndup (__const char *__string, size_t __n)
     __attribute__ ((__malloc__));
#define __strndup(s,n) (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) ? (((__const char *) (s))[0] == '\0' ? (char *) calloc (1, 1) : ({ size_t __len = strlen (s) + 1; size_t __n = (n); char *__retval; if (__n < __len) __len = __n + 1; __retval = (char *) malloc (__len); if (__retval != NULL) { __retval[__len - 1] = '\0'; __retval = (char *) memcpy (__retval, s, __len - 1); } __retval; })) : __strndup (s, n)))
# 1262 "/usr/include/bits/string2.h" 3
#undef __STRING_INLINE
# 361 "/usr/include/string.h" 2 3




# 21 "../../src/sdbm.v0/sdbmfldu.c" 2

# 1 "axis/axistypes.h" 1
# 27 "axis/axistypes.h"
#define _AXIS_AXISTYPES_H_ 
# 1 "axis/config.h" 1





#define __AXIS_CONFIG_H_ 
# 28 "axis/config.h"
#define __VERS(x,y,z) (((x)*1000000)+((y)*1000)+(z))

#define __MAJOR_VERS(v) ((v)/1000000)
#define __MINOR_VERS(v) (((v)/1000)%1000)
#define __MICRO_VERS(v) ((v)%1000)






#define __AXIS_OS_LINUX 1
#define __AXIS_OS_SOLARIS 2
#define __AXIS_OS_HPUX 3
# 57 "axis/config.h"
#define __AXIS_ARCH_x86 1
#define __AXIS_ARCH_SPARC 2
#define __AXIS_ARCH_PARISC 3

#define __ARCH_TYPE(v) ((v)/1000000)
#define __ARCH_MAJOR(v) (((v)/1000)%1000)
#define __ARCH_MINOR(v) ((v)%1000)

#define __AXIS_ARCH_I386 __VERS(__AXIS_ARCH_x86,3,0)
#define __AXIS_ARCH_I586 __VERS(__AXIS_ARCH_x86,5,0)
#define __AXIS_ARCH_I686 __VERS(__AXIS_ARCH_x86,6,0)
#define __AXIS_ARCH_I786 __VERS(__AXIS_ARCH_x86,6,0)
#define __AXIS_ARCH_PENTIUM __VERS(__AXIS_ARCH_x86,5,0)
#define __AXIS_ARCH_PENTIUMPRO __VERS(__AXIS_ARCH_x86,6,0)
#define __AXIS_ARCH_ATHLON __VERS(__AXIS_ARCH_x86,7,0)

#define __AXIS_ARCH_SPARC_V8 __VERS(__AXIS_ARCH_SPARC,8,0)
#define __AXIS_ARCH_SPARC_V9 __VERS(__AXIS_ARCH_SPARC,9,0)

#define __AXIS_ARCH_HPPA_1_1 __VERS(__AXIS_ARCH_PARISC,1,1)
#define __AXIS_ARCH_HPPA_2 __VERS(__AXIS_ARCH_PARISC,2,0)
# 94 "axis/config.h"
#define __AXIS_CONFIG_GCC_VERS __VERS(3,0,0)
#define __AXIS_CONFIG_GCC_VERS_MAJOR 3
#define __AXIS_CONFIG_GCC_VERS_MINOR 0
#define __AXIS_CONFIG_GCC_VERS_MICRO 0

#define __AXIS_CONFIG_OS_VERS __VERS(2,2,0)
#define __AXIS_CONFIG_OS_VERS_MAJOR 2
#define __AXIS_CONFIG_OS_VERS_MINOR 2
#define __AXIS_CONFIG_OS_VERS_MICRO 0

#define __WITH_AXIS_Common 1
#define __WITH_AXIS_Util 1
#define __WITH_AXIS_Atime 1
#define __WITH_AXIS_Rc5 1
#define __WITH_AXIS_Cppcom 1
#define __WITH_AXIS_AdamV0 1
#define __WITH_AXIS_SdbmV0 1
#define __WITH_AXIS_Htif 1
#define __WITH_AXIS_Net 1
#define __WITH_AXIS_PSM_sowhat 1
#define __WITH_AXIS_ExpSowhat_1 1
#define __WITH_AXIS_ThrNetTest 1
#define __WITH_AXIS_Vla 1
#define __WITH_AXIS_SysUtl 1
#define __WITH_AXIS_Md5 1
#define __WITH_AXIS_Mtab 1
#define __WITH_AXIS_AnalNtfs 1
#define __WITH_AXIS_Blowfish 1
#define __WITH_AXIS_PerfTest01 1
# 137 "axis/config.h"
#define _LINUX __AXIS_CONFIG_OS_VERS
#define __AXIS_CONFIG_OS __AXIS_OS_LINUX



#define _REENTRANT 1




#define _GNU_SOURCE 1
# 162 "axis/config.h"
#define __AXIS_CONFIG_ARCH __AXIS_ARCH_PENTIUM


#undef __i386




#define __i386 __AXIS_CONFIG_ARCH
#define I386 __AXIS_CONFIG_ARCH





#define cAxisWordLen 32
#define cAxisRegisterLen 32
#define cAxisPtrLen 32
#define cAxisLSBitNo 0
#define cAxisMSBitNo 31
#define cAxisLSBitValue (0x00000001UL)
#define cAxisMSBitValue (0x80000000UL)
#define cAxisFirstBitNo cAxisLSBitNo
#define cAxisLastBitNo cAxisMSBitNo
#define cAxisShortBoundary 0x1
#define cAxisIntBoundary 0x3
#define cAxisLongBoundary 0x3
#define cAxisLongLongBoundary 0x3
#define AxisDeclareStackPtr asm("%esp")
#define AxisDeclareFramePtr asm("%ebp")




#define AXIS_STACK_DIRECTION (-1)
#define AXIS_VARARG_DIRECTION (+1)





# 1 "axis/config_local.h" 1
# 9 "axis/config_local.h"
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1




#define AXIS_RUNTIME_DEBUG 1
# 204 "axis/config.h" 2
# 29 "axis/axistypes.h" 2


#define Inline extern inline
# 76 "axis/axistypes.h"
#define __BEGIN_DECLS 
#define __END_DECLS 
# 129 "axis/axistypes.h"
#define __BEGIN_CPPDECLS 
#define __END_CPPDECLS 

#define __BEGIN_NS_AXIS 
#define __END_NS_AXIS 





#define cAxisLSB8bIn16b 0
#define cAxis1st8bIn16b 0
#define cAxis2nd8bIn16b 1
#define cAxisMSB8bIn16b 1

#define cAxisLSB16bIn32b 0
#define cAxis1st16bIn32b 0
#define cAxis2nd16bIn32b 1
#define cAxisMSB16bIn32b 1

#define cAxisLSB8bIn32b 0
#define cAxis1st8bIn32b 0
#define cAxis2nd8bIn32b 1
#define cAxis3rd8bIn32b 2
#define cAxis4th8bIn32b 3
#define cAxisMSB8bIn32b 3

#define cAxisLSB32bIn64b 0
#define cAxis1st32bIn64b 0
#define cAxis2nd32bIn64b 1
#define cAxisMSB32bIn64b 1

#define cAxisLSB16bIn64b 0
#define cAxis1st16bIn64b 0
#define cAxis2nd16bIn64b 1
#define cAxis3rd16bIn64b 2
#define cAxis4th16bIn64b 3
#define cAxisMSB16bIn64b 3

#define cAxisLSB8bIn64b 0
#define cAxis1st8bIn64b 0
#define cAxis2nd8bIn64b 1
#define cAxis3rd8bIn64b 2
#define cAxis4th8bIn64b 3
#define cAxis5th8bIn64b 4
#define cAxis6th8bIn64b 5
#define cAxis7th8bIn64b 6
#define cAxis8th8bIn64b 7
#define cAxisMSB8bIn64b 7
# 220 "axis/axistypes.h"
#define cNetOrderLSB8bIn16b 1
#define cNetOrder1st8bIn16b 1
#define cNetOrder2nd8bIn16b 0
#define cNetOrderMSB8bIn16b 0

#define cNetOrderLSB16bIn32b 1
#define cNetOrder1st16bIn32b 1
#define cNetOrder2nd16bIn32b 0
#define cNetOrderMSB16bIn32b 0

#define cNetOrderLSB8bIn32b 3
#define cNetOrder1st8bIn32b 3
#define cNetOrder2nd8bIn32b 2
#define cNetOrder3rd8bIn32b 1
#define cNetOrder4th8bIn32b 0
#define cNetOrderMSB8bIn32b 0

#define cNetOrderLSB32bIn64b 1
#define cNetOrder1st32bIn64b 1
#define cNetOrder2nd32bIn64b 0
#define cNetOrderMSB32bIn64b 0

#define cNetOrderLSB16bIn64b 3
#define cNetOrder1st16bIn64b 3
#define cNetOrder2nd16bIn64b 2
#define cNetOrder3rd16bIn64b 1
#define cNetOrder4th16bIn64b 0
#define cNetOrderMSB16bIn64b 0

#define cNetOrderLSB8bIn64b 7
#define cNetOrder1st8bIn64b 7
#define cNetOrder2nd8bIn64b 6
#define cNetOrder3rd8bIn64b 5
#define cNetOrder4th8bIn64b 4
#define cNetOrder5th8bIn64b 3
#define cNetOrder6th8bIn64b 2
#define cNetOrder7th8bIn64b 1
#define cNetOrder8th8bIn64b 0
#define cNetOrderMSB8bIn64b 0

typedef unsigned char u8;
typedef unsigned short u16;



typedef unsigned int u32;





typedef unsigned long long u64;


typedef signed char s8;
typedef signed short s16;



typedef signed int s32;





typedef signed long long s64;


typedef unsigned char Chr;
typedef signed long Num;
typedef signed long Len;
typedef signed long Sz;

union AreaPtr;

typedef union Area32 {
    u32 u32Val;
    u16 u16Val;
    u8 u8Val;
    u16 u16Vals[sizeof(u32)/2];
    u8 u8Vals[sizeof(u32)];
    u32 uWhole;
    s32 s32Val;
    s16 s16Val;
    s8 s8Val;
    s16 s16Vals[sizeof(s32)/2];
    s8 s8Vals[sizeof(s32)];
    s32 sWhole;
    Chr chr;
    Chr chrs[sizeof(s32)];

    u32 val;
    s32 sval;
    u32 ptrVal;
    void* ptr;
    const void* ptrCnst;
    union AreaPtr* aPtr;



} Area32 __attribute__ ((transparent_union));

typedef union Area64 {
    u64 u64Val;
    u32 u32Val;
    u16 u16Val;
    u8 u8Val;
    u32 u32Vals[sizeof(u64)/4];
    u16 u16Vals[sizeof(u64)/2];
    u8 u8Vals[sizeof(u64)];
    u64 uWhole;
    s64 s64Val;
    s32 s32Val;
    s16 s16Val;
    s8 s8Val;
    s32 s32Vals[sizeof(s64)/4];
    s16 s16Vals[sizeof(s64)/2];
    s8 s8Vals[sizeof(s64)];
    s64 sWhole;
    Chr chr;
    Chr chrs[sizeof(s64)];
    double dbl;

    u32 val;
    u32 ptrVal;
    s32 sval;
    union AreaPtr* aPtr;
    union AreaPtr* aPtrs[2];







    void* ptr;
    const void* ptrCnst;
} Area64 __attribute__ ((transparent_union));


typedef u32 Word;




typedef Area32 Area;




typedef union Area128 {
    u64 u64Vals[2];
    u32 u32Vals[4];
    u16 u16Vals[8];
    u8 u8Vals[16];
    s64 s64Vals[2];
    s32 s32Vals[4];
    s16 s16Vals[8];
    s8 s8Vals[16];
    Chr chrs[16];

    void* ptrs[4];
    union AreaPtr* aPtrs[4];




} Area128 __attribute__ ((transparent_union));

typedef union Area256 {
    u64 u64Vals[4];
    u32 u32Vals[8];
    u16 u16Vals[16];
    u8 u8Vals[32];
    s64 s64Vals[4];
    s32 s32Vals[8];
    s16 s16Vals[16];
    s8 s8Vals[32];
    Chr chrs[32];

    void* ptrs[8];
    union AreaPtr* aPtrs[8];




} Area256 __attribute__ ((transparent_union));

typedef union AreaPtr{
    u8* u8p;
    u16* u16p;
    u32* u32p;
    u64* u64p;
    s8* s8p;
    s16* s16p;
    s32* s32p;
    s64* s64p;
    Chr* chrp;
    void* ptr;
    const void* ptrCnst;
    void** ptrVec;
    const void**ptrCnstVec;
    Area* ap;
    Area32* a32p;
    Area64* a64p;
    Area128* a128p;
    Area256* a256p;
    char* charp;

    s32 sval;
    u32 uval;
    s32* svalp;
    u32* uvalp;
# 446 "axis/axistypes.h"
} AreaPtr;


#define offsetof(type,fld) ((Word)(&(((type *)0)->fld)))



#define elementof(array) (sizeof(array)/sizeof((array)[0]))



#define memsizeof(type,member) (sizeof(((type*)0)->member))






typedef s32 Bool;

#define True 1


#define False 0
# 480 "axis/axistypes.h"
#define Do do
#define Done while(0)

#define RoundUp16Bit(x) ((((Word)(x)) + 1) & ~1)
#define RoundDown16Bit(x) (((Word)(x)) & ~1)
#define RoundUp32Bit(x) ((((Word)(x)) + 3) & ~3)
#define RoundDown32Bit(x) (((Word)(x)) & ~3)
#define RoundUp64Bit(x) ((((Word)(x)) + 7) & ~7)
#define RoundDown64Bit(x) (((Word)(x)) & ~7)
#define RoundUp128Bit(x) ((((Word)(x)) + 15) & ~15)
#define RoundDown128Bit(x) (((Word)(x)) & ~15)
#define RoundUp256Bit(x) ((((Word)(x)) + 31) & ~31)
#define RoundDown256Bit(x) (((Word)(x)) & ~31)


#define RoundUpWordSz(x) RoundUp32Bit(x)
#define RoundDownWordSz(x) RoundDown32Bit(x)




#define RoundUpLongDoubleSz(x) RoundUp128Bit(x)
#define RoundDownLongDoubleSz(x) RoundDown128Bit(x)

extern inline Bool
IsShortBoundary(void* x)
{
    AreaPtr y;
    y.ptr = x;
    return (y.uval & 0x1) == 0;
}

extern inline Bool
IsIntBoundary(void* x)
{
    AreaPtr y;
    y.ptr = x;
    return (y.uval & 0x3) == 0;
}

extern inline Bool
IsLongBoundary(void* x)
{
    AreaPtr y;
    y.ptr = x;
    return (y.uval & 0x3) == 0;
}

extern inline Bool
IsLongLongBoundary(void* x)
{
    AreaPtr y;
    y.ptr = x;
    return (y.uval & 0x3) == 0;
}

extern inline s64
SignReverse64(s64 x)
{
    u64 v = (u64)x;

    return ~v + 1;
}



#define AxisLibRef(Name) asm("__" #Name)
#define AxisLibDef(Name) asm(".weak " #Name "\n\t" #Name " = __" #Name)
# 562 "axis/axistypes.h"
extern inline u64
LoadUA64(const u8* p)
{
    u64 x = p[7];
    x <<= 8;
    x |= p[6];
    x <<= 8;
    x |= p[5];
    x <<= 8;
    x |= p[4];
    x <<= 8;
    x |= p[3];
    x <<= 8;
    x |= p[2];
    x <<= 8;
    x |= p[1];
    x <<= 8;
    x |= p[0];
    return x;
}

extern inline u32
LoadUA32(const u8* p)
{
    u32 x = p[3];
    x <<= 8;
    x |= p[2];
    x <<= 8;
    x |= p[1];
    x <<= 8;
    x |= p[0];
    return x;
}

extern inline u16
LoadUA16(const u8* p)
{
    u16 x = p[1];
    x <<= 8;
    x |= p[0];
    return x;
}

extern inline void
StoreUA64(u8* p, u64 x)
{
    p[0] = x;
    x >>= 8;
    p[1] = x;
    x >>= 8;
    p[2] = x;
    x >>= 8;
    p[3] = x;
    x >>= 8;
    p[4] = x;
    x >>= 8;
    p[5] = x;
    x >>= 8;
    p[6] = x;
    x >>= 8;
    p[7] = x;
    return;
}

extern inline void
StoreUA32(u8* p, u32 x)
{
    p[0] = x;
    x >>= 8;
    p[1] = x;
    x >>= 8;
    p[2] = x;
    x >>= 8;
    p[3] = x;
    return;
}

extern inline void
StoreUA16(u8* p, u16 x)
{
    p[0] = x;
    x >>= 8;
    p[1] = x;
    return;
}


# 665 "axis/axistypes.h"
#define MutexLock(l) pthread_mutex_lock(l)
#define MutexUnlock(l) pthread_mutex_unlock(l)
#define MutexDestroy(l) pthread_mutex_destroy(l)
#define CondWait(c,l) pthread_cond_wait(c, l)
#define CondTimedWait(c,l,t) pthread_cond_timedwait(c, l, t)
#define CondSignal(c) pthread_cond_signal(c)
#define CondBroadcast(c) pthread_cond_broadcast(c)
#define CondDestroy(c) pthread_cond_destroy(c)
#define ThreadIdType pthread_t
# 688 "axis/axistypes.h"
#define AxisVarArgPreFwd(a,x) 
#define AxisVarArgPostFwd(a,x) ((a) += (x))
# 23 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/axis.h" 1
# 27 "axis/axis.h"
#define _AXIS_AXIS_H_ 







# 1 "axis/axisdbg.h" 1
# 27 "axis/axisdbg.h"
#define _AXIS_AXISDBG_H_ 
# 60 "axis/axisdbg.h"
#define AXIS_DEBUG_VALID 1
# 108 "axis/axisdbg.h"
#define NDBG(...) 
#define NDB(...) 
#define NDbg(...) 
#define Nbg(...) 
#define NXDbg(...) 


#define NDbgV1(leve,form1,var1) 
#define NDbgV2(leve,form1,var1,form2,var2) 
#define NDbgV3(leve,form1,var1,form2,var2,form3,var3) 
#define NDbgV4(leve,form1,var1,form2,var2,form3,var3,form4,var4) 

#define NDbgVar1(form1,var1) 
#define NDbgVar2(form1,var1,form2,var2) 
#define NDbgVar3(form1,var1,form2,var2,form3,var3) 
#define NDbgVar4(form1,var1,form2,var2,form3,var3,form4,var4) 

#define NXDbgVar1(form1,var1) 
#define NXDbgVar2(form1,var1,form2,var2) 
#define NXDbgVar3(form1,var1,form2,var2,form3,var3) 
#define NXDbgVar4(form1,var1,form2,var2,form3,var3,form4,var4) 




#define NDbgLog(...) 


#define NDbgLogVar1(form1,var1) 
#define NDbgLogVar2(form1,var1,form2,var2) 
#define NDbgLogVar3(form1,var1,form2,var2,form3,var3) 
#define NDbgLogVar4(form1,var1,form2,var2,form3,var3,form4,var4) 






#define AxisDebugLevelValid(e,l) ((*((e)->maskPtr)) & (1U << (l)))
# 157 "axis/axisdbg.h"
#define Dbg(level,...) do{if(AxisDebugLevelValid(&(DebugObj), level)) AxisDebugOutput((DebugObj).debugId, level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__); }while(0)



#define DbgX(dbgp,level,...) do{if(AxisDebugLevelValid(dbgp, level)) AxisDebugOutput((DebugObj).debugId, level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__); }while(0)
# 182 "axis/axisdbg.h"
#define DbgV1(level,form1,var1) Dbg(level, #var1 "=" form1 "\n", var1)

#define DbgV2(level,form1,var1,form2,var2) Dbg(level, #var1 "=" form1 ", " #var2 "=" form2 "\n", var1, var2)

#define DbgV3(level,form1,var1,form2,var2,form3,var3) Dbg(level, #var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 "\n", var1, var2, var3)


#define DbgV4(level,form1,var1,form2,var2,form3,var3,form4,var4) Dbg(level, #var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 ", " #var4 "=" form4 "\n", var1, var2, var3, var4)
# 201 "axis/axisdbg.h"
#define DbgTr(...) Dbg(Trace_, __VA_ARGS__)
#define DbgVar(...) Dbg(TraceV_, __VA_ARGS__)


#define DbgVar1(form1,var1) DbgVar(#var1 "=" form1 "\n", var1)

#define DbgVar2(form1,var1,form2,var2) DbgVar(#var1 "=" form1 ", " #var2 "=" form2 "\n", var1, var2)

#define DbgVar3(form1,var1,form2,var2,form3,var3) DbgVar(#var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 "\n", var1, var2, var3)


#define DbgVar4(form1,var1,form2,var2,form3,var3,form4,var4) DbgVar(#var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 ", " #var4 "=" form4 "\n", var1, var2, var3, var4)
# 247 "axis/axisdbg.h"
#define XDbg(...) 

#define XDbgVar1(f1,v1) 
#define XDbgVar2(f1,v1,f2,v2) 
#define XDbgVar3(f1,v1,f2,v2,f3,v3) 
#define XDbgVar4(f1,v1,f2,v2,f3,v3,f4,v4) 






#define DbgPrfx "%s:%d:%s<%s:%u>: %$", gCmdName, gMyPid, __FUNCTION__, AxisDebugFileName(__FILE__), __LINE__




#define DbgLog(fmt,...) LogPut(cLogDbg, DbgPrfx, fmt, __VA_ARGS__)



#define DbgLogVar1(form1,var1) DbgLog(#var1 "=" form1 "\n", var1)

#define DbgLogVar2(form1,var1,form2,var2) DbgLog(#var1 "=" form1 ", " #var2 "=" form2 "\n", var1, var2)

#define DbgLogVar3(form1,var1,form2,var2,form3,var3) DbgLog(#var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 "\n", var1, var2, var3)


#define DbgLogVar4(form1,var1,form2,var2,form3,var3,form4,var4) DbgLog(#var1 "=" form1 ", " #var2 "=" form2 ", " #var3 "=" form3 "\n" #var4 "=" form4 "\n", var1, var2, var3, var4)
# 349 "axis/axisdbg.h"
#define DbgMask(level) (1U << (level))




#define Fatal_ 0
#define Warn_ 1
#define Alarm_ 2
#define Info_ 3
#define Trace_ 4
#define TraceS_ 5
#define TraceD_ 6
#define TraceX_ 7
#define TraceA_ 8
#define TraceB_ 9
#define TraceC_ 10
#define TraceV_ 11
#define TraceAxis_ 12
#define TraceAxisS_ 13
#define TraceAxisD_ 14
#define TraceAxisX_ 15





#define DbgLvlApl0 16
#define DbgLvlApl1 17
#define DbgLvlApl2 18
#define DbgLvlApl3 19
#define DbgLvlApl4 20
#define DbgLvlApl5 21
#define DbgLvlApl6 22
#define DbgLvlApl7 23
#define DbgLvlApl8 24
#define DbgLvlApl9 25
#define DbgLvlApl10 26
#define DbgLvlApl11 27
#define DbgLvlApl12 28
#define DbgLvlApl13 29
#define DbgLvlApl14 30
#define DbgLvlApl15 31






#define cCompoApl0 "APPL-0"
#define cCompoApl1 "APPL-1"
#define cCompoApl2 "APPL-2"
#define cCompoApl3 "APPL-3"
#define cCompoApl4 "APPL-4"
#define cCompoApl5 "APPL-5"
#define cCompoApl6 "APPL-6"
#define cCompoApl7 "APPL-7"
#define cCompoApl8 "APPL-8"
#define cCompoApl9 "APPL-9"
#define cCompoApl10 "APPL-10"
#define cCompoApl11 "APPL-11"
#define cCompoApl12 "APPL-12"
#define cCompoApl13 "APPL-13"
#define cCompoApl14 "APPL-14"
#define cCompoApl15 "APPL-15"

#define cCompoHtif "axis.htif"
#define cCompoSdbm "axis.sdbm"
#define cCompoAdam "axis.adam"
#define cCompoSdbmV0 "axis.sdbm"
#define cCompoSdbmV1 "axis.sdbm"
#define cCompoSdbmV2 "axis.sdbm"
#define cCompoSdbmV3 "axis.sdbm"
#define cCompoSdbmV4 "axis.sdbm"
#define cCompoSdbmV5 "axis.sdbm"
#define cCompoAdamV0 "axis.adam"
#define cCompoAdamV1 "axis.adam"
#define cCompoAdamV2 "axis.adam"
#define cCompoAdamV3 "axis.adam"
#define cCompoAdamV4 "axis.adam"
#define cCompoAdamV5 "axis.adam"
#define cCompoAtime "axis.atime"
#define cCompoCommon "axis.common"
#define cCompoUtil "axis.util"
#define cCompoSess "axis.sess"
#define cCompoAll "all"
# 445 "axis/axisdbg.h"
#define cAxisDebugModeInitialAreaCheckMask 0x00000001
#define cAxisDebugModeExplicitInitialArea 0x00000001
#define cAxisDebugModeImplicitInitialArea 0x00000000

#define cAxisDebugOutputCheckMask 0x00000002
#define cAxisDebugOutputExplicit 0x00000002
#define cAxisDebugOutputImplicit 0x00000000

#define cAxisDebugStartCheckMask 0x00000004
#define cAxisDebugStartExplicit 0x00000004
#define cAxisDebugStartImplicit 0x00000000


#define cAxisDebugStartFailCheckMask 0x00800000
#define cAxisDebugStartFailAbort 0x00800000
#define cAxisDebugStartFailIgnore 0x00000000


#define cAxisDebugForMtabAppl 0x40000000


#define cAxisDebugDefaultModeSet (cAxisDebugModeImplicitInitialArea| cAxisDebugOutputImplicit| cAxisDebugStartFailIgnore| cAxisDebugStartImplicit)




extern unsigned gAxisDebugDefaultMask;
extern unsigned gAxisDebugDefaultMode;
extern unsigned gAxisDebugMtabDefaultMode;
# 487 "axis/axisdbg.h"
# 1 "axis/cqueuep.h" 1
# 27 "axis/cqueuep.h"
#define _AXIS_CQUEUEP_H_ 



typedef struct CqueuePtrLink {
    void* bkwd;
    void* frwd;
} CqueuePtrLink;
# 95 "axis/cqueuep.h"
extern inline void*
CqueuePtrTopAddr(CqueuePtrLink* tgtLinkP, u32 linkOffset)
{
    Area x;

    x.ptr = tgtLinkP;
    x.val -= linkOffset;
    return x.ptr;
}

extern inline CqueuePtrLink*
CqueuePtrLinkAddr(void* tgt, u32 linkOffset)
{
    Area x;

    x.ptr = tgt;
    x.val += linkOffset;
    return (CqueuePtrLink*)(x.ptr);
}

extern inline void
CqueuePtrInit(void* target, u32 linkOffset)
{
    CqueuePtrLink* targetL;

    targetL = CqueuePtrLinkAddr(target, linkOffset);

    targetL->frwd = target;
    targetL->bkwd = target;
}

extern inline void
CqueuePtrInsertQueue(void* queue, void* target, u32 linkOffset)
{
    CqueuePtrLink* queueL;
    CqueuePtrLink* targetL;
    CqueuePtrLink* frwdL;

    queueL = CqueuePtrLinkAddr(queue, linkOffset);
    targetL = CqueuePtrLinkAddr(target, linkOffset);
    frwdL = CqueuePtrLinkAddr(queueL->frwd, linkOffset);

    targetL->frwd = queueL->frwd;
    frwdL->bkwd = target;
    targetL->bkwd = queue;
    queueL->frwd = target;
}

extern inline void
CqueuePtrAppendQueue(void* queue, void* target, u32 linkOffset)
{
    CqueuePtrLink* queueL;
    CqueuePtrLink* targetL;
    CqueuePtrLink* bkwdL;

    queueL = CqueuePtrLinkAddr(queue, linkOffset);
    targetL = CqueuePtrLinkAddr(target, linkOffset);
    bkwdL = CqueuePtrLinkAddr(queueL->bkwd, linkOffset);

    ;
    targetL->bkwd = queueL->bkwd;
    bkwdL->frwd = target;
    targetL->frwd = queue;
    queueL->bkwd = target;
}

extern inline void*
CqueuePtrDeleteQueue(void* target, u32 linkOffset)
{
    CqueuePtrLink* targetL;
    CqueuePtrLink* frwdL;
    CqueuePtrLink* bkwdL;
    void* oldFrwd;

    targetL = CqueuePtrLinkAddr(target, linkOffset);
    frwdL = CqueuePtrLinkAddr(targetL->frwd, linkOffset);
    bkwdL = CqueuePtrLinkAddr(targetL->bkwd, linkOffset);

    bkwdL->frwd = targetL->frwd;
    frwdL->bkwd = targetL->bkwd;

    oldFrwd = targetL->frwd;
    targetL->frwd = target;
    targetL->bkwd = target;

    return (oldFrwd != target) ? oldFrwd : ((void *)0);
}

#define CqueuePtrDefInit(prefix,typeName,linkField) extern inline void prefix ## Init(typeName* tgt) { CqueuePtrInit(tgt, offsetof(typeName, linkField));}



#define CqueuePtrDefInsert(prefix,typeName,linkField) extern inline void prefix ## Insert(typeName* top, typeName* tgt) { CqueuePtrInsertQueue(top, tgt, offsetof(typeName, linkField));}



#define CqueuePtrDefAppend(prefix,typeName,linkField) extern inline void prefix ## Append(typeName* top, typeName* tgt) { CqueuePtrAppendQueue(top, tgt, offsetof(typeName, linkField));}



#define CqueuePtrDefDelete(prefix,typeName,linkField) extern inline typeName* prefix ## Delete(typeName* tgt) { return CqueuePtrDeleteQueue(tgt, offsetof(typeName, linkField));}



#define CqueuePtrDefNext(prefix,typeName,linkField) extern inline typeName* prefix ## Next(typeName* top, typeName* tgt) { if(tgt != NULL) { typeName* next = tgt->linkField.frwd; return (next != top) ? next : NULL; } else return top;}







#define CqueuePtrDefPrev(prefix,typeName,linkField) extern inline typeName* prefix ## Prev(typeName* top, typeName* tgt) { if(tgt != NULL) { typeName* prev = tgt->linkField.bkwd; return (prev != top) ? prev : NULL; } else return top;}
# 216 "axis/cqueuep.h"
#define CqueuePtrDefFunctionSet(prefix,typeName,linkField) CqueuePtrDefInit(prefix, typeName, linkField) CqueuePtrDefInsert(prefix, typeName, linkField) CqueuePtrDefAppend(prefix, typeName, linkField) CqueuePtrDefDelete(prefix, typeName, linkField) CqueuePtrDefNext(prefix, typeName, linkField) CqueuePtrDefPrev(prefix, typeName, linkField)








# 488 "axis/axisdbg.h" 2
# 1 "axis/logging.h" 1
# 27 "axis/logging.h"
#define _AXIS_LOGGING_H_ 






#define cLogInfo 1
#define cLogStatis 2

#define cLogWarn 3
#define cLogErr 4
#define cLogFatal 5
#define cLogRecover 6

#define cLogDbg 7




#define cLogCntlBegin 0x00010000
#define cLogCntlOutput 0x00020000
#define cLogCntlSuppress 0x00030000

typedef void (*LogWriteFunc)(const void* msg, int msgLen);
typedef void (*LogPutFunc)(int logType, const void* msg, void* args);




extern int LogRegistWriteFunc(LogWriteFunc wrtFunc) asm("__" "LogRegistWriteFunc");
extern int LogRegistPutFunc(LogPutFunc putFunc) asm("__" "LogRegistPutFunc");
extern int LogInit(void) asm("__" "LogInit");
extern int LogPut(int logType, const void* form, ...) asm("__" "LogPut");


# 489 "axis/axisdbg.h" 2

typedef struct AxisDebugEntry {
    CqueuePtrLink link;

    const char* name;
    const unsigned* maskPtr;

    u32 debugId;
# 510 "axis/axisdbg.h"
} AxisDebugEntry;








#define cAxisDebugMinLevel 0U
#define cAxisDebugMaxLevel 31U
#define cAxisDebugNameMax 254
#define cAxisDebugLevelName 3U

extern void AxisDebugEntryRegist(AxisDebugEntry* entry) asm("__" "AxisDebugEntryRegist");
extern void AxisDebugOutput(unsigned debugId,
                            unsigned level,
                            const char* filename,
                            int line,
                            const char* funcname,
                            const char* fmt, ...) asm("__" "AxisDebugOutput");
extern void AxisDebugStart(void)
    asm("__" "AxisDebugStart");
extern void AxisDebugSetDefaultMask(u32 mask)
    asm("__" "AxisDebugSetDefaultMask");
extern int AxisDebugSetOutputMappedFile(const char* name, unsigned size)
    asm("__" "AxisDebugSetOutputMappedFile");
extern int AxisDebugSetOutputSize(unsigned size)
    asm("__" "AxisDebugSetOutputSize");
extern int AxisDebugSetOutputArea(void* outputArea, unsigned size)
    asm("__" "AxisDebugSetOutputArea");
extern int AxisDebugSetOutputAppendFileByName(const char* filename)
    asm("__" "AxisDebugSetOutputAppendFileByName");
extern int AxisDebugSetOutputAppendFile(int fd)
    asm("__" "AxisDebugSetOutputAppendFile");
extern AxisDebugEntry* AxisDebugEntryFind(const char* targetName)
    asm("__" "AxisDebugEntryFind");
extern AxisDebugEntry* AxisDebugGetEntryNext(AxisDebugEntry* next)
    asm("__" "AxisDebugGetEntryNext");
extern void AxisDebugSetMask(const char* targetName, const char* valueStr)
    asm("__" "AxisDebugSetMask");
extern void AxisDebugClearMask(const char* targetName, const char* valueStr)
    asm("__" "AxisDebugClearMask");
extern void AxisDebugGetLevelName(const AxisDebugEntry* entry, int level,
                                  char* destNameArea, char* destPrefixArea)
    asm("__" "AxisDebugGetLevelName");
extern const char* AxisDebugFileName(const char* fileName) asm("__" "AxisDebugFileName");

extern int AxisCommonCorrectNameLetter(int ch) asm("__" "AxisCommonCorrectNameLetter");
extern int AxisCommonCorrectNameStr(const void* x) asm("__" "AxisCommonCorrectNameStr");
# 586 "axis/axisdbg.h"
static AxisDebugEntry sLocalDebugObj = { {0, 0}, "axis.any", &gAxisDebugDefaultMask };



#define DebugObj sLocalDebugObj
# 615 "axis/axisdbg.h"
__attribute__((constructor)) static void
sAxisDebugObjectRegist(void)
{
    AxisDebugEntryRegist(& sLocalDebugObj);
}
# 629 "axis/axisdbg.h"

extern int gAxisDebugAbortOutputFd;
extern void AxisDebugAbortError(const char* msg, unsigned msgL) __attribute__((noreturn));






# 719 "axis/axisdbg.h"
#define cAxisDebugLevelNameMax 15

typedef struct AxisDebugLevelName {
    CqueuePtrLink link;
    unsigned level;
    const char* name;
    const char* prefix;
    AxisDebugEntry* entry;





} AxisDebugLevelName;

extern void AxisDebugLevelNameRegist(AxisDebugLevelName* dln) asm("__" "AxisDebugLevelNameRegist");


#define AxisDebugLevelNameDefine(levelValue,levelName,prefix) static AxisDebugLevelName sLocalDebugLevelName_ ## levelValue = { levelValue, levelName, prefix, &DebugObj };__attribute__((constructor)) static void sLocalDebugLevelNameRegist_ ## levelValue { AxisDebugLevelNameRegist(AxisDebugLevelName* dln);}
# 36 "axis/axis.h" 2








# 81 "axis/axis.h"
#define Enter() 
#define Return(x) return (x)
#define ReturnVoid() return
#define Assert(ex,form...) 



#define AssertX(ex,format...) do {if(!(ex)) AxisAbort("%s:%$\n", #ex, format);} while(0)
#define NAssertX(ex,format...) 


#define cStdin 0
#define cStdout 1
#define cStderr 2

extern Chr* gCmdName asm("__" "gCmdName");
extern s32 gMyPid asm("__" "gMyPid");
extern Word gPageSz asm("__" "gPageSz");
extern Word gPageMask asm("__" "gPageMask");
extern Word gPageOffset asm("__" "gPageOffset");

extern void AxisInitSysinfo(void) asm("__" "AxisInitSysinfo");
extern void AxisInitProcinfo(void) asm("__" "AxisInitProcinfo");
extern int AxisInit(int argc, char* argv[]) asm("__" "AxisInit");
extern void AxisExit(int exitCode) asm("__" "AxisExit") __attribute__ ((noreturn));
extern void AxisThrExit(void *__retval) asm("__" "AxisThrExit") __attribute__ ((__noreturn__));
extern int AxisAbort(const void* form, ...) asm("__" "AxisAbort") __attribute__ ((noreturn));
extern int AxisPrf(void* p, const void* form, int l, unsigned long* args, unsigned long* argnp) asm("__" "AxisPrf");
extern Len AxisSprintf(void* buf, Sz sz, const void* form, ...) asm("__" "AxisSprintf");
extern Len AxisVsprintf(void* buf, Sz sz, const void* form, void* args)
    asm("__" "AxisVsprintf");


typedef Len (* AxisPrfOutputFunc)(const void* str);

typedef Len (* AxisPrfCallBackFunc)(AxisPrfOutputFunc output, const void* optstr, void* arg);
# 216 "axis/axis.h"
# 1 "/usr/include/pthread.h" 1 3
# 16 "/usr/include/pthread.h" 3
#define _PTHREAD_H 1



# 1 "/usr/include/sched.h" 1 3
# 21 "/usr/include/sched.h" 3
#define _SCHED_H 1






#define __need_timespec 
# 1 "/usr/include/time.h" 1 3
# 113 "/usr/include/time.h" 3
#undef __need_timespec
# 30 "/usr/include/sched.h" 2 3


# 1 "/usr/include/bits/sched.h" 1 3
# 29 "/usr/include/bits/sched.h" 3
#define SCHED_OTHER 0
#define SCHED_FIFO 1
#define SCHED_RR 2



#define CSIGNAL 0x000000ff
#define CLONE_VM 0x00000100
#define CLONE_FS 0x00000200
#define CLONE_FILES 0x00000400
#define CLONE_SIGHAND 0x00000800
#define CLONE_PID 0x00001000
#define CLONE_PTRACE 0x00002000
#define CLONE_VFORK 0x00004000




struct sched_param
  {
    int __sched_priority;
  };





extern int clone (int (*__fn) (void *__arg), void *__child_stack,
                  int __flags, void *__arg) ;



# 33 "/usr/include/sched.h" 2 3

#define sched_priority __sched_priority





extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
     ;


extern int sched_getparam (__pid_t __pid, struct sched_param *__param) ;


extern int sched_setscheduler (__pid_t __pid, int __policy,
                               __const struct sched_param *__param) ;


extern int sched_getscheduler (__pid_t __pid) ;


extern int sched_yield (void) ;


extern int sched_get_priority_max (int __algorithm) ;


extern int sched_get_priority_min (int __algorithm) ;


extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) ;


# 21 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/time.h" 1 3
# 27 "/usr/include/time.h" 3
#define _TIME_H 1








#define __need_size_t 
#define __need_NULL 
# 1 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 1 3
# 221 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef __need_size_t
# 364 "/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include/stddef.h" 3
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL
# 39 "/usr/include/time.h" 2 3



# 1 "/usr/include/bits/time.h" 1 3
# 26 "/usr/include/bits/time.h" 3
#define _BITS_TIME_H 1







#define CLOCKS_PER_SEC 1000000l





extern long int __sysconf (int);
#define CLK_TCK ((__clock_t) __sysconf (2))




#define CLOCK_REALTIME 0

#define CLOCK_PROCESS_CPUTIME_ID 2

#define CLOCK_THREAD_CPUTIME_ID 3


#define TIMER_ABSTIME 1
# 43 "/usr/include/time.h" 2 3
# 54 "/usr/include/time.h" 3
#define __clock_t_defined 1




typedef __clock_t clock_t;
# 118 "/usr/include/time.h" 3
struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  __const char *tm_zone;




};




struct itimerspec
  {
    struct timespec it_interval;
    struct timespec it_value;
  };


struct sigevent;
# 163 "/usr/include/time.h" 3
extern clock_t clock (void) ;


extern time_t time (time_t *__timer) ;


extern double difftime (time_t __time1, time_t __time0)
     __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) ;





extern size_t strftime (char *__restrict __s, size_t __maxsize,
                        __const char *__restrict __format,
                        __const struct tm *__restrict __tp) ;
# 194 "/usr/include/time.h" 3
extern struct tm *gmtime (__const time_t *__timer) ;



extern struct tm *localtime (__const time_t *__timer) ;




extern struct tm *gmtime_r (__const time_t *__restrict __timer,
                            struct tm *__restrict __tp) ;



extern struct tm *localtime_r (__const time_t *__restrict __timer,
                               struct tm *__restrict __tp) ;




extern char *asctime (__const struct tm *__tp) ;


extern char *ctime (__const time_t *__timer) ;






extern char *asctime_r (__const struct tm *__restrict __tp,
                        char *__restrict __buf) ;


extern char *ctime_r (__const time_t *__restrict __timer,
                      char *__restrict __buf) ;




extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) ;



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) ;





#define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
# 271 "/usr/include/time.h" 3
extern time_t timegm (struct tm *__tp) ;


extern time_t timelocal (struct tm *__tp) ;


extern int dysize (int __year) __attribute__ ((__const__));





extern int nanosleep (__const struct timespec *__requested_time,
                      struct timespec *__remaining) ;



extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ;


extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ;


extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
     ;
# 309 "/usr/include/time.h" 3
extern int timer_create (clockid_t __clock_id,
                         struct sigevent *__restrict __evp,
                         timer_t *__restrict __timerid) ;


extern int timer_delete (timer_t __timerid) ;


extern int timer_settime (timer_t __timerid, int __flags,
                          __const struct itimerspec *__restrict __value,
                          struct itimerspec *__restrict __ovalue) ;


extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
     ;


extern int timer_getoverrun (timer_t __timerid) ;
# 362 "/usr/include/time.h" 3

# 22 "/usr/include/pthread.h" 2 3

#define __need_sigset_t 
# 1 "/usr/include/signal.h" 1 3
# 31 "/usr/include/signal.h" 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 34 "/usr/include/signal.h" 2 3
# 50 "/usr/include/signal.h" 3
#undef __need_sigset_t
# 371 "/usr/include/signal.h" 3

# 25 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 26 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/bits/initspin.h" 1 3
# 23 "/usr/include/bits/initspin.h" 3
#define __ATOMIC_LOCK_INIT 0


#define __LOCK_INITIALIZER { 0, 0 }
#define __ATOMIC_INITIALIZER { 0, 0 }
# 27 "/usr/include/pthread.h" 2 3






#define PTHREAD_MUTEX_INITIALIZER {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_INITIALIZER}
# 44 "/usr/include/pthread.h" 3
#define PTHREAD_COND_INITIALIZER {__LOCK_INITIALIZER, 0}
# 59 "/usr/include/pthread.h" 3
enum
{
  PTHREAD_CREATE_JOINABLE,
#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
  PTHREAD_CREATE_DETACHED
#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
};

enum
{
  PTHREAD_INHERIT_SCHED,
#define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED
  PTHREAD_EXPLICIT_SCHED
#define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED
};

enum
{
  PTHREAD_SCOPE_SYSTEM,
#define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
  PTHREAD_SCOPE_PROCESS
#define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
};

enum
{
  PTHREAD_MUTEX_TIMED_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_ADAPTIVE_NP
# 100 "/usr/include/pthread.h" 3
};

enum
{
  PTHREAD_PROCESS_PRIVATE,
#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
  PTHREAD_PROCESS_SHARED
#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
};
# 120 "/usr/include/pthread.h" 3
#define PTHREAD_ONCE_INIT 0
# 131 "/usr/include/pthread.h" 3
struct _pthread_cleanup_buffer
{
  void (*__routine) (void *);
  void *__arg;
  int __canceltype;
  struct _pthread_cleanup_buffer *__prev;
};



enum
{
  PTHREAD_CANCEL_ENABLE,
#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE
  PTHREAD_CANCEL_DISABLE
#define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE
};
enum
{
  PTHREAD_CANCEL_DEFERRED,
#define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED
  PTHREAD_CANCEL_ASYNCHRONOUS
#define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS
};
#define PTHREAD_CANCELED ((void *) -1)







extern int pthread_create (pthread_t *__restrict __thread,
                           __const pthread_attr_t *__restrict __attr,
                           void *(*__start_routine) (void *),
                           void *__restrict __arg) ;


extern pthread_t pthread_self (void) ;


extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) ;


extern void pthread_exit (void *__retval)
     __attribute__ ((__noreturn__));




extern int pthread_join (pthread_t __th, void **__thread_return) ;





extern int pthread_detach (pthread_t __th) ;







extern int pthread_attr_init (pthread_attr_t *__attr) ;


extern int pthread_attr_destroy (pthread_attr_t *__attr) ;


extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
                                        int __detachstate) ;


extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
                                        int *__detachstate) ;


extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
                                       __const struct sched_param *__restrict
                                       __param) ;


extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
                                       __attr,
                                       struct sched_param *__restrict __param)
     ;


extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
     ;


extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
                                        __attr, int *__restrict __policy)
     ;


extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
                                         int __inherit) ;


extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
                                         __attr, int *__restrict __inherit)
     ;


extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
     ;


extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
                                  int *__restrict __scope) ;
# 260 "/usr/include/pthread.h" 3
extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
                                      void *__stackaddr) ;


extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
                                      __attr, void **__restrict __stackaddr)
     ;
# 284 "/usr/include/pthread.h" 3
extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
                                      size_t __stacksize) ;


extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
                                      __attr, size_t *__restrict __stacksize)
     ;
# 301 "/usr/include/pthread.h" 3
extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
                                  __const struct sched_param *__param)
     ;


extern int pthread_getschedparam (pthread_t __target_thread,
                                  int *__restrict __policy,
                                  struct sched_param *__restrict __param)
     ;
# 331 "/usr/include/pthread.h" 3
extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
                               __const pthread_mutexattr_t *__restrict
                               __mutex_attr) ;


extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) ;


extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) ;


extern int pthread_mutex_lock (pthread_mutex_t *__mutex) ;
# 352 "/usr/include/pthread.h" 3
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) ;






extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) ;


extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) ;


extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
                                         __restrict __attr,
                                         int *__restrict __pshared) ;


extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
                                         int __pshared) ;
# 390 "/usr/include/pthread.h" 3
extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
                              __const pthread_condattr_t *__restrict
                              __cond_attr) ;


extern int pthread_cond_destroy (pthread_cond_t *__cond) ;


extern int pthread_cond_signal (pthread_cond_t *__cond) ;


extern int pthread_cond_broadcast (pthread_cond_t *__cond) ;



extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
                              pthread_mutex_t *__restrict __mutex) ;





extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
                                   pthread_mutex_t *__restrict __mutex,
                                   __const struct timespec *__restrict
                                   __abstime) ;




extern int pthread_condattr_init (pthread_condattr_t *__attr) ;


extern int pthread_condattr_destroy (pthread_condattr_t *__attr) ;


extern int pthread_condattr_getpshared (__const pthread_condattr_t *
                                        __restrict __attr,
                                        int *__restrict __pshared) ;


extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
                                        int __pshared) ;
# 556 "/usr/include/pthread.h" 3
extern int pthread_key_create (pthread_key_t *__key,
                               void (*__destr_function) (void *)) ;


extern int pthread_key_delete (pthread_key_t __key) ;


extern int pthread_setspecific (pthread_key_t __key,
                                __const void *__pointer) ;


extern void *pthread_getspecific (pthread_key_t __key) ;
# 576 "/usr/include/pthread.h" 3
extern int pthread_once (pthread_once_t *__once_control,
                         void (*__init_routine) (void)) ;






extern int pthread_setcancelstate (int __state, int *__oldstate) ;



extern int pthread_setcanceltype (int __type, int *__oldtype) ;


extern int pthread_cancel (pthread_t __thread) ;




extern void pthread_testcancel (void) ;
# 606 "/usr/include/pthread.h" 3
#define pthread_cleanup_push(routine,arg) { struct _pthread_cleanup_buffer _buffer; _pthread_cleanup_push (&_buffer, (routine), (arg));



extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
                                   void (*__routine) (void *),
                                   void *__arg) ;




#define pthread_cleanup_pop(execute) _pthread_cleanup_pop (&_buffer, (execute)); }


extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
                                  int __execute) ;
# 655 "/usr/include/pthread.h" 3
# 1 "/usr/include/bits/sigthread.h" 1 3
# 21 "/usr/include/bits/sigthread.h" 3
#define _BITS_SIGTHREAD_H 1
# 31 "/usr/include/bits/sigthread.h" 3
extern int pthread_sigmask (int __how,
                            __const __sigset_t *__restrict __newmask,
                            __sigset_t *__restrict __oldmask);


extern int pthread_kill (pthread_t __thread, int __signo) ;
# 656 "/usr/include/pthread.h" 2 3
# 671 "/usr/include/pthread.h" 3
extern int pthread_atfork (void (*__prepare) (void),
                           void (*__parent) (void),
                           void (*__child) (void)) ;




extern void pthread_kill_other_threads_np (void) ;


# 217 "axis/axis.h" 2
typedef pthread_t AxisThread;
# 310 "axis/axis.h"
#define thr_exit(p) AxisThrExit(p)
#define pthread_exit(p) AxisThrExit(p)
# 333 "axis/axis.h"

# 24 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/atime.h" 1
# 27 "axis/atime.h"
#define _AXIS_ATIME_H_ 



# 1 "/usr/include/sys/time.h" 1 3
# 20 "/usr/include/sys/time.h" 3
#define _SYS_TIME_H 1




#define __need_time_t 

#define __need_timeval 
# 1 "/usr/include/bits/time.h" 1 3
# 60 "/usr/include/bits/time.h" 3
#undef __need_timeval
# 29 "/usr/include/sys/time.h" 2 3
# 38 "/usr/include/sys/time.h" 3

# 56 "/usr/include/sys/time.h" 3
struct timezone
  {
    int tz_minuteswest;
    int tz_dsttime;
  };

typedef struct timezone *__restrict __timezone_ptr_t;
# 72 "/usr/include/sys/time.h" 3
extern int gettimeofday (struct timeval *__restrict __tv,
                         __timezone_ptr_t __tz) ;




extern int settimeofday (__const struct timeval *__tv,
                         __const struct timezone *__tz) ;





extern int adjtime (__const struct timeval *__delta,
                    struct timeval *__olddelta) ;




enum __itimer_which
  {

    ITIMER_REAL = 0,
#define ITIMER_REAL ITIMER_REAL

    ITIMER_VIRTUAL = 1,
#define ITIMER_VIRTUAL ITIMER_VIRTUAL


    ITIMER_PROF = 2
#define ITIMER_PROF ITIMER_PROF
  };



struct itimerval
  {

    struct timeval it_interval;

    struct timeval it_value;
  };






typedef int __itimer_which_t;




extern int getitimer (__itimer_which_t __which,
                      struct itimerval *__value) ;




extern int setitimer (__itimer_which_t __which,
                      __const struct itimerval *__restrict __new,
                      struct itimerval *__restrict __old) ;



extern int utimes (__const char *__file, __const struct timeval __tvp[2])
     ;





#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
#define timercmp(a,b,CMP) (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) : ((a)->tv_sec CMP (b)->tv_sec))



#define timeradd(a,b,result) do { (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; if ((result)->tv_usec >= 1000000) { ++(result)->tv_sec; (result)->tv_usec -= 1000000; } } while (0)
# 160 "/usr/include/sys/time.h" 3
#define timersub(a,b,result) do { (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; if ((result)->tv_usec < 0) { --(result)->tv_sec; (result)->tv_usec += 1000000; } } while (0)
# 171 "/usr/include/sys/time.h" 3

# 32 "axis/atime.h" 2


#define AtimeCathoricCalendar 1
#define AtimeNonePrepticCalendar 1
#define AtimeProtestantCalendar 0
#define AtimePrepticCalendar 0
# 54 "axis/atime.h"
typedef s64 Atime;

#define cAtimeMax 464269103999999999LL
#define cAtimeInfinity 0x7FFFFFFFFFFFFFFFLL
#define cAtimeOrigineUTC 210866803200000000LL

#define cAtime1Sec (1000000LL)
#define AtimeToSec(atime) ((atime)/cAtime1Sec)
#define AtimeFromSec(sec) ((Atime)((sec)*cAtime1Sec))
#define cAtime1MinBySec (60LL)
#define cAtime1Min (cAtime1Sec * cAtime1MinBySec)
#define AtimeToMin(atime) ((atime)/cAtime1Min)
#define AtimeFromMin(min) ((Atime)((min)*cAtime1Min))
#define cAtime1HourBySec (3600LL)
#define cAtime1HourByMin (60LL)
#define cAtime1Hour (cAtime1Sec * cAtime1HourBySec)
#define AtimeToHour(atime) ((atime)/cAtime1Hour)
#define AtimeFromHour(hour) ((Atime)((hour)*cAtime1Hour))
#define cAtime1DayByHour (24LL)
#define cAtime1DayByMin (1440LL)
#define cAtime1DayBySec (86400LL)
#define cAtime1Day (cAtime1DayBySec*cAtime1Sec)
#define AtimeToDay(atime) ((Atime)((atime)/cAtime1Day))
#define AtimeFromDay(day) ((Atime)((day)*cAtime1Day))

#define cAtime1MillSec (1000LL)
#define AtimeToMillSec(atime) ((atime)/cAtime1MillSec)
#define AtimeFromMillSec(msec) ((Atime)((msec)*cAtime1MillSec))

#define AtimePullOutMicroSec(atime) ((atime)%cAtime1Sec)

#define AtimePullOutSecInDay(atime) (AtimeToSec(atime)%cAtime1DayBySec)
#define AtimePullOutSecInHour(atime) (AtimeToSec(atime)%cAtime1HourBySec)
#define AtimePullOutSecInMin(atime) (AtimeToSec(atime)%cAtime1MinBySec)

#define AtimePullOutMinInDay(atime) (AtimeToMin(atime)%cAtime1DayByMin)
#define AtimePullOutMinInHour(atime) (AtimeToMin(atime)%cAtime1HourByMin)

#define AtimePullOutHourInDay(atime) (AtimeToHour(atime)%cAtime1DayByHour)

#define cAtimeNoTime (0LL)

#define cAtimeSunday 0
#define cAtimeMonday 1
#define cAtimeTuesday 2
#define cAtimeWednesday 3
#define cAtimeThursday 4
#define cAtimeFriday 5
#define cAtimeSaturday 6

extern inline Atime
AtimeAdjustUpSec(Atime tx)
{
    return ((Atime)((((tx + (1000000LL) - 1)/(1000000LL)))*(1000000LL)));
}

extern inline Atime
AtimeAdjustUpMin(Atime tx)
{
    return ((Atime)((((tx + ((1000000LL) * (60LL)) - 1)/((1000000LL) * (60LL))))*((1000000LL) * (60LL))));
}

extern inline Atime
AtimeAdjustUpHour(Atime tx)
{
    return ((Atime)((((tx + ((1000000LL) * (3600LL)) - 1)/((1000000LL) * (3600LL))))*((1000000LL) * (3600LL))));
}

extern inline Atime
AtimeAdjustUpDay(Atime tx)
{
    return ((Atime)((((Atime)((tx + ((86400LL)*(1000000LL)) - 1)/((86400LL)*(1000000LL)))))*((86400LL)*(1000000LL))));
}

extern inline Atime
AtimeAdjustDownSec(Atime tx)
{
    return ((Atime)((((tx)/(1000000LL)))*(1000000LL)));
}

extern inline Atime
AtimeAdjustDownMin(Atime tx)
{
    return ((Atime)((((tx)/((1000000LL) * (60LL))))*((1000000LL) * (60LL))));
}

extern inline Atime
AtimeAdjustDownHour(Atime tx)
{
    return ((Atime)((((tx)/((1000000LL) * (3600LL))))*((1000000LL) * (3600LL))));
}

extern inline Atime
AtimeAdjustDownDay(Atime tx)
{
    return ((Atime)((((Atime)((tx)/((86400LL)*(1000000LL)))))*((86400LL)*(1000000LL))));
}

typedef struct AtimeYmd {
    s32 year;
    s16 month;
    s16 day;
} AtimeYmd;

typedef struct AtimeProperty {
    u32 beforeReformDay;
    AtimeYmd beforeReformDate;
    u32 beforeReformYday;
    u32 afterReformDay;
    AtimeYmd afterReformDate;
    u32 afterReformYday;
    u32 correctYday;
    u32 eraDay;
    s32 bias0;
    u32 wday:3,
                                isProleptic:1,
                                isLeapYear:1,
                                :27;
} AtimeProperty;

extern const AtimeProperty* gAtimeProperty asm("__" "gAtimeProperty");

typedef struct AtimeDateTblEntry {
    s8 month;
    s8 dayInMonth;
} AtimeDateTblEntry;




#define cAtimeNormalYear 365
#define cAtimeLeapYear 366

#define cAtime4YearsBlock 1461
#define cAtime1stYearInBlock 366
#define cAtime2ndYearInBlock 731
#define cAtime3rdYearInBlock 1096




extern const s16 gAtimeDaysOfNormalYearByMonth[13] asm("__" "gAtimeDaysOfNormalYearByMonth");
extern const s16 gAtimeDaysOfLeapYearByMonth[13] asm("__" "gAtimeDaysOfLeapYearByMonth");
extern const AtimeDateTblEntry gAtime4YearsBlkToDate[1461] asm("__" "gAtime4YearsBlkToDate");
extern const s16 gAtime4YearsBlkToDayInYear[48][31] asm("__" "gAtime4YearsBlkToDayInYear");
extern const AtimeDateTblEntry gAtimeNormalYearToDate[365] asm("__" "gAtimeNormalYearToDate");
extern const s16 gAtimeNormalYearBlkToDayInYear[12][31] asm("__" "gAtimeNormalYearBlkToDayInYear");
extern const AtimeDateTblEntry gAtimeLeapYearToDate[366] asm("__" "gAtimeLeapYearToDate");
extern const s16 gAtimeLeapYearBlkToDayInYear[12][31] asm("__" "gAtimeLeapYearBlkToDayInYear");

#define cAtimeWeekNameNum 7
extern const Chr gAtimeEnglishWeekdayName[7][4] asm("__" "gAtimeEnglishWeekdayName");
extern const Len gAtimeEnglishWeekdayNameLen[7] asm("__" "gAtimeEnglishWeekdayNameLen");
extern const Chr gAtimeEnglishWeekdayFullName[7][10] asm("__" "gAtimeEnglishWeekdayFullName");
extern const Len gAtimeEnglishWeekdayFullNameLen[7] asm("__" "gAtimeEnglishWeekdayFullNameLen");
extern const Chr gAtimeJapaneseWeekdayName[7][3] asm("__" "gAtimeJapaneseWeekdayName");
extern const Len gAtimeJapaneseWeekdayNameLen[7] asm("__" "gAtimeJapaneseWeekdayNameLen");
extern const Chr gAtimeJapaneseWeekdayFullName[7][7] asm("__" "gAtimeJapaneseWeekdayFullName");
extern const Len gAtimeJapaneseWeekdayFullNameLen[7] asm("__" "gAtimeJapaneseWeekdayFullNameLen");

#define cAtimeMonthNameNum 12
extern const Chr gAtimeEnglishMonthName[12][4] asm("__" "gAtimeEnglishMonthName");
extern const Len gAtimeEnglishMonthNameLen[12] asm("__" "gAtimeEnglishMonthNameLen");
extern const Chr gAtimeEnglishMonthFullName[12][10] asm("__" "gAtimeEnglishMonthFullName");
extern const Len gAtimeEnglishMonthFullNameLen[12] asm("__" "gAtimeEnglishMonthFullNameLen");
extern const Chr gAtimeJapaneseMonthName[12][7] asm("__" "gAtimeJapaneseMonthName");
extern const Len gAtimeJapaneseMonthNameLen[12] asm("__" "gAtimeJapaneseMonthNameLen");
extern const Chr gAtimeJapaneseMonthFullName[12][7] asm("__" "gAtimeJapaneseMonthFullName");
extern const Len gAtimeJapaneseMonthFullNameLen[12] asm("__" "gAtimeJapaneseMonthFullNameLen");





typedef struct AtimeJapaneseEra {
    Atime begin;
    Atime end;
    Atime endOf1stYear;
    Atime topOfLastYear;
    s32 yearNoOf1stYear;
    s32 lastYear;
    Chr name[12];
    Chr englishName[16];
    s8 nameLen;
    s8 englishNameLen;
    Area rsvs[4];
} AtimeJapaneseEra;

#define cAtimeJapaneseEraTableNum 8
extern const AtimeJapaneseEra gAtimeJapaneseEraTable[8] asm("__" "gAtimeJapaneseEraTable");

extern inline const AtimeJapaneseEra*
AtimeGetJapaneseEraIndex(Atime tx)
{
    int i;
    for(i = 0; (i < 8) && (gAtimeJapaneseEraTable[i].begin > 0) ; i++) {
        if(gAtimeJapaneseEraTable[i].begin <= tx) {
            if((gAtimeJapaneseEraTable[i].end == 0) || (tx <= gAtimeJapaneseEraTable[i].end)) {
                return gAtimeJapaneseEraTable + i;
            }
        }
    }
    return (const AtimeJapaneseEra*)((void *)0);
}
# 274 "axis/atime.h"
#define cAtimeTmYearFactor 1900
#define cAtimeInvalidTmYear (-1900)

#define cAtimeYearNoMin (-4712)




extern const struct tm gAtimeNoneInitializedTm asm("__" "gAtimeNoneInitializedTm");

extern inline int
AtimeTmYearToYearNo(int tmYear)
{
    int yearNo;
    yearNo = tmYear + 1900;
    if(yearNo <= 0)
        yearNo ++;
    return yearNo;
}

extern inline int
AtimeYearNoToTmYear(int yearNo)
{
    int tmYear;

    if(yearNo <= 0) {
        tmYear = yearNo - (1900 + 1);
    } else {
        tmYear = yearNo - 1900;
    }
    return tmYear;
}
# 320 "axis/atime.h"
#define cAtimeTmDstInvalidDaylightSavingOnGMT (-2)
#define cAtimeTmDstInvalidDaylightSavingOnLocal (-1)
#define cAtimeTmDstNoDaylightSavingOnLocal 0
#define cAtimeTmDstDaylightSavingOnLocal 1
#define cAtimeTmDstDaylightSavingOnGMT 2






extern inline Bool
AtimeIsLeapYear(int yearNo)
{
    if(yearNo <= gAtimeProperty->beforeReformDate.year) {
        if((yearNo % 4) == 0)
            return 1;
    } else if(((yearNo % 4) == 0) &&
              (((yearNo % 100) != 0) ||
               ((yearNo % 400) == 0))) {
        return 1;
    }
    return 0;
}

#define cAtimeAtmArrayNum 24
typedef union Atm {
    struct {
        u32 isInit :1,
                isLocal:1,
                isPM:1,
                :5,
                setYear:1,
                setMonth:1,
                setMDay:1,
                setHour:1,
                setMin:1,
                setSec:1,
                setMicro:1,
                setDiffwest:1,
                setYDay:1,
                setWDay:1,
                setJEraName:1,
                setJEraYear:1,
                setMWeek:1,
                setYWeek:1,
                setYWOrd:1,
                setMWOrd:1,
                :8;



        s32 year;
        s32 month;
        s32 mday;
        s32 hour;
        s32 min;
        s32 sec;
        s32 micro;
        s32 diffwest;
        s32 yday;
        s32 wday;
        s32 jEraName;
        s32 jEraYear;
        s32 mweek;
        s32 yweek;
        s32 yword;
        s32 mword;
    } s;
    s32 a[24];
} Atm;

#define cAtimeAtmSetYear 0x00000004
#define cAtimeAtmSetMonth 0x00000008
#define cAtimeAtmSetMDay 0x00000010
#define cAtimeAtmSetHour 0x00000020
#define cAtimeAtmSetMin 0x00000040
#define cAtimeAtmSetSec 0x00000080
#define cAtimeAtmSetMicro 0x00000100
#define cAtimeAtmSetDiffwest 0x00000200
#define cAtimeAtmSetYDay 0x00000400
#define cAtimeAtmSetWDay 0x00000800
#define cAtimeAtmSetJEraName 0x00001000
#define cAtimeAtmSetJEraYear 0x00002000
#define cAtimeAtmSetMWeek 0x00004000
#define cAtimeAtmSetYWeek 0x00008000

#define cAtimeGlobalNum 16
typedef struct {
    long long areas[16];
} AtimeGlobalArea;




extern void AtimeInit(void) asm("__" "AtimeInit");
extern Atime AtimeGet(void) asm("__" "AtimeGet");
extern Atime AtimeGetTimeZone(void) asm("__" "AtimeGetTimeZone");
extern void AtimeSetGlobal(AtimeGlobalArea* globalArea) asm("__" "AtimeSetGlobal");
extern Atime AtimeAdjust() asm("__" "AtimeAdjust");

typedef s64 AtimeClock;
extern AtimeClock AtimeGetCpuClockCounter(void) asm("__" "AtimeGetCpuClockCounter");
extern AtimeClock AtimeSamplingClock(AtimeClock* bias) asm("__" "AtimeSamplingClock");
extern Atime AtimeFromCpuClockCounter(AtimeClock clk) asm("__" "AtimeFromCpuClockCounter");

extern int AtimeToAtm(Atime at, Atime timeZone, Atm* atmP) asm("__" "AtimeToAtm");
extern Atime AtimeFromAtm(Atm* atmP) asm("__" "AtimeFromAtm");
extern int AtimeNormalizeAtm(Atm* atmP) asm("__" "AtimeNormalizeAtm");

extern int AtimeAtmToStr(Chr* str, Len strLen, const Chr* format, Atm* atmP) asm("__" "AtimeAtmToStr");
extern int AtimeAtmFromStr(const Chr* str, const Chr* format, Atm* atmP) asm("__" "AtimeAtmFromStr");

extern int AtimeAtmToTm(Atm* atmP, struct tm* tmP, s32* microSecP) asm("__" "AtimeAtmToTm");
extern int AtimeAtmFromTm(Atm* atmP, const struct tm* tmP, s32 microSec) asm("__" "AtimeAtmFromTm");

extern Atime AtimeFromStr(const Chr* str, const Chr* format, Atime timeZone) asm("__" "AtimeFromStr");
extern int AtimeToStr(Chr* str, Len strLen, const Chr* format,
                               Atime at, Atime timeZone) asm("__" "AtimeToStr");

extern Atime AtimeGetLocal(void) asm("__" "AtimeGetLocal");
extern void AtimeNormalizeTm(struct tm* tm) asm("__" "AtimeNormalizeTm");

extern void AtimeToTm(Atime atime, struct tm* tmP, u32* microSecP) asm("__" "AtimeToTm");
extern void AtimeToLocalTm(Atime atime, struct tm* tmP, u32* microSecP) asm("__" "AtimeToLocalTm");
extern Atime AtimeFromTm(struct tm* tm, u32 microSec) asm("__" "AtimeFromTm");
extern Atime AtimeFromLocalTm(struct tm* tm, u32 microSec) asm("__" "AtimeFromLocalTm");
extern int AtimeStrToTm(const Chr* str, const Chr* format,
                                 struct tm* tmP, u32* microSecP) asm("__" "AtimeStrToTm");
extern int AtimeTmToStr(Chr* str, Len strLen, const Chr* format,
                                 const struct tm* tm, u32 microSec) asm("__" "AtimeTmToStr");



extern const Atime gAtimeTimeZone asm("__" "gAtimeTimeZone");





extern inline Atime
AtimeToLocalValue(Atime orig)
{
    return orig - gAtimeTimeZone;
}

extern inline Atime
AtimeFromLocalValue(Atime localVal)
{
    return localVal + gAtimeTimeZone;
}
# 488 "axis/atime.h"
extern inline void
AtimeBuildTm(struct tm* tmP, s32 yearNo, s32 month, s32 monthInDay,
             s32 hour, s32 min, s32 sec, int isLocal)
{
    memcpy(tmP, &gAtimeNoneInitializedTm, sizeof(struct tm));
    tmP->tm_year = AtimeYearNoToTmYear(yearNo);
    tmP->tm_mon = month - 1;
    tmP->tm_mday = monthInDay;
    tmP->tm_hour = hour;
    tmP->tm_min = min;
    tmP->tm_sec = sec;
    if(isLocal)
        tmP->tm_isdst = (-1);
    else
        tmP->tm_isdst = (-2);
    AtimeNormalizeTm(tmP);
}

#define cAtimeAtmIllVal (-2147483647)





extern inline void
AtimeAtmInit(Atm* atmP, Bool isLocalTime)
{
    atmP->a[0] = 0;
    atmP->a[1] = 0;
    atmP->s.isInit = 1;
    atmP->s.isLocal = isLocalTime ? 1 : 0;
    atmP->s.diffwest = ((gAtimeTimeZone)/(1000000LL));
    atmP->s.setDiffwest = 1;
}

extern inline void
AtimeAtmSetYear(Atm* atmP, s32 year)
{
    atmP->s.year = year;
    atmP->s.setYear = 1;
}

extern inline s32
AtimeAtmGetYear(Atm* atmP)
{
    if(atmP->s.setYear)
        return atmP->s.year;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetMonth(Atm* atmP, s32 month)
{
    atmP->s.month = month;
    atmP->s.setYDay = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setMonth = 1;
}

extern inline s32
AtimeAtmGetMonth(Atm* atmP)
{
    if(atmP->s.setMonth)
        return atmP->s.month;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetMDay(Atm* atmP, s32 mday)
{
    atmP->s.mday = mday;
    atmP->s.setMDay = 1;
    atmP->s.setYDay = 0;
    atmP->s.setMWeek = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setYWOrd = 0;
    atmP->s.setMWOrd = 0;
}

extern inline s32
AtimeAtmGetMDay(Atm* atmP)
{
    if(atmP->s.setMDay)
        return atmP->s.mday;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetHour(Atm* atmP, s32 hour)
{
    atmP->s.hour = hour;
    atmP->s.setHour = 1;
}

extern inline s32
AtimeAtmGetHour(Atm* atmP)
{
    if(atmP->s.setHour)
        return atmP->s.hour;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetMin(Atm* atmP, s32 min)
{
    atmP->s.min = min;
    atmP->s.setMin = 1;
}

extern inline s32
AtimeAtmGetMin(Atm* atmP)
{
    if(atmP->s.setMin)
        return atmP->s.min;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetSec(Atm* atmP, s32 sec)
{
    atmP->s.sec = sec;
    atmP->s.setSec = 1;
}

extern inline s32
AtimeAtmGetSec(Atm* atmP)
{
    if(atmP->s.setSec)
        return atmP->s.sec;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetMicro(Atm* atmP, s32 micro)
{
    atmP->s.micro = micro;
    atmP->s.setMicro = 1;
}

extern inline s32
AtimeAtmGetMicro(Atm* atmP)
{
    if(atmP->s.setMicro)
        return atmP->s.micro;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetDiffwest(Atm* atmP, s32 diffwest)
{
    atmP->s.diffwest = diffwest;
    atmP->s.setDiffwest = 1;
}

extern inline s32
AtimeAtmGetDiffwest(Atm* atmP)
{
    if(atmP->s.setDiffwest)
        return atmP->s.diffwest;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetYDay(Atm* atmP, s32 yday)
{
    atmP->s.yday = yday;
    atmP->s.setYDay = 1;
    atmP->s.setMonth = 0;
    atmP->s.setMDay = 0;
    atmP->s.setWDay = 0;
    atmP->s.setMWeek = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setYWOrd = 0;
    atmP->s.setMWOrd = 0;
}

extern inline s32
AtimeAtmGetYDay(Atm* atmP)
{
    if(atmP->s.setYDay)
        return atmP->s.yday;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetWDay(Atm* atmP, s32 wday)
{
    atmP->s.wday = wday;
    atmP->s.setWDay = 1;
    atmP->s.setYDay = 0;
    atmP->s.setMDay = 0;
}

extern inline s32
AtimeAtmGetWDay(Atm* atmP)
{
    if(atmP->s.setWDay)
        return atmP->s.wday;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetJEraName(Atm* atmP, s32 jEraName)
{
    atmP->s.jEraName = jEraName;
    atmP->s.setJEraName = 1;
}

extern inline s32
AtimeAtmGetJEraName(Atm* atmP)
{
    if(atmP->s.setJEraName)
        return atmP->s.jEraName;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetJEraYear(Atm* atmP, s32 jEraYear)
{
    atmP->s.jEraYear = jEraYear;
    atmP->s.setJEraYear = 1;
}

extern inline s32
AtimeAtmGetJEraYear(Atm* atmP)
{
    if(atmP->s.setJEraYear)
        return atmP->s.jEraYear;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetMWeek(Atm* atmP, s32 mweek)
{
    atmP->s.mweek = mweek;
    atmP->s.setMWeek = 1;
    atmP->s.setMWOrd = 0;
}

extern inline s32
AtimeAtmGetMWeek(Atm* atmP)
{
    if(atmP->s.setMWeek)
        return atmP->s.mweek;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetYWeek(Atm* atmP, s32 yweek)
{
    atmP->s.yweek = yweek;
    atmP->s.setYWeek = 1;
    atmP->s.setYWOrd = 0;
}

extern inline s32
AtimeAtmGetYWeek(Atm* atmP)
{
    if(atmP->s.setYWeek)
        return atmP->s.yweek;
    else
        return (-2147483647);
}

extern inline void
AtimeAtmSetYWOrd(Atm* atmP, s32 yword)
{
    atmP->s.yword = yword;
    atmP->s.setYWOrd = 1;
    atmP->s.setYWeek = 0;
}

extern inline s32
AtimeAtmGetYWOrd(Atm* atmP)
{

    if(atmP->s.setYWOrd)
        return atmP->s.yword;
    else
        return (-2147483647);

}

extern inline void
AtimeAtmSetMWOrd(Atm* atmP, s32 mword)
{
    atmP->s.mword = mword;
    atmP->s.setMWOrd = 1;
    atmP->s.setMWeek = 0;
}

extern inline s32
AtimeAtmGetMWOrd(Atm* atmP)
{

    if(atmP->s.setMWOrd)
        return atmP->s.mword;
    else
        return (-2147483647);

}

extern inline void
AtimeAtmSetYmd(Atm* atmP, s32 year, s32 month, s32 mday)
{
    atmP->s.setYear = 1;
    atmP->s.setMonth = 1;
    atmP->s.setMDay = 1;
    atmP->s.year = year;
    atmP->s.month = month;
    atmP->s.mday = mday;
    atmP->s.setYDay = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setMWeek = 0;
    atmP->s.setYWOrd = 0;
    atmP->s.setMWOrd = 0;
}

extern inline void
AtimeAtmSetYWD(Atm* atmP, s32 year, s32 yweek, s32 wday)
{
    atmP->s.setYear = 1;
    atmP->s.setYWeek = 1;
    atmP->s.setWDay = 1;
    atmP->s.year = year;
    atmP->s.yweek = yweek;
    atmP->s.wday = wday;
    atmP->s.setYDay = 0;
    atmP->s.setMWeek = 0;
    atmP->s.setMonth = 0;
    atmP->s.setYWOrd = 0;
    atmP->s.setMWOrd = 0;
}

extern inline void
AtimeAtmSetYMWD(Atm* atmP, s32 year, s32 month, s32 mweek, s32 wday)
{
    atmP->s.setYear = 1;
    atmP->s.setMonth = 1;
    atmP->s.setMWeek = 1;
    atmP->s.setWDay = 1;
    atmP->s.year = year;
    atmP->s.month = month;
    atmP->s.mweek = mweek;
    atmP->s.wday = wday;
    atmP->s.setYDay = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setYWOrd = 0;
    atmP->s.setMWOrd = 0;
}

extern inline void
AtimeAtmSetYMWO(Atm* atmP, s32 year, s32 month, s32 mword, s32 wday)
{
    atmP->s.setYear = 1;
    atmP->s.setMonth = 1;
    atmP->s.setMWOrd = 1;
    atmP->s.setWDay = 1;
    atmP->s.year = year;
    atmP->s.month = month;
    atmP->s.mword = mword;
    atmP->s.wday = wday;
    atmP->s.setYDay = 0;
    atmP->s.setYWeek = 0;
    atmP->s.setMWeek = 0;
    atmP->s.setYWOrd = 0;
}

extern inline void
AtimeAtmSetHms(Atm* atmP, s32 hour, s32 min, s32 sec)
{
    atmP->s.setHour = 1;
    atmP->s.setMin = 1;
    atmP->s.setSec = 1;
    atmP->s.hour = hour;
    atmP->s.min = min;
    atmP->s.sec = sec;
}

extern inline int
AtimeAtmYearToYearNo(Atm* atmP)
{
    s32 year = atmP->s.year;
    if(year < 0) {
        year ++;
    }
    return year;
}

extern inline int
AtimeAtmYearFromYearNo(s32 yearNo)
{
    if(yearNo <= 0) {
        yearNo --;
    }
    return yearNo;
}

extern inline Atime
AtimeAddYear(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.year += delta;
    atmx.s.setJEraYear = 0;
    atmx.s.setJEraName = 0;
    atmx.s.setYDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddMonth(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.month += delta;
    atmx.s.setYDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddDay(Atime at, s32 delta)
{
    at += ((Atime)((delta)*((86400LL)*(1000000LL))));
    return at;
}

extern inline Atime
AtimeAddMday(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.mday += delta;
    if((delta < 0) && (atmx.s.mday == 0)) {
        atmx.s.mday -= 1;
    } else if((delta > 0) && (atmx.s.mday == 0)) {
        atmx.s.mday += 1;
    }
    atmx.s.setYDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddWeek(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.yweek += delta;
    atmx.s.setYDay = 0;
    atmx.s.setMonth = 0;
    atmx.s.setMDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddMWeek(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.mweek += delta;
    atmx.s.setYDay = 0;
    atmx.s.setMDay = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddWOrd(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.yword += delta;
    atmx.s.setYDay = 0;
    atmx.s.setMonth = 0;
    atmx.s.setMDay = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setMWOrd = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeAddMWOrd(Atime at, s32 delta)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.mword += delta;
    atmx.s.setYDay = 0;
    atmx.s.setMDay = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWOrd = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetYear(Atime at, s32 val)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.year = val;
    atmx.s.setJEraYear = 0;
    atmx.s.setJEraName = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetMonth(Atime at, s32 val)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.month = val;
    atmx.s.setYDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetYDay(Atime at, s32 val)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.yday = val;
    atmx.s.setMonth = 0;
    atmx.s.setMDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetMDay(Atime at, s32 val)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.mday = val;
    atmx.s.setYDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetYMD(Atime at, s32 year, s32 month, s32 mday)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    if(year != 0)
        atmx.s.year = year;
    if(month != 0)
        atmx.s.month = month;
    if(mday != 0)
        atmx.s.mday = mday;
    atmx.s.setMWeek = 0;
    atmx.s.setYWeek = 0;
    atmx.s.setYDay = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    atmx.s.setWDay = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetHMS(Atime at, s32 hour, s32 min, s32 sec, s32 micro)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.hour = hour;
    atmx.s.min = min;
    atmx.s.sec = sec;
    atmx.s.micro = micro;
    at = AtimeFromAtm(&atmx);
    return at;
}

extern inline Atime
AtimeSetWeek(Atime at, s32 val)
{
    Atm atmx;

    AtimeToAtm(at, gAtimeTimeZone, &atmx);
    atmx.s.yweek = val;
    atmx.s.setYDay = 0;
    atmx.s.setMonth = 0;
    atmx.s.setMDay = 0;
    atmx.s.setMWeek = 0;
    atmx.s.setMWOrd = 0;
    atmx.s.setYWOrd = 0;
    at = AtimeFromAtm(&atmx);
    return at;
}



extern void AtimeGetAccountPeriod(Atime base, s32 closeDay, Atime* startPeriod, Atime* endPeriod) asm("__" "AtimeGetAccountPeriod");
extern Bool AtimeCheckYMD(s32 year, s32 month, s32 mday) asm("__" "AtimeCheckYMD");
extern Bool AtimeCheckEYMD(int eraType, const char* eraName, s32 year, s32 month, s32 mday) asm("__" "AtimeCheckEYMD");

extern inline struct timespec*
AtimeToTimeSpec(Atime at, struct timespec* ts)
{
    at -= 210866803200000000LL;
    ts->tv_sec = ((at)/(1000000LL));
    ts->tv_nsec = ((at)%(1000000LL)) * 1000;
    return ts;
}

extern inline struct timeval*
AtimeToTimeVal(Atime at, struct timeval* tv)
{
    at -= 210866803200000000LL;
    tv->tv_sec = ((at)/(1000000LL));
    tv->tv_usec = ((at)%(1000000LL));
    return tv;
}

extern inline Atime
AtimeFromTimeSpec(struct timespec* ts)
{
    Atime at = ((Atime)((ts->tv_sec)*(1000000LL))) + (ts->tv_nsec / 1000);
    at += 210866803200000000LL;
    return at;
}

extern inline Atime
AtimeFromTimeVal(struct timeval* tv)
{
    Atime at = ((Atime)((tv->tv_sec)*(1000000LL))) + tv->tv_usec;
    at += 210866803200000000LL;
    return at;
}

extern inline Atime
Atime0Am(Atime x)
{
    x = AtimeToLocalValue(x);
    x = AtimeAdjustDownDay(x);
    return AtimeFromLocalValue(x);
}

extern inline Atime
AtimeFromTimeT(time_t t)
{
    Atime tx = ((Atime)((t)*(1000000LL)));
    return tx + 210866803200000000LL;
}

extern inline time_t
AtimeToTimeT(Atime tx)
{
    if((210866803200000000LL <= tx) && (tx <= 464269103999999999LL)) {
        return (time_t)((tx - 210866803200000000LL)/(1000000LL));
    } else {
        return (time_t)(-1);
    }
}


# 25 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/cqueue.h" 1
# 27 "axis/cqueue.h"
#define _AXIS_CQUEUE_H_ 



typedef struct CqueueLink {
    s32 bkwd;
    s32 frwd;
} CqueueLink;
# 110 "axis/cqueue.h"
extern inline void*
CqueueTopAddr(CqueueLink* queueP, s32 queueIdx, s32 idx, u32 elementSize, u32 linkOffset)
{
    Area x;

    x.ptr = queueP;
    x.val -= linkOffset;
    x.sval += (idx - queueIdx) * elementSize;
    return x.ptr;
}

extern inline CqueueLink*
CqueueLinkAddr(CqueueLink* queueP, s32 queueIdx, s32 idx, u32 elementSize, u32 linkOffset)
{
    Area x;

    x.ptr = queueP;
    x.val -= linkOffset;
    x.sval += (idx - queueIdx) * elementSize;
    x.sval += linkOffset;
    return x.ptr;
}

extern inline void
CqueueInit(CqueueLink* queueP, s32 queueIdx, s32 targetIdx,
           u32 elementSize, u32 linkOffset)
{
    CqueueLink* targetP;

    targetP = CqueueLinkAddr(queueP, queueIdx, targetIdx, elementSize, linkOffset);

    targetP->frwd = targetIdx;
    targetP->bkwd = targetIdx;
}

extern inline void
CqueueInsertQueue(CqueueLink* queueP, s32 queueIdx, s32 targetIdx,
             u32 elementSize, u32 linkOffset)
{
    CqueueLink* targetP;
    CqueueLink* frwdP;

    targetP = CqueueLinkAddr(queueP, queueIdx, targetIdx, elementSize, linkOffset);
    frwdP = CqueueLinkAddr(queueP, queueIdx, queueP->frwd, elementSize, linkOffset);

    targetP->frwd = queueP->frwd;
    frwdP->bkwd = targetIdx;
    targetP->bkwd = queueIdx;
    queueP->frwd = targetIdx;
}

extern inline void
CqueueAppendQueue(CqueueLink* queueP, s32 queueIdx, s32 targetIdx,
                  u32 elementSize, u32 linkOffset)
{
    CqueueLink* targetP;
    CqueueLink* bkwdP;

    targetP = CqueueLinkAddr(queueP, queueIdx, targetIdx, elementSize, linkOffset);
    bkwdP = CqueueLinkAddr(queueP, queueIdx, queueP->bkwd, elementSize, linkOffset);

    targetP->bkwd = queueP->bkwd;
    bkwdP->frwd = targetIdx;
    targetP->frwd = queueIdx;
    queueP->bkwd = targetIdx;
}

extern inline s32
CqueueDeleteQueue(CqueueLink* queueP, s32 queueIdx, s32 targetIdx, u32 elementSize, u32 linkOffset)
{
    CqueueLink* targetP;
    CqueueLink* frwdP;
    CqueueLink* bkwdP;

    targetP = CqueueLinkAddr(queueP, queueIdx, targetIdx, elementSize, linkOffset);
    frwdP = CqueueLinkAddr(queueP, queueIdx, targetP->frwd, elementSize, linkOffset);
    bkwdP = CqueueLinkAddr(queueP, queueIdx, targetP->bkwd, elementSize, linkOffset);

    bkwdP->frwd = targetP->frwd;
    frwdP->bkwd = targetP->bkwd;

    return (targetP->frwd != targetIdx) ? targetP->frwd : targetIdx;
}

#define CqueueDefTopAddr(prefix,typeName,linkField) extern inline typeName* prefix ## TopAddr(typeName* top, s32 topIdx, s32 tgtIdx) { return &(top[tgtIdx - topIdx]); }



#define CqueueDefIndex(prefix,typeName,linkField) extern inline s32 prefix ## Index(typeName* top, s32 topIdx, typeName* tgt) { return (tgt - top) + topIdx; }



#define CqueueDefInit(prefix,typeName,linkField) extern inline void prefix ## Init(typeName* top, s32 topIdx, s32 tgtIdx) { CqueueInit(&(top->linkField), topIdx, tgtIdx, sizeof(typeName), offsetof(typeName, linkField));}




#define CqueueDefInsert(prefix,typeName,linkField) extern inline void prefix ## Insert(typeName* top, s32 topIdx, s32 tgtIdx) { CqueueInsertQueue(&(top->linkField), topIdx, tgtIdx, sizeof(typeName), offsetof(typeName, linkField));}




#define CqueueDefAppend(prefix,typeName,linkField) extern inline void prefix ## Append(typeName* top, s32 topIdx, s32 tgtIdx) { CqueueAppendQueue(&(top->linkField), topIdx, tgtIdx, sizeof(typeName), offsetof(typeName, linkField));}




#define CqueueDefDelete(prefix,typeName,linkField) extern inline s32 prefix ## Delete(typeName* top, s32 topIdx, s32 tgtIdx) { s32 retain; retain = CqueueDeleteQueue(&(top->linkField), topIdx, tgtIdx, sizeof(typeName), offsetof(typeName, linkField)); return retain;}






#define CqueueDefNext(prefix,typeName,linkField) extern inline s32 prefix ## Next(typeName* top, s32 topIdx, s32 cur) { s32 next = top[cur - topIdx].linkField.frwd; return next;}




#define CqueueDefPrev(prefix,typeName,linkField) extern inline s32 prefix ## Prev(typeName* top, s32 topIdx, s32 cur) { s32 prev = top[cur - topIdx].linkField.bkwd; return prev;}





#define CqueueDefFunctionSet(prefix,typeName,linkField) CqueueDefTopAddr(prefix, typeName, linkField) CqueueDefIndex(prefix, typeName, linkField) CqueueDefInit(prefix, typeName, linkField) CqueueDefInsert(prefix, typeName, linkField) CqueueDefAppend(prefix, typeName, linkField) CqueueDefDelete(prefix, typeName, linkField) CqueueDefNext(prefix, typeName, linkField) CqueueDefPrev(prefix, typeName, linkField)
# 246 "axis/cqueue.h"
#define CqueueDefTopAddrByDynSz(prefix,typeName,linkField) extern inline typeName* prefix ## TopAddr(typeName* top, s32 topIdx, s32 tgtIdx, u32 sz) { return CqueueTopAddr(&(top->linkField), topIdx, tgtIdx, sz, offsetof(typeName, linkField)); }



#define CqueueDefIndexByDynSz(prefix,typeName,linkField) extern inline s32 prefix ## Index(typeName* top, s32 topIdx, typeName* tgt, u32 sz) { struct { char x[sz]; } *p1, *p2; p1 = (void*)top; p2 = (void*)tgt; return p2 - p1 + topIdx; }






#define CqueueDefInitByDynSz(prefix,typeName,linkField) extern inline void prefix ## Init(typeName* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueInit(&(top->linkField), topIdx, tgtIdx, sz, offsetof(typeName, linkField));}




#define CqueueDefInsertByDynSz(prefix,typeName,linkField) extern inline void prefix ## Insert(typeName* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueInsertQueue(&(top->linkField), topIdx, tgtIdx, sz, offsetof(typeName, linkField));}




#define CqueueDefAppendByDynSz(prefix,typeName,linkField) extern inline void prefix ## Append(typeName* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueAppendQueue(&(top->linkField), topIdx, tgtIdx, sz, offsetof(typeName, linkField));}




#define CqueueDefDeleteByDynSz(prefix,typeName,linkField) extern inline s32 prefix ## Delete(typeName* top, s32 topIdx, s32 tgtIdx, u32 sz) { s32 retain; retain = CqueueDeleteQueue(&(top->linkField), topIdx, tgtIdx, sz, offsetof(typeName, linkField)); return retain;}






#define CqueueDefNextByDynSz(prefix,typeName,linkField) extern inline s32 prefix ## Next(typeName* top, s32 topIdx, s32 cur, u32 sz) { s32 next = prefix ## TopAddr(top, topIdx, cur, sz)->linkField.frwd; return next;}




#define CqueueDefPrevByDynSz(prefix,typeName,linkField) extern inline s32 prefix ## Prev(typeName* top, s32 topIdx, s32 cur, u32 sz) { s32 prev = prefix ## TopAddr(top, topIdx, cur, sz)->linkField.bkwd; return prev;}





#define CqueueDefFunctionSetByDynSz(prefix,typeName,linkField) CqueueDefTopAddrByDynSz(prefix, typeName, linkField) CqueueDefIndexByDynSz(prefix, typeName, linkField) CqueueDefInitByDynSz(prefix, typeName, linkField) CqueueDefInsertByDynSz(prefix, typeName, linkField) CqueueDefAppendByDynSz(prefix, typeName, linkField) CqueueDefDeleteByDynSz(prefix, typeName, linkField) CqueueDefNextByDynSz(prefix, typeName, linkField) CqueueDefPrevByDynSz(prefix, typeName, linkField)
# 300 "axis/cqueue.h"

# 26 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/desc.h" 1
# 28 "axis/desc.h"
#define _AXIS_DESC_H_ 



#define cDescValidMin 2
#define cDescValidMax 131072

#define cDescMin 1
#define cDescMax 2147483647L
#define cDescInvalid 0

typedef struct DescInfo {
    Word rsvs[10];
} DescInfo;


typedef s32 DescId;
#define cDescForHtif0 1
#define cDescForHtif1 2
#define cDescForSdbm0 3
#define cDescForAdam0 4
#define cDescForHeap0 5

#define cDescRequiredMax 5

#define NotErrDesc(retVal) (((retVal) == ErrRet(eUtilDescInitDup)) || NotErr(retVal))
#define IsErrDesc(retVal) (((retVal) != ErrRet(eUtilDescInitDup)) && NotErr(retVal))

extern int DescInit(DescId id, Num numValidDescs) asm("__" "DescInit");
extern s32 DescAlloc(DescId id, void* entity) asm("__" "DescAlloc");
extern int DescChgEntity(DescId id, s32 desc, void* entity) asm("__" "DescChgEntity");
extern int DescGetEntity(DescId id, s32 desc, void** entityP) asm("__" "DescGetEntity");
extern int DescFree(DescId id, s32 desc) asm("__" "DescFree");
extern int DescGetInfo(DescId id, DescInfo* info) asm("__" "DescGetInfo");


# 27 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/heap.h" 1
# 28 "axis/heap.h"
#define _AXIS_HEAP_H_ 




typedef s32 HeapDesc;

#define cHeapNoneFree 1

typedef struct HeapInfo {
    Word rsvs[16];

    Word heapSzCur;
    Word heapSzMax;
    Word heapNumCur;
    Word heapNumMax;
    Word anonSzCur;
    Word anonSzMax;
    Word anonNumCur;
    Word anonNumMax;
    Word rsvs2[8];
} HeapInfo;

extern HeapDesc HeapInit(Sz heapSz, u32 type) asm("__" "HeapInit");
extern void* HeapAlloc(HeapDesc desc, Sz allocSz) asm("__" "HeapAlloc");
extern void HeapFree(HeapDesc desc, void* p) asm("__" "HeapFree");
extern void HeapRele(HeapDesc desc) asm("__" "HeapRele");
extern int HeapGetInfo(HeapDesc desc, HeapInfo* info) asm("__" "HeapGetInfo");

extern int HeapGetMemoryByMmap(Sz sz, void** ptr) asm("__" "HeapGetMemoryByMmap");
extern int HeapFreeMemoryByUnmap(void* top, Sz sz) asm("__" "HeapFreeMemoryByUnmap");


# 28 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/atree.h" 1
# 27 "axis/atree.h"
#define _AXIS_ATREE_H_ 



#define cAtreeNoneNode 0

typedef u32 AtreeIdx;

#define cAtreeDeepestNum 34

#define cAtreeNoneTreeIdx 0

struct AtreeReq;
# 57 "axis/atree.h"
typedef int (*AtreeCompareFunc)(Area compareArg, Area auxArg,
                                Bool data1IsInternal, Area64 data1, Area64 data2);

#define cAtreeMatch 0
#define cAtreeFound 0
#define cAtreeLower (-1)
#define cAtreeHigher 1
#define AtreeIsLower(result) ((result) < 0)
#define AtreeIsHigher(result) ((result) > 0)

#define AtreeAreaSzHint(numTree,numNodes) ((numTree*64)+64+(32*(numNodes))+64)
# 84 "axis/atree.h"
typedef int (*AtreeBuildFunc)(Area arg1st, Sz byteSize, void** pp);
# 99 "axis/atree.h"
typedef int (*AtreeOpenFunc)(Area arg1st, Area arg2nd, void** pp);
# 113 "axis/atree.h"
typedef int (*AtreeCloseFunc)(Area arg1st, Area arg2nd);
# 131 "axis/atree.h"
typedef int (*AtreeGrowNodeSet)(Area arg1st, Area arg2nd, Sz byteSize, void** pp);
# 149 "axis/atree.h"
typedef int (*AtreeReduceNodeSet)(Area arg1st, Area arg2nd, Sz byteSize, void** pp);

typedef struct AtreeCallbacks {
    AtreeCompareFunc compareFunc;
    AtreeOpenFunc openFunc;
    AtreeCloseFunc closeFunc;
    AtreeGrowNodeSet growFunc;
    AtreeReduceNodeSet reduceFunc;
} AtreeCallbacks;

typedef struct AtreeReq {
    const AtreeCallbacks* oprs;
    Area compareArg;
    Area openArg;
    Area closeArg;
    Area growArg;
    Area reduceArg;
    Area auxArg;
    Area rsvs[3];
    void* atreeInternalUse;
    void* atreeHandle;
    Area atreeInfos[8];
} AtreeReq;

extern int AtreeBuildNodeSet(AtreeBuildFunc buildFunc, Area arg, u32 numTree, u32 treeIds[]) asm("__" "AtreeBuildNodeSet");
extern int AtreeBuildNodeSetWithNodeNum(AtreeBuildFunc buildFunc, Area arg, u32 initNodes,
                                             u32 numTree, u32 treeIds[]) asm("__" "AtreeBuildNodeSetWithNodeNum");
extern int AtreeOpenTree(AtreeReq* req, u32 treeIdx, u32 treeId) asm("__" "AtreeOpenTree");
extern int AtreeRegistAssocTree(AtreeReq* req1, AtreeReq* req2) asm("__" "AtreeRegistAssocTree");
extern int AtreeCloseTree(AtreeReq* req) asm("__" "AtreeCloseTree");
extern int AtreeNewNode(AtreeReq* req, Area64 data, Bool allowDuplication,
                             AtreeIdx* newNodeIdxP) asm("__" "AtreeNewNode");
extern int AtreeDelNodeByIdx(AtreeReq* req, AtreeIdx node) asm("__" "AtreeDelNodeByIdx");
extern int AtreeDelNodeByData(AtreeReq* req, Area64 data) asm("__" "AtreeDelNodeByData");
extern AtreeIdx AtreeFindNode(AtreeReq* req, Area64 data) asm("__" "AtreeFindNode");
extern int AtreeSearchNode(AtreeReq* req, AtreeIdx* searchPntP, Area64 data) asm("__" "AtreeSearchNode");
extern AtreeIdx AtreeNextNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeNextNode");
extern AtreeIdx AtreePrevNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreePrevNode");
extern AtreeIdx AtreeRootNode(AtreeReq* req) asm("__" "AtreeRootNode");
extern AtreeIdx AtreeLeftNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeLeftNode");
extern AtreeIdx AtreeRightNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeRightNode");
extern int AtreeLeftHeight(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeLeftHeight");
extern int AtreeRightHeight(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeRightHeight");
extern int AtreeNodeHeight(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeNodeHeight");
extern AtreeIdx AtreeAboveNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeAboveNode");
extern int AtreeGetData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreeGetData");
extern int AtreeSetData(AtreeReq* req, AtreeIdx cur, Area64 data) asm("__" "AtreeSetData");
extern AtreeIdx AtreeNextData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreeNextData");
extern AtreeIdx AtreePrevData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreePrevData");
extern int AtreeLoadNodeSetInfo(AtreeReq* req, Area256* info) asm("__" "AtreeLoadNodeSetInfo");
extern int AtreeStoreNodeSetInfo(AtreeReq* req, Area256* info) asm("__" "AtreeStoreNodeSetInfo");
extern int AtreeLoadTreeInfo(AtreeReq* req, Area256* info) asm("__" "AtreeLoadTreeInfo");
extern int AtreeStoreTreeInfo(AtreeReq* req, Area256* info) asm("__" "AtreeStoreTreeInfo");
extern int AtreeCheckTreeConsistency(AtreeReq* req) asm("__" "AtreeCheckTreeConsistency");

extern AtreeIdx AtreeNextUniqNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeNextUniqNode");
extern AtreeIdx AtreePrevUniqNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreePrevUniqNode");
extern AtreeIdx AtreeNextUniqData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreeNextUniqData");
extern AtreeIdx AtreePrevUniqData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreePrevUniqData");

extern AtreeIdx AtreeSameTopNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeSameTopNode");
extern AtreeIdx AtreeSameLastNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeSameLastNode");
extern AtreeIdx AtreeSameTopData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreeSameTopData");
extern AtreeIdx AtreeSameLastData(AtreeReq* req, AtreeIdx cur, Area64* dataP) asm("__" "AtreeSameLastData");

extern Bool AtreeIsUniqueNode(AtreeReq* req, AtreeIdx cur) asm("__" "AtreeIsUniqueNode");

extern int AtreeGetNodeNum(AtreeReq* req) asm("__" "AtreeGetNodeNum");
extern int AtreeGetUniqNodeNum(AtreeReq* req) asm("__" "AtreeGetUniqNodeNum");
extern int AtreeFlushNodes(AtreeReq* req) asm("__" "AtreeFlushNodes");

typedef struct AtreeTreeHeadInfo {
    AtreeIdx treeRoot;
    AtreeIdx lowestNode;
    AtreeIdx highestNode;
    int index;
    u32 treeId;
    Area256 userInfo;
} AtreeTreeHeadInfo;

typedef struct AtreeNodeSetInfo {
    u32 numTree;
    u32 totalNodes;
    u32 totalFree;
    u32 topNodeIdx;
    u32 lastChunkTop;
    u32 freeNode;
    u32 rsvs[2];
} AtreeNodeSetInfo;

extern int AtreeGetTreeInfo(AtreeReq* oneOfOpenedTree,
                                 int numInfo, AtreeTreeHeadInfo infos[]) asm("__" "AtreeGetTreeInfo");
extern int AtreeGetNodeSetInfo(AtreeReq* req, AtreeNodeSetInfo* info) asm("__" "AtreeGetNodeSetInfo");


#define AtreeBuildReq(req,oprsA,auxArgA,compareArgA,openArgA,closeArgA,growArgA,reduceArgA) { (req)->oprs = (const AtreeCallbacks*)(oprsA); (req)->auxArg.val = (auxArgA); (req)->compareArg.val = (compareArgA); (req)->openArg.val = (openArgA); (req)->closeArg.val = (closeArgA); (req)->growArg.val = (growArgA); (req)->reduceArg.val = (reduceArgA); }
# 271 "axis/atree.h"
extern __inline__ AtreeReq*
AtreeSetAuxArg(AtreeReq* req, Area arg)
{
    req->auxArg = arg;
    return req;
}

extern __inline__ AtreeReq*
AtreeSetOpenArg(AtreeReq* req, Area arg)
{
    req->openArg = arg;
    return req;
}

extern __inline__ AtreeReq*
AtreeSetCloseArg(AtreeReq* req, Area arg)
{
    req->closeArg = arg;
    return req;
}

extern __inline__ AtreeReq*
AtreeSetGrowArg(AtreeReq* req, Area arg)
{
    req->growArg = arg;
    return req;
}

extern __inline__ AtreeReq*
AtreeSetReduceArg(AtreeReq* req, Area arg)
{
    req->reduceArg = arg;
    return req;
}
# 319 "axis/atree.h"
extern int AtreeCreateWork(AtreeReq** newReqs, Num nTree, Num totalNodes,
                            AtreeCompareFunc compareFunc, void* arg) asm("__" "AtreeCreateWork");
extern int AtreeReleaseWork(AtreeReq* workReq, Num nTree, Num totalNodes) asm("__" "AtreeReleaseWork");


# 29 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/adam.h" 1
# 14 "axis/adam.h"
#define _AXIS_ADAM_H_ 




#define cAdamFileSzMax 2147483647L
#define cAdamSubfileSzMax 1073741824L
#define cAdamDescMax 2147483647L


#define cAdamSubfileIdMax 127




#define cAdamNil 0

typedef s32 AdamDesc;
typedef s32 AdamPos;

typedef Area128 AdamMagic;
typedef Area256 AdamUserMagic;
typedef Area128 AdamUserAttr;
typedef u64 AdamSubfileId;
typedef Atime AdamModTime;




typedef struct AdamFileParam {
    AdamUserMagic magic;

    Area rsvs[8];
} AdamFileParam;





typedef struct AdamSubfileParam {
    AdamUserAttr attr;
    u32 type;
    union {
        struct {
            Sz subfileSz;
        } plain;
        struct {
            Num numValidBlk;
            Num numTotalBlk;
        } rba;
        struct {
            Num numTotalBlk;
        } sba;
        struct {
            Num numTotalElms;
        } vel;
    } each;
    Area rsvs[8];
} AdamSubfileParam;




#define cAdamRdonly 0
#define cAdamWrtable 1




#define cAdamSubfileNone 0
#define cAdamSubfilePlain 1
#define cAdamSubfileRandomBlkArray 2
#define cAdamSubfileSortedBlkArray 3
#define cAdamSubfileVarElmList 4




extern AdamDesc AdamCreateFile(const Chr* path, s32 mode, AdamFileParam* param)
    asm("__" "AdamCreateFile");
extern AdamDesc AdamOpenFile(const Chr* path, int openType, AdamUserMagic* magic)
    asm("__" "AdamOpenFile");
extern int AdamCloseFile(AdamDesc desc)
    asm("__" "AdamCloseFile");
extern int AdamLockFile(AdamDesc desc)
    asm("__" "AdamLockFile");
extern int AdamUnlockFile(AdamDesc desc)
    asm("__" "AdamUnlockFile");




extern AdamDesc AdamCreateSubfile(AdamDesc fileDesc, AdamSubfileId id, const Chr* label,
                                      int type, AdamSubfileParam* param)
    asm("__" "AdamCreateSubfile");
extern AdamDesc AdamOpenSubfile(AdamDesc fileDesc, AdamSubfileId id)
    asm("__" "AdamOpenSubfile");
extern AdamDesc AdamOpenSubfileByLabel(AdamDesc fileDesc, const Chr* label)
    asm("__" "AdamOpenSubfileByLabel");
extern int AdamCloseSubfile(AdamDesc desc)
    asm("__" "AdamCloseSubfile");
extern int AdamGetSubfileParam(AdamDesc desc, AdamSubfileParam* param)
    asm("__" "AdamGetSubfileParam");
extern int AdamChangeSubfileParam(AdamDesc desc, AdamSubfileParam* param)
    asm("__" "AdamChangeSubfileParam");
extern int AdamMapSubfile(AdamDesc desc, int mapType)
    asm("__" "AdamMapSubfile");
extern int AdamGetAddr(AdamDesc desc, void** addr)
    asm("__" "AdamGetAddr");
extern int AdamUnmapSubfile(AdamDesc desc)
    asm("__" "AdamUnmapSubfile");
extern int AdamResizeSubfile(AdamDesc desc, Sz newSz)
    asm("__" "AdamResizeSubfile");
extern AdamPos AdamAllocIt(AdamDesc desc, Sz allocSz)
    asm("__" "AdamAllocIt");
extern int AdamFreeIt(AdamDesc desc, AdamPos target)
    asm("__" "AdamFreeIt");
extern AdamPos AdamGetNextIt(AdamDesc desc, AdamPos curPos)
    asm("__" "AdamGetNextIt");
extern int AdamGetItsAddr(AdamDesc desc, AdamPos curPos, void** addr)
    asm("__" "AdamGetItsAddr");
extern Num AdamGetThem(AdamDesc desc, AdamPos startPos,
                                Num num, AdamPos poss[], void* addrs[])
    asm("__" "AdamGetThem");
extern int AdamListVarElm(AdamDesc desc, int output, const char* prefix)
    asm("__" "AdamListVarElm");


# 30 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "axis/sdbm.h" 1
# 14 "axis/sdbm.h"
#define _AXIS_SDBM_H_ 







typedef s32 SdbmDesc;





typedef long long SdbmRecId;
#define cSdbmRecordMaxNum 536870912





typedef s32 SdbmFldNo;
#define cSdbmFldNoMin 1
#define cSdbmFldNoMax 2047






typedef s32 SdbmVecFldIdx;
#define cSdbmVecIdxAny 0
#define cSdbmVecIdxMin 1
#define cSdbmVecIdxMax 16777216
#define SdbmVecIdxToRefIdx(vecIdx) ((vecIdx)-1)
#define SdbmRefIdxToVecIdx(refIdx) ((refIdx)+1)





typedef s32 SdbmTableNo;
#define cSdbmTableNoMin 1
#define cSdbmTableNoMax 1023




typedef s32 SdbmEnumSetId;
#define cSdbmEnumSetIdMin 1
#define cSdbmEnumSetIdMax 1023




typedef s32 SdbmEnumUnitId;
#define cSdbmEnumUnitIdMin 1




#define cSdbmVarDataLenMax 16777215




typedef struct SdbmParam {
    Num numFlds;
    Area rsvs[7];
} SdbmParam;




typedef struct SdbmStatis {
    Atime lastUpdate;
    Area rsvs[6];
} SdbmStatis;




typedef struct SdbmFldDef {
    Chr* fldName;
    SdbmFldNo fldNo;
    u32 fldType;
    u32 fldAuxType;
    u32 fldAttrs;
    Area128 userInfo;
    u32 userInfoPattern;
    Area rsvs[2];
} SdbmFldDef;
#define cSdbmFldIsKey 0x00000001

typedef union SdbmFldDefLinkInfo {
    u32 whole;
    struct {
        u32 isCopyOnWrite :1,
                :3,
                linkToTable:12,
                linkToFldNo:16;
    } detail;
} SdbmFldDefLinkInfo;

extern inline u32
SdbmMakeFldAuxTypeForLinkShared(SdbmTableNo tableNo, SdbmFldNo fldNo)
{
    SdbmFldDefLinkInfo auxType;
    auxType.whole = 0;
    auxType.detail.linkToTable = tableNo;
    auxType.detail.linkToFldNo = tableNo;
    return auxType.whole;
}




typedef struct SdbmFldRef {
    u32 fldType :8,
                vecIdx :24;
    u32 fldSize;
    union {
        Area64 value;
        void* readPtr;
        struct {
            SdbmEnumSetId enumSetId;
            SdbmEnumUnitId enumUnitId;
        } enumValue;
        struct {
            Chr* str;
        } str;
        struct {
            const void* data;
            Len dataLen;
        } opaq;
        SdbmRecId recId;
    } v;
} SdbmFldRef;

typedef struct SdbmFldElmPtr {
    SdbmRecId record;
    SdbmVecFldIdx vecIdx;
} SdbmFldElmPtr;




typedef struct SdbmQueryCond {
    SdbmFldNo fldNo;
    u32 condType;
    SdbmFldRef condValue;
} SdbmQueryCond;




#define cSdbmFldNoneType 0x00
#define cSdbmFldNumeric 0x01
#define cSdbmFldStr 0x02
#define cSdbmFldBitmap 0x03
#define cSdbmFldFloat 0x04
#define cSdbmFldEnum 0x10
#define cSdbmFldEnumVal 0x11
#define cSdbmFldEnumName 0x12
#define cSdbmFldLink 0x80
#define cSdbmFldUnicode 0x21
#define cSdbmFldOpaque 0x30

#define cSdbmFldTypeMax 255




#define cSdbmNumericMin (-9223372036854775808LL)
#define cSdbmNumericMax 9223372036854775807LL

#define cSdbmBitmapNumBits 64





#define cSdbmQueryNumericMask 0xF0000007
#define cSdbmQueryEq 0x00000001
#define cSdbmQueryLo 0x00000002
#define cSdbmQueryHi 0x00000004
#define cSdbmQueryNotEq 0x00000006

#define cSdbmQueryMatchMask 0xF00000F8
#define cSdbmQueryMatch 0x00000008
#define cSdbmQueryFrwdMatch 0x00000010
#define cSdbmQueryBkwdMatch 0x00000020
#define cSdbmQueryUnmatch 0x00000030
#define cSdbmQueryHeadMatch 0x00000040

#define cSdbmQueryBitmapMask 0xF0000F00
#define cSdbmQueryAndMatch 0x00000100
#define cSdbmQueryAndZero 0x00000200
#define cSdbmQueryAndUnmatch 0x00000300
#define cSdbmQueryOrMatch 0x00000400
#define cSdbmQueryOrZero 0x00000500
#define cSdbmQueryOrUnmatch 0x00000600
#define cSdbmQueryXorMatch 0x00000700
#define cSdbmQueryXorZero 0x00000800
#define cSdbmQueryXorUnmatch 0x00000900

#define cSdbmQueryEnumMask 0xF0007000
#define cSdbmQueryEnumValEq 0x00001000
#define cSdbmQueryEnumValNotEq 0x00005000
#define cSdbmQueryEnumNameEq 0x00002000
#define cSdbmQueryEnumNameNotEq 0x00006000


#define cSdbmQueryAll 0x10000000

extern int SdbmExtractRecordNo(SdbmRecId recId)
    asm("__" "SdbmExtractRecordNo");
extern int SdbmRecIdEq(SdbmRecId recId1, SdbmRecId recId2)
    asm("__" "SdbmRecIdEq");




extern SdbmDesc SdbmBuildDb(const Chr* dbPathName, const Chr* dbName)
    asm("__" "SdbmBuildDb");
extern SdbmDesc SdbmOpenDb(const Chr* dbPathName, const Chr* dbName, Bool writable)
    asm("__" "SdbmOpenDb");
extern int SdbmCloseDb(SdbmDesc dbDesc)
    asm("__" "SdbmCloseDb");
extern int SdbmLockDb(SdbmDesc dbDesc)
    asm("__" "SdbmLockDb");
extern int SdbmUnlockDb(SdbmDesc dbDesc)
    asm("__" "SdbmUnlockDb");
extern int SdbmDumpDb(const Chr* dbPathName, const Chr* dbName,
                               int fileDesc, int dumpMode)
    asm("__" "SdbmDumpDb");
extern int SdbmRestoreDb(const Chr* dbPathName, int fileDesc, int rstrMode)
    asm("__" "SdbmRestoreDb");
extern int SdbmUpdateDb(const Chr* dbPathName, int fileDesc, int rstrMode)
    asm("__" "SdbmUpdateDb");
extern int SdbmListTables(SdbmDesc dbDesc, Num numArea,
                                   Chr* tableNames[], int tableNos[])
    asm("__" "SdbmListTables");
extern int SdbmPrintField(SdbmDesc tableDesc, SdbmRecId recId, SdbmFldNo fldNo,
                                   int outputDesc)
    asm("__" "SdbmPrintField");




extern int SdbmCreateEnumSet(SdbmDesc dbDesc, SdbmEnumSetId id, const Chr* enumSetName)
    asm("__" "SdbmCreateEnumSet");
extern int SdbmDeleteEnumSet(SdbmDesc dbDesc, SdbmEnumSetId id, const Chr* enumSetName)
    asm("__" "SdbmDeleteEnumSet");
extern int SdbmAddEnumUnit(SdbmDesc dbDesc, SdbmEnumSetId id,
                                    const Chr* enumUnitName, Area64 enumUnitVal)
    asm("__" "SdbmAddEnumUnit");
extern int SdbmDeleteEnumUnit(SdbmDesc dbDesc, SdbmEnumSetId id,
                                       const Chr* enumUnitName, Area64 enumUnitVal)
    asm("__" "SdbmDeleteEnumUnit");
extern int SdbmGetEnumSetByName(SdbmDesc dbDesc, const Chr* enumSetName,
                                         SdbmEnumSetId* idP)
    asm("__" "SdbmGetEnumSetByName");
extern int SdbmGetEnumSetById(SdbmDesc dbDesc, Chr** enumSetNameP, SdbmEnumSetId id)
    asm("__" "SdbmGetEnumSetById");
extern Num SdbmGetEnumUnitNumByName(SdbmDesc dbDesc, const Chr* enumSetName)
    asm("__" "SdbmGetEnumUnitNumByName");
extern Num SdbmGetEnumUnitNum(SdbmDesc dbDesc, SdbmEnumSetId id)
    asm("__" "SdbmGetEnumUnitNum");
extern Num SdbmListEnumUnit(SdbmDesc dbDesc, SdbmEnumSetId id, Num enumUnitNum,
                                     Chr* enumUnitNames[], Area64 enumUnitVals[],
                                     SdbmEnumUnitId enumUnitIds[])
    asm("__" "SdbmListEnumUnit");
extern int SdbmGetEnumUnitByName(SdbmDesc dbDesc, SdbmEnumSetId id,
                                          const Chr* enumUnitName, s64* enumUnitValP,
                                          SdbmEnumUnitId* enumUnitIdP)
    asm("__" "SdbmGetEnumUnitByName");
extern int SdbmGetEnumUnitByVal(SdbmDesc dbDesc, SdbmEnumSetId id,
                                         Chr** enumUnitNameP, s64 enumUnitVal,
                                         SdbmEnumUnitId* enumUnitIdP)
    asm("__" "SdbmGetEnumUnitByVal");
extern int SdbmGetEnumUnitById(SdbmDesc dbDesc, SdbmEnumSetId id,
                                        Chr** enumUnitNameP, s64* enumUnitValP,
                                        SdbmEnumUnitId enumUnitId)
    asm("__" "SdbmGetEnumUnitById");





extern SdbmDesc SdbmBuildTable(SdbmDesc dbDesc, SdbmTableNo tblNo, const Chr* tblName,
                                   Num numFlds, SdbmFldDef* flds)
    asm("__" "SdbmBuildTable");
extern SdbmDesc SdbmOpenTable(SdbmDesc dbDesc, SdbmTableNo tableNo)
    asm("__" "SdbmOpenTable");
extern SdbmDesc SdbmOpenTableByName(SdbmDesc dbDesc, const Chr* tblName)
    asm("__" "SdbmOpenTableByName");
extern int SdbmCloseTable(SdbmDesc tableDesc)
    asm("__" "SdbmCloseTable");




extern Num SdbmGetRecNum(SdbmDesc tableDesc)
    asm("__" "SdbmGetRecNum");
extern Num SdbmGetFldMax(SdbmDesc tableDesc)
    asm("__" "SdbmGetFldMax");
extern Num SdbmListFldDef(SdbmDesc tableDesc, Num numFlds, SdbmFldDef flds[])
    asm("__" "SdbmListFldDef");
extern Num SdbmListLinkFldDef(SdbmDesc tableDesc, Num numFlds, SdbmFldDef flds[])
    asm("__" "SdbmListLinkFldDef");
extern int SdbmGetTableInfo(SdbmDesc tableDesc, Chr** tableName, SdbmTableNo* tableNo)
    asm("__" "SdbmGetTableInfo");




extern SdbmRecId SdbmAddRec(SdbmDesc tableDesc)
    asm("__" "SdbmAddRec");
extern int SdbmDeleteRec(SdbmDesc tableDesc, SdbmRecId rec)
    asm("__" "SdbmDeleteRec");
extern Num SdbmQueryRec(SdbmDesc tableDesc,
                                 Num numQueries, SdbmQueryCond queries[],
                                 Num numSortFlds, SdbmFldNo sortFlds[],
                                 Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmQueryRec");
extern Num SdbmListRec(SdbmDesc tableDesc, Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmListRec");
extern Num SdbmListRecSort(SdbmDesc tableDesc,
                                    Num numSortFlds, SdbmFldNo sortFlds[],
                                    Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmListRecSort");
extern Num SdbmListRecSortByName(SdbmDesc tableDesc,
                                          Num numSortFlds, Chr* sortFldNames[],
                                          Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmListRecSortByName");
extern Num SdbmListRecWithValidFld(SdbmDesc tableDesc, SdbmFldNo fldNo,
                                            Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmListRecWithValidFld");
extern Num SdbmListRecWithValidFldByName(SdbmDesc tableDesc, const Chr* name,
                                                  Num numRecs, SdbmRecId recs[])
    asm("__" "SdbmListRecWithValidFldByName");




extern Num SdbmGetFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                               Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmGetFld");
extern Num SdbmChangeFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                  Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmChangeFld");
extern Num SdbmGetLinkFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                   Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmGetLinkFld");
extern Num SdbmChangeLinkFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                      Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmChangeLinkFld");
extern Num SdbmEraseFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                 Num numIndex, SdbmVecFldIdx indexies[])
    asm("__" "SdbmEraseFld");
extern Num SdbmEraseLinkFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                     Num numIndex, SdbmVecFldIdx indexies[])
    asm("__" "SdbmEraseLinkFld");
extern Num SdbmClearFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld)
    asm("__" "SdbmClearFld");
extern Num SdbmClearLinkFld(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld)
    asm("__" "SdbmClearLinkFld");
extern Num SdbmGetFldElmNum(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld)
    asm("__" "SdbmGetFldElmNum");
extern Num SdbmGetFldElmMax(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld)
    asm("__" "SdbmGetFldElmMax");
extern Num SdbmGetFldElm(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                  SdbmVecFldIdx vecIdx, SdbmFldRef* fldRef)
    asm("__" "SdbmGetFldElm");
extern Num SdbmGetLinkFldElm(SdbmDesc tableDesc, SdbmRecId recId, SdbmFldNo fldNo,
                                      SdbmVecFldIdx vecIdx, SdbmFldRef* fldRef)
    asm("__" "SdbmGetLinkFldElm");
extern Num SdbmGetFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                     Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmGetFldByName");
extern Num SdbmChangeFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                  Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmChangeFldByName");
extern Num SdbmGetLinkFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                   Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmGetLinkFldByName");
extern Num SdbmChangeLinkFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                      Num numFldRef, SdbmFldRef fldRef[])
    asm("__" "SdbmChangeLinkFldByName");
extern Num SdbmEraseFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                 Num numIndex, SdbmVecFldIdx indexies[])
    asm("__" "SdbmEraseFldByName");
extern Num SdbmEraseLinkFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                     Num numIndex, SdbmVecFldIdx indexies[])
    asm("__" "SdbmEraseLinkFldByName");
extern Num SdbmClearFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName)
    asm("__" "SdbmClearFldByName");
extern Num SdbmClearLinkFldByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName)
    asm("__" "SdbmClearLinkFldByName");
extern Num SdbmGetFldElmNumByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName)
    asm("__" "SdbmGetFldElmNumByName");
extern Num SdbmGetFldElmMaxByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName)
    asm("__" "SdbmGetFldElmMaxByName");

extern Num SdbmGetFldElmByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                        SdbmVecFldIdx vecIdx, SdbmFldRef* fldRef)
    asm("__" "SdbmGetFldElmByName");
extern Num SdbmGetLinkFldElmByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                            SdbmVecFldIdx vecIdx, SdbmFldRef* fldRef)
    asm("__" "SdbmGetLinkFldElmByName");
extern Num SdbmGetLinkFldElms(SdbmDesc tableDesc, SdbmRecId recs[], Num numRecs,
                                       SdbmFldNo noFld, SdbmVecFldIdx vecIdx, SdbmFldRef fldRef[])
    asm("__" "SdbmGetLinkFldElms");
extern Num SdbmGetLinkFldElmsByName(SdbmDesc tableDesc, SdbmRecId recs[], Num numRecs,
                                             const char* fldName, SdbmVecFldIdx vecIdx,
                                             SdbmFldRef fldRef[])
    asm("__" "SdbmGetLinkFldElmsByName");
extern Num SdbmGetFldElms(SdbmDesc tableDesc, SdbmRecId recs[], Num numRecs,
                                   SdbmFldNo noFld, SdbmVecFldIdx vecIdx, SdbmFldRef fldRef[])
    asm("__" "SdbmGetFldElms");
extern Num SdbmGetFldElmsByName(SdbmDesc tableDesc, SdbmRecId recs[], Num numRecs,
                                         const char* fldName, SdbmVecFldIdx vecIdx,
                                         SdbmFldRef fldRef[])
    asm("__" "SdbmGetFldElmsByName");


extern int SdbmGetFldDefByName(SdbmDesc tableDesc, const Chr* name, SdbmFldDef* fldDef)
    asm("__" "SdbmGetFldDefByName");
extern int SdbmGetFldDef(SdbmDesc tableDesc, SdbmFldNo fldNo, SdbmFldDef* fldDef)
    asm("__" "SdbmGetFldDef");

extern int SdbmGetLinkFldDefByName(SdbmDesc tableDesc, const Chr* name,
                                            SdbmFldDef* fldDef)
    asm("__" "SdbmGetLinkFldDefByName");
extern int SdbmGetLinkFldDef(SdbmDesc tableDesc, SdbmFldNo fldNo, SdbmFldDef* fldDef)
    asm("__" "SdbmGetLinkFldDef");

extern Len SdbmReadFldElm(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                   SdbmVecFldIdx vecIdx, int fldType, void* buff, Len buffLen)
    asm("__" "SdbmReadFldElm");
extern Len SdbmReadLinkFldElm(SdbmDesc tableDesc, SdbmRecId recId, SdbmFldNo fldNo,
                                       SdbmVecFldIdx vecIdx, int fldType, void* buff, Len buffLen)
    asm("__" "SdbmReadLinkFldElm");
extern Len SdbmReadFldElmByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                         SdbmVecFldIdx vecIdx, int fldType,
                                         void* buff, Len buffLen)
    asm("__" "SdbmReadFldElmByName");
extern Len SdbmReadLinkFldElmByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                             SdbmVecFldIdx vecIdx, int fldType,
                                             void* buff, Len buffLen)
    asm("__" "SdbmReadLinkFldElmByName");
extern Len SdbmWriteFldElm(SdbmDesc tableDesc, SdbmRecId rec, SdbmFldNo noFld,
                                    SdbmVecFldIdx vecIdx, int fldType,
                                    const void* buff, Len buffLen)
    asm("__" "SdbmWriteFldElm");
extern Len SdbmWriteLinkFldElm(SdbmDesc tableDesc, SdbmRecId recId, SdbmFldNo fldNo,
                                        SdbmVecFldIdx vecIdx, int fldType,
                                        const void* buff, Len buffLen)
    asm("__" "SdbmWriteLinkFldElm");
extern Len SdbmWriteFldElmByName(SdbmDesc tableDesc, SdbmRecId rec, const Chr* fldName,
                                          SdbmVecFldIdx vecIdx, int fldType,
                                          const void* buff, Len buffLen)
    asm("__" "SdbmWriteFldElmByName");
extern Len SdbmWriteLinkFldElmByName(SdbmDesc tableDesc, SdbmRecId rec,
                                              const Chr* fldName, SdbmVecFldIdx vecIdx,
                                              int fldType, const void* buff, Len buffLen)
    asm("__" "SdbmWriteLinkFldElmByName");
extern int SdbmFindMinFldElm(SdbmDesc tableDesc, SdbmFldNo fldNo, SdbmFldElmPtr* elmP)
    asm("__" "SdbmFindMinFldElm");
extern int SdbmFindMaxFldElm(SdbmDesc tableDesc, SdbmFldNo fldNo, SdbmFldElmPtr* elmP)
    asm("__" "SdbmFindMaxFldElm");
extern int SdbmFindMinFldElmByName(SdbmDesc tableDesc, const Chr* fldName,
                                            SdbmFldElmPtr* elmP)
    asm("__" "SdbmFindMinFldElmByName");
extern int SdbmFindMaxFldElmByName(SdbmDesc tableDesc, const Chr* fldName,
                                            SdbmFldElmPtr* elmP)
    asm("__" "SdbmFindMaxFldElmByName");
extern int SdbmListUniqueFldElm(SdbmDesc tableDesc, SdbmFldNo fldNo,
                                         SdbmFldElmPtr elms[], Num numElms)
    asm("__" "SdbmListUniqueFldElm");
extern int SdbmListUniqueFldElmByName(SdbmDesc tableDesc, const Chr* fldName,
                                               SdbmFldElmPtr elms[], Num numElms)
    asm("__" "SdbmListUniqueFldElmByName");


extern int SdbmReadFldElmsAsArray1(SdbmDesc tableDesc,
                                            SdbmRecId recs[], Num numRecs,
                                            SdbmFldNo noFld, SdbmVecFldIdx vecIdx, int fldType,
                                            void* buff, Len arrayElemLen)
    asm("__" "SdbmReadFldElmsAsArray1");
extern int SdbmReadFldElmsAsArray1ByName(SdbmDesc tableDesc,
                                                  SdbmRecId recs[], Num numRecs,
                                                  const Chr* fldName,
                                                  SdbmVecFldIdx vecIdx, int fldType,
                                                  void* buff, Len arrayElemLen)
    asm("__" "SdbmReadFldElmsAsArray1ByName");
extern int SdbmReadLinkFldElmsAsArray1(SdbmDesc tableDesc,
                                                SdbmRecId recs[], Num numRecs,
                                                SdbmFldNo noFld, SdbmVecFldIdx vecIdx, int fldType,
                                                void* buff, Len arrayElemLen)
    asm("__" "SdbmReadLinkFldElmsAsArray1");
extern int SdbmReadLinkFldElmsAsArray1ByName(SdbmDesc tableDesc,
                                                      SdbmRecId recs[], Num numRecs,
                                                      const Chr* fldName,
                                                      SdbmVecFldIdx vecIdx, int fldType,
                                                      void* buff, Len arrayElemLen)
    asm("__" "SdbmReadLinkFldElmsAsArray1ByName");
extern int SdbmReadFldElmsAsArray2(SdbmDesc tableDesc,
                                            SdbmRecId recs[], Num numRecs,
                                            SdbmFldNo noFld, SdbmVecFldIdx vecIdx, int fldType,
                                            void* buff, Len totalAreaLen,
                                            void* dataVec[], Len lenVec[])
    asm("__" "SdbmReadFldElmsAsArray2");
extern int SdbmReadFldElmsAsArray2ByName(SdbmDesc tableDesc,
                                                  SdbmRecId recs[], Num numRecs,
                                                  const Chr* fldName,
                                                  SdbmVecFldIdx vecIdx, int fldType,
                                                  void* buff, Len totalAreaLen,
                                                  void* dataVec[], Len lenVec[])
    asm("__" "SdbmReadFldElmsAsArray2ByName");
extern int SdbmReadLinkFldElmsAsArray2(SdbmDesc tableDesc,
                                                SdbmRecId recs[], Num numRecs,
                                                SdbmFldNo noFld, SdbmVecFldIdx vecIdx, int fldType,
                                                void* buff, Len totalAreaLen,
                                                void* dataVec[], Len lenVec[])
    asm("__" "SdbmReadLinkFldElmsAsArray2");
extern int SdbmReadLinkFldElmsAsArray2ByName(SdbmDesc tableDesc,
                                                      SdbmRecId recs[], Num numRecs,
                                                      const Chr* fldName,
                                                      SdbmVecFldIdx vecIdx, int fldType,
                                                      void* buff, Len totalAreaLen,
                                                      void* dataVec[], Len lenVec[])
    asm("__" "SdbmReadLinkFldElmsAsArray2ByName");


# 31 "../../src/sdbm.v0/sdbmfldu.c" 2

# 1 "../../src/sdbm.v0/sdbmfmt.h" 1
# 14 "../../src/sdbm.v0/sdbmfmt.h"
#define _AXIS_SDBMFMT_H_ 


# 1 "axis/bitops.h" 1
# 27 "axis/bitops.h"
#define _AXIS_BITOPS_H_ 



#define BitNumOfIt(entity) (sizeof(entity) << 3)
#define BitNumOfThat(bytesize) ((bytesize) * 8)

#define cBitOffsetInWord 0x1F
#define cBitCountInWord 5
#define BitNumToCeilWordNum(bitNum) (((bitNum) + 31) >> 5)
#define BitNumToFloorWordNum(bitNum) (((bitNum)) >> 5)
#define BitNumToWordNum(bitNum) BitNumToCeilWordNum(bitNum)
#define BitNumFromWordNum(wordNum) ((wordNum) << 5)
# 134 "axis/bitops.h"
# 1 "axis/bitops_i386.h" 1
# 27 "axis/bitops_i386.h"
#define _AXIS_BITOPS_I386_H_ 
#define _AXIS_BITOPS_ARCH_H_ 
# 42 "axis/bitops_i386.h"
struct __dummy { unsigned long a[100]; };
#define ADDR (*(struct __dummy *) addr)
#define CONST_ADDR (*(const struct __dummy *) addr)

extern __inline__ Word
AxisGetWordFirstN0(Word bits0)
{
    Word x;

    x = (Word)(-1);
    x <<= bits0;

    return x;
}

extern __inline__ Word
AxisSetBit(Word nr, volatile void * addr)
{
    Word oldbit;

    addr = &((*(struct __dummy *) addr).a[(nr) >> 5]);
    nr &= 0x1F;
    __asm__ __volatile__("lock ; "
                         "btsl %2,%1\n\tsbbl %0,%0"
                         :"=r" (oldbit),"=m" ((*(struct __dummy *) addr))
                         :"ir" (nr));
    return oldbit;
}

extern __inline__ Word
AxisClearBit(Word nr, volatile void * addr)
{
    Word oldbit;

    addr = &((*(struct __dummy *) addr).a[(nr) >> 5]);
    nr &= 0x1F;
    __asm__ __volatile__("lock ; "
                         "btrl %2,%1\n\tsbbl %0,%0"
                         :"=r" (oldbit),"=m" ((*(struct __dummy *) addr))
                         :"ir" (nr));
    return oldbit;
}

extern __inline__ Word
AxisChangeBit(Word nr, volatile void * addr)
{
    Word oldbit;

    addr = &((*(struct __dummy *) addr).a[(nr) >> 5]);
    nr &= 0x1F;
    __asm__ __volatile__("lock ; "
                         "btcl %2,%1\n\tsbbl %0,%0"
                         :"=r" (oldbit),"=m" ((*(struct __dummy *) addr))
                         :"ir" (nr));
    return oldbit;
}




extern __inline__ Bool
AxisTestBit(Word nr, const volatile void * addr)
{
    return ((1UL << (nr & 31)) & (((const Word *) addr)[nr >> 5])) != 0;
}




extern __inline__ Word
AxisFindFirst0(void * addr, Word size)
{
    Word res = 0xFFFFFFFFUL ;

    if (!size)
        return 0;

    size = ((size + 31) >> 5);
    __asm__ __volatile__
        ("cld\n\t"
         "repe; scasl\n\t"
         "je 1f\n\t"
         "subl $4,%%edi\n\t"
         "xorl (%%edi),%%eax\n\t"
         "bsfl %%eax,%%eax\n"
         "1:\tsubl %%ebx,%%edi\n\t"
         "shll $3,%%edi\n\t"
         "addl %%edi,%%eax"
         :"+D" (addr), "+a" (res), "+c" (size)
         : "b" (addr));
    return res;
}

extern __inline__ Word
AxisFindLast0(void * addr, Word size)
{
    Word res = 0;
    Word x = 0xFFFFFFFFUL;
    void* p;

    if (!size)
        return 0;

    size = (size + 31) >> 5;
    p = ((Chr*)addr) + ((size - 1) << 2);
    __asm__ __volatile__
        ("std\n\t"
         "repe; scasl\n\t"
         "je 1f\n\t"
         "movl $-1,%%eax\n\t"
         "addl $4,%%edi\n\t"
         "xorl (%%edi),%%eax\n\t"
         "bsrl %%eax,%%edx\n"
         "1:\tsubl %%ebx,%%edi\n\t"
         "shll $3,%%edi\n\t"
         "addl %%edi,%%edx"
         :"+D" (p), "+d" (res), "+c" (size), "+a" (x)
         : "b" (addr));
    return res;
}

extern __inline__ Word
AxisFindFrwd0(void * addr, Word size, Word offset)
{
    Word * p = ((Word *) addr) + (offset >> 5);
    Word set = 0, bit = offset & 31, res;

    if (bit) {



        __asm__ __volatile__
            ("bsfl %1,%0\n\t"
             "jne 1f\n\t"
             "movl $32, %0\n"
             "1:"
             : "=r" (set)
             : "r" (~(*p >> bit)));
        if (set < (32 - bit))
            return set + offset;
        set = 32 - bit;
        p++;
    }



    res = AxisFindFirst0(p, size - 32 * (p - (Word *) addr));
    return (offset + set + res);
}

extern __inline__ Word
AxisFindBkwd0(void * addr, Word size, Word offset)
{
    Word * p = ((Word *) addr) + (offset >> 5);
    Word bit = offset & 31, res;

    if (bit) {
        Word x, y;
        y = (0xFFFFFFFFUL >> (31 - bit));
        x = *p;
        x = y & ~x;




        __asm__ __volatile__
            ("bsrl %1,%0\n\t"
             "jne 1f\n\t"
             "movl $32, %0\n"
             "1:"
             : "=r" (res)
             : "r" (x));

        if (res < 32)
            return (offset & ~31) + res;
        p--;
    }



    res = AxisFindLast0(addr, offset & ~31);
    return res;
}

extern __inline__ Word
AxisFindFirst1(void * addr, Word size)
{
    Word res = 0 ;

    if (!size)
        return 0;
    size = ((size + 31) >> 5);
    __asm__ __volatile__
        ("cld\n\t"
         "repe; scasl\n\t"
         "je 1f\n\t"
         "subl $4,%%edi\n\t"
         "movl (%%edi),%%eax\n\t"
         "bsfl %%eax,%%eax\n"
         "1:\tsubl %%ebx,%%edi\n\t"
         "shll $3,%%edi\n\t"
         "addl %%edi,%%eax"
         :"+D" (addr), "+a" (res), "+c" (size)
         : "b" (addr));
    return res;
}

extern __inline__ Word
AxisFindLast1(void * addr, Word size)
{
    Word res = 0;
    void* p;

    if (!size)
        return 0;

    size = (size + 31) >> 5;
    p = ((Chr*)addr) + ((size - 1) << 2);
    __asm__ __volatile__
        ("std\n\t"
         "repe; scasl\n\t"
         "je 1f\n\t"
         "addl $4,%%edi\n\t"
         "movl (%%edi),%%eax\n\t"
         "bsrl %%eax,%%eax\n"
         "1:\tsubl %%ebx,%%edi\n\t"
         "shll $3,%%edi\n\t"
         "addl %%edi,%%eax"
         :"+D" (p), "+a" (res), "+c" (size)
         : "b" (addr));
    return res;
}

extern __inline__ Word
AxisFindFrwd1(void * addr, Word size, Word offset)
{
    Word * p = ((Word *) addr) + (offset >> 5);
    Word set = 0, bit = offset & 31, res;

    if (bit) {



        __asm__ __volatile__
            ("bsfl %1,%0\n\t"
             "jne 1f\n\t"
             "movl $32, %0\n"
             "1:"
             : "=r" (set)
             : "r" ((*p >> bit)));
        if (set < (32 - bit))
            return set + offset;
        set = 32 - bit;
        p++;
    }



    res = AxisFindFirst1(p, size - 32 * (p - (Word *) addr));
    return (offset + set + res);
}

extern __inline__ Word
AxisFindBkwd1(void * addr, Word size, Word offset)
{
    Word * p = ((Word *) addr) + (offset >> 5);
    Word bit = offset & 31, res;

    if (bit) {
        Word x, y;
        y = (0xFFFFFFFFUL >> (31 - bit));
        x = *p;
        x = y & x;




        __asm__ __volatile__
            ("bsrl %1,%0\n\t"
             "jne 1f\n\t"
             "movl $32, %0\n"
             "1:"
             : "=r" (res)
             : "r" (x));

        if (res < 32)
            return (offset & ~31) + res;
        p--;
    }



    res = AxisFindLast1(addr, offset & ~31);
    return res;
}

#undef ADDR
#undef CONST_ADDR
# 135 "axis/bitops.h" 2






# 18 "../../src/sdbm.v0/sdbmfmt.h" 2






#define cSdbmCurMainVer 0
#define cSdbmCurMinorVer 1




typedef struct SdbmDbMain {
    Area256 dbMagic;
    u8 mainVers;
    u8 minorVers;
    u16 dbNameLen;
    u32 numTable;
    Atime createdTime;
    Word tableIdMap[(((1023) + 31) >> 5)] __attribute__ ((aligned (8)));
    u32 rsvs[16];
    Chr dbLogicalName[0];
} SdbmDbMain;





typedef struct SdbmEnumSetAttr {
    u32 numEnumSet;
    u32 rsvs[3];
} SdbmEnumSetAttr;





typedef struct SdbmEnumSetEnt {
    SdbmEnumSetId enumSetId;
    AdamPos enumSetName;
    u32 nameTree;
    u32 valTree;
    s32 enumUnits;
    u32 rsvs[3];
} SdbmEnumSetEnt;





typedef struct SdbmEnumUnitAttr {
    u32 numEnumUnit;
    s32 enumFreeList;
    u32 rsvs[2];
} SdbmEnumUnitAttr;




typedef struct SdbmEnumUnit {
    CqueueLink list;
    SdbmEnumUnitId unitId;
    SdbmEnumSetId enumSet;
    u32 numUsed;
    AdamPos unitNamePtr;
    AtreeIdx unitNameIdx;
    AtreeIdx unitValIdx;
    Area32 rsv[2];
    Area64 unitVal;
} SdbmEnumUnit;




typedef union SdbmFldNameIdxData {
    Area64 value;
    struct {
        AdamPos namePtr;
        SdbmFldNo fldNo;
    } x;
} SdbmFldNameIdxData;





typedef struct SdbmFldSpec {
    SdbmFldNo fldNo;
    u32 fldType;
    u32 fldAuxType;
    AdamPos fldNamePtr;
    AtreeIdx fldNameIdx;
    u32 fldAttrs;
    u32 fldIndexTree;
    Area128 fldUserInfo;
    u32 fldUserInfoPattern;
} SdbmFldSpec;





typedef struct SdbmTableMain {
    u32 tableNo;
    AdamPos tableName;
    u32 numFlds;
    AtreeIdx tableNameNode;
    SdbmFldSpec fldSpecs[0];
} SdbmTableMain;






typedef s32 SdbmFldDataIdx;
#define SdbmFldDataIdxToRIdx(dataIdx) ((dataIdx)-1)
#define cSdbmFldDataIdxMin 1




typedef s32 SdbmRecIdx;
#define SdbmRecIdxToRIdx(recIdx) ((recIdx)-1)
#define cSdbmRecIdxMin 1




typedef struct SdbmRecAttr {
    Num numRecs;
    SdbmRecIdx actives;
    SdbmRecIdx frees;
    Num numActives;
} SdbmRecAttr;

typedef union SdbmDataId {
    SdbmRecId external;
    struct {
        u64 invalid:1,
                tableNo:10,
                fldNo:11,
                revision:10,
                recIdx:30;
    } i;
} SdbmDataId;

typedef struct SdbmFldPtr {
    SdbmFldDataIdx vecIdxList;
    SdbmFldDataIdx sortedList;
    SdbmFldDataIdx linkedIdx;
    Num numElms;
} SdbmFldPtr;




typedef struct SdbmRecEnty {
    SdbmDataId recId;
    CqueueLink list;
    union {
        u64 whole;
        struct {
            u32 deleted: 1;
            u32 :31;
            u32 tickedNo;
        } v;
    } attrs;
    SdbmFldPtr fldPtrs[0];
} SdbmRecEnty;




typedef struct SdbmTableFldAttr {
    u32 numFlds;
    SdbmFldDataIdx freeList;
    u32 rsvs[2];
} SdbmTableFldAttr;




typedef union SdbmFldEnty {
    Area64 value;
    struct {
        AdamPos ptr;
        Sz sz;
    } var;
    struct {
        SdbmEnumSetId enumSetId;
        SdbmEnumUnitId enumUnitId;
    } enumVal;
    struct {
        SdbmFldDataIdx dataIdx;
        s32 linkedIdx;
    } link;
} SdbmFldEnty;




typedef union SdbmFldIdxData {
    Area64 value;
    struct {
        SdbmFldDataIdx fld;
        u32 rsv;
    } val;
    struct {
        SdbmFldDataIdx fld;
        AdamPos ptr;
    } str;
    struct {
        SdbmFldDataIdx fld;
        SdbmEnumUnitId id;
    } enumUnit;
} SdbmFldIdxData;




typedef struct SdbmFldBody {
    SdbmRecIdx recIdx;
    SdbmFldNo fldNo;
    u32 freezed :1,
                    :7,
                    vectorIdx:24;
    AtreeIdx indexNode;
    s32 linkedInfo;
    u32 rsvs[3];
    CqueueLink vecIdxList;
    CqueueLink sortList;
    Atime modifyTime;
    SdbmFldEnty content;
} SdbmFldBody;




typedef struct SdbmLinkedFldInfoAttr {
    u32 numLinked;
    SdbmFldDataIdx freeList;
    u32 rsvs[2];
} SdbmLinkedFldInfoAttr;




typedef struct SdbmLinkedFldInfo {
    SdbmDataId linkFrom;
    SdbmDataId linkTo;
    CqueueLink list;
    u32 rsvs[3];
} SdbmLinkedFldInfo;


#define cSdbmSubfileDbMain 1
#define cSdbmSubfileEnumSet 2
#define cSdbmSubfileEnumUnit 3
#define cSdbmSubfileDbMainIndex 4
#define cSdbmSubfileDbVarDataContnr 5

#define cSdbmTableNameTree 1
#define EnumSetIdToValTree(esId) ((esId)<<1)
#define EnumSetIdToNameTree(esId) (((esId)<<1)+1)

#define cSdbmNumSubfilePerDB 8

#define cSdbmSubfileTableMainIdx 1
#define cSdbmSubfileRecsContnrIdx 2
#define cSdbmSubfileFldsContnrIdx 3
#define cSdbmSubfileVarDataContnrIdx 4
#define cSdbmSubfileIndexContnrIdx 5
#define cSdbmSubfileLinkedFldsContnrIdx 6

#define SdbmSubfileTableBase(tblNo) ((tblNo)<<3)
#define SdbmSubfileTableMain(tblNo) (((tblNo)<<3)+cSdbmSubfileTableMainIdx)
#define SdbmSubfileRecsContnr(tblNo) (((tblNo)<<3)+cSdbmSubfileRecsContnrIdx)
#define SdbmSubfileFldsContnr(tblNo) (((tblNo)<<3)+cSdbmSubfileFldsContnrIdx)
#define SdbmSubfileVarDataContnr(tblNo) (((tblNo)<<3)+cSdbmSubfileVarDataContnrIdx)
#define SdbmSubfileIndexContnr(tblNo) (((tblNo)<<3)+cSdbmSubfileIndexContnrIdx)
#define SdbmSubfileLinkedFldsContnr(tblNo) (((tblNo)<<3)+cSdbmSubfileLinkedFldsContnrIdx)

#define SdbmSubfileIdToTblNo(subfileId) (((subfileId)>>3)&0x7)

#define cSdbmNumSubfilePerTable 8

#define cSdbmFldNameTreeIdx 1
#define cSdbmFldIdxTreeIdxMin 2
#define SdbmFldIdxTreeIdx(fldNo) ((fldNo)-1+cSdbmFldIdxTreeIdxMin)

extern inline SdbmFldBody* SdbmFldsOprTopAddr(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { return &(top[tgtIdx - topIdx]); } extern inline s32 SdbmFldsOprIndex(SdbmFldBody* top, s32 topIdx, SdbmFldBody* tgt) { return (tgt - top) + topIdx; } extern inline void SdbmFldsOprInit(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueInit(&(top->vecIdxList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->vecIdxList))));} extern inline void SdbmFldsOprInsert(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueInsertQueue(&(top->vecIdxList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->vecIdxList))));} extern inline void SdbmFldsOprAppend(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueAppendQueue(&(top->vecIdxList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->vecIdxList))));} extern inline s32 SdbmFldsOprDelete(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { s32 retain; retain = CqueueDeleteQueue(&(top->vecIdxList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->vecIdxList)))); return retain;} extern inline s32 SdbmFldsOprNext(SdbmFldBody* top, s32 topIdx, s32 cur) { s32 next = top[cur - topIdx].vecIdxList.frwd; return next;} extern inline s32 SdbmFldsOprPrev(SdbmFldBody* top, s32 topIdx, s32 cur) { s32 prev = top[cur - topIdx].vecIdxList.bkwd; return prev;};
extern inline SdbmFldBody* SdbmFldsSortOprTopAddr(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { return &(top[tgtIdx - topIdx]); } extern inline s32 SdbmFldsSortOprIndex(SdbmFldBody* top, s32 topIdx, SdbmFldBody* tgt) { return (tgt - top) + topIdx; } extern inline void SdbmFldsSortOprInit(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueInit(&(top->sortList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->sortList))));} extern inline void SdbmFldsSortOprInsert(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueInsertQueue(&(top->sortList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->sortList))));} extern inline void SdbmFldsSortOprAppend(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { CqueueAppendQueue(&(top->sortList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->sortList))));} extern inline s32 SdbmFldsSortOprDelete(SdbmFldBody* top, s32 topIdx, s32 tgtIdx) { s32 retain; retain = CqueueDeleteQueue(&(top->sortList), topIdx, tgtIdx, sizeof(SdbmFldBody), ((Word)(&(((SdbmFldBody *)0)->sortList)))); return retain;} extern inline s32 SdbmFldsSortOprNext(SdbmFldBody* top, s32 topIdx, s32 cur) { s32 next = top[cur - topIdx].sortList.frwd; return next;} extern inline s32 SdbmFldsSortOprPrev(SdbmFldBody* top, s32 topIdx, s32 cur) { s32 prev = top[cur - topIdx].sortList.bkwd; return prev;};
extern inline SdbmLinkedFldInfo* SdbmLinkedFldsOprTopAddr(SdbmLinkedFldInfo* top, s32 topIdx, s32 tgtIdx) { return &(top[tgtIdx - topIdx]); } extern inline s32 SdbmLinkedFldsOprIndex(SdbmLinkedFldInfo* top, s32 topIdx, SdbmLinkedFldInfo* tgt) { return (tgt - top) + topIdx; } extern inline void SdbmLinkedFldsOprInit(SdbmLinkedFldInfo* top, s32 topIdx, s32 tgtIdx) { CqueueInit(&(top->list), topIdx, tgtIdx, sizeof(SdbmLinkedFldInfo), ((Word)(&(((SdbmLinkedFldInfo *)0)->list))));} extern inline void SdbmLinkedFldsOprInsert(SdbmLinkedFldInfo* top, s32 topIdx, s32 tgtIdx) { CqueueInsertQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmLinkedFldInfo), ((Word)(&(((SdbmLinkedFldInfo *)0)->list))));} extern inline void SdbmLinkedFldsOprAppend(SdbmLinkedFldInfo* top, s32 topIdx, s32 tgtIdx) { CqueueAppendQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmLinkedFldInfo), ((Word)(&(((SdbmLinkedFldInfo *)0)->list))));} extern inline s32 SdbmLinkedFldsOprDelete(SdbmLinkedFldInfo* top, s32 topIdx, s32 tgtIdx) { s32 retain; retain = CqueueDeleteQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmLinkedFldInfo), ((Word)(&(((SdbmLinkedFldInfo *)0)->list)))); return retain;} extern inline s32 SdbmLinkedFldsOprNext(SdbmLinkedFldInfo* top, s32 topIdx, s32 cur) { s32 next = top[cur - topIdx].list.frwd; return next;} extern inline s32 SdbmLinkedFldsOprPrev(SdbmLinkedFldInfo* top, s32 topIdx, s32 cur) { s32 prev = top[cur - topIdx].list.bkwd; return prev;};
extern inline SdbmEnumUnit* SdbmEnumUnitsOprTopAddr(SdbmEnumUnit* top, s32 topIdx, s32 tgtIdx) { return &(top[tgtIdx - topIdx]); } extern inline s32 SdbmEnumUnitsOprIndex(SdbmEnumUnit* top, s32 topIdx, SdbmEnumUnit* tgt) { return (tgt - top) + topIdx; } extern inline void SdbmEnumUnitsOprInit(SdbmEnumUnit* top, s32 topIdx, s32 tgtIdx) { CqueueInit(&(top->list), topIdx, tgtIdx, sizeof(SdbmEnumUnit), ((Word)(&(((SdbmEnumUnit *)0)->list))));} extern inline void SdbmEnumUnitsOprInsert(SdbmEnumUnit* top, s32 topIdx, s32 tgtIdx) { CqueueInsertQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmEnumUnit), ((Word)(&(((SdbmEnumUnit *)0)->list))));} extern inline void SdbmEnumUnitsOprAppend(SdbmEnumUnit* top, s32 topIdx, s32 tgtIdx) { CqueueAppendQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmEnumUnit), ((Word)(&(((SdbmEnumUnit *)0)->list))));} extern inline s32 SdbmEnumUnitsOprDelete(SdbmEnumUnit* top, s32 topIdx, s32 tgtIdx) { s32 retain; retain = CqueueDeleteQueue(&(top->list), topIdx, tgtIdx, sizeof(SdbmEnumUnit), ((Word)(&(((SdbmEnumUnit *)0)->list)))); return retain;} extern inline s32 SdbmEnumUnitsOprNext(SdbmEnumUnit* top, s32 topIdx, s32 cur) { s32 next = top[cur - topIdx].list.frwd; return next;} extern inline s32 SdbmEnumUnitsOprPrev(SdbmEnumUnit* top, s32 topIdx, s32 cur) { s32 prev = top[cur - topIdx].list.bkwd; return prev;};


# 33 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmdefs.h" 1
# 14 "../../src/sdbm.v0/sdbmdefs.h"
#define _AXIS_SDBMDEFS_H_ 

# 1 "axis/axisthr.h" 1
# 27 "axis/axisthr.h"
#define _AXIS_AXISTHR_H_ 
# 37 "axis/axisthr.h"




extern int AxisThrCreate(pthread_t *__thread,
                          __const pthread_attr_t *__attr,
                          void *(*__start_routine) (void *),
                          void *__arg) asm("__" "AxisThrCreate");
# 67 "axis/axisthr.h"
#define AxisThrSelf() pthread_self()
#define AxisThrEqual(thr1,thr2) pthread_equal(thr1, thr2)
#define AxisThrJoin(thr,thr_ret) pthread_join(thr, thr_ret)
#define AxisThrDetach(thr) pthread_detach(thr)
#define AxisThrAttrInit(attr) pthread_attr_init(attr)
#define AxisThrAttrDestroy(attr) pthread_attr_destroy(attr)
#define AxisThrAttrSetdetachstate(attr,state) pthread_attr_setdetachstate(attr, state)
#define AxisThrAttrGetdetachstate(attr,stateP) pthread_attr_setdetachstate(attr, stateP)
#define AxisThrAttrSetschedparam(attr,param) pthread_attr_setschedparam(attr, param)
#define AxisThrAttrGetschedparam(attr,paramP) pthread_attr_getschedparam(attr, paramP)
#define AxisThrAttrSetschedpolicy(attr,policy) pthread_attr_setschedpolicy(attr, policy)
#define AxisThrAttrGetschedpolicy(attr,policyP) pthread_attr_getschedpolicy(attr, policyP)
#define AxisThrAttrSetinheritsched(attr,inherit) pthread_attr_setschedinherit(attr, inherit)
#define AxisThrAttrGetinheritsched(attr,inheritP) pthread_attr_getschedinherit(attr, inheritP)
#define AxisThrAttrSetscope(attr,scope) pthread_attr_setscope(attr, scope)
#define AxisThrAttrGetscope(attr,scopeP) pthread_attr_getscope(attr, scopeP)
#define AxisThrSetschedparam(thr,policy,param) pthread_setschedparam(thr, policy, param)
#define AxisThrGetschedparam(thr,policyP,paramP) pthread_getschedparam(thr, policyP, paramP)
#define AxisThrMutexInit(mutex,mutexAttr) pthread_mutex_init(mutex, mutexAttr)
#define AxisThrMutexDestroy(mutex) pthread_mutex_destroy(mutex)
#define AxisThrMutexTrylock(mutex) pthread_mutex_trylock(mutex)
#define AxisThrMutexLock(mutex) pthread_mutex_lock(mutex)
#define AxisThrMutexUnlock(mutex) pthread_mutex_unlock(mutex)
#define AxisThrMutexattrInit(mutexAttr) pthread_mutexattr_init(mutexAttr)
#define AxisThrMutexattrDestroy(mutexAttr) pthread_mutexattr_destroy(mutexAttr)
#define AxisThrMutexattrSetkindNp(mutexAttr,kind) pthread_mutexattr_setkind_np(mutexAttr, kind)
#define AxisThrMutexattrGetkindNp(mutexAttr,kindP) pthread_mutexattr_setkind_np(mutexAttr, kindP)
#define AxisThrCondInit(cond,condAttr) pthread_cond_init(cond, condAttr)
#define AxisThrCondDestroy(cond) pthread_cond_destroy(cond)
#define AxisThrCondSignal(cond) pthread_cond_signal(cond)
#define AxisThrCondWait(cond,mutex) pthread_cond_wait(cond, mutex)
#define AxisThrCondTimedwait(cond,mutex,waitT) pthread_cond_timedwait(cond, mutex, waitT)
#define AxisThrCondattrInit(condAttr) pthread_condattr_init(condAttr)
#define AxisThrCondattrDestroy(condAttr) pthread_condattr_destroy(condAttr)
#define AxisThrKeyCreate(key,destrFunc) pthread_key_create(key, destrFunc)
#define AxisThrKeyDelete(key) pthread_key_delete(key)
#define AxisThrSetSpecific(key,ptr) pthread_setspecific(key, ptr)
#define AxisThrGetSpecific(key,ptr) pthread_getspecific(key, ptr)
#define AxisThrOnce(once,initRtn) pthread_once(once, initRtn)
#define AxisThrSetcancelstate(state,oldState) pthread_setcancelstate(state, oldState)
#define AxisThrSetcanceltype(type,oldType) pthread_setcancelstate(type, oldType)
#define AxisThrCancel(thr) pthread_cancel(thr)
#define AxisThrTestcancel() pthread_testcancel()
#define AxisThrCleanupPush(rtn,arg) pthread_cleanup_push(rtn,arg)
#define AxisThrCleanupPop(execute) pthread_cleanup_pop(execute)
#define AxisThrCleanupPushDeferNp(rtn,arg) pthread_cleanup_push_defer_np(rtn,arg)
#define AxisThrCleanupPopRestoreNp(execute) pthread_cleanup_pop_restore_np(execute)
#define AxisThrSigmask(how,newmask,oldmask) pthread_sigmask(how, newmask, oldmask)
#define AxisThrKill(thr,signo) pthread_kill(thr, signo)
#define AxisThrAtfork(prepare,parent,child) pthread_atfork(prepare, parent, child)
#define AxisThrKillOtherThreadsNp() pthread_kill_other_threads_np()
#define AxisThrInitialize() pthread_initialize()


typedef struct AxisThrLock {
    u32 sharedCount;
    u32 exclusiveCount;





    pthread_t exclusiveOwner;
    pthread_mutex_t mutex;
    pthread_cond_t lockFree;

} AxisThrLock;
typedef void* AxisThrLockAttr;
# 236 "axis/axisthr.h"

# 17 "../../src/sdbm.v0/sdbmdefs.h" 2
# 26 "../../src/sdbm.v0/sdbmdefs.h"


#define cSdbmLogPrfx "%s:%$", __FUNCTION__

typedef struct SdbmWorkPool {
    CqueuePtrLink list;
    HeapDesc desc;
} SdbmWorkPool;
extern inline void SdbmWorkPoolsInit(SdbmWorkPool* tgt) { CqueuePtrInit(tgt, ((Word)(&(((SdbmWorkPool *)0)->list))));} extern inline void SdbmWorkPoolsInsert(SdbmWorkPool* top, SdbmWorkPool* tgt) { CqueuePtrInsertQueue(top, tgt, ((Word)(&(((SdbmWorkPool *)0)->list))));} extern inline void SdbmWorkPoolsAppend(SdbmWorkPool* top, SdbmWorkPool* tgt) { CqueuePtrAppendQueue(top, tgt, ((Word)(&(((SdbmWorkPool *)0)->list))));} extern inline SdbmWorkPool* SdbmWorkPoolsDelete(SdbmWorkPool* tgt) { return CqueuePtrDeleteQueue(tgt, ((Word)(&(((SdbmWorkPool *)0)->list))));} extern inline SdbmWorkPool* SdbmWorkPoolsNext(SdbmWorkPool* top, SdbmWorkPool* tgt) { if(tgt != ((void *)0)) { SdbmWorkPool* next = tgt->list.frwd; return (next != top) ? next : ((void *)0); } else return top;} extern inline SdbmWorkPool* SdbmWorkPoolsPrev(SdbmWorkPool* top, SdbmWorkPool* tgt) { if(tgt != ((void *)0)) { SdbmWorkPool* prev = tgt->list.bkwd; return (prev != top) ? prev : ((void *)0); } else return top;};
#define cSdbmWorkPoolSize 4194304
#define cSdbmWorkDataLimit 2097152
#define cSdbmStrLimit 1048575

typedef struct SdbmHandleCommon {
    SdbmDesc desc;
    CqueuePtrLink list;
    u32 varDataMapped:1,
                            isTableHandle:1,
                            writable:1,
                            :29;
    s32 ref;
    AdamDesc varDataDesc;
} SdbmHandleCommon;

struct SdbmTableHandle;
typedef struct SdbmDbHandle {
    SdbmHandleCommon common;
    AxisThrLock lock;
    u32 rsv :1,
                            :31;

    SdbmTableNo tblNo;
    struct SdbmTableHandle* tables;
    AdamDesc dbFile;
    AdamDesc subfiles[8];
    AdamSubfileParam params[8];
    AdamFileParam dbParam;

    SdbmDbMain* dbMain;
    SdbmEnumSetAttr* enumSetAttr;
    SdbmEnumSetEnt* enumSets;
    SdbmEnumUnitAttr* enumUnitAttr;
    SdbmEnumUnit* enumUnits;
    void* dbMainIdx;

    const AtreeCallbacks* enumNameSearchOprs;
    const AtreeCallbacks* enumValSearchOprs;

    SdbmWorkPool workPools;
    SdbmWorkPool* curPool;

    int updateLog;

    u32 dbNameLen;
    Chr dbName[0];
} SdbmDbHandle;

typedef struct SdbmTableHandle {
    SdbmHandleCommon common;
    u32 opened :1,
                            :31;
    SdbmTableNo tblNo;
    SdbmDbHandle* dbH;
    AdamFileParam dbParam;

    AdamDesc subfiles[8];
    AdamSubfileParam params[8];

    SdbmTableMain* tableMain;
    SdbmRecAttr* recsContnrAttr;
    SdbmRecEnty* recs;
    SdbmTableFldAttr* fldsContnrAttr;
    SdbmFldBody* flds;
    SdbmLinkedFldInfoAttr* linkedFldsAttr;
    SdbmLinkedFldInfo* linkedFlds;
    void* indexArea;

    Sz recSz;
    struct SdbmTableHandle** linkToTables;
} SdbmTableHandle;

typedef union SdbmHandle {
    SdbmHandleCommon common;
    SdbmDbHandle db;
    SdbmTableHandle table;
} SdbmHandle;

extern inline void SdbmDbHandlesInit(SdbmDbHandle* tgt) { CqueuePtrInit(tgt, ((Word)(&(((SdbmDbHandle *)0)->common.list))));} extern inline void SdbmDbHandlesInsert(SdbmDbHandle* top, SdbmDbHandle* tgt) { CqueuePtrInsertQueue(top, tgt, ((Word)(&(((SdbmDbHandle *)0)->common.list))));} extern inline void SdbmDbHandlesAppend(SdbmDbHandle* top, SdbmDbHandle* tgt) { CqueuePtrAppendQueue(top, tgt, ((Word)(&(((SdbmDbHandle *)0)->common.list))));} extern inline SdbmDbHandle* SdbmDbHandlesDelete(SdbmDbHandle* tgt) { return CqueuePtrDeleteQueue(tgt, ((Word)(&(((SdbmDbHandle *)0)->common.list))));} extern inline SdbmDbHandle* SdbmDbHandlesNext(SdbmDbHandle* top, SdbmDbHandle* tgt) { if(tgt != ((void *)0)) { SdbmDbHandle* next = tgt->common.list.frwd; return (next != top) ? next : ((void *)0); } else return top;} extern inline SdbmDbHandle* SdbmDbHandlesPrev(SdbmDbHandle* top, SdbmDbHandle* tgt) { if(tgt != ((void *)0)) { SdbmDbHandle* prev = tgt->common.list.bkwd; return (prev != top) ? prev : ((void *)0); } else return top;};

extern inline void SdbmTableHandlesInit(SdbmTableHandle* tgt) { CqueuePtrInit(tgt, ((Word)(&(((SdbmTableHandle *)0)->common.list))));} extern inline void SdbmTableHandlesInsert(SdbmTableHandle* top, SdbmTableHandle* tgt) { CqueuePtrInsertQueue(top, tgt, ((Word)(&(((SdbmTableHandle *)0)->common.list))));} extern inline void SdbmTableHandlesAppend(SdbmTableHandle* top, SdbmTableHandle* tgt) { CqueuePtrAppendQueue(top, tgt, ((Word)(&(((SdbmTableHandle *)0)->common.list))));} extern inline SdbmTableHandle* SdbmTableHandlesDelete(SdbmTableHandle* tgt) { return CqueuePtrDeleteQueue(tgt, ((Word)(&(((SdbmTableHandle *)0)->common.list))));} extern inline SdbmTableHandle* SdbmTableHandlesNext(SdbmTableHandle* top, SdbmTableHandle* tgt) { if(tgt != ((void *)0)) { SdbmTableHandle* next = tgt->common.list.frwd; return (next != top) ? next : ((void *)0); } else return top;} extern inline SdbmTableHandle* SdbmTableHandlesPrev(SdbmTableHandle* top, SdbmTableHandle* tgt) { if(tgt != ((void *)0)) { SdbmTableHandle* prev = tgt->common.list.bkwd; return (prev != top) ? prev : ((void *)0); } else return top;};

extern int SdbmUpdateLogSet(SdbmTableHandle* tblH, SdbmRecEnty* rec,
                             SdbmFldSpec* fSpec, SdbmFldBody* fld);
extern int SdbmUpdateLogErase(SdbmTableHandle* tblH, SdbmRecEnty* rec,
                               SdbmFldSpec* fSpec, SdbmVecFldIdx vecIdx);
extern int SdbmUpdateLogClear(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldSpec* fSpec);
extern int SdbmUpdateLogDel(SdbmTableHandle* tblH, SdbmDataId dataId);
extern int SdbmUpdateLogNewRec(SdbmTableHandle* tblH, SdbmDataId dataId);
extern int SdbmDumpFldContent(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldNo fldNo,
                               int output, int mode);

extern inline int
SdbmStrcmp(const void* str1, const void* str2)
{
    Len len1 = strlen(str1);
    Len len2 = strlen(str2);
    Len len;
    int cc;

    len = (len1 < len2) ? len1 : len2;
    cc = memcmp(str1, str2, len);
    if(cc == 0) {
        if(len1 < len2) {
            cc = -1;
        } else if(len1 > len2) {
            cc = 1;
        }
    }
    return cc;
}


# 34 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmvdu.h" 1
# 14 "../../src/sdbm.v0/sdbmvdu.h"
#define _AXIS_SDBMVDU_H_ 


# 1 "axis/axiserr.h" 1
# 28 "axis/axiserr.h"
#define _AXIS_AXISERR_H_ 


# 87 "axis/axiserr.h"
#define eOK 0
#define NotErr(err) ((err) >= eOK)
#define IsErr(err) ((err) < eOK)
#define ErrRet(err) (-(err))

#define eSysMin 1
#define eSysMax 1023

#define eCmnMin 1024
#define eCmnIllegalException 1025
#define eCmnStandardException 1026
#define eCmnChrPtrFault 1027
#define eCmnEndOfData 1028
#define eCmnThrPrivThreadIdUnmatch 1029
#define eCmnThrPrivImpossibleSet 1030
#define eCmnThrPrivAlreadyReserved 1031
#define eCmnThrPrivIllegalPreset 1032
#define eCmnMax 2047

#define eUtilMin 2048
#define eUtilDescIdErr 2049
#define eUtilDescInitDup 2050
#define eUtilDescIllValidNum 2051
#define eUtilDescNotYetInit 2052
#define eUtilDescOverLimit 2053
#define eUtilDescIllDesc 2054
#define eUtilHeapNoMng 2060
#define eUtilHeapIllDesc 2061
#define eUtilHeapIllType 2062
#define eUtilInetNoAddr 2063
#define eAtimeStrInvalid 2096
#define eAtimeFormatNotMatch 2097
#define eAtimeUnsupportedFormat 2098
#define eUtilAtreeDuplication 2112
#define eUtilAtreeInvalidReq 2113
#define eUtilAtreeNotFound 2114
#define eUtilAtreeNoTree 2115
#define eUtilAtreeConfusion 2116
#define eAxisThrIllExclusiveLock 2176
#define eTsamNoHandle 2177
#define eTsamNoFreeNeighnour 2178
#define eVLAAreaSizeUnmatch 2200
#define eVLAInternalBug 2201
#define eVLABroken 2202
#define eVLANotSupport 2203
#define eVLANotSetOption 2204
#define eXfSockTimedOut 2300
#define eXfSockErr 2301
#define eXfHeaderTooLarge 2302
#define eXfBadHeader 2303
#define eXfBadRequest 2304
#define eXfNoChunkHeader 2305
#define eUtilBASE64Malformed 2310
#define eMailQuotedNonAscii 2320
#define eMailLineTooLong 2321
#define eMailNotSupported 2323
#define eCodeConvSrcDataEnd 2340
#define eCodeConvDstDataEnd 2341
#define eCodeConvSrcDataErr 2342
#define eCodeConvDstDataErr 2343
#define eCodeConvInvalid 2344

#define eAdamMin 3072
#define eAdamIsNotFile 3073
#define eAdamIllSubfileId 3074
#define eAdamIllSubfileType 3075
#define eAdamForkExist 3076
#define eAdamSubfileExist 3077
#define eAdamIllForkId 3078
#define eAdamNotSupported 3079
#define eAdamIllPosForVarElmList 3080
#define eAdamTooLargeData 3081

#define eSdbmMin 4096
#define eSdbmBuildIllEnumId 4100
#define eSdbmBuildDuplicateEnum 4101
#define eSdbmBuildIllFldNo 4102
#define eSdbmBuildDuplicateFld 4103
#define eSdbmNoEnum 4140
#define eSdbmNoFld 4141
#define eSdbmUnmatchDbDesc 4142
#define eSdbmDupEnumSetId 4143
#define eSdbmNotEnumUnitName 4144
#define eSdbmNotEnumUnitVal 4145
#define eSdbmTooLargeData 4146
#define eSdbmTooLongDbName 4147
#define eSdbmTooLongTableName 4148
#define eSdbmTooLongEnumSetName 4149
#define eSdbmTooLongEnumUnitName 4150
#define eSdbmTooLongFieldName 4151
#define eSdbmIllFldDataIdx 4152
#define eSdbmIllRecIdx 4153
#define eSdbmIllRecRevision 4154
#define eSdbmIllRecId 4155
#define eSdbmIllRecIdInTableNo 4156
#define eSdbmIllFldNo 4157
#define eSdbmNoneFldName 4158
#define eSdbmDupFldName 4159
#define eSdbmIllSearchTarget 4160
#define eSdbmNoSuchData 4161
#define eSdbmNoWorkArea 4171
#define eSdbmIllVarData 4172
#define eSdbmIllQueryCond 4173
#define eSdbmBuildIllFldType 4174
#define eSdbmBuildNotSupptFldType 4175
#define eSdbmIllTableDesc 4176
#define eSdbmIllTblNoForLinkFld 4177
#define eSdbmIllFldNoForLinkFld 4178
#define eSdbmMultipleLinkFld 4179
#define eSdbmIllRecNumForExpand 4180
#define eSdbmFoundInconsistencyForRecEnty 4181
#define eSdbmUnmatchFldType 4182
#define eSdbmIllEnumSetName 4183
#define eSdbmIllEnumSetId 4184
#define eSdbmIllTblNo 4185
#define eSdbmIllDataLen 4186
#define eSdbmDuplicateData 4187
#define eSdbmUnmatchLinkedData 4188
#define eSdbmOverLimitQueryConditions 4189

#define eHtifMin 5120
#define eHtifReenter 5121
#define eHtifNoEnvVar 5122
#define eHtifThtmlEof 5123
#define eHtifThtmlEob 5124
#define eHtifTmpBufOvr 5125
#define eHtifParamRangeOvr 5126
#define eHtifUnknownCallback 5127
#define eHtifUnknownTable 5128
#define eHtifIllFldType 5129
#define eHtifNoRecSelected 5130
#define eHtifIllDate 5131
#define eHtifShortData 5132


#define eSessMin 6144
#define eSessIllPlainCRCinCookie 6145
#define eSessIllCipherCRCinCookie 6146
#define eSessIllTextCookie 6147
#define eSessIllCacheFile 6148
#define eSessIllCookie 6149
#define eSessIllCapability 6150
#define eSessTooManySession 6151
#define eSessIllPassCodeStr 6152
#define eSessPassCodeUnmatch 6153
#define eSessIllSessID 6154
#define eSessNoCookie 6155
#define eSessDup 6156

#define eSlmMin 6656
#define eSlmMax 7167

#define eCppMin 7168
#define eCppDbgIllegalName 7168
#define eCppDbgNoMem 7169
#define eCppDbgOutTooSmall 7170
#define eCppMax 8191

#define eCppSysUtlMin 8192
#define eCppSysTelnetMin 8192
#define eCppSysTelnetUnsupportedOption 8192
#define eCppSysTelnetConnClosed 8193
#define eCppSysTelnetUnsupportedCmd 8194
#define eCppSysTelnetIllSubOptionSequence 8195
#define eCppSysTelnetNegotiationFail 8196
#define eCppSysTelnetMax 8255
#define eCppSysStrBuffMin 8256
#define eCppSysStrBuffInvalid 8256
#define eCppSysStrBuffMax 8288
#define ecppSysUtlMax 9215

#define eMtabMin 9216
#define eMtabParamMin 9216
#define eMtabParamTypeMissMatch 9216
#define eMtabParamChoiceRangeOver 9217
#define eMtabParamSyntaxError 9218
#define eMtabParamRangeOver 9219
#define eMtabParamApplCheckFail 9220
#define eMtabParamStringTooLong 9221
#define eMtabParamChoiceUnmatch 9222
#define eMtabParamIpV4AddrIllegal 9223
#define eMtabParamElemIndexRangeOver 9224
#define eMtabParamTreeFatal 9225
#define eMtabParamTypeUnknown 9226
#define eMtabParamProfIndexRangeOver 9227
#define eMtabParamNoMem 9228
#define eMtabParamTooManyRegist 9229
#define eMtabParamWroteShadow 9230
#define eMtabParamWrotePersistent 9231
#define eMtabParamAssocFewData 9232
#define eMtabParamIllegalNameRegist 9233
#define eMtabParamNoPermission 9234
#define eMtabParamMax 9279
#define eMtabCmdMin 9280
#define eMtabCmdTreeFatal 9280
#define eMtabCmdIndexRangeOver 9281
#define eMtabCmdTreeRegistFail 9282
#define eMtabCmdNoMem 9283
#define eMtabCmdTooManyRegist 9284
#define eMtabCmdIllegalNameRegist 9285
#define eMtabCmdRunResultNG 9286
#define eMtabCmdMax 9343
#define eMtabModMin 9344
#define eMtabModNoMem 9344
#define eMtabModProfVecIdxRangeOver 9345
#define eMtabModProfNoExit 9346
#define eMtabModProfIllegalRegist 9347
#define eMtabModProfDuplicateRegist 9348
#define eMtabModInterfaceNameDuplicate 9349
#define eMtabModInterfaceFull 9350
#define eMtabModInterfaceRegistIllegal 9351
#define eMtabModMax 9407
#define eMtabMainMin 9408
#define eMtabMainMax 9471
#define eMtabUserMin 9472
#define eMtabUserIllegalPassphareDigestStr 9472
#define eMtabUserMax 9487
#define eMtabStatMin 9488
#define eMtabStatIllegalStatItemName 9488
#define eMtabStatDuplicateStatItemName 9489
#define eMtabStatIllegalStatRecSize 9490
#define eMtabStatIllegalStatItemType 9491
#define eMtabStatMax 9519
#define eMtabMax 10239


# 18 "../../src/sdbm.v0/sdbmvdu.h" 2
# 26 "../../src/sdbm.v0/sdbmvdu.h"


extern inline int
SdbmMapVarData(SdbmHandleCommon* comH)
{
    int err = 0;

    ;
    if(! comH->varDataMapped) {
        err = AdamMapSubfile(comH->varDataDesc, comH->writable ? 1 : 0);
        if(((err) >= 0)) {
            comH->varDataMapped = 1;
        }
    }
    return (err);
}

extern inline int
SdbmUnmapVarData(SdbmHandleCommon* comH)
{
    int err = 0;

    ;
    if(comH->varDataMapped) {
        AdamUnmapSubfile(comH->varDataDesc);
        comH->varDataMapped = 0;
    }
    return (err);
}

extern inline void*
SdbmGetAddrOfVarData(SdbmHandleCommon* comH, AdamPos pos)
{
    void* ptr = ((void *)0);
    int err;
    err = AdamGetItsAddr(comH->varDataDesc, pos, &ptr);
    if(((err) >= 0)) {
        return ptr;
    } else {
        return ((void *)0);
    }
}

extern inline AdamPos
SdbmNewVarData(SdbmHandleCommon* comH, Sz dataSize)
{
    AdamPos pos;
    ;

    if(dataSize > 16777215) {
        return ((-(4146)));
    }

    SdbmUnmapVarData(comH);
    pos = AdamAllocIt(comH->varDataDesc, dataSize);
    return (pos);
}

extern inline int
SdbmFreeVarData(SdbmHandleCommon* comH, AdamPos pos)
{
    int retVal = 0;
    ;

    SdbmUnmapVarData(comH);
    retVal = AdamFreeIt(comH->varDataDesc, pos);
    return (retVal);
}

extern inline AdamPos
SdbmPutNewVarData(SdbmHandleCommon* comH, Sz dataSize, const void* data)
{
    void* ptr = ((void *)0);
    AdamPos pos;
    ;

    if(dataSize > 0) {
        pos = SdbmNewVarData(comH, dataSize);
        if(((pos) >= 0)) {
            int err = SdbmMapVarData(comH);
            if(((err) >= 0)) {
                err = AdamGetItsAddr(comH->varDataDesc, pos, &ptr);
                if(((err) >= 0)) {
                    memcpy(ptr, data, dataSize);
                }
            }
            if(((err) < 0)) {
                AdamFreeIt(comH->varDataDesc, pos);
                pos = err;
            }
        }
    } else {
        pos = 0;
    }
    return (pos);
}

extern inline AdamPos
SdbmPutNewString(SdbmHandleCommon* comH, const Chr* str)
{
    void* ptr = ((void *)0);
    Sz l;
    AdamPos pos;
    ;

    if(str) {
        l = strlen(str) + 1;
        pos = SdbmNewVarData(comH, l);
        if(((pos) >= 0)) {
            int err = SdbmMapVarData(comH);
            if(((err) >= 0)) {
                err = AdamGetItsAddr(comH->varDataDesc, pos, &ptr);
                if(((err) >= 0)) {
                    memcpy(ptr, str, l);
                }
            }
            if(((err) < 0)) {
                AdamFreeIt(comH->varDataDesc, pos);
                pos = err;
            }
        }
    } else {
        pos = 0;
    }
    return (pos);
}


# 35 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmpln.h" 1
# 14 "../../src/sdbm.v0/sdbmpln.h"
#define _AXIS_SDBMPLN_H_ 
# 26 "../../src/sdbm.v0/sdbmpln.h"


extern inline int
SdbmMapDbPlain(SdbmDbHandle* dbH, AdamSubfileId subfileId)
{
    int err = 0;

    switch(subfileId) {
    case 1: if(dbH->dbMain) return 0; break;
    case 2: if(dbH->enumSets) return 0; break;
    case 3: if(dbH->enumUnits) return 0; break;
    case 4: if(dbH->dbMainIdx) return 0; break;
    }

    err = AdamMapSubfile(dbH->subfiles[subfileId],
                         dbH->common.writable ? 1 : 0);
    if(((err) >= 0)) {
        void* ptr = ((void *)0);
        err = AdamGetAddr(dbH->subfiles[subfileId], &ptr);
        switch(subfileId) {
        case 1: dbH->dbMain = ptr; break;
        case 2: dbH->enumSets = ptr; break;
        case 3: dbH->enumUnits = ptr; break;
        case 4: dbH->dbMainIdx = ptr; break;
        }
    }

    return err;
}

extern inline int
SdbmUnmapDbPlain(SdbmDbHandle* dbH, AdamSubfileId subfileId)
{
    int err = 0;

    switch(subfileId) {
    case 1: if(! dbH->dbMain) return 0; break;
    case 2: if(! dbH->enumSets) return 0; break;
    case 3: if(! dbH->enumUnits) return 0; break;
    case 4: if(! dbH->dbMainIdx) return 0; break;
    }

    err = AdamUnmapSubfile(dbH->subfiles[subfileId]);
    if(((err) >= 0)) {
        switch(subfileId) {
        case 1: dbH->dbMain = ((void *)0); break;
        case 2: dbH->enumSets = ((void *)0); break;
        case 3: dbH->enumUnits = ((void *)0); break;
        case 4: dbH->dbMainIdx = ((void *)0); break;
        }
    }

    return err;
}

extern inline int
SdbmResizeDbPlain(SdbmDbHandle* dbH, AdamSubfileId subfileId, Sz newSz)
{
    int err = 0;

    err = SdbmUnmapDbPlain(dbH, subfileId);
    if(((err) >= 0)) {
        err = AdamResizeSubfile(dbH->subfiles[subfileId], newSz);
    }
    return err;
}

extern inline int
SdbmShiftDbPlainSize(SdbmDbHandle* dbH, AdamSubfileId subfileId, Sz diff)
{
    int retVal = 0;
    AdamSubfileParam* param;
    Sz newSz;

    param = dbH->params + subfileId;
    retVal = AdamGetSubfileParam(dbH->subfiles[subfileId], param);
    if(((retVal) >= 0)) {
        newSz = param->each.plain.subfileSz;
        newSz += diff;
        retVal = SdbmUnmapDbPlain(dbH, subfileId);
        if(((retVal) >= 0)) {
            retVal = AdamResizeSubfile(dbH->subfiles[subfileId], newSz);
        }
    }
    return (retVal);
}

extern inline int
SdbmMapTblPlain(SdbmTableHandle* tblH, s32 subfileIdx)
{
    int err = 0;

    switch(subfileIdx) {
    case 1: if(tblH->tableMain) return 0; break;
    case 2: if(tblH->recs) return 0; break;
    case 3: if(tblH->flds) return 0; break;
    case 5: if(tblH->indexArea) return 0; break;
    case 6: if(tblH->linkedFlds) return 0; break;
    }

    err = AdamMapSubfile(tblH->subfiles[subfileIdx],
                         tblH->common.writable ? 1 : 0);
    if(((err) >= 0)) {
        void* ptr = ((void *)0);
        err = AdamGetAddr(tblH->subfiles[subfileIdx], &ptr);
        switch(subfileIdx) {
        case 1: tblH->tableMain = ptr; break;
        case 2: tblH->recs = ptr; break;
        case 3: tblH->flds = ptr; break;
        case 5: tblH->indexArea = ptr; break;
        case 6: tblH->linkedFlds = ptr; break;
        }
    }

    return err;
}

extern inline int
SdbmUnmapTblPlain(SdbmTableHandle* tblH, AdamSubfileId subfileIdx)
{
    int err = 0;

    switch(subfileIdx) {
    case 1: if(! tblH->tableMain) return 0; break;
    case 2: if(! tblH->recs) return 0; break;
    case 3: if(! tblH->flds) return 0; break;
    case 5: if(! tblH->indexArea) return 0; break;
    case 6: if(! tblH->linkedFlds) return 0; break;
    }

    err = AdamUnmapSubfile(tblH->subfiles[subfileIdx]);
    if(((err) >= 0)) {
        switch(subfileIdx) {
        case 1: tblH->tableMain = ((void *)0); break;
        case 2: tblH->recs = ((void *)0); break;
        case 3: tblH->flds = ((void *)0); break;
        case 5: tblH->indexArea = ((void *)0); break;
        case 6: tblH->linkedFlds = ((void *)0); break;
        }
    }

    return err;
}

extern inline int
SdbmResizeTblPlain(SdbmTableHandle* tblH, s32 subfileIdx, Sz newSz)
{
    int err = 0;

    err = SdbmUnmapTblPlain(tblH, subfileIdx);
    if(((err) >= 0)) {
        err = AdamResizeSubfile(tblH->subfiles[subfileIdx], newSz);
    }
    return err;
}

extern inline int
SdbmShiftTblPlainSize(SdbmTableHandle* tblH, s32 subfileIdx, Sz diff)
{
    int retVal = 0;
    AdamSubfileParam* param;
    Sz newSz;

    param = tblH->params + subfileIdx;
    retVal = AdamGetSubfileParam(tblH->subfiles[subfileIdx], param);
    if(((retVal) >= 0)) {
        newSz = param->each.plain.subfileSz;
        newSz += diff;
        retVal = SdbmUnmapTblPlain(tblH, subfileIdx);
        if(((retVal) >= 0)) {
            retVal = AdamResizeSubfile(tblH->subfiles[subfileIdx], newSz);
        }
    }
    return (retVal);
}


# 36 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmhdlu.h" 1
# 14 "../../src/sdbm.v0/sdbmhdlu.h"
#define _AXIS_SDBMHDLU_H_ 
# 28 "../../src/sdbm.v0/sdbmhdlu.h"


extern int SdbmAllocHandle(SdbmHandle** hP, Bool needDesc,
                            SdbmDbHandle* dbH, SdbmTableHandle* linkTblH,
                            const Chr* dbName, SdbmTableNo tblNo);
extern int SdbmReleaseHandle(SdbmHandle* h, Bool unlock);
extern inline int
SdbmReleaseDbHandle(SdbmDbHandle* dbH, Bool unlock)
{
    return SdbmReleaseHandle((SdbmHandle*)dbH, unlock);
}
extern inline int
SdbmReleaseTableHandle(SdbmTableHandle* tblH, Bool unlock)
{
    return SdbmReleaseHandle((SdbmHandle*)tblH, unlock);
}

extern inline int
SdbmGetTableName(SdbmTableHandle* tblH, void** namePtr)
{
    int retVal;
    retVal = SdbmMapTblPlain(tblH, 1);
    if(((retVal) >= 0)) {
        retVal = SdbmMapVarData(&(tblH->dbH->common));
        if(((retVal) >= 0)) {
            void* p = SdbmGetAddrOfVarData(&(tblH->dbH->common), tblH->tableMain->tableName);
            if(namePtr)
                *namePtr = p;
        }
    }
    return retVal;
}

extern int SdbmGetHandle(SdbmDesc desc, SdbmHandle** hP, Bool forClose);

extern int SdbmGetWork(SdbmDbHandle* dbH, Sz allocSz, void** pp);

extern int SdbmOpenDbFile(SdbmDbHandle* dbH, const Chr* dbPathName);
extern int SdbmCreateDbFile(SdbmDbHandle* dbH, const Chr* dbPathName);

extern int SdbmOpenTableInternal(SdbmTableHandle* tblH);
extern int SdbmCreateTable(SdbmTableHandle* tblH, SdbmTableNo tblNo, const Chr* tblName,
                            Num numFlds, SdbmFldDef* flds);
extern SdbmTableNo SdbmSearchTableByName(SdbmDbHandle* dbH, const Chr* name);
extern int SdbmDumpTableNameNode(SdbmDbHandle* dbH, AtreeIdx nameNode,
                                  AtreeIdx pntrs[5], Area64* dataP);
extern int SdbmOpenTreeForTableName(SdbmDbHandle* dbH, AtreeReq* req);

extern int SdbmOpenTableByAnotherTable(SdbmTableHandle* openedTblH,
                                        SdbmTableNo tblNo, SdbmTableHandle** newTblHP);
extern int SdbmLockDbH(SdbmDbHandle* dbH);
extern int SdbmUnlockDbH(SdbmDbHandle* dbH);

extern inline int
SdbmLockDbByTable(SdbmTableHandle* tblH)
{
    return SdbmLockDbH(tblH->dbH);
}

extern inline int
SdbmUnlockDbByTable(SdbmTableHandle* tblH)
{
    return SdbmUnlockDbH(tblH->dbH);
}


#define cSdbmDumpInternalVerboseMode 0x10000000
#define cSdbmDumpInternalTestMode 0x08000000
#define cSdbmDumpNoRecIDMode 0x00000001


# 37 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmenum.h" 1
# 14 "../../src/sdbm.v0/sdbmenum.h"
#define _AXIS_SDBMENUM_H_ 
# 28 "../../src/sdbm.v0/sdbmenum.h"



extern inline s32
SdbmEnumIdToEnumIdx(SdbmDbHandle* dbH, s32 enumId)
{
    if((0 < enumId) && (enumId <= dbH->enumSetAttr->numEnumSet)) {
        return enumId - 1;
    } else {
        LogPut(4, "%s:%$", __FUNCTION__, "Illegal EnumSet ID[%d:0x%x]", enumId, enumId);
        return (-(4100));
    }
}

extern inline SdbmEnumSetEnt*
SdbmEnumIdToEnumSetEnt(SdbmDbHandle* dbH, s32 enumId)
{
    s32 i = SdbmEnumIdToEnumIdx(dbH, enumId);

    if(((i) >= 0)) {
        return dbH->enumSets + i;
    } else {
        return ((void *)0);
    }
}

extern inline SdbmEnumSetEnt*
SdbmSearchEnumByName(SdbmDbHandle* dbH, const Chr* nameTgt)
{
    int i, err=0;
    int numEnum = dbH->enumSetAttr->numEnumSet;

    if(((err = SdbmMapVarData(&(dbH->common))) >= 0)) {
        for(i = 0; i < numEnum ; i++) {
            AdamPos x = dbH->enumSets[i].enumSetName;
            if(x != 0) {
                const Chr* name = SdbmGetAddrOfVarData(&(dbH->common), x);
                if(name) {
                    if(SdbmStrcmp(name, nameTgt) == 0) {
                        return &(dbH->enumSets[i]);
                    }
                }
            }
        }
    }
    return ((void *)0);
}

extern int SdbmCreateEnumSetInternal(SdbmDbHandle* dbH, SdbmEnumSetId id, const Chr* enumSetName);

extern inline SdbmEnumUnit*
SdbmEnumUnitIdToEnumUnit(SdbmDbHandle* dbH, SdbmEnumUnitId unitId)
{
    SdbmEnumUnit* eu = ((void *)0);
    int retVal;

    if(unitId > 0) {
        retVal = SdbmMapDbPlain(dbH, 3);
        if(((retVal) >= 0)) {
            eu = dbH->enumUnits + (unitId - 1);
        }
    }
    return eu;
}

extern int SdbmGetEnumUnitName(SdbmDbHandle* dbH, SdbmEnumSetId id,
                                SdbmEnumUnitId enumUnitId, Chr** enumUnitNameP);
extern int SdbmGetEnumUnitVal(SdbmDbHandle* dbH, SdbmEnumSetId id,
                               SdbmEnumUnitId enumUnitId, Area64* valP);

#define SdbmEnumUnitsTopAddr(dbH,tgt) SdbmEnumUnitsOprTopAddr((dbH)->enumUnits, 1, tgt)
#define SdbmEnumUnitsIndex(dbH,tgtP) SdbmEnumUnitsOprIndex((dbH)->enumUnits, 1, tgtP)
#define SdbmEnumUnitsInit(dbH,tgt) SdbmEnumUnitsOprInit((dbH)->enumUnits, 1, tgt)

extern inline s32
SdbmEnumUnitsNextFromFreeList(SdbmDbHandle* dbH, s32 tgtIdx)
{
    s32 pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmEnumUnitsOprNext(dbH->enumUnits, 1, tgtIdx);
    } else {
        pntIdx = dbH->enumUnitAttr->enumFreeList;
    }
    return pntIdx;
}

extern inline s32
SdbmEnumUnitsPrevFromFreeList(SdbmDbHandle* dbH, s32 tgtIdx)
{
    s32 pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmEnumUnitsOprPrev(dbH->enumUnits, 1, tgtIdx);
    } else {
        pntIdx = dbH->enumUnitAttr->enumFreeList;
    }
    return pntIdx;
}

extern inline void
SdbmEnumUnitsInsertToFreeList(SdbmDbHandle* dbH, s32 tgtIdx)
{
    s32 pntIdx = dbH->enumUnitAttr->enumFreeList;
    if(pntIdx) {
        SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
        SdbmEnumUnitsOprInsert(eu, pntIdx, tgtIdx);
    } else {
        dbH->enumUnitAttr->enumFreeList = tgtIdx;
    }
}

extern inline void
SdbmEnumUnitsAppendToFreeList(SdbmDbHandle* dbH, s32 tgtIdx)
{
    s32 pntIdx = dbH->enumUnitAttr->enumFreeList;
    if(pntIdx) {
        SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
        SdbmEnumUnitsOprAppend(eu, pntIdx, tgtIdx);
    } else {
        dbH->enumUnitAttr->enumFreeList = tgtIdx;
    }
}

extern inline void
SdbmEnumUnitsDeleteFromFreeList(SdbmDbHandle* dbH, s32 tgtIdx)
{
    s32 pntIdx = dbH->enumUnitAttr->enumFreeList;
    if(pntIdx) {
        SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
        s32 delNext;
        delNext = SdbmEnumUnitsOprDelete(eu, pntIdx, tgtIdx);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            dbH->enumUnitAttr->enumFreeList = delNext;
    }
}

extern inline s32
SdbmEnumUnitsNextFromEnumSet(SdbmDbHandle* dbH, SdbmEnumSetId enumSet, s32 tgtIdx)
{
    s32 pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmEnumUnitsOprNext(dbH->enumUnits, 1, tgtIdx);
    } else {
        SdbmEnumSetEnt* ese = SdbmEnumIdToEnumSetEnt(dbH, enumSet);
        pntIdx = ese->enumUnits;
    }
    return pntIdx;
}

extern inline s32
SdbmEnumUnitsPrevFromEnumSet(SdbmDbHandle* dbH, SdbmEnumSetId enumSet, s32 tgtIdx)
{
    s32 pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmEnumUnitsOprPrev(dbH->enumUnits, 1, tgtIdx);
    } else {
        SdbmEnumSetEnt* ese = SdbmEnumIdToEnumSetEnt(dbH, enumSet);
        pntIdx = ese->enumUnits;
    }
    return pntIdx;
}

extern inline void
SdbmEnumUnitsInsertToEnumSet(SdbmDbHandle* dbH, SdbmEnumSetId enumSet, s32 tgtIdx)
{
    SdbmEnumSetEnt* ese = SdbmEnumIdToEnumSetEnt(dbH, enumSet);
    if(ese) {
        s32 pntIdx = ese->enumUnits;
        if(pntIdx) {
            SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
            SdbmEnumUnitsOprInsert(eu, pntIdx, tgtIdx);
        } else {
            ese->enumUnits = tgtIdx;
        }
    }
}

extern inline void
SdbmEnumUnitsAppendToEnumSet(SdbmDbHandle* dbH, SdbmEnumSetId enumSet, s32 tgtIdx)
{
    SdbmEnumSetEnt* ese = SdbmEnumIdToEnumSetEnt(dbH, enumSet);
    if(ese) {
        s32 pntIdx = ese->enumUnits;
        if(pntIdx) {
            SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
            SdbmEnumUnitsOprAppend(eu, pntIdx, tgtIdx);
        } else {
            ese->enumUnits = tgtIdx;
        }
    }
}

extern inline void
SdbmEnumUnitsDeleteFromEnumSet(SdbmDbHandle* dbH, SdbmEnumSetId enumSet, s32 tgtIdx)
{
    SdbmEnumSetEnt* ese = SdbmEnumIdToEnumSetEnt(dbH, enumSet);
    if(ese) {
        s32 pntIdx = ese->enumUnits;
        if(pntIdx) {
            SdbmEnumUnit* eu = SdbmEnumUnitIdToEnumUnit(dbH, pntIdx);
            s32 delNext;
            pntIdx = SdbmEnumUnitsOprDelete(eu, pntIdx, tgtIdx);
            if(tgtIdx == delNext)
                delNext = 0;
            if(tgtIdx == pntIdx)
                ese->enumUnits = delNext;
        }
    }
}

extern SdbmEnumUnitId SdbmSearchEnumUnitByName(SdbmDbHandle* dbH, SdbmEnumSetId id,
                                                 const Chr* name);
extern SdbmEnumUnitId SdbmSearchEnumUnitByVal(SdbmDbHandle* dbH, SdbmEnumSetId id,
                                                Area64 val);

extern int SdbmAddEnumUnitInternal(SdbmDbHandle* dbH, SdbmEnumSetId id,
                                   const Chr* enumUnitName, Area64 enumUnitVal);
extern int SdbmOpenTreeForEnumUnitVal(SdbmDbHandle* dbH, SdbmEnumSetEnt* ese, AtreeReq* req);
extern int SdbmOpenTreeForEnumUnitName(SdbmDbHandle* dbH, SdbmEnumSetEnt* ese, AtreeReq* req);


extern int SdbmEnumUnitDumpAtreeNode(SdbmDbHandle* dbH, SdbmEnumSetEnt* ese, SdbmEnumUnit* eu,
                                      AtreeIdx pntrsVal[5], Area64* dataVal,
                                      AtreeIdx pntrsName[5], Area64* dataName);


# 38 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmfldu.h" 1
# 14 "../../src/sdbm.v0/sdbmfldu.h"
#define _AXIS_SDBMFLDU_H_ 
# 28 "../../src/sdbm.v0/sdbmfldu.h"


extern inline s32
SdbmFldNoToFldIdx(SdbmTableHandle* tblH, SdbmFldNo fldNo)
{
    if((0 < fldNo) && (fldNo <= tblH->tableMain->numFlds)) {
        return fldNo - 1;
    } else {
        LogPut(4, "%s:%$", __FUNCTION__, "Illegal Field No [%d:0x%x] table[%d]",
               fldNo, fldNo, tblH->tblNo);
        return (-(4102));
    }
}

extern inline int
SdbmGetFldSpec(SdbmTableHandle* tblH, SdbmFldNo fldNo, SdbmFldSpec** fldSpecP)
{
    int retVal;
    s32 idx = SdbmFldNoToFldIdx(tblH, fldNo);
    SdbmFldSpec* fldSpec;
    if(idx >= 0) {
        fldSpec = tblH->tableMain->fldSpecs + idx;
        retVal = 0;
    } else {
        fldSpec = ((void *)0);
        LogPut(4, "%s:%$", __FUNCTION__, "Illegal Field No [%d:0x%x]", idx, idx);
        retVal = (-(4157));
    }
    *fldSpecP = fldSpec;
    return retVal;
}

extern int SdbmGetFldSpecByName(SdbmTableHandle* tblH, const Chr* name, SdbmFldSpec** fldSpecP);
extern int SdbmSetFldDef(SdbmTableHandle* tblH, SdbmFldDef* fldDef);
extern int SdbmDumpFldNameNode(SdbmTableHandle* tblH, AtreeIdx nameNode,
                                AtreeIdx pntrs[5], Area64* dataP);

extern inline int
SdbmGetFldName(SdbmTableHandle* tblH, SdbmFldNo fldNo, void** fldNameP)
{
    int retVal;
    SdbmFldSpec* fldSpec;

    retVal = SdbmGetFldSpec(tblH, fldNo, &fldSpec);
    if(((retVal) >= 0)) {
        retVal = SdbmMapVarData(&(tblH->common));
        if(((retVal) >= 0)) {
            void* p = SdbmGetAddrOfVarData(&(tblH->common), fldSpec->fldNamePtr);
            if(fldNameP)
                *fldNameP = p;
        }
    }
    return retVal;
}

extern inline int
SdbmGetFldBody(SdbmTableHandle* tblH, SdbmFldDataIdx dataIdx, SdbmFldBody** fldP)
{
    int retVal = 0;

    if((1 <= dataIdx) && (dataIdx <= tblH->fldsContnrAttr->numFlds)) {
        retVal = SdbmMapTblPlain(tblH, 3);
        if(((retVal) >= 0)) {
            SdbmFldBody* fld = tblH->flds + ((dataIdx)-1);
            *fldP = fld;
        }
    } else {




        retVal = (-(4152));
    }
    return retVal;
}

extern inline int
SdbmGetFldContent(SdbmTableHandle* tblH, SdbmFldDataIdx dataIdx, SdbmFldEnty* contentP)
{
    int retVal = 0;
    SdbmFldBody* fld = ((void *)0);

    retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
    if(((retVal) >= 0)) {
        *contentP = fld->content;
    }
    return retVal;
}

extern inline int
SdbmGetLinkedFldInfo(SdbmTableHandle* tblH, SdbmFldDataIdx dataIdx, SdbmLinkedFldInfo** lfiP)
{
    int retVal = 0;

    if((1 <= dataIdx) && (dataIdx <= tblH->linkedFldsAttr->numLinked)) {
        retVal = SdbmMapTblPlain(tblH, 6);
        if(((retVal) >= 0)) {
            SdbmLinkedFldInfo* lfi = tblH->linkedFlds + ((dataIdx)-1);
            *lfiP = lfi;
        }
    } else {
        LogPut(4, "%s:%$", __FUNCTION__, "Illegal data index[%d:0x%x]", dataIdx, dataIdx);
        retVal = (-(4152));
    }
    return retVal;
}

extern int SdbmFldIdxInit(SdbmTableHandle* tblH);
extern int SdbmFldIdxInit2(SdbmTableHandle* tblH);

#define SdbmFldsTopAddr(tblH,tgt) SdbmFldsOprTopAddr((tblH)->flds, cSdbmFldDataIdxMin, tgt)
#define SdbmFldsIndex(tblH,tgtP) SdbmFldsOprIndex((tblH)->flds, cSdbmFldDataIdxMin, tgtP)
#define SdbmFldsInit(tblH,tgt) SdbmFldsOprInit((tblH)->flds, cSdbmFldDataIdxMin, tgt)

extern inline SdbmFldDataIdx
SdbmFldsNextFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsOprNext((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = tblH->fldsContnrAttr->freeList;
    }
    return pntIdx;
}

extern inline SdbmFldDataIdx
SdbmFldsPrevFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsOprPrev((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = tblH->fldsContnrAttr->freeList;
    }
    return pntIdx;
}

extern inline void
SdbmFldsInsertToFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = tblH->fldsContnrAttr->freeList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsOprInsert(fld, pntIdx, tgtIdx);
    } else {
        tblH->fldsContnrAttr->freeList = pntIdx;
    }
}

extern inline void
SdbmFldsAppendToFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = tblH->fldsContnrAttr->freeList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsOprAppend(fld, pntIdx, tgtIdx);
    } else {
        tblH->fldsContnrAttr->freeList = pntIdx;
    }
}

extern inline void
SdbmFldsDeleteFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = tblH->fldsContnrAttr->freeList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmFldDataIdx delNext;
        SdbmGetFldBody(tblH, pntIdx, &fld);
        delNext = SdbmFldsOprDelete(fld, pntIdx, tgtIdx);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            tblH->fldsContnrAttr->freeList = delNext;
    }
}

extern inline SdbmFldDataIdx
SdbmFldsNextFromRec(SdbmTableHandle* tblH,
                    SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsOprNext((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].vecIdxList;
    }
    return pntIdx;
}

extern inline SdbmFldDataIdx
SdbmFldsPrevFromRec(SdbmTableHandle* tblH,
                    SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsOprPrev((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].vecIdxList;
    }
    return pntIdx;
}

extern inline void
SdbmFldsInsertToRec(SdbmTableHandle* tblH,
                    SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].vecIdxList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsOprInsert(fld, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].vecIdxList = pntIdx;
    }
    rec->fldPtrs[fldNo-1].numElms ++;
}

extern inline void
SdbmFldsAppendToRec(SdbmTableHandle* tblH,
                    SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].vecIdxList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsOprAppend(fld, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].vecIdxList = pntIdx;
    }
    rec->fldPtrs[fldNo-1].numElms ++;
}

extern inline void
SdbmFldsDeleteFromRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].vecIdxList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmFldDataIdx delNext;
        SdbmGetFldBody(tblH, pntIdx, &fld);
        delNext = SdbmFldsOprDelete(fld, pntIdx, tgtIdx);
        rec->fldPtrs[fldNo-1].numElms --;
        if(rec->fldPtrs[fldNo-1].numElms < 0)
            rec->fldPtrs[fldNo-1].numElms = 0;
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            rec->fldPtrs[fldNo-1].vecIdxList = delNext;
    }
}

extern inline SdbmFldDataIdx
SdbmGetFldWithVecIdx(SdbmTableHandle* tblH, SdbmRecEnty* rec,
                     SdbmFldNo fldNo, SdbmVecFldIdx vecIdx, SdbmFldDataIdx* insPntP)
{
    SdbmFldDataIdx topIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
    SdbmFldDataIdx dataIdx = topIdx;
    SdbmFldDataIdx retIdx = 0;
    SdbmFldDataIdx insPnt = 0;
    do {
        SdbmFldBody* fld;
        int retCode;
        retCode = SdbmGetFldBody(tblH, dataIdx, &fld);
        if(((retCode) >= 0)) {
            ;
            if(fld->vectorIdx == vecIdx) {
                retIdx = dataIdx;
                break;
            }
            if(fld->vectorIdx > vecIdx) {



                insPnt = dataIdx;

                break;
            }
            insPnt = dataIdx;
            dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
            ;
        } else {
            break;
        }
    } while(topIdx != dataIdx);
    *insPntP = insPnt;
    return retIdx;
}

extern inline SdbmFldDataIdx
SdbmGetMaxVecIdx(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldNo fldNo,
                 SdbmFldDataIdx* insPntP)
{
    SdbmFldDataIdx dataIdx = SdbmFldsPrevFromRec(tblH, rec, fldNo, 0);
    SdbmVecFldIdx vecIdx = 0;

    *insPntP = 0;
    if(dataIdx) {
        SdbmFldBody* fld;
        int retCode;
        dataIdx = SdbmFldsPrevFromRec(tblH, rec, fldNo, dataIdx);
        retCode = SdbmGetFldBody(tblH, dataIdx, &fld);
        if(((retCode) >= 0)) {
            vecIdx = fld->vectorIdx;
            *insPntP = dataIdx;
        } else {
            vecIdx = retCode;
        }
    }
    return vecIdx;
}

extern inline SdbmFldDataIdx
SdbmGetNewVecIdx(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldNo fldNo,
                 SdbmFldDataIdx* insPntP)
{
    SdbmFldDataIdx top = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
    SdbmVecFldIdx vecIdx = 0;

    *insPntP = 0;
    if(top) {
        vecIdx = SdbmGetMaxVecIdx(tblH, rec, fldNo, insPntP);
        if(vecIdx >= 16777216) {
            SdbmVecFldIdx prevIdx = 0;
            SdbmFldDataIdx dataIdx = top;
            SdbmFldDataIdx prevData = 0;
            SdbmFldBody* fld;
            int retCode;
            do {
                retCode = SdbmGetFldBody(tblH, dataIdx, &fld);
                if(((retCode) >= 0)) {
                    ;

                    if((prevIdx+1) < fld->vectorIdx) {
                        vecIdx = prevIdx + 1;
                        *insPntP = dataIdx;
                        break;
                    }
                    prevIdx = fld->vectorIdx;
                    prevData = dataIdx;
                } else {
                    dataIdx = 0;
                    vecIdx = retCode;
                    break;
                }
                dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
            } while(top != dataIdx);
        } else {
            vecIdx ++;
        }
    }
    if(vecIdx == 0) {
        vecIdx = 1;
    }
    return vecIdx;
}

#define SdbmFldsSortTopAddr(tblH,tgt) SdbmFldsSortOprTopAddr((tblH)->flds, cSdbmFldDataIdxMin, tgt)

#define SdbmFldsSortIndex(tblH,tgtP) SdbmFldsSortOprIndex((tblH)->flds, cSdbmFldDataIdxMin, tgtP)

#define SdbmFldsSortInit(tblH,tgt) SdbmFldsSortOprInit((tblH)->flds, cSdbmFldDataIdxMin, tgt)


extern inline SdbmFldDataIdx
SdbmFldsSortNextFromRec(SdbmTableHandle* tblH,
                        SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsSortOprNext((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].sortedList;
    }
    return pntIdx;
}

extern inline SdbmFldDataIdx
SdbmFldsSortPrevFromRec(SdbmTableHandle* tblH,
                        SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmFldsSortOprPrev((tblH)->flds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].sortedList;
    }
    return pntIdx;
}

extern inline void
SdbmFldsSortInsertToRec(SdbmTableHandle* tblH,
                        SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].sortedList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsSortOprInsert(fld, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].sortedList = tgtIdx;
    }
}

extern inline void
SdbmFldsSortAppendToRec(SdbmTableHandle* tblH,
                        SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].sortedList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmGetFldBody(tblH, pntIdx, &fld);
        SdbmFldsSortOprAppend(fld, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].sortedList = tgtIdx;
    }
}

extern inline void
SdbmFldsSortDeleteFromRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx = rec->fldPtrs[fldNo-1].sortedList;
    if(pntIdx) {
        SdbmFldBody* fld = ((void *)0);
        SdbmFldDataIdx delNext;
        SdbmGetFldBody(tblH, pntIdx, &fld);
        delNext = SdbmFldsSortOprDelete(fld, pntIdx, tgtIdx);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            rec->fldPtrs[fldNo-1].sortedList = delNext;
    }
}

#define SdbmLinkedFldsTopAddr(tblH,tgt) SdbmLinkedFldsOprTopAddr((tblH)->linkedFlds, cSdbmFldDataIdxMin, tgt)

#define SdbmLinkedFldsIndex(tblH,tgtP) SdbmLinkedFldsOprIndex((tblH)->linkedFlds, cSdbmFldDataIdxMin, tgtP)

#define SdbmLinkedFldsInit(tblH,tgt) SdbmLinkedFldsOprInit((tblH)->linkedFlds, cSdbmFldDataIdxMin, tgt)


extern inline SdbmFldDataIdx
SdbmLinkedFldsNextFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmLinkedFldsOprNext((tblH)->linkedFlds, 1, tgtIdx);
    } else {
        pntIdx = tblH->linkedFldsAttr->freeList;
    }
    return pntIdx;
}

extern inline SdbmFldDataIdx
SdbmLinkedFldsPrevFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmLinkedFldsOprPrev((tblH)->linkedFlds, 1, tgtIdx);
    } else {
        pntIdx = tblH->linkedFldsAttr->freeList;
    }
    return pntIdx;
}

extern inline void
SdbmLinkedFldsInsertToFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = tblH->linkedFldsAttr->freeList;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        SdbmLinkedFldsOprInsert(lfi, pntIdx, tgtIdx);
    } else {
        tblH->linkedFldsAttr->freeList = tgtIdx;
    }
}

extern inline void
SdbmLinkedFldsAppendToFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = tblH->linkedFldsAttr->freeList;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        SdbmLinkedFldsOprAppend(lfi, pntIdx, tgtIdx);
    } else {
        tblH->linkedFldsAttr->freeList = tgtIdx;
    }
}

extern inline void
SdbmLinkedFldsDeleteFromFreeList(SdbmTableHandle* tblH, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = tblH->linkedFldsAttr->freeList;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmFldDataIdx delNext;
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        delNext = SdbmLinkedFldsOprDelete(lfi, pntIdx, tgtIdx);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            tblH->linkedFldsAttr->freeList = delNext;
    }
}
extern inline SdbmFldDataIdx
SdbmLinkedFldsNextFromRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmLinkedFldsOprNext((tblH)->linkedFlds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].linkedIdx;
    }
    return pntIdx;
}

extern inline SdbmFldDataIdx
SdbmLinkedFldsPrevFromRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    SdbmFldDataIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmLinkedFldsOprPrev((tblH)->linkedFlds, 1, tgtIdx);
    } else {
        pntIdx = rec->fldPtrs[fldNo-1].linkedIdx;
    }
    return pntIdx;
}

extern inline void
SdbmLinkedFldsInsertToRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = rec->fldPtrs[fldNo-1].linkedIdx;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        SdbmLinkedFldsOprInsert(lfi, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].linkedIdx = tgtIdx;
    }
}

extern inline void
SdbmLinkedFldsAppendToRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = rec->fldPtrs[fldNo-1].linkedIdx;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        SdbmLinkedFldsOprAppend(lfi, pntIdx, tgtIdx);
    } else {
        rec->fldPtrs[fldNo-1].linkedIdx = tgtIdx;
    }
}

extern inline void
SdbmLinkedFldsDeleteFromRec(SdbmTableHandle* tblH,
                      SdbmRecEnty* rec, SdbmFldNo fldNo, SdbmFldDataIdx tgtIdx)
{
    s32 pntIdx = rec->fldPtrs[fldNo-1].linkedIdx;
    if(pntIdx) {
        SdbmLinkedFldInfo* lfi = ((void *)0);
        SdbmFldDataIdx delNext;
        SdbmGetLinkedFldInfo(tblH, pntIdx, &lfi);
        delNext = SdbmLinkedFldsOprDelete(lfi, pntIdx, tgtIdx);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            rec->fldPtrs[fldNo-1].linkedIdx = delNext;
    }
}

struct SdbmFldTypeInfo;
typedef int (*SdbmSearchDataFunc)(SdbmTableHandle* tblH, const SdbmFldSpec* fSpec,
                                  const struct SdbmFldTypeInfo* ti,
                                  const SdbmQueryCond* query, SdbmFldDataIdx* dataIdxP,
                                  SdbmFldDataIdx* subDataIdxP);
typedef int (*SdbmCompareDataInternalFunc)(SdbmTableHandle* tblH, SdbmFldDataIdx dataIdx1,
                                           SdbmFldDataIdx dataIdx2);
typedef int (*SdbmCompareDataExternalFunc)(SdbmTableHandle* tblH, const SdbmFldSpec* fSpec,
                                           SdbmFldRef* tgtData, SdbmFldDataIdx dataIdx);
typedef int (*SdbmMakeDataFunc)(SdbmTableHandle* tblH, SdbmFldRef* tgtData, SdbmFldSpec* fSpec,
                                SdbmDataId dataId, SdbmFldDataIdx dataIdx,
                                SdbmFldEnty* contentP, SdbmFldIdxData* idxDataP);
typedef int (*SdbmKillDataFunc)(SdbmTableHandle* tblH, SdbmFldSpec* fSpec, SdbmFldEnty* contentP);
typedef int (*SdbmStoreDataFunc)(SdbmTableHandle* tblH, SdbmFldSpec* fSpec,
                                 SdbmFldEnty* contentP, SdbmFldRef* fRef, Bool insideAllocation);
typedef int (*SdbmInquiryDataFunc)(SdbmTableHandle* tblH, const struct SdbmFldTypeInfo* ti,
                                   const SdbmFldSpec* fSpec,
                                   const SdbmQueryCond* query, SdbmFldDataIdx dataIdx);
typedef int (*SdbmNextDataFunc)(SdbmTableHandle* tblH, const struct SdbmFldTypeInfo* ti,
                                const SdbmQueryCond* query, const SdbmFldSpec* fSpec,
                                SdbmFldDataIdx fromDataIdx, SdbmFldDataIdx* nextDataIdxP,
                                SdbmFldDataIdx subDataIdx, SdbmFldDataIdx* nextSubDataIdxP);

typedef struct SdbmFldTypeInfo {
    u32 fldType:8,
                                fmtType:8,
                                isSupported:1,
                                hasAtreeIdx:1,
                                compareByValue:1,
                                noneSorted:1,
                                variableData:1,
                                :11;
    u32 condMask;
    const AtreeCallbacks* atreeOprs;
    SdbmSearchDataFunc searchData;
    SdbmCompareDataInternalFunc compareDataInternal;
    SdbmCompareDataExternalFunc compareDataExternal;
    SdbmMakeDataFunc makeData;
    SdbmKillDataFunc killData;
    SdbmStoreDataFunc storeData;
    SdbmInquiryDataFunc inquiryData;
    SdbmNextDataFunc nextData;
    Area rsrv[7];
} SdbmFldTypeInfo;

extern const SdbmFldTypeInfo* gSdbmFldTypes[255 +1];

#define SdbmGetTypeInfo(fldType) (gSdbmFldTypes[fldType])
#define SdbmFldTypeCorrect(fldType) ((fldType) & 0xFF)

#define cSdbmDataLow 1
#define cSdbmDataEqual 2
#define cSdbmDataHigh 3

#define cSdbmInquiryHit 1
#define cSdbmInquiryNoHit 0

#define cSdbmCorrectNextData 1
#define cSdbmNomoreNextData 0

extern int SdbmSearchData(SdbmTableHandle* tblH, const SdbmQueryCond* query,
                           SdbmFldDataIdx* dataIdxP, SdbmDataId* dataP,
                           SdbmFldDataIdx* subDataIdxP);
extern int SdbmInquiryDatas(SdbmTableHandle* tblH, const SdbmQueryCond* query,
                             SdbmDataId dataId);
extern int SdbmNextQueryData(SdbmTableHandle* tblH, Num numQueries, const SdbmQueryCond* query,
                              SdbmDataId fromId, SdbmFldDataIdx fromDataIdx,
                              SdbmFldDataIdx subDataIdx, SdbmDataId* nextIdP,
                              SdbmFldDataIdx* nextDataIdxP, SdbmFldDataIdx* nextSubDataIdxP);
extern int SdbmCompareDataInternal(SdbmTableHandle* tblH, SdbmFldNo fldNo,
                                    SdbmFldDataIdx data1, SdbmFldDataIdx data2);
extern int SdbmKillData(SdbmTableHandle* tblH, SdbmDataId dataId, SdbmVecFldIdx vecIdx);
extern int SdbmSetData(SdbmTableHandle* tblH, SdbmDataId dataId, SdbmFldRef* tgtData);
extern int SdbmGetDatas(SdbmTableHandle* tblH, SdbmDataId dataId,
                         Num numDataAreas, SdbmFldRef fldDatas[], Bool insideAllocation);
extern int SdbmGetAData(SdbmTableHandle* tblH, SdbmDataId dataId,
                         SdbmVecFldIdx vecIdx, SdbmFldRef* fldData, Bool insideAllocation);
extern int SdbmKillAllData(SdbmTableHandle* tblH, SdbmDataId dataId);
extern int SdbmKillData(SdbmTableHandle* tblH, SdbmDataId dataId, SdbmVecFldIdx vecIdx);
extern int SdbmGetFldBodyByFldNo(SdbmTableHandle* tblH, SdbmDataId dataId,
                                  SdbmVecFldIdx vecIdx, SdbmFldBody** fldBodyP);
extern int SdbmGetMinAndMaxFldElm(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldNo fldNo,
                                   SdbmFldDataIdx* minP, SdbmFldDataIdx* maxP,
                                   SdbmTableHandle** forLinkTblP, SdbmFldNo* fldNoP);
extern int SdbmFindEdgeData(SdbmTableHandle* tblH, SdbmFldSpec* fSpec, Bool lowerEdge,
                             SdbmFldElmPtr* elmP);
extern int SdbmListData(SdbmTableHandle* tblH, SdbmFldSpec* fSpec,
                         SdbmRecId recs[], Num numRecs, Num* realRecs,
                         SdbmFldElmPtr allList[], Num numAll, Num* realAll,
                         SdbmFldElmPtr uniqList[], Num numUniq, Num* realUniq);





extern SdbmFldDataIdx SdbmAllocNewFld(SdbmTableHandle* tblH, SdbmFldBody** fbP);
extern int SdbmFldIdxAtreeOpen(Area openArg, Area auxArg, void** pp);
extern int SdbmFldIdxAtreeClose(Area openArg, Area auxArg);
extern int SdbmFldIdxAtreeGrow(Area openArg, Area auxArg, Sz byteSize, void** pp);
extern int SdbmFldIdxAtreeReduce(Area openArg, Area auxArg, Sz byteSize, void** pp);
extern int SdbmFldNameAtreeCompareByName(Area compareArg, Area auxArg,
                                                      Bool data1IsInternal,
                                                      Area64 data1, Area64 data2);

extern int SdbmOpenTreeForFldName(SdbmTableHandle* tblH, AtreeReq* req);
extern int SdbmOpenTreeForFld(SdbmTableHandle* tblH, SdbmFldNo fldNo, AtreeReq* req);

extern SdbmFldDataIdx SdbmNewLinkInfo(SdbmTableHandle* fromTblH, SdbmFldDataIdx fromData,
                                        SdbmDataId linkFrom, SdbmDataId linkTo);
extern int SdbmDelLinkedInfo(SdbmTableHandle* linkToTblH, SdbmFldDataIdx idx);



# 39 "../../src/sdbm.v0/sdbmfldu.c" 2
# 1 "../../src/sdbm.v0/sdbmrecc.h" 1
# 14 "../../src/sdbm.v0/sdbmrecc.h"
#define _AXIS_SDBMRECC_H_ 
# 29 "../../src/sdbm.v0/sdbmrecc.h"


extern inline int
SdbmGetRecEntyPtr(SdbmTableHandle* tblH, SdbmRecIdx recIdx, SdbmRecEnty** recP)
{
    int retVal = 0;

    if((1 <= recIdx) && (recIdx <= tblH->recsContnrAttr->numRecs)) {
        retVal = SdbmMapTblPlain(tblH, 2);
        if(((retVal) >= 0)) {
            Area xp;
            SdbmRecEnty* rec;
            xp.ptr = tblH->recs;
            xp.val += ((recIdx)-1) * tblH->recSz;
            rec = xp.ptr;
            ;
            *recP = rec;
        }
    } else {
        ;
        LogPut(4, "%s:%$", __FUNCTION__, "Illegal Record Index [%d:0x%x]", recIdx, recIdx);
        retVal = (-(4153));
    }
    return retVal;
}

extern inline int
SdbmGetRecEntyPtrWithCheck(SdbmTableHandle* tblH, SdbmRecIdx recIdx, SdbmRecEnty** recP)
{
    int retVal = 0;
    SdbmRecEnty* rec = ((void *)0);

    retVal = SdbmGetRecEntyPtr(tblH, recIdx, &rec);
    if(((retVal) >= 0)) {
        if(! rec->recId.i.invalid) {
            if((rec->recId.i.tableNo == 0) || (tblH->tblNo == rec->recId.i.tableNo)) {
                if(recP)
                    *recP = rec;
            } else {
                LogPut(4, "%s:%$", __FUNCTION__, "Illegal Record ID [Rec(0x%x,0x%x)Tbl(%d)]",
                       rec->recId.i.recIdx, rec->recId.i.revision, rec->recId.i.tableNo);
                retVal = (-(4156));
            }
        } else {
            LogPut(4, "%s:%$", __FUNCTION__, "Illegal Record ID "
                   "[Rec(0x%x,0x%x)Tbl(%d)]",
                   rec->recId.i.recIdx, rec->recId.i.revision, rec->recId.i.tableNo);
            retVal = (-(4155));
        }
    }
    return retVal;
}

extern inline SdbmRecEnty* SdbmRecsOprTopAddr(SdbmRecEnty* top, s32 topIdx, s32 tgtIdx, u32 sz) { return CqueueTopAddr(&(top->list), topIdx, tgtIdx, sz, ((Word)(&(((SdbmRecEnty *)0)->list)))); } extern inline s32 SdbmRecsOprIndex(SdbmRecEnty* top, s32 topIdx, SdbmRecEnty* tgt, u32 sz) { struct { char x[sz]; } *p1, *p2; p1 = (void*)top; p2 = (void*)tgt; return p2 - p1 + topIdx; } extern inline void SdbmRecsOprInit(SdbmRecEnty* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueInit(&(top->list), topIdx, tgtIdx, sz, ((Word)(&(((SdbmRecEnty *)0)->list))));} extern inline void SdbmRecsOprInsert(SdbmRecEnty* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueInsertQueue(&(top->list), topIdx, tgtIdx, sz, ((Word)(&(((SdbmRecEnty *)0)->list))));} extern inline void SdbmRecsOprAppend(SdbmRecEnty* top, s32 topIdx, s32 tgtIdx, u32 sz) { CqueueAppendQueue(&(top->list), topIdx, tgtIdx, sz, ((Word)(&(((SdbmRecEnty *)0)->list))));} extern inline s32 SdbmRecsOprDelete(SdbmRecEnty* top, s32 topIdx, s32 tgtIdx, u32 sz) { s32 retain; retain = CqueueDeleteQueue(&(top->list), topIdx, tgtIdx, sz, ((Word)(&(((SdbmRecEnty *)0)->list)))); return retain;} extern inline s32 SdbmRecsOprNext(SdbmRecEnty* top, s32 topIdx, s32 cur, u32 sz) { s32 next = SdbmRecsOprTopAddr(top, topIdx, cur, sz)->list.frwd; return next;} extern inline s32 SdbmRecsOprPrev(SdbmRecEnty* top, s32 topIdx, s32 cur, u32 sz) { s32 prev = SdbmRecsOprTopAddr(top, topIdx, cur, sz)->list.bkwd; return prev;};

#define SdbmRecsTopAddr(tblH,tgt) SdbmRecsOprTopAddr((tblH)->recs, cSdbmRecIdxMin, tgt, tblH->recSz)

#define SdbmRecsIndex(tblH,tgtP) SdbmRecsOprIndex((tblH)->recs, cSdbmRecIdxMin, tgtP, tblH->recSz)

#define SdbmRecsInit(tblH,tgt) SdbmRecsOprInit((tblH)->recs, cSdbmRecIdxMin, tgt, tblH->recSz)


extern inline SdbmRecIdx
SdbmRecsNextFromFreeList(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmRecsOprNext((tblH)->recs, 1, tgtIdx, tblH->recSz);
    } else {
        pntIdx = tblH->recsContnrAttr->frees;
    }
    return pntIdx;
}

extern inline SdbmRecIdx
SdbmRecsPrevFromFreeList(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmRecsOprPrev((tblH)->recs, 1, tgtIdx, tblH->recSz);
    } else {
        pntIdx = tblH->recsContnrAttr->frees;
    }
    return pntIdx;
}

extern inline void
SdbmRecsInsertToFreeList(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->frees;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        SdbmRecsOprInsert(rec, pntIdx, tgtIdx, tblH->recSz);
    } else {
        tblH->recsContnrAttr->frees = tgtIdx;
    }
}

extern inline void
SdbmRecsAppendToFreeList(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->frees;

    ;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        SdbmRecsOprAppend(rec, pntIdx, tgtIdx, tblH->recSz);
    } else {
        tblH->recsContnrAttr->frees = tgtIdx;
    }
}

extern inline void
SdbmRecsDeleteFromFreeList(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->frees;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmRecIdx delNext;
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        delNext = SdbmRecsOprDelete(rec, pntIdx, tgtIdx, tblH->recSz);
        ;
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            tblH->recsContnrAttr->frees = delNext;
        ;
    }
}

extern inline SdbmRecIdx
SdbmRecsNextFromActive(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmRecsOprNext((tblH)->recs, 1, tgtIdx, tblH->recSz);
    } else {
        pntIdx = tblH->recsContnrAttr->actives;
    }
    ;
    return pntIdx;
}

extern inline SdbmRecIdx
SdbmRecsPrevFromActive(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx;
    if(tgtIdx) {
        pntIdx = SdbmRecsOprPrev((tblH)->recs, 1, tgtIdx, tblH->recSz);
    } else {
        pntIdx = tblH->recsContnrAttr->actives;
    }
    return pntIdx;
}

extern inline void
SdbmRecsInsertToActive(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->actives;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        SdbmRecsOprInsert(rec, pntIdx, tgtIdx, tblH->recSz);
    } else {
        tblH->recsContnrAttr->actives = tgtIdx;
    }
    tblH->recsContnrAttr->numActives ++;
}

extern inline void
SdbmRecsAppendToActive(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->actives;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        SdbmRecsOprAppend(rec, pntIdx, tgtIdx, tblH->recSz);
    } else {
        tblH->recsContnrAttr->actives = tgtIdx;
    }
    tblH->recsContnrAttr->numActives ++;
}

extern inline void
SdbmRecsDeleteFromActive(SdbmTableHandle* tblH, SdbmRecIdx tgtIdx)
{
    SdbmRecIdx pntIdx = tblH->recsContnrAttr->actives;
    if(pntIdx) {
        SdbmRecEnty* rec = ((void *)0);
        SdbmRecIdx delNext;
        SdbmGetRecEntyPtr(tblH, pntIdx, &rec);
        delNext = SdbmRecsOprDelete(rec, pntIdx, tgtIdx, tblH->recSz);
        if(tgtIdx == delNext)
            delNext = 0;
        if(tgtIdx == pntIdx)
            tblH->recsContnrAttr->actives = delNext;
        tblH->recsContnrAttr->numActives --;
    }
}

extern int SdbmExpandRecArea(SdbmTableHandle* tblH, Num newNumRec);
extern int SdbmActiveRec(SdbmTableHandle* tblH, SdbmRecIdx idx, SdbmRecEnty** recP);
extern int SdbmNewRec(SdbmTableHandle* tblH, SdbmRecEnty** recP);
extern int SdbmDelRec(SdbmTableHandle* tblH, SdbmRecEnty* rec);
extern int SdbmGetRecEnty(SdbmTableHandle* tblH, SdbmDataId recId, SdbmRecEnty** recP);
extern Num SdbmListRecInternal(SdbmTableHandle* tblH, Num numRecs, SdbmRecId recs[]);


# 40 "../../src/sdbm.v0/sdbmfldu.c" 2

static int
SdbmFldIdxAtreeBuild(Area arg1st, Sz byteSize, void** pp)
{
    int retVal;
    SdbmTableHandle* tblH;

    ;
    tblH = arg1st.ptr;

    retVal = SdbmUnmapTblPlain(tblH, 5);
    if(((retVal) >= 0)) {
        retVal = SdbmResizeTblPlain(tblH, 5, byteSize);
        if(((retVal) >= 0)) {
            retVal = SdbmMapTblPlain(tblH, 5);
            if(pp) {
                *pp = tblH->indexArea;
            }
        }
    }
    return (retVal);
}

int
SdbmFldIdxInit(SdbmTableHandle* tblH)
{
    int retVal = 0;
    Area arg;

    ;
    retVal = SdbmMapTblPlain(tblH, 1);
    if(((retVal) >= 0)) {
        u32 numFlds = tblH->tableMain->numFlds;
        int i = 0, j;
        Num numTree = numFlds + 1;
        u32 treeIds[numTree];

        treeIds[i++] = 1;
        for(j = 1; j <= numFlds; j++) {
            treeIds[i++] = ((j)-1+2);
        }
        arg.ptr = tblH;
        retVal = AtreeBuildNodeSet(SdbmFldIdxAtreeBuild, arg, numTree, treeIds);
    }
    return (retVal);
}

int
SdbmFldIdxInit2(SdbmTableHandle* tblH)
{
    int retVal = 0;

    ;
    retVal = SdbmMapTblPlain(tblH, 1);
    if(((retVal) >= 0)) {
        u32 numFlds = tblH->tableMain->numFlds;
        int i;
        for(i = 1; i <= numFlds; i++) {
            SdbmFldSpec* fSpec = ((void *)0);
            const SdbmFldTypeInfo* ti;
            retVal = SdbmGetFldSpec(tblH, i, &fSpec);
            if(((retVal) < 0)) {
                break;
            }
            ti = (gSdbmFldTypes[fSpec->fldType]);
            if(ti->hasAtreeIdx) {
                fSpec->fldIndexTree = ((i)-1+2);
            }
        }
    }
    return (retVal);
}

SdbmFldDataIdx
SdbmAllocNewFld(SdbmTableHandle* tblH, SdbmFldBody** fbP)
{
    int retVal = 0;
    SdbmTableFldAttr* fa = tblH->fldsContnrAttr;
    SdbmFldDataIdx idx = 0;
    SdbmFldBody* fb;

    ;
    if((idx = SdbmFldsNextFromFreeList(tblH, 0)) == 0) {
        Num numFlds = fa->numFlds + 1;

        retVal = SdbmResizeTblPlain(tblH, 3, numFlds * sizeof(*fb));
        if(((retVal) >= 0)) {
            fa->numFlds = numFlds;
            idx = numFlds;
            retVal = AdamChangeSubfileParam(tblH->subfiles[3],
                                            tblH->params + 3);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 3);
            }
        }
    } else {
        retVal = SdbmMapTblPlain(tblH, 3);
        if(((retVal) >= 0)) {
            SdbmFldsDeleteFromFreeList(tblH, idx);
            retVal = AdamChangeSubfileParam(tblH->subfiles[3],
                                            tblH->params + 3);

        }
    }
    if(((retVal) >= 0)) {
        SdbmFldsOprInit((tblH)->flds, 1, idx);
        retVal = SdbmGetFldBody(tblH, idx, &fb);
        if(((retVal) >= 0)) {
            retVal = idx;
            *fbP = fb;
        }
    }
    return (retVal);
}
# 175 "../../src/sdbm.v0/sdbmfldu.c"
int
SdbmFldIdxAtreeOpen(Area openArg, Area auxArg, void** pp)
{
    int retVal = 0;
    SdbmTableHandle* tblH;
    ;
    tblH = auxArg.ptr;
    retVal = SdbmMapTblPlain(tblH, 5);
    if(((retVal) >= 0)) {
        retVal = SdbmMapTblPlain(tblH, 3);
        if(((retVal) >= 0)) {
            if(openArg.val) {
                retVal = SdbmMapVarData(&(tblH->common));
            }
            if(((retVal) >= 0)) {
                if(pp) {
                    ;


                    *pp = tblH->indexArea;
                }
            }
        }
    }
    return (retVal);
}

int
SdbmFldIdxAtreeClose(Area openArg, Area auxArg)
{
    int retVal = 0;

    ;


    return (retVal);
}

int
SdbmFldIdxAtreeGrow(Area openArg, Area auxArg, Sz byteSize, void** pp)
{
    int retVal = 0;
    SdbmTableHandle* tblH;

    ;
    tblH = auxArg.ptr;

    retVal = SdbmShiftTblPlainSize(tblH, 5, byteSize);
    if(((retVal) >= 0)) {
        retVal = SdbmMapTblPlain(tblH, 5);
        if(((retVal) >= 0)) {
            if(pp) {
                *pp = tblH->indexArea;
            }
        }
    }
    return (retVal);
}

int
SdbmFldIdxAtreeReduce(Area openArg, Area auxArg, Sz byteSize, void** pp)
{
    int retVal = 0;
    SdbmTableHandle* tblH;

    ;
    tblH = auxArg.ptr;

    retVal = SdbmShiftTblPlainSize(tblH, 5, -byteSize);
    if(((retVal) >= 0)) {
        retVal = SdbmMapTblPlain(tblH, 5);
        if(((retVal) >= 0)) {
            if(pp) {
                *pp = tblH->indexArea;
            }
        }
    }
    return (retVal);
}

int
SdbmFldNameAtreeCompareByName(Area compareArg, Area auxArg,
                               Bool data1IsInternal, Area64 data1, Area64 data2)
{
    SdbmTableHandle* tblH;
    SdbmFldNameIdxData name1;
    SdbmFldNameIdxData name2;
    const Chr* str1;
    const Chr* str2;
    int x;

    ;
    tblH = auxArg.ptr;
    if(data1IsInternal) {
        name1.value = data1;
        str1 = SdbmGetAddrOfVarData(&(tblH->common), name1.x.namePtr);
    } else {
        str1 = data1.ptr;
    }
    name2.value = data2;
    str2 = SdbmGetAddrOfVarData(&(tblH->common), name2.x.namePtr);
    x = SdbmStrcmp(str1, str2);
    ;
    if(x > 0) {
        return (1);
    } else if(x < 0) {
        return ((-1));
    }
    return (0);
}

const AtreeCallbacks sSdbmFldNoByNameOprs = {
    .compareFunc = SdbmFldNameAtreeCompareByName,
    .openFunc = SdbmFldIdxAtreeOpen,
    .closeFunc = SdbmFldIdxAtreeClose,
    .growFunc = SdbmFldIdxAtreeGrow,
    .reduceFunc = SdbmFldIdxAtreeReduce,
};


int
SdbmDumpFldNameNode(SdbmTableHandle* tblH, AtreeIdx node,
                      AtreeIdx pntrs[5], Area64* dataP)
{
    int retVal = 0;
    AtreeReq req;

    ;
    (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
    req.oprs = &sSdbmFldNoByNameOprs;
    req.openArg.val = 1;
    req.auxArg.ptr = tblH;
    retVal = AtreeOpenTree(&req, 1, 0);
    if(((retVal) >= 0)) {
        pntrs[0] = AtreeAboveNode(&req, node);
        pntrs[1] = AtreeLeftNode(&req, node);
        pntrs[2] = AtreeRightNode(&req, node);
        pntrs[3] = AtreePrevNode(&req, node);
        pntrs[4] = AtreeNextNode(&req, node);
        AtreeGetData(&req, node, dataP);
        AtreeCloseTree(&req);
    }
    return (retVal);
}

int
SdbmGetFldSpecByName(SdbmTableHandle* tblH, const Chr* name, SdbmFldSpec** fldSpecP)
{
    int retVal = 0;
    SdbmFldNameIdxData nameData;

    ;
    retVal = SdbmMapTblPlain(tblH, 1);
    if(((retVal) >= 0)) {
        retVal = SdbmMapTblPlain(tblH, 5);
        if(((retVal) >= 0)) {
            retVal = SdbmMapVarData(&(tblH->common));
            if(((retVal) >= 0)) {
                AtreeReq req;
                (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
                req.oprs = &sSdbmFldNoByNameOprs;
                req.openArg.val = 1;
                req.auxArg.ptr = tblH;
                retVal = AtreeOpenTree(&req, 1, 0);
                if(((retVal) >= 0)) {
                    Area64 data;
                    AtreeIdx hit;
                    data.ptrCnst = name;
                    hit = AtreeFindNode(&req, data);
                    if(hit != 0) {
                        AtreeGetData(&req, hit, &(nameData.value));
                        retVal = SdbmGetFldSpec(tblH, nameData.x.fldNo, fldSpecP);
                    } else {
                        LogPut(4, "%s:%$", __FUNCTION__, "No such Field Name [%s]", name);
                        retVal = (-(4158));
                    }
                    AtreeCloseTree(&req);
                }
            }
        }
    }
    return (retVal);
}

int
SdbmSetFldDef(SdbmTableHandle* tblH, SdbmFldDef* fldDef)
{
    int retVal = 0;
    AdamPos x;
    SdbmFldSpec* fSpec;
    SdbmFldSpec* check;
    ;

    if(fldDef->fldType == 0x80) {
        SdbmFldDefLinkInfo li;
        SdbmTableHandle* linkTo;
        li.whole = fldDef->fldAuxType;
        if(li.detail.linkToTable >= tblH->tblNo) {
            LogPut(4, "%s:%$", __FUNCTION__, "Illegal table No For Link Field [%d]",
                   li.detail.linkToTable);
            return ((-(4177)));
        }
        if(li.detail.linkToFldNo <= 0) {
            LogPut(4, "%s:%$", __FUNCTION__, "Illegal field No For Link Field [%d]",
                   li.detail.linkToFldNo);
            return ((-(4178)));
        }
        retVal = SdbmOpenTableByAnotherTable(tblH, li.detail.linkToTable, &linkTo);
        if(((retVal) < 0)) {
            return (retVal);
        }
        retVal = SdbmMapTblPlain(linkTo, 1);
        if(((retVal) < 0)) {
            return (retVal);
        }
        if(li.detail.linkToFldNo <= linkTo->tableMain->numFlds) {
            retVal = SdbmGetFldSpec(linkTo, li.detail.linkToFldNo, &check);
            if(((retVal) >= 0)) {
                if(check->fldType == 0x80) {
                    LogPut(4, "%s:%$", __FUNCTION__, "Multiple Link Field FldNo[%d]",
                           li.detail.linkToFldNo);
                    retVal = (-(4179));
                }
            }
        } else {
            LogPut(4, "%s:%$", __FUNCTION__, "Illegal Fld No For Link Field FldNo[%d]",
                   li.detail.linkToFldNo);
            retVal = (-(4178));
        }
        SdbmUnmapTblPlain(linkTo, 1);
        if(((retVal) < 0)) {
            return (retVal);
        }
    }
    retVal = SdbmGetFldSpec(tblH, fldDef->fldNo, &fSpec);
    if(((retVal) >= 0)) {
        fSpec->fldNo = fldDef->fldNo;
        check = ((void *)0);
        retVal = SdbmGetFldSpecByName(tblH, fldDef->fldName, &check);
        if(retVal == (-(4158))) {
            x = SdbmPutNewString(&(tblH->common), fldDef->fldName);
            if(((x) >= 0)) {
                AtreeReq req;
                (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
                req.oprs = &sSdbmFldNoByNameOprs;
                req.openArg.val = 1;
                req.auxArg.ptr = tblH;
                retVal = AtreeOpenTree(&req, 1, 1);
                if(((retVal) >= 0)) {
                    SdbmFldNameIdxData nameData;
                    AtreeIdx atIdx;
                    nameData.x.namePtr = x;
                    nameData.x.fldNo = fldDef->fldNo;
                    retVal = AtreeNewNode(&req, nameData.value, 0, &atIdx);
                    if(((retVal) >= 0)) {
                        fSpec->fldNamePtr = x;
                        fSpec->fldType = fldDef->fldType;
                        fSpec->fldAuxType = fldDef->fldAuxType;
                        fSpec->fldAttrs = fldDef->fldAttrs;
                        fSpec->fldNameIdx = atIdx;
                        fSpec->fldUserInfo = fldDef->userInfo;
                        fSpec->fldUserInfoPattern = fldDef->userInfoPattern;
                    }
                    AtreeCloseTree(&req);
                }
            }
        } else if(((retVal) >= 0)) {
            LogPut(4, "%s:%$", __FUNCTION__, "Duplication Field Name [%s]", fldDef->fldName);
            retVal = (-(4159));
        }
    }
    return (retVal);
}

extern inline int
SdbmGetRecFromDataIdx(SdbmTableHandle* tblH, SdbmFldSpec* fSpec,
                      SdbmFldDataIdx dataIdx, SdbmFldDataIdx subDataIdx,
                      SdbmDataId* dataIdP)
{
    int retVal = 0;

    ;

    if(fSpec->fldType != 0x80) {
        SdbmFldBody* fld;
        retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
        if(((retVal) >= 0)) {
            SdbmRecEnty* rec;
            retVal = SdbmGetRecEntyPtrWithCheck(tblH, fld->recIdx, &rec);
            if(((retVal) >= 0)) {
                if(dataIdP) {
                    SdbmDataId dataId = rec->recId;
                    dataId.i.tableNo = tblH->tblNo;
                    dataId.i.fldNo = fSpec->fldNo;
                    ;
                    *dataIdP = dataId;
                }
            }
        }
    } else {
        SdbmTableHandle* toTbl = ((void *)0);
        SdbmFldDefLinkInfo liDef;

        liDef.whole = fSpec->fldAuxType;
        retVal = SdbmOpenTableByAnotherTable(tblH, liDef.detail.linkToTable, &toTbl);
        if(((retVal) >= 0)) {
            SdbmLinkedFldInfo* lfi = ((void *)0);

            retVal = SdbmMapTblPlain(toTbl, 6);
            if(((retVal) >= 0)) {
                SdbmGetLinkedFldInfo(toTbl, subDataIdx, &lfi);
                ;
                if(lfi) {
                    ;
                    *dataIdP = lfi->linkFrom;
                }
            }
            SdbmReleaseTableHandle(toTbl, 0);
        }
    }
    return (retVal);
}

int
SdbmSearchData(SdbmTableHandle* tblH, const SdbmQueryCond* query,
               SdbmFldDataIdx* dataIdxP, SdbmDataId* dataP, SdbmFldDataIdx* subDataIdxP)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = query->fldNo;
    ;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        if(fSpec->fldType != 0x80) {
            if(query->condValue.fldType == 0) {
                ti = (gSdbmFldTypes[fSpec->fldType]);
            } else {
                ti = (gSdbmFldTypes[query->condValue.fldType]);
            }
        } else {
            ti = (gSdbmFldTypes[fSpec->fldType]);
        }
        ;
        if((ti) &&
           ((fSpec->fldType == 0x80) ||
            ((ti->fmtType == fSpec->fldType) && (ti->searchData) && (! ti->noneSorted)))) {
            if((query->condType & ti->condMask) != 0) {
                if(ti->searchData != ((void *)0)) {
                    SdbmFldDataIdx dataIdx;
                    SdbmFldDataIdx subDataIdx;
                    ;
                    retVal = (*(ti->searchData))(tblH, fSpec, ti, query, &dataIdx, &subDataIdx);
                    if(((retVal) >= 0) && (retVal == 1)) {
                        retVal = SdbmGetRecFromDataIdx(tblH, fSpec, dataIdx, subDataIdx,
                                                       dataP);
                        if(((retVal) >= 0)) {
                            if(dataIdxP)
                                *dataIdxP = dataIdx;
                            if(subDataIdxP)
                                *subDataIdxP = subDataIdx;
                            retVal = 1;
                        }
                    }
                } else {
                    LogPut(4, "%s:%$", __FUNCTION__, "Illegal Search Target");
                    retVal = (-(4160));
                }
            } else {
                LogPut(4, "%s:%$", __FUNCTION__, "Illegal Querry Condition");
                retVal = (-(4173));
            }
        } else {
            LogPut(4, "%s:%$", __FUNCTION__, "Illegal Search Target");
            retVal = (-(4160));
        }
    }
    return (retVal);
}

int
SdbmKillAllData(SdbmTableHandle* tblH, SdbmDataId dataId)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;
    ;

    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti = (gSdbmFldTypes[fSpec->fldType]);
        SdbmRecEnty* rec = ((void *)0);
        SdbmFldBody* fld;

        retVal = SdbmGetRecEnty(tblH, dataId, &rec);
        if(((retVal) >= 0)) {
            AtreeReq req;
            (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
            if(fSpec->fldIndexTree) {
                req.auxArg.ptr = tblH;
                req.oprs = ti->atreeOprs;
                retVal = AtreeOpenTree(&req, fSpec->fldIndexTree, fSpec->fldIndexTree);
            }
            if(((retVal) >= 0)) {
                SdbmFldDataIdx xi;
                while((xi = SdbmFldsNextFromRec(tblH, rec, fldNo, 0))) {
                    retVal = SdbmGetFldBody(tblH, xi, &fld);
                    if(((retVal) >= 0)) {
                        if(fSpec->fldIndexTree) {




                            retVal = AtreeDelNodeByIdx(&req, fld->indexNode);
                        }
                        if(((retVal) >= 0)) {
                            retVal = (*(ti->killData))(tblH, fSpec, &(fld->content));
                            if(((retVal) >= 0)) {
                                SdbmFldsDeleteFromRec(tblH, rec, fldNo, xi);
                                SdbmFldsOprInit((tblH)->flds, 1, xi);
                                SdbmFldsAppendToFreeList(tblH, xi);
                                SdbmFldsSortDeleteFromRec(tblH, rec, fldNo, xi);
                                SdbmFldsSortOprInit((tblH)->flds, 1, xi);
                            }
                        }
                    }
                    if(((retVal) < 0)) {
                        break;
                    }
                }
                if(fSpec->fldIndexTree) {
                    AtreeCloseTree(&req);
                }
                SdbmUpdateLogClear(tblH, rec, fSpec);
            }
        }
    }
    return (retVal);
}

int
SdbmKillData(SdbmTableHandle* tblH, SdbmDataId dataId, SdbmVecFldIdx vecIdx)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;
    ;

    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti = (gSdbmFldTypes[fSpec->fldType]);
        SdbmRecEnty* rec;
        SdbmFldBody* fld;

        retVal = SdbmGetRecEnty(tblH, dataId, &rec);
        if(((retVal) >= 0)) {
            SdbmFldDataIdx xi;
            SdbmFldDataIdx di = SdbmGetFldWithVecIdx(tblH, rec, fldNo, vecIdx, &xi);
            if(((di) >= 0)) {
                if(di != 0) {
                    retVal = SdbmGetFldBody(tblH, di, &fld);
                    if(((retVal) >= 0)) {
                        AtreeReq req;
                        (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
                        if(fSpec->fldIndexTree) {
                            req.auxArg.ptr = tblH;
                            req.oprs = ti->atreeOprs;
                            retVal = AtreeOpenTree(&req, fSpec->fldIndexTree, fSpec->fldIndexTree);
                        }
                        if(((retVal) >= 0)) {
                            if(fSpec->fldIndexTree) {
                                retVal = AtreeDelNodeByIdx(&req, fld->indexNode);
                                AtreeCloseTree(&req);
                            }
                            retVal = (*(ti->killData))(tblH, fSpec, &(fld->content));
                            if(((retVal) >= 0)) {
                                SdbmFldsDeleteFromRec(tblH, rec, fldNo, di);
                                SdbmFldsOprInit((tblH)->flds, 1, di);
                                SdbmFldsAppendToFreeList(tblH, di);
                                SdbmFldsSortDeleteFromRec(tblH, rec, fldNo, di);
                                SdbmFldsSortOprInit((tblH)->flds, 1, di);
                            }
                            SdbmUpdateLogErase(tblH, rec, fSpec, vecIdx);
                        }
                    }
                }
            } else {
                retVal = di;
            }
        }
    }
    return (retVal);
}

int
SdbmSetData(SdbmTableHandle* tblH, SdbmDataId dataId, SdbmFldRef* tgtDataP)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;
    SdbmFldRef tgtData = *tgtDataP;
    s32 fType = tgtData.fldType;

    ;
    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        SdbmRecEnty* rec;
        AtreeReq req;
        if(fType == 0) {
            fType = fSpec->fldType;
        }
        ti = (gSdbmFldTypes[fType]);
        (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
        if(fSpec->fldIndexTree) {
            req.auxArg.ptr = tblH;
            req.oprs = ti->atreeOprs;
            retVal = AtreeOpenTree(&req, fSpec->fldIndexTree, 0);
        }
        if(((retVal) >= 0)) {
            retVal = SdbmGetRecEnty(tblH, dataId, &rec);
            if(((retVal) >= 0)) {
                SdbmFldDataIdx di = 0, new = 0, insIdx = 0;
                SdbmVecFldIdx vi = tgtData.vecIdx;
                SdbmFldBody* fld;
                if(vi) {
                    di = SdbmGetFldWithVecIdx(tblH, rec, fldNo, vi, &insIdx);
                } else {
                    vi = SdbmGetNewVecIdx(tblH, rec, fldNo, &insIdx);
                }
                ;
                if(! di) {
                    di = new = SdbmAllocNewFld(tblH, &fld);
                    if(((di) >= 0)) {
                        SdbmFldsOprInit((tblH)->flds, 1, di);
                        fld->recIdx = dataId.i.recIdx;
                        fld->fldNo = fldNo;
                        fld->vectorIdx = vi;
                        ;
                    } else {
                        retVal = di;
                    }
                } else {
                    retVal = SdbmGetFldBody(tblH, di, &fld);
                    if(((retVal) >= 0)) {
                        retVal = (*(ti->compareDataExternal))(tblH, fSpec, &tgtData, di);
                        ;
                        if(((retVal) >= 0)) {
                            if(retVal == 2) {
                                if(fSpec->fldIndexTree) {
                                    AtreeCloseTree(&req);
                                }
                                if(new) {
                                    SdbmFldsAppendToFreeList(tblH, new);
                                }
                                return (retVal);
                            }
                            if(retVal != 2) {


                                if(fSpec->fldIndexTree) {
                                    retVal = AtreeDelNodeByIdx(&req, fld->indexNode);
                                }
                                if(((retVal) >= 0)) {
                                    retVal = (*(ti->killData))(tblH, fSpec, &(fld->content));
                                }
                                SdbmFldsSortDeleteFromRec(tblH, rec, fldNo, di);
                            }
                        }
                    }
                }
                if(((retVal) >= 0)) {
                    SdbmFldIdxData idxData;
                    if(fSpec->fldIndexTree) {
                        AtreeCloseTree(&req);
                    }
                    retVal = (*(ti->makeData))(tblH, &tgtData, fSpec, dataId, di,
                                               &(fld->content), &idxData);
                    ;
                    if(((retVal) >= 0)) {
                        if(fSpec->fldIndexTree) {
                            (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
                            req.auxArg.ptr = tblH;
                            req.oprs = ti->atreeOprs;
                            retVal = AtreeOpenTree(&req, fSpec->fldIndexTree, fSpec->fldIndexTree);
                            if(((retVal) >= 0)) {
                                retVal = AtreeNewNode(&req, idxData.value, 1,
                                                      &(fld->indexNode));
                            }
                        }
                    }
                    if(((retVal) >= 0)) {
                        if(insIdx) {
                            SdbmFldBody* fldx = ((void *)0);
                            retVal = SdbmGetFldBody(tblH, insIdx, &fldx);
                            if(((retVal) >= 0)) {
                                SdbmFldDataIdx sortTop;
                                SdbmUpdateLogSet(tblH, rec, fSpec, fld);
                                if(new) {
                                    if(fldx->vectorIdx < vi) {
                                        SdbmFldsOprInsert(fldx, insIdx, di);
                                    } else {
                                        SdbmFldsOprAppend(fldx, insIdx, di);
                                    }





                                    rec->fldPtrs[fldNo-1].numElms ++;
                                }
                                ;
                                if(rec->fldPtrs[fldNo-1].vecIdxList == insIdx) {
                                    ;

                                    if(fldx->vectorIdx > vi) {
                                        rec->fldPtrs[fldNo-1].vecIdxList = di;
                                    }
                                }
                                SdbmFldsSortOprInit((tblH)->flds, 1, di);
                                sortTop = SdbmFldsSortNextFromRec(tblH, rec, fldNo, 0);
                                ;
                                if(sortTop) {
                                    insIdx = sortTop;
                                    do {
                                        int cc = (*(ti->compareDataInternal))(tblH, di, insIdx);
                                        ;
                                        if(cc == 3) {
                                            insIdx = SdbmFldsSortNextFromRec(tblH, rec, fldNo,
                                                                             insIdx);
                                        } else {
                                            break;
                                        }
                                    } while (sortTop != insIdx);
                                    SdbmGetFldBody(tblH, insIdx, &fldx);
                                    SdbmFldsSortOprAppend(fldx, insIdx, di);
                                    ;
                                } else {
                                    SdbmFldsSortInsertToRec(tblH, rec, fldNo, di);
                                }
                            }
                        } else {
                            rec->fldPtrs[fldNo-1].vecIdxList = di;
                            rec->fldPtrs[fldNo-1].sortedList = di;
                            rec->fldPtrs[fldNo-1].numElms ++;
                            SdbmUpdateLogSet(tblH, rec, fSpec, fld);
                            SdbmFldsSortOprInit((tblH)->flds, 1, di);
                        }
                        fld->modifyTime = AtimeGet();
                    } else {
                        if(new) {
                            SdbmFldsAppendToFreeList(tblH, new);
                        }
                    }
                }
            }
            if(fSpec->fldIndexTree) {
                AtreeCloseTree(&req);
            }
        }
    }
    if(((retVal) < 0)) {
        LogPut(4, "SdbmSetData: failed(%d) in Table(%u) Record(0x%x,0x%x) Field(%u)\n",
               retVal, tblH->tblNo, dataId.i.recIdx, dataId.i.revision, fldNo);
    }
    return (retVal);
}

int
SdbmGetDatas(SdbmTableHandle* tblH, SdbmDataId dataId,
             Num numDataAreas, SdbmFldRef fldDatas[], Bool insideAllocation)
{
    Num retVal = 0;
    s32 maxIdx = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;

    ;
    (__extension__ (__builtin_constant_p (sizeof(SdbmFldRef) * numDataAreas) && (sizeof(SdbmFldRef) * numDataAreas) <= 16 ? ((sizeof(SdbmFldRef) * numDataAreas) == 1 ? ({ void *__s = (fldDatas); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (fldDatas); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(SdbmFldRef) * numDataAreas)) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (fldDatas); __builtin_memset (__s, '\0', sizeof(SdbmFldRef) * numDataAreas); __s; }) : memset (fldDatas, 0, sizeof(SdbmFldRef) * numDataAreas))));
    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti = (gSdbmFldTypes[fSpec->fldType]);
        SdbmRecEnty* rec;

        if(insideAllocation) {
            ti = (gSdbmFldTypes[fSpec->fldType]);
        } else {
            int ft = fldDatas[0].fldType;
            ti = (gSdbmFldTypes[((ft) & 0xFF)]);
            if(! ti) {
                ti = (gSdbmFldTypes[fSpec->fldType]);
            } else if(ti->fmtType != fSpec->fldType) {
                retVal = (-(4160));
            }
        }
        if(((retVal) >= 0)) {
            retVal = SdbmGetRecEnty(tblH, dataId, &rec);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 3);
                if(((retVal) >= 0)) {
                    SdbmFldDataIdx dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
                    if(insideAllocation) {
                        (__extension__ (__builtin_constant_p (sizeof(*fldDatas)*numDataAreas) && (sizeof(*fldDatas)*numDataAreas) <= 16 ? ((sizeof(*fldDatas)*numDataAreas) == 1 ? ({ void *__s = (fldDatas); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (fldDatas); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(*fldDatas)*numDataAreas)) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (fldDatas); __builtin_memset (__s, '\0', sizeof(*fldDatas)*numDataAreas); __s; }) : memset (fldDatas, 0, sizeof(*fldDatas)*numDataAreas))));
                    }
                    if(dataIdx) {
                        SdbmFldDataIdx topIdx = dataIdx;
                        do {
                            SdbmFldBody* fld = ((void *)0);
                            retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
                            if(((retVal) >= 0)) {
                                if(fld->vectorIdx <= numDataAreas) {
                                    SdbmFldRef* fRef;
                                    fRef = fldDatas + ((fld->vectorIdx)-1);
                                    fRef->vecIdx = fld->vectorIdx;
                                    fRef->fldType = fSpec->fldType;
                                    retVal = (*(ti->storeData))(tblH, fSpec, &(fld->content),
                                                                fRef, insideAllocation);
                                    if(((retVal) >= 0)) {
                                        if(maxIdx < fld->vectorIdx) {
                                            maxIdx = fld->vectorIdx;
                                        }
                                    }
                                }
                            }
                            if(((retVal) < 0)) {
                                break;
                            }
                            dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
                        } while(topIdx != dataIdx);
                        if(((retVal) >= 0)) {
                            retVal = maxIdx;
                        }
                    } else {
                        retVal = 0;
                    }
                }
            }
        }
    }
    return (retVal);
}

int
SdbmGetAData(SdbmTableHandle* tblH, SdbmDataId dataId,
             SdbmVecFldIdx vecIdx, SdbmFldRef* fldData, Bool insideAllocation)
{
    Num retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;

    ;
    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        SdbmRecEnty* rec;

        if(insideAllocation) {
            ti = (gSdbmFldTypes[fSpec->fldType]);
        } else {
            int ft = fldData->fldType;
            ti = (gSdbmFldTypes[((ft) & 0xFF)]);
            if(! ti) {
                ti = (gSdbmFldTypes[fSpec->fldType]);
            } else if(ti->fmtType != fSpec->fldType) {
                retVal = (-(4160));
            }
        }
        if(((retVal) >= 0)) {
            retVal = SdbmGetRecEnty(tblH, dataId, &rec);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 3);
                if(((retVal) >= 0)) {
                    SdbmFldDataIdx dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
                    if(insideAllocation) {
                        (__extension__ (__builtin_constant_p (sizeof(*fldData)) && (sizeof(*fldData)) <= 16 ? ((sizeof(*fldData)) == 1 ? ({ void *__s = (fldData); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (fldData); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(*fldData))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (fldData); __builtin_memset (__s, '\0', sizeof(*fldData)); __s; }) : memset (fldData, 0, sizeof(*fldData)))));
                    } else {
                        fldData->vecIdx = 0;
                    }
                    if(dataIdx) {
                        SdbmFldBody* fld = ((void *)0);
                        if(vecIdx > 0) {
                            SdbmFldDataIdx topIdx = dataIdx;
                            do {
                                retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
                                if(((retVal) >= 0)) {
                                    if(fld->vectorIdx == vecIdx) {
                                        fldData->vecIdx = fld->vectorIdx;
                                        fldData->fldType = fSpec->fldType;
                                        retVal = (*(ti->storeData))(tblH, fSpec, &(fld->content),
                                                                    fldData, insideAllocation);
                                        if(((retVal) >= 0)) {
                                            retVal = 1;
                                        }
                                        break;
                                    }
                                }
                                if(((retVal) < 0)) {
                                    break;
                                }
                                dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
                            } while(topIdx != dataIdx);

                        } else {
                            retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
                            if(((retVal) >= 0)) {
                                fldData->vecIdx = fld->vectorIdx;
                                fldData->fldType = fSpec->fldType;
                                retVal = (*(ti->storeData))(tblH, fSpec, &(fld->content),
                                                            fldData, insideAllocation);
                                if(((retVal) >= 0)) {
                                    retVal = 1;
                                }
                            }
                        }
                    } else {
                        retVal = 0;
                    }
                }
            }
        }
    }
    return (retVal);
}

int
SdbmInquiryDatas(SdbmTableHandle* tblH, const SdbmQueryCond* query,
                 SdbmDataId dataId)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo;
    ;

    fldNo = query->fldNo;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        if(fSpec->fldType != 0x80) {
            if(query->condValue.fldType == 0) {
                ti = (gSdbmFldTypes[fSpec->fldType]);
            } else {
                ti = (gSdbmFldTypes[query->condValue.fldType]);
            }
        } else {
            ti = (gSdbmFldTypes[fSpec->fldType]);
        }
        if((query->condType & ti->condMask) && (ti->inquiryData) && (! ti->noneSorted)) {
            SdbmRecEnty* rec = ((void *)0);
            ;
            retVal = SdbmGetRecEnty(tblH, dataId, &rec);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 3);
                if(((retVal) >= 0)) {
                    SdbmFldDataIdx dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
                    ;
                    if(dataIdx) {
                        SdbmFldDataIdx topIdx = dataIdx;
                        do {
                            ;
                            retVal = (*(ti->inquiryData))(tblH, ti, fSpec, query, dataIdx);
                            if(((retVal) < 0)) {
                                break;
                            } else if(retVal == 1) {
                                break;
                            }
                            dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
                        } while(topIdx != dataIdx);
                    } else {
                        retVal = 0;
                    }
                }
            }
        } else {
            retVal = (-(4173));
        }
    }
    return (retVal);
}

int
SdbmNextQueryData(SdbmTableHandle* tblH, Num numQueries, const SdbmQueryCond* query,
                  SdbmDataId fromId, SdbmFldDataIdx fromDataIdx, SdbmFldDataIdx subDataIdx,
                  SdbmDataId* nextIdP, SdbmFldDataIdx* nextDataIdxP,
                  SdbmFldDataIdx* nextSubDataIdxP)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo;
    SdbmFldDataIdx nextIdx;
    SdbmFldDataIdx nextSubIdx;
    ;

    fldNo = fromId.i.fldNo;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    ;
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        if(fSpec->fldType != 0x80) {
            if(query->condValue.fldType == 0) {
                ti = (gSdbmFldTypes[fSpec->fldType]);
            } else {
                ti = (gSdbmFldTypes[query->condValue.fldType]);
            }
        } else {
            ti = (gSdbmFldTypes[fSpec->fldType]);
        }
        if((query->condType & ti->condMask) && (ti->nextData) && (! ti->noneSorted)) {
            SdbmRecEnty* rec;
            retVal = SdbmGetRecEnty(tblH, fromId, &rec);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 3);
                if(((retVal) >= 0)) {
                    for(;;) {
                        retVal = (*(ti->nextData))(tblH, ti, query, fSpec, fromDataIdx,
                                                   &nextIdx, subDataIdx, &nextSubIdx);
                        ;
                        if(retVal == 1) {
                            retVal = SdbmGetRecFromDataIdx(tblH, fSpec, nextIdx, nextSubIdx,
                                                           nextIdP);
                            if(((retVal) >= 0)) {
                                if(nextDataIdxP) {
                                    *nextDataIdxP = nextIdx;
                                }
                                if(nextSubDataIdxP) {
                                    *nextSubDataIdxP = nextSubIdx;
                                }
                                retVal = 1;
                            }
                        }
                        break;
                    }
                }
            }
        } else {
            retVal = (-(4173));
        }
    }
    return (retVal);
}

int
SdbmCompareDataInternal(SdbmTableHandle* tblH, SdbmFldNo fldNo,
                        SdbmFldDataIdx data1, SdbmFldDataIdx data2)
{
    int retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    ;

    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti = (gSdbmFldTypes[fSpec->fldType]);
        retVal = (*(ti->compareDataInternal))(tblH, data1, data2);
    }
    return (retVal);
}

extern const SdbmFldTypeInfo gSdbmFldTypeNumeric;
extern const SdbmFldTypeInfo gSdbmFldTypeStr;
extern const SdbmFldTypeInfo gSdbmFldTypeEnum;
extern const SdbmFldTypeInfo gSdbmFldTypeEnumVal;
extern const SdbmFldTypeInfo gSdbmFldTypeEnumName;
extern const SdbmFldTypeInfo gSdbmFldTypeLink;
extern const SdbmFldTypeInfo gSdbmFldTypeOpaque;

const SdbmFldTypeInfo* gSdbmFldTypes[255 +1] = {
    [0x01] = &gSdbmFldTypeNumeric,
    [0x02] = &gSdbmFldTypeStr,
    [0x10] = &gSdbmFldTypeEnum,
    [0x11] = &gSdbmFldTypeEnumVal,
    [0x12] = &gSdbmFldTypeEnumName,
    [0x80] = &gSdbmFldTypeLink,
    [0x30] = &gSdbmFldTypeOpaque,
};

int
SdbmGetFldBodyByFldNo(SdbmTableHandle* tblH, SdbmDataId dataId,
                      SdbmVecFldIdx vecIdx, SdbmFldBody** fldBodyP)
{
    Num retVal = 0;
    SdbmFldSpec* fSpec = ((void *)0);
    SdbmFldNo fldNo = dataId.i.fldNo;

    ;
    dataId.i.fldNo = 0;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        SdbmRecEnty* rec;
        retVal = SdbmGetRecEnty(tblH, dataId, &rec);
        if(((retVal) >= 0)) {
            retVal = SdbmMapTblPlain(tblH, 3);
            if(((retVal) >= 0)) {
                SdbmFldDataIdx dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, 0);
                if(dataIdx) {
                    SdbmFldBody* fld = ((void *)0);
                    if(vecIdx > 0) {
                        SdbmFldDataIdx topIdx = dataIdx;
                        do {
                            retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
                            if(((retVal) >= 0)) {
                                if(fld->vectorIdx == vecIdx) {
                                    *fldBodyP = fld;
                                    break;
                                }
                                fld = ((void *)0);
                            } else {
                                break;
                            }
                            dataIdx = SdbmFldsNextFromRec(tblH, rec, fldNo, dataIdx);
                        } while(topIdx != dataIdx);
                        if(! fld) {
                            LogPut(4, "%s:%$", __FUNCTION__, "No such data");
                            retVal = (-(4161));
                        }
                    } else {
                        retVal = SdbmGetFldBody(tblH, dataIdx, &fld);
                        if(((retVal) >= 0)) {
                            *fldBodyP = fld;
                        }
                    }
                } else {
                    LogPut(4, "%s:%$", __FUNCTION__, "No such data");
                    retVal = (-(4161));
                }
            }
        }
    }
    return (retVal);
}

int
SdbmOpenTreeForFldName(SdbmTableHandle* tblH, AtreeReq* req)
{
    int retVal = 0;

    ;
    (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (req, 0, sizeof(req)))));
    req->oprs = &sSdbmFldNoByNameOprs;
    req->auxArg.ptr = tblH;
    retVal = AtreeOpenTree(req, 1, 0);
    return (retVal);
}

int
SdbmOpenTreeForFld(SdbmTableHandle* tblH, SdbmFldNo fldNo, AtreeReq* req)
{
    int retVal = 0;

    ;
    (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (req, 0, sizeof(req)))));
    req->oprs = &sSdbmFldNoByNameOprs;
    req->auxArg.ptr = tblH;
    retVal = AtreeOpenTree(req, ((fldNo)-1+2), 0);
    return (retVal);
}

SdbmFldDataIdx
SdbmAllocNewLinkedInfo(SdbmTableHandle* tblH, SdbmLinkedFldInfo** lfiP)
{
    int retVal = 0;
    SdbmLinkedFldInfoAttr* lfa = tblH->linkedFldsAttr;
    SdbmFldDataIdx idx = 0;
    SdbmLinkedFldInfo* lfi = ((void *)0);

    ;
    if((idx = SdbmLinkedFldsNextFromFreeList(tblH, 0)) == 0) {
        Num numLinked = lfa->numLinked + 1;

        retVal = SdbmResizeTblPlain(tblH, 6,
                                    numLinked * sizeof(*lfi));
        if(((retVal) >= 0)) {
            lfa->numLinked = numLinked;
            idx = numLinked;
            retVal = AdamChangeSubfileParam(tblH->subfiles[6],
                                            tblH->params + 6);
            if(((retVal) >= 0)) {
                retVal = SdbmMapTblPlain(tblH, 6);
            }
        }
    } else {
        retVal = SdbmMapTblPlain(tblH, 6);
        if(((retVal) >= 0)) {
            SdbmLinkedFldsDeleteFromFreeList(tblH, idx);
            do {if(!(tblH->linkedFldsAttr->freeList != idx)) AxisAbort("%s:%$\n", "tblH->linkedFldsAttr->freeList != idx", "freeList=0x%x idx=0x%x\n", tblH->fldsContnrAttr->freeList, idx);} while(0);

            retVal = AdamChangeSubfileParam(tblH->subfiles[6],
                                            tblH->params + 6);
        }
    }
    if(((retVal) >= 0)) {
        SdbmLinkedFldsOprInit((tblH)->linkedFlds, 1, idx);
        retVal = SdbmGetLinkedFldInfo(tblH, idx, &lfi);
        if(((retVal) >= 0)) {
            do {if(!((lfi->list.bkwd == idx) && (lfi->list.frwd == idx))) AxisAbort("%s:%$\n", "(lfi->list.bkwd == idx) && (lfi->list.frwd == idx)", "idx=0x%x (0x%x, 0x%x)\n", idx, lfi->list.bkwd, lfi->list.frwd);} while(0);

            retVal = idx;
        }
    }
    if(lfiP) {
        *lfiP = lfi;
    }
    return (retVal);
}

SdbmFldDataIdx
SdbmNewLinkInfo(SdbmTableHandle* fromTblH, SdbmFldDataIdx fromData,
                SdbmDataId linkFrom, SdbmDataId linkTo)
{
    int retVal;
    SdbmTableHandle* toTblH = ((void *)0);
    SdbmLinkedFldInfo* lfi = ((void *)0);

    ;
    retVal = SdbmOpenTableByAnotherTable(fromTblH, linkTo.i.tableNo, &toTblH);
    if(((retVal) >= 0)) {
        SdbmRecEnty* toRec = ((void *)0);
        retVal = SdbmGetRecEntyPtrWithCheck(toTblH, linkTo.i.recIdx, &toRec);
        if(((retVal) >= 0)) {
            SdbmRecEnty* r = ((void *)0);
            int check;
            check = SdbmGetRecEnty(fromTblH, linkFrom, &r);
            if(((check) >= 0)) {
                check = SdbmGetRecEnty(toTblH, linkTo, &r);
                if(((check) < 0)) {
                    LogPut(1, "Illegal linkTo record=0x%llx\n", linkTo);
                }
            } else {
                LogPut(1, "Illegal linkFrom record=0x%llx\n", linkFrom);
            }
            retVal = check;
            if(((retVal) >= 0)) {
            retVal = SdbmAllocNewLinkedInfo(toTblH, &lfi);
            if(((retVal) >= 0)) {
                SdbmFldDataIdx li = retVal;

                SdbmLinkedFldsAppendToRec(toTblH, toRec, linkTo.i.fldNo, li);




                lfi->linkFrom.external = 0LL;
                lfi->linkFrom.i.tableNo = fromTblH->tblNo;
                lfi->linkFrom.i.recIdx = linkFrom.i.recIdx;
                lfi->linkFrom.i.revision = linkFrom.i.revision;
                lfi->linkFrom.i.fldNo = linkFrom.i.fldNo;

                lfi->linkTo.external = 0LL;
                lfi->linkTo.i.tableNo = toTblH->tblNo;
                lfi->linkTo.i.recIdx = linkTo.i.recIdx;
                lfi->linkTo.i.revision = linkTo.i.revision;
                lfi->linkTo.i.fldNo = linkTo.i.fldNo;

                    do {if(!(toTblH->linkedFldsAttr->freeList != li)) AxisAbort("%s:%$\n", "toTblH->linkedFldsAttr->freeList != li", "freeList=0x%x idx=0x%x\n", toTblH->fldsContnrAttr->freeList, li);} while(0);

                }
            }
        }
        SdbmReleaseTableHandle(toTblH, 1);
    }
    return (retVal);
}

int
SdbmDelLinkedInfo(SdbmTableHandle* tblH, SdbmFldDataIdx idx)
{
    int retVal = 0;
    SdbmLinkedFldInfo* lfi;
    SdbmRecEnty* rec = ((void *)0);
    ;

    retVal = SdbmMapTblPlain(tblH, 6);
    if(((retVal) >= 0)) {
        retVal = SdbmGetLinkedFldInfo(tblH, idx, &lfi);
        if(((retVal) >= 0)) {
            retVal = SdbmGetRecEnty(tblH, lfi->linkTo, &rec);
            if(((retVal) >= 0)) {
                ;






                SdbmLinkedFldsDeleteFromRec(tblH, rec, lfi->linkTo.i.fldNo, idx);
                ;


                SdbmLinkedFldsOprInit((tblH)->linkedFlds, 1, idx);
                ;


                SdbmLinkedFldsAppendToFreeList(tblH, idx);
                ;






                retVal = AdamChangeSubfileParam(tblH->subfiles[6],
                                                tblH->params + 6);
                if(((retVal) >= 0)) {
                if(rec->attrs.v.deleted) {
                    retVal = SdbmDelRec(tblH, rec);
                    }
                }
            }
        }
    }
    return (retVal);
}

int
SdbmGetMinAndMaxFldElm(SdbmTableHandle* tblH, SdbmRecEnty* rec, SdbmFldNo fldNo,
                       SdbmFldDataIdx* minP, SdbmFldDataIdx* maxP,
                       SdbmTableHandle** forLinkTblP, SdbmFldNo* fldNoP)
{
    SdbmFldDataIdx min = 0, max = 0;
    int retVal = 0;
    SdbmFldSpec* fSpec;

    ;

    ;
    retVal = SdbmGetFldSpec(tblH, fldNo, &fSpec);
    if(((retVal) >= 0)) {
        if(fSpec->fldType == 0x80) {
            SdbmFldRef fRef;
            SdbmDataId recId;
            recId = rec->recId;
            recId.i.fldNo = fldNo;
            ;
            retVal = SdbmGetAData(tblH, recId, 1, &fRef, 1);
            if(((retVal) >= 0)) {
                SdbmTableHandle* toTblH = ((void *)0);
                SdbmFldDefLinkInfo liDef;

                liDef.whole = fSpec->fldAuxType;
                recId.external = fRef.v.recId;
                retVal = SdbmOpenTableByAnotherTable(tblH, liDef.detail.linkToTable, &toTblH);
                if(((retVal) >= 0)) {
                    retVal = SdbmGetRecEnty(toTblH, recId, &rec);
                    if(((retVal) >= 0)) {
                        tblH = toTblH;
                        fldNo = recId.i.fldNo;
                    }
                }

            }
        }
        if(((retVal) >= 0)) {
            retVal = SdbmMapTblPlain(tblH, 3);
            if(((retVal) >= 0)) {
                min = SdbmFldsSortNextFromRec(tblH, rec, fldNo, 0);
                if(min > 0) {
                    max = SdbmFldsSortPrevFromRec(tblH, rec, fldNo, min);
                }
            }
        }
    }
    if(minP)
        *minP = min;
    if(maxP)
        *maxP = max;
    if(forLinkTblP)
        *forLinkTblP = tblH;
    if(fldNoP)
        *fldNoP = fldNo;
    return (retVal);
}

int
SdbmFindEdgeData(SdbmTableHandle* tblH, SdbmFldSpec* fSpec, Bool lowerEdge, SdbmFldElmPtr* elmP)
{
    int retVal = 0;
    SdbmTableHandle* origTblH = tblH;
    SdbmFldSpec* origSpec = fSpec;
    SdbmFldDataIdx targetData = 0;
    SdbmRecId retRec = 0LL;
    SdbmVecFldIdx retVecIdx = 0;
    SdbmFldBody* target = ((void *)0);
    SdbmTableHandle* toTblH = ((void *)0);

    ;

    if(fSpec->fldType == 0x80) {
        SdbmFldDefLinkInfo liDef;

        liDef.whole = fSpec->fldAuxType;
        retVal = SdbmOpenTableByAnotherTable(tblH, liDef.detail.linkToTable, &toTblH);
        if(((retVal) >= 0)) {
            retVal = SdbmGetFldSpec(toTblH, liDef.detail.linkToFldNo, &fSpec);
            if(((retVal) >= 0)) {
                tblH = toTblH;
            }
        }
    }
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        ti = (gSdbmFldTypes[fSpec->fldType]);
        if((ti) && (ti->fmtType == fSpec->fldType) && (ti->searchData) && (! ti->noneSorted)) {
            AtreeReq req;

            (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
            req.auxArg.ptr = tblH;
            req.oprs = ti->atreeOprs;
            retVal = AtreeOpenTree(&req, fSpec->fldIndexTree, 0);
            if(((retVal) >= 0)) {
                AtreeIdx node;
                SdbmFldIdxData nodeData;
                if(lowerEdge) {
                    node = AtreeNextNode(&req, 0);
                } else {
                    node = AtreePrevNode(&req, 0);
                }
                if(node != 0) {
                    AtreeGetData(&req, node, &(nodeData.value));
                    targetData = nodeData.val.fld;
                    retVal = SdbmGetFldBody(tblH, targetData, &target);
                }
                AtreeCloseTree(&req);
            }
        }
    }
    if(((retVal) >= 0) && (target != ((void *)0))) {
        SdbmDataId dataId;
        SdbmFldDataIdx subDataIdx = 0;
        dataId.external = 0LL;
        retVecIdx = target->vectorIdx;

        if(origSpec->fldType == 0x80) {
            retVal = SdbmMapTblPlain(tblH, 6);
            if(((retVal) >= 0)) {
                SdbmRecEnty* toRec = ((void *)0);
                retVal = SdbmGetRecEntyPtr(tblH, target->recIdx, &toRec);
                if(((retVal) >= 0)) {
                    SdbmFldDataIdx li = 0;
                    SdbmFldDataIdx liTop = 0;
                    SdbmTableNo origTblNo = origTblH->tblNo;
                    SdbmFldNo origFldNo = origSpec->fldNo;
                    SdbmFldNo toFldNo = fSpec->fldNo;

                    liTop = li = SdbmLinkedFldsNextFromRec(tblH, toRec, toFldNo, 0);
                    if(liTop) do {
                        SdbmLinkedFldInfo* lfi = ((void *)0);
                        SdbmGetLinkedFldInfo(tblH, li, &lfi);
                        if((lfi->linkFrom.i.tableNo == origTblNo) &&
                           (lfi->linkFrom.i.fldNo == origFldNo)) {
                            subDataIdx = li;
                        }
                        li = SdbmLinkedFldsNextFromRec(tblH, toRec, toFldNo, li);
                    } while (li != liTop);
                }
            }
        }
        retVal = SdbmGetRecFromDataIdx(origTblH, origSpec, targetData, subDataIdx, &dataId);
        retRec = dataId.external;
    }
    if(toTblH) {
        SdbmReleaseTableHandle(toTblH, 1);
    }
    elmP->record = retRec;
    elmP->vecIdx = retVecIdx;
    return (retVal);
}

int
SdbmListData(SdbmTableHandle* tblH, SdbmFldSpec* fSpec,
             SdbmRecId recs[], Num numRecs, Num* realRecs,
             SdbmFldElmPtr allList[], Num numAll, Num* realAll,
             SdbmFldElmPtr uniqList[], Num numUniq, Num* realUniq)
{
    int retVal = 0;
    SdbmFldSpec* origSpec = fSpec;
    SdbmTableHandle* origTblH = tblH;
    SdbmTableHandle* toTblH = ((void *)0);
    Num idxRec=0, idxAll=0, idxUniq=0;

    static int GetDataId(SdbmFldBody* target, SdbmFldDataIdx targetData, SdbmDataId* dataIdP) {
        int retCode = 0;
        SdbmDataId dataId;
        SdbmFldDataIdx subDataIdx = 0;

        ;
        dataId.external = 0LL;
        retCode = SdbmMapTblPlain(tblH, 6);
        if(((retCode) >= 0)) {
            SdbmRecEnty* toRec = ((void *)0);
            retCode = SdbmGetRecEntyPtr(tblH, target->recIdx, &toRec);
            if(((retCode) >= 0)) {
                SdbmFldDataIdx li = 0;
                SdbmFldDataIdx liTop = 0;
                SdbmTableNo origTblNo = origTblH->tblNo;
                SdbmFldNo origFldNo = origSpec->fldNo;
                SdbmFldNo toFldNo = fSpec->fldNo;

                liTop = li = SdbmLinkedFldsNextFromRec(tblH, toRec, toFldNo, 0);
                if(liTop) do {
                    SdbmLinkedFldInfo* lfi = ((void *)0);
                    SdbmGetLinkedFldInfo(tblH, li, &lfi);
                    if((lfi->linkFrom.i.tableNo == origTblNo) &&
                       (lfi->linkFrom.i.fldNo == origFldNo)) {
                        subDataIdx = li;
                    }
                    li = SdbmLinkedFldsNextFromRec(tblH, toRec, toFldNo, li);
                } while (li != liTop);
            }
        }
        retVal = SdbmGetRecFromDataIdx(origTblH, origSpec, targetData, subDataIdx, &dataId);
        *dataIdP = dataId;
        return (retCode);
    }

    static int StoreData(AtreeReq* reqP, AtreeIdx node) {
        SdbmFldBody* target = ((void *)0);
        int retCode = 0;
        SdbmFldIdxData nodeData;
        SdbmFldDataIdx targetData = 0;
        SdbmDataId dataId;

        ;
        AtreeGetData(reqP, node, &(nodeData.value));
        targetData = nodeData.val.fld;
        retCode = SdbmGetFldBody(tblH, targetData, &target);
        if(((retCode) >= 0)) {
            retCode = GetDataId(target, targetData, &dataId);
            if(((retCode) >= 0)) {
                if(idxAll < numAll) {
                    allList[idxAll].record = dataId.external;
                    allList[idxAll].vecIdx = target->vectorIdx;
                }
                idxAll ++;
                if(AtreeIsUniqueNode(reqP, node)) {
                    if(idxUniq < numUniq) {
                        uniqList[idxUniq].record = dataId.external;
                        uniqList[idxUniq].vecIdx = target->vectorIdx;
                    }
                    idxUniq ++;
                }
                if(target->sortList.bkwd == 0) {
                    if(idxRec < numRecs) {
                        recs[idxRec] = dataId.external;
                    }
                    idxRec ++;
                }
            }
        }
        return (retCode);
    }

    static int ListDatas(const SdbmFldTypeInfo* ti) {
        int retCode = 0;
        AtreeReq req;

        ;
        (__extension__ (__builtin_constant_p (sizeof(req)) && (sizeof(req)) <= 16 ? ((sizeof(req)) == 1 ? ({ void *__s = (&req); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (&req); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (sizeof(req))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ (void *)((char *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ (void *)((char *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (&req); __builtin_memset (__s, '\0', sizeof(req)); __s; }) : memset (&req, 0, sizeof(req)))));
        req.auxArg.ptr = tblH;
        req.oprs = ti->atreeOprs;
        retCode = AtreeOpenTree(&req, fSpec->fldIndexTree, 0);
        if(((retCode) >= 0)) {
            AtreeIdx node = 0;

            while((node = AtreeNextNode(&req, node))) {
                StoreData(&req, node);
            }
            AtreeCloseTree(&req);
        }
        return (retCode);
    }

    ;
    if(recs == ((void *)0)) {
        numRecs = 0;
    } else if(numRecs <= 0) {
        numRecs = 0;
        recs = ((void *)0);
    }
    if(allList == ((void *)0)) {
        numAll = 0;
    } else if(numAll <= 0) {
        numAll = 0;
        allList = ((void *)0);
    }
    if(uniqList == ((void *)0)) {
        numUniq = 0;
    } else if(numUniq <= 0) {
        numUniq = 0;
        uniqList = ((void *)0);
    }
    if(fSpec->fldType == 0x80) {
        SdbmFldDefLinkInfo liDef;

        liDef.whole = fSpec->fldAuxType;
        retVal = SdbmOpenTableByAnotherTable(tblH, liDef.detail.linkToTable, &toTblH);
        if(((retVal) >= 0)) {
            retVal = SdbmGetFldSpec(toTblH, liDef.detail.linkToFldNo, &fSpec);
            if(((retVal) >= 0)) {
                tblH = toTblH;
            }
        }
    }
    if(((retVal) >= 0)) {
        const SdbmFldTypeInfo* ti;
        ti = (gSdbmFldTypes[fSpec->fldType]);
        if((ti) && (ti->fmtType == fSpec->fldType) && (ti->searchData) && (! ti->noneSorted)) {
            retVal = ListDatas(ti);
        }
    }
    if(toTblH) {
        SdbmReleaseTableHandle(toTblH, 1);
    }
    if(realRecs)
        *realRecs = idxRec;
    if(realAll)
        *realAll = idxAll;
    if(realUniq)
        *realUniq = idxUniq;

    return (retVal);
}
