home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1994 by Oracle Corporation. All Rights Reserved.
- *
- * mnx.h - OMN Marshalling & Unmarshalling
- *
- * DESCRIPTION
- * Related man pages are mnx(3).
- *
- * REVISIONS
- * jolkin 05/06/94 Creation
- */
-
- #ifndef MNX_ORACLE
- #define MNX_ORACLE
-
- #ifndef SYSX_ORACLE
- #include <sx.h>
- #endif
- #ifndef MN_ORACLE
- #include <mn.h>
- #endif
-
- EXTC_START
-
- /* marshalling types */
- typedef struct mnx mnx; /* marshalling descriptor */
- typedef struct mndrp mndrp; /* data representation descriptor */
- typedef struct mnxArm mnxArm; /* union arm descriptor */
- typedef struct mnxStream mnxStream; /* stream object descriptor */
-
- /* generic marshalling prototype */
- typedef boolean (*mnxFunc)(mnx *, dvoid *); /* generic marshalling */
-
- /* marshalling direction */
- #define MNXDIR_ENCODE ((ub4) 1) /* encode the data */
- #define MNXDIR_DECODE ((ub4) 2) /* decode the data */
- #define MNXDIR_FREE ((ub4) 3) /* free the data (use mnxFree()) */
-
- /* union arm */
- /* DISABLE check_naming */
- struct mnxArm
- {
- sb4 tag; /* tag to match for this arm */
- mnxFunc xfunc; /* marshalling routine */
- };
-
- /* RPC stream object */
- struct mnxStream
- {
- dvoid *(*alloc)(mnxStream *, size_t); /* allocation routine */
- sb4 (*push)(mnxStream *, dvoid *); /* push routine */
- boolean (*pull)(mnxStream *, dvoid **); /* pull routine */
- void (*close)(mnxStream *, sb4); /* close routine */
-
- size_t elmsz; /* element size */
- mnxFunc xfunc; /* element marshalling routine */
- dvoid *usrp; /* stream object state */
- dvoid *priv; /* Media Net private state */
- };
- /* ENABLE check_naming */
-
- /* marshalling descriptor manipulation */
- mnx *mnxCreate(mndrp *, ub4, mnbv **, ub4 *, dvoid *);
- void mnxDestroy(mnx *, boolean);
- ub4 mnxGetDir(mnx *);
- dvoid *mnxGetUsrp(mnx *);
-
- /* object free routine */
- void mnxFree(mnxFunc, dvoid *);
-
- /* data type marshalling routines */
- boolean mnxVoid(mnx *, dvoid *);
- boolean mnxB1(mnx *, ub1 *);
- boolean mnxB2(mnx *, ub2 *);
- boolean mnxB4(mnx *, ub4 *);
- boolean mnxSB1(mnx *, sb1 *);
- boolean mnxSB2(mnx *, sb2 *);
- boolean mnxSB4(mnx *, sb4 *);
- boolean mnxSysB8(mnx *, sysb8 *);
- boolean mnxChar(mnx *, char *);
- boolean mnxBoolean(mnx *, boolean *);
- #define mnxAddr(xstr, addr) \
- mnxOpaque((xstr), (ub1 *) ((addr)->bits), sizeof((addr)->bits))
- boolean mnxArray(mnx *, dvoid **, ub4 *, ub4, size_t, mnxFunc);
- boolean mnxOpaque(mnx *, ub1 *, size_t);
- boolean mnxString(mnx *, char **, size_t);
- boolean mnxDynStr(mnx *, char **);
- boolean mnxPointer(mnx *, dvoid **, size_t, mnxFunc);
- boolean mnxUnion(mnx *, sb4 *, dvoid *, mnxArm *, mnxFunc);
- boolean mnxOutStream(mnx *, mnxStream *);
-
- EXTC_END
- #endif /* MNX_ORACLE */
-