1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*3e14f97fSRoger A. Faulkner * Copyright (c) 1985-2010 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6da2e3ebdSchin * Common Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10da2e3ebdSchin * http://www.opensource.org/licenses/cpl1.0.txt * 11da2e3ebdSchin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * Glenn Fowler <gsf@research.att.com> * 18da2e3ebdSchin * David Korn <dgk@research.att.com> * 19da2e3ebdSchin * Phong Vo <kpv@research.att.com> * 20da2e3ebdSchin * * 21da2e3ebdSchin ***********************************************************************/ 22da2e3ebdSchin #include "dthdr.h" 23da2e3ebdSchin 24da2e3ebdSchin /* Extract objects of a dictionary. 25da2e3ebdSchin ** 26da2e3ebdSchin ** Written by Kiem-Phong Vo (5/25/96). 27da2e3ebdSchin */ 28da2e3ebdSchin 29da2e3ebdSchin #if __STD_C dtextract(reg Dt_t * dt)30da2e3ebdSchinDtlink_t* dtextract(reg Dt_t* dt) 31da2e3ebdSchin #else 32da2e3ebdSchin Dtlink_t* dtextract(dt) 33da2e3ebdSchin reg Dt_t* dt; 34da2e3ebdSchin #endif 35da2e3ebdSchin { 36da2e3ebdSchin reg Dtlink_t *list, **s, **ends; 37da2e3ebdSchin 38da2e3ebdSchin if(dt->data->type&(DT_OSET|DT_OBAG) ) 39da2e3ebdSchin list = dt->data->here; 40da2e3ebdSchin else if(dt->data->type&(DT_SET|DT_BAG)) 41da2e3ebdSchin { list = dtflatten(dt); 42da2e3ebdSchin for(ends = (s = dt->data->htab) + dt->data->ntab; s < ends; ++s) 43da2e3ebdSchin *s = NIL(Dtlink_t*); 44da2e3ebdSchin } 45da2e3ebdSchin else /*if(dt->data->type&(DT_LIST|DT_STACK|DT_QUEUE))*/ 46da2e3ebdSchin { list = dt->data->head; 47da2e3ebdSchin dt->data->head = NIL(Dtlink_t*); 48da2e3ebdSchin } 49da2e3ebdSchin 50da2e3ebdSchin dt->data->type &= ~DT_FLATTEN; 51da2e3ebdSchin dt->data->size = 0; 52da2e3ebdSchin dt->data->here = NIL(Dtlink_t*); 53da2e3ebdSchin 54da2e3ebdSchin return list; 55da2e3ebdSchin } 56