msgcsharp="/*-
* Automatically built by dist/s_java_csharp.
*
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2012 Oracle and/or its affiliates. All rights reserved.
*/"
f=../lang/csharp/src/Internal/StatStructs.cs
t=AA_TEST
csclass()
{
sed -n "/struct $1 {/,/^}/p" < ../src/dbinc/db.in |
sed -e "/$1/d" \
-e '/^}/d' \
-e "/CONFIG_TEST/,/#endif/d" \
-e "/^#/d" \
-e 's:\tchar \*:\tinternal string :' \
-e 's:\tdb_pgno_t:\tinternal uint:' \
-e 's:\tdb_seq_t:\tinternal long:' \
-e 's:\tdb_size_t:\tinternal IntPtr:' \
-e 's:\tdb_threadid_t:\tinternal uint:' \
-e 's:\tdb_timeout_t:\tinternal uint:' \
-e 's:\tDB_LSN:\tinternal DB_LSN_STRUCT:' \
-e 's:\tDB_TXN_ACTIVE \*:\tinternal IntPtr :' \
-e 's:\tint\s:\tinternal int :' \
-e 's:\tint32_t:\tinternal int:' \
-e 's:\tpid_t:\tinternal int:' \
-e 's:\troff_t:\tinternal IntPtr:' \
-e 's:\tsize_t:\tinternal IntPtr:' \
-e 's:\ttime_t:\tinternal long:' \
-e 's:\tu_int32_t:\tinternal uint:' \
-e 's:\tuintmax_t:\tinternal ulong:' \
-e 's:\tdb_ssize_t:\tinternal IntPtr:' \
-e "s:/\*.*\*/::" \
-e "/\/\*/ {
N
/\/\*.*\*\// {
s:/\*.*\*/::
P
D
}
}"
}
stat_class()
{
c_struct=__db_$1
cs_struct=$2
(cat <<EOF
[StructLayout(LayoutKind.Sequential)]
internal struct $cs_struct {
EOF
csclass $c_struct
echo ' }'
echo ) >> $t
}
txn_active()
{
(cat <<EOF
[StructLayout(LayoutKind.Sequential)]
internal struct DB_TXN_ACTIVE {
EOF
sed -n "/struct __db_txn_active {/,/^}/p" < ../src/dbinc/db.in |
sed -e "/__db_txn_active/d" \
-e '/^}/d' \
-e "/CONFIG_TEST/,/#endif/d" \
-e "/^#/d" \
-e "/gid\[.*\]/d" \
-e "/name\[.*\]/d" \
-e 's:\tchar \*:\tinternal string :' \
-e 's:\tdb_pgno_t:\tinternal uint:' \
-e 's:\tdb_seq_t:\tinternal long:' \
-e 's:\tdb_threadid_t:\tinternal uint:' \
-e 's:\tdb_timeout_t:\tinternal uint:' \
-e 's:\tDB_LSN:\tinternal DB_LSN_STRUCT:' \
-e 's:\tDB_TXN_ACTIVE \*:\tinternal IntPtr:' \
-e 's:\tint\s:\tinternal int :' \
-e 's:\tint32_t:\tinternal int:' \
-e 's:\tpid_t:\tinternal int:' \
-e 's:\troff_t:\tinternal IntPtr:' \
-e 's:\tsize_t:\tinternal IntPtr:' \
-e 's:\ttime_t:\tinternal long:' \
-e 's:\tu_int32_t:\tinternal uint:' \
-e 's:\tuintmax_t:\tinternal ulong:' \
-e "s:/\*.*\*/::"
echo ' }'
echo ) >> $t
}
cat > $t <<EOF
$msgcsharp
using System;
using System.Runtime.InteropServices;
namespace BerkeleyDB.Internal {
EOF
stat_class bt_stat BTreeStatStruct
stat_class h_stat HashStatStruct
stat_class heap_stat HeapStatStruct
stat_class lock_stat LockStatStruct
stat_class log_stat LogStatStruct
stat_class mpool_fstat MPoolFileStatStruct
stat_class mpool_stat MPoolStatStruct
cat >>$t <<EOF
internal struct MempStatStruct {
internal MPoolStatStruct st;
internal MPoolFileStatStruct[] files;
}
EOF
stat_class mutex_stat MutexStatStruct
stat_class qam_stat QueueStatStruct
stat_class bt_stat RecnoStatStruct
stat_class repmgr_stat RepMgrStatStruct
stat_class rep_stat ReplicationStatStruct
stat_class seq_stat SequenceStatStruct
stat_class txn_stat TransactionStatStruct
cat >> $t <<EOF
[StructLayout(LayoutKind.Sequential)]
internal struct DB_LSN_STRUCT {
internal uint file;
internal uint offset;
}
EOF
txn_active
cat >> $t <<EOF
internal struct TxnStatStruct {
internal TransactionStatStruct st;
internal DB_TXN_ACTIVE[] st_txnarray;
internal byte[][] st_txngids;
internal string[] st_txnnames;
}
}
EOF
cmp $f $t > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f)