dss.h revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
a9de0a2f34860a24f457c777e740b7e87e6e3827Christian Maeder/***********************************************************************
a9de0a2f34860a24f457c777e740b7e87e6e3827Christian Maeder* *
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maeder* This software is part of the ast package *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* Copyright (c) 2002-2011 AT&T Intellectual Property *
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder* and is licensed under the *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* Eclipse Public License, Version 1.0 *
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian Maeder* by AT&T Intellectual Property *
2eeec5240b424984e3ee26296da1eeab6c6d739eChristian Maeder* *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* A copy of the License is available at *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* http://www.eclipse.org/org/documents/epl-v10.html *
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maeder* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder* *
0095c7efbddd0ffeed6aaf8ec015346be161d819Till Mossakowski* Information and Software Systems Research *
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maeder* AT&T Research *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* Florham Park NJ *
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski* *
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder* Glenn Fowler <gsf@research.att.com> *
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder* *
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder***********************************************************************/
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#pragma prototyped
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder/*
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski * data stream scan interface definitions
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#ifndef _DSS_H
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define _DSS_H 1
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder#define DSS_PLUGIN_VERSION AST_PLUGIN_VERSION(DSS_VERSION)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
cf31aaf25d0fe96b0578755e7ee18b732e337343Christian Maeder#define DSS_ID "dss"
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_VERSION CX_VERSION
c911a0ec80ca4a178399c68f1e28be4e2bf42fceChristian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#if __STDC__
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSSLIB(m) \
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski extern Dsslib_t dss_lib_##m; \
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Dsslib_t* dss_lib(const char* name, Dssdisc_t* disc) { return &dss_lib_##m; } \
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski unsigned long plugin_version(void) { return DSS_PLUGIN_VERSION; }
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#else
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSSLIB(m) \
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski extern Dsslib_t dss_lib_##m; \
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maeder Dsslib_t* dss_lib(name, disc) const char* name; Dssdisc_t* disc; { return &dss_lib_##m; } \
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder unsigned long plugin_version() { return DSS_PLUGIN_VERSION; }
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#endif
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dssdisc_t Cxdisc_t
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dssmeth_s Cxmeth_s
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dssmeth_t Cxmeth_t
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dsslib_t Cxlib_t
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dsslocation_f Cxlocation_f
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dsstype_t Cxtype_t
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dssvalue_t Cxvalue_t
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#define Dssvariable_t Cxvariable_t
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#include <ast.h>
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#include <cx.h>
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#include <error.h>
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#include <vmalloc.h>
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_DEBUG CX_DEBUG /* debug trace */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_QUIET CX_QUIET /* no non-fatal messages*/
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_REGRESS CX_REGRESS /* regression output */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_TRACE CX_TRACE /* algorithm trace */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_VALIDATE CX_VALIDATE /* validate constraints */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_VERBOSE CX_VERBOSE /* verbose feedback */
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maeder
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_CX_FLAGS (CX_FLAGS-1)
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maeder#define DSS_APPEND (CX_FLAGS<<0) /* DSS_FILE_APPEND */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_BASE (CX_FLAGS<<1) /* base method */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_FORCE (CX_FLAGS<<2) /* populate all fields */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_WRITE (CX_FLAGS<<3) /* {write} referenced */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_METH_FLAGS (CX_FLAGS<<4) /* first method flag */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_FLAGS (DSS_METH_FLAGS<<8) /* first caller flag */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_FILE_READ (1<<0) /* read mode */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_FILE_WRITE (1<<1) /* write mode */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS_FILE_APPEND (1<<2) /* append (no header) */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_FILE_KEEP (1<<3) /* keep stream on close */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#define DSS_FILE_ERROR (1<<4) /* an error occurred */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder
adea2e45fa61f1097aadc490a0aeaf4831b729ccChristian Maederstruct Dss_s; typedef struct Dss_s Dss_t;
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maederstruct Dssfile_s; typedef struct Dssfile_s Dssfile_t;
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowskistruct Dssformat_s; typedef struct Dssformat_s Dssformat_t;
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowskistruct Dssoptdisc_s; typedef struct Dssoptdisc_s Dssoptdisc_t;
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowskistruct Dssrecord_s; typedef struct Dssrecord_s Dssrecord_t;
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dssstate_s; typedef struct Dssstate_s Dssstate_t;
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
4ef5e33657aae95850b7e6941f67ac1fb73cd13fChristian Maedertypedef uint32_t Dssflags_t;
4ef5e33657aae95850b7e6941f67ac1fb73cd13fChristian Maedertypedef double Dssnumber_t;
4ef5e33657aae95850b7e6941f67ac1fb73cd13fChristian Maedertypedef Cxexpr_t Dssexpr_t;
4ef5e33657aae95850b7e6941f67ac1fb73cd13fChristian Maeder
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowskistruct Dssoptdisc_s /* dssopt*() optget() disc */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski{
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Optdisc_t optdisc; /* optget disc */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssdisc_t* disc; /* dss disc */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Cxheader_t* header; /* current item header */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski};
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dssformat_s /* file format method */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski{
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski _CX_NAME_HEADER_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder int (*identf)(Dssfile_t*, void*, size_t, Dssdisc_t*);
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski int (*openf)(Dssfile_t*, Dssdisc_t*);
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski int (*readf)(Dssfile_t*, Dssrecord_t*, Dssdisc_t*);
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski int (*writef)(Dssfile_t*, Dssrecord_t*, Dssdisc_t*);
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Sfoff_t (*seekf)(Dssfile_t*, Sfoff_t, Dssdisc_t*);
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski int (*closef)(Dssfile_t*, Dssdisc_t*);
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu Dssrecord_t* (*savef)(Dssfile_t*, Dssrecord_t*, Dssdisc_t*);
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu int (*dropf)(Dssfile_t*, Dssrecord_t*, Dssdisc_t*);
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu#ifdef _DSS_FORMAT_PRIVATE_
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski _DSS_FORMAT_PRIVATE_
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski#endif
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski};
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowskistruct Dssrecord_s /* record info */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski{
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Dssfile_t* file; /* file handle if not cloned */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder void* data; /* actual data */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski size_t size; /* total data size */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Dssflags_t flags; /* DSS_RECORD_* flags */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder};
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dssfile_s /* typed file handle */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski{
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Sfoff_t offset; /* current record offset */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder size_t count; /* current record count */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski size_t length; /* current record length */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dss_t* dss; /* dss handle */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Dssflags_t flags; /* DSS_FILE_* flags */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Sfio_t* io; /* io stream */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski char* path; /* original path */
df11e5eab86d8247f58e301d8f0a2c6ecf4c9541Till Mossakowski Dssformat_t* format; /* file format */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder void* caller; /* caller defined handle */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Vmalloc_t* vm; /* per file vm */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#ifdef _DSS_FILE_PRIVATE_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder _DSS_FILE_PRIVATE_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#endif
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder};
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dssmeth_s /* method */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder{
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder _CX_NAME_HEADER_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssmeth_t* (*methf)(const char*, const char*, const char*, Dssdisc_t*, Dssmeth_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder int (*openf)(Dss_t*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder int (*closef)(Dss_t*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder const char* compress; /* preferred compression */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder const char* print; /* default {print} format */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder Cx_t* cx; /* expression handle */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder Dt_t* formats; /* method format table */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#ifdef _DSS_METH_PRIVATE_
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder _DSS_METH_PRIVATE_
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#endif
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu};
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dssstate_s /* global state */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder{
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dss_t* dss; /* most recent dssopen() */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssmeth_t* meth; /* most recent dssmeth() */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Cxstate_t* cx; /* cx global state */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#ifdef _DSS_STATE_PRIVATE_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder _DSS_STATE_PRIVATE_
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#endif
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder};
c911a0ec80ca4a178399c68f1e28be4e2bf42fceChristian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederstruct Dss_s /* dss handle */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder{
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder const char* id; /* interface id */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssmeth_t* meth; /* method */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssdisc_t* disc; /* discipline */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Vmalloc_t* vm; /* per handle vm */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssflags_t flags; /* dssopen() flags */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssflags_t test; /* dssopen() test mask */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Cx_t* cx; /* expression handle */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder void* data; /* method data */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssformat_t* format; /* first input file format */
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder Dssstate_t* state; /* global state */
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder#ifdef _DSS_PRIVATE_
4d7d53fec6b551333c79da6ae3b8ca2af0a741abChristian Maeder _DSS_PRIVATE_
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#endif
c911a0ec80ca4a178399c68f1e28be4e2bf42fceChristian Maeder};
c911a0ec80ca4a178399c68f1e28be4e2bf42fceChristian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define dssinit(d,e) (memset(d,0,sizeof(*(d))),(d)->version=DSS_VERSION,(d)->errorf=(Error_f)(e),dssstate(d))
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define dssformat(n,d,m) ((Dssformat_t*)dtmatch((m)->formats,(char*)(n)))
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#if DSS_STATIC || _BLD_STATIC || _BLD_STATIC_LINK
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define dssstatic(l,d) { extern Dsslib_t dss_lib_##l; dssadd(&dss_lib_##l,d); }
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#else
cd6e5706893519bfcf24539afa252fcbed5097ddKlaus Luettich#define dssstatic(l,d)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#endif
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSS(c) ((Dss_t*)(c)->caller)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSSRECORD(v) ((Dssrecord_t*)(v))
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define DSSDATA(v) (DSSRECORD(v)->data)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#if defined(__EXPORT__)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define extern __EXPORT__
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#endif
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dsslib_t* dss_lib(const char*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#undef extern
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#if _BLD_dss && defined(__EXPORT__)
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#define extern __EXPORT__
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#endif
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssstate_t* dssstate(Dssdisc_t*);
e8eb2b9d68adc3024eb1aa9899b902ed5a3fb460Christian Maederextern Dsslib_t* dsslib(const char*, Dssflags_t, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dsslib_t* dssload(const char*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssadd(Dsslib_t*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssmeth_t* dssmeth(const char*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssmeth_t* dsstags(Sfio_t*, const char*, int, Dssflags_t, Dssdisc_t*, Dssmeth_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Sfio_t* dssfind(const char*, const char*, Dssflags_t, char*, size_t, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssoptinfo(Opt_t*, Sfio_t*, const char*, Optdisc_t*);
cd6e5706893519bfcf24539afa252fcbed5097ddKlaus Luettichextern int dssoptlib(Sfio_t*, Dsslib_t*, const char*, Dssdisc_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dss_t* dssopen(Dssflags_t, Dssflags_t, Dssdisc_t*, Dssmeth_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssrun(Dss_t*, const char*, const char*, const char*, char**);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssclose(Dss_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssfile_t* dssfopen(Dss_t*, const char*, Sfio_t*, Dssflags_t, Dssformat_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssrecord_t* dssfread(Dssfile_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssfwrite(Dssfile_t*, Dssrecord_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Sfoff_t dssftell(Dssfile_t*);
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maederextern int dssfseek(Dssfile_t*, Sfoff_t);
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maederextern int dssfclose(Dssfile_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssexpr_t* dsscomp(Dss_t*, const char*, Sfio_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssbeg(Dss_t*, Dssexpr_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dsseval(Dss_t*, Dssexpr_t*, Dssrecord_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssend(Dss_t*, Dssexpr_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dsslist(Dss_t*, Dssexpr_t*, Sfio_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssfree(Dss_t*, Dssexpr_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern ssize_t dssmagic(Dss_t*, Sfio_t*, const char*, const char*, uint32_t, size_t);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssprintf(Dss_t*, Cx_t*, Sfio_t*, const char*, Dssrecord_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssget(Dssrecord_t*, Dssvariable_t*, Dsstype_t*, const char*, Dssvalue_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dsstype_t* dsstype(Dss_t*, const char*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssvariable_t* dssvariable(Dss_t*, const char*);
556f473448dfcceee22afaa89ed7a364489cdbbbChristian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern Dssrecord_t* dsssave(Dssrecord_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maederextern int dssdrop(Dssrecord_t*);
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder#undef extern
09b431a868c79a92ae7c9bd141565f43f9034144Christian Maeder
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu#endif
a98fd29a06e80e447af26d898044c23497adbc73Mihai Codescu