status-go/vendor/zombiezen.com/go/sqlite/openflags.go

79 lines
2.1 KiB
Go
Raw Permalink Normal View History

2022-03-10 09:44:48 +00:00
// Copyright 2021 Ross Light
// SPDX-License-Identifier: ISC
package sqlite
import (
"fmt"
"strings"
lib "modernc.org/sqlite/lib"
)
// OpenFlags are flags used when opening a Conn.
//
// https://www.sqlite.org/c3ref/c_open_autoproxy.html
type OpenFlags uint
const (
OpenReadOnly OpenFlags = lib.SQLITE_OPEN_READONLY
OpenReadWrite OpenFlags = lib.SQLITE_OPEN_READWRITE
OpenCreate OpenFlags = lib.SQLITE_OPEN_CREATE
OpenURI OpenFlags = lib.SQLITE_OPEN_URI
OpenMemory OpenFlags = lib.SQLITE_OPEN_MEMORY
OpenNoMutex OpenFlags = lib.SQLITE_OPEN_NOMUTEX
OpenFullMutex OpenFlags = lib.SQLITE_OPEN_FULLMUTEX
OpenSharedCache OpenFlags = lib.SQLITE_OPEN_SHAREDCACHE
OpenPrivateCache OpenFlags = lib.SQLITE_OPEN_PRIVATECACHE
OpenWAL OpenFlags = lib.SQLITE_OPEN_WAL
)
// String returns a pipe-separated list of the C constant names set in flags.
func (flags OpenFlags) String() string {
var parts []string
if flags&OpenReadOnly != 0 {
parts = append(parts, "SQLITE_OPEN_READONLY")
flags &^= OpenReadOnly
}
if flags&OpenReadWrite != 0 {
parts = append(parts, "SQLITE_OPEN_READWRITE")
flags &^= OpenReadWrite
}
if flags&OpenCreate != 0 {
parts = append(parts, "SQLITE_OPEN_CREATE")
flags &^= OpenCreate
}
if flags&OpenURI != 0 {
parts = append(parts, "SQLITE_OPEN_URI")
flags &^= OpenURI
}
if flags&OpenMemory != 0 {
parts = append(parts, "SQLITE_OPEN_MEMORY")
flags &^= OpenMemory
}
if flags&OpenNoMutex != 0 {
parts = append(parts, "SQLITE_OPEN_NOMUTEX")
flags &^= OpenNoMutex
}
if flags&OpenFullMutex != 0 {
parts = append(parts, "SQLITE_OPEN_FULLMUTEX")
flags &^= OpenFullMutex
}
if flags&OpenSharedCache != 0 {
parts = append(parts, "SQLITE_OPEN_SHAREDCACHE")
flags &^= OpenSharedCache
}
if flags&OpenPrivateCache != 0 {
parts = append(parts, "SQLITE_OPEN_PRIVATECACHE")
flags &^= OpenPrivateCache
}
if flags&OpenWAL != 0 {
parts = append(parts, "SQLITE_OPEN_WAL")
flags &^= OpenWAL
}
if flags != 0 || len(parts) == 0 {
parts = append(parts, fmt.Sprintf("%#x", uint(flags)))
}
return strings.Join(parts, "|")
}