|
|
1.1 ! root 1: /* pe_alloc.c - allocate a presentation element */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/psap/RCS/pe_alloc.c,v 7.0 89/11/23 22:13:00 mrose Rel $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/psap/RCS/pe_alloc.c,v 7.0 89/11/23 22:13:00 mrose Rel $ ! 9: * ! 10: * ! 11: * $Log: pe_alloc.c,v $ ! 12: * Revision 7.0 89/11/23 22:13:00 mrose ! 13: * Release 6.0 ! 14: * ! 15: */ ! 16: ! 17: /* ! 18: * NOTICE ! 19: * ! 20: * Acquisition, use, and distribution of this module and related ! 21: * materials are subject to the restrictions of a license agreement. ! 22: * Consult the Preface in the User's Manual for the full terms of ! 23: * this agreement. ! 24: * ! 25: */ ! 26: ! 27: ! 28: /* LINTLIBRARY */ ! 29: ! 30: #include <stdio.h> ! 31: #include "psap.h" ! 32: ! 33: ! 34: /* A Presentation Element (or PElement) is an internal representation for ! 35: a presentation type from ISO8825. The fields of the structure are: ! 36: ! 37: pe_class: UNIVersal, APPLication, CONText, or PRIVate ! 38: pe_form: PRIMative, CONStructor, InlineCONStructor ! 39: pe_id: identifier ! 40: ! 41: pe_len: if a PRIMative, then the length of pe_prim, ! 42: else a scratch value; "indefinite" length elements ! 43: have a pe_len of -1 (PE_LEN_INDF) ! 44: pe_ilen: if an InlineCONStructor, then the offset to the real ! 45: data portion ! 46: ! 47: pe_prim: if a PRIMative or an Inline CONStructor, the ! 48: byte-string ! 49: pe_cons: if a CONStructor, the first element in the ! 50: singly-linked list of elements ! 51: ! 52: pe_next: if the immediate parent is a constructor, the ! 53: next element in the singly-linked list of elements ! 54: ! 55: pe_cardinal: if a LIST (SET or SEQ CONStructor), the cardinality ! 56: of the list ! 57: pe_offset: if a member of a SEQ LIST, the offset in the SEQUENCE ! 58: ! 59: pe_nbits: if a BITSTRING, the number of bits in the string ! 60: ! 61: pe_refcnt: a hack for ANYs in pepy ! 62: */ ! 63: ! 64: /* */ ! 65: ! 66: PE pe_alloc (class, form, id) ! 67: PElementClass class; ! 68: PElementForm form; ! 69: PElementID id; ! 70: { ! 71: register PE pe; ! 72: ! 73: if ((pe = (PE) calloc (1, sizeof *pe)) == NULLPE) ! 74: return NULLPE; ! 75: ! 76: pe -> pe_class = class; ! 77: pe -> pe_form = form; ! 78: pe -> pe_id = id; ! 79: ! 80: return pe; ! 81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.