diff options
Diffstat (limited to 'xc/lib/PEX5/pl_free.c')
-rw-r--r-- | xc/lib/PEX5/pl_free.c | 551 |
1 files changed, 0 insertions, 551 deletions
diff --git a/xc/lib/PEX5/pl_free.c b/xc/lib/PEX5/pl_free.c deleted file mode 100644 index 2118b7423..000000000 --- a/xc/lib/PEX5/pl_free.c +++ /dev/null @@ -1,551 +0,0 @@ -/* $TOG: pl_free.c /main/11 1998/02/06 16:10:16 kaleb $ */ -/* - -Copyright 1992, 1998 The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -#include "PEXlib.h" -#include "PEXlibint.h" - -#define CHECK_AND_FREE(_ptr) if (_ptr) Xfree (_ptr) - - -void PEXFreeEnumInfo (numCounts, infoCount, enumInfo) - -INPUT unsigned long numCounts; -INPUT unsigned long *infoCount; -INPUT PEXEnumTypeDesc *enumInfo; - -{ - PEXEnumTypeDesc *desc = enumInfo; - int i, j; - - - if (enumInfo) - for (i = 0; i < numCounts; i++) - for (j = 0; j < infoCount[i]; j++) - { - CHECK_AND_FREE ((char *) desc->descriptor); - desc++; - } - - CHECK_AND_FREE ((char *) infoCount); - CHECK_AND_FREE ((char *) enumInfo); -} - - -void PEXFreeFontInfo (numFontInfo, fontInfo) - -INPUT unsigned long numFontInfo; -INPUT PEXFontInfo *fontInfo; - -{ - PEXFontInfo *info = fontInfo; - int i; - - - for (i = 0; i < numFontInfo; i++) - { - CHECK_AND_FREE ((char *) info->props); - info++; - } - - CHECK_AND_FREE ((char *) fontInfo); -} - - -void PEXFreeFontNames (numFontNames, fontNames) - -INPUT unsigned long numFontNames; -INPUT char **fontNames; - -{ - int i; - - - for (i = 0; i < numFontNames; i++) - CHECK_AND_FREE (fontNames[i]); - - CHECK_AND_FREE ((char *) fontNames); -} - - -void PEXFreePCAttributes (pcAttr) - -INPUT PEXPCAttributes *pcAttr; - -{ - CHECK_AND_FREE ((char *) pcAttr->model_clip_volume.half_spaces); - CHECK_AND_FREE ((char *) pcAttr->light_state.indices); - - if (pcAttr->para_surf_char.type == PEXPSCMCLevelCurves || - pcAttr->para_surf_char.type == PEXPSCWCLevelCurves) - { - CHECK_AND_FREE ((char *) - pcAttr->para_surf_char.psc.level_curves.parameters); - } - else if (pcAttr->para_surf_char.type == PEXPSCImpDep) - { - CHECK_AND_FREE ((char *) pcAttr->para_surf_char.psc.imp_dep.data); - } - - CHECK_AND_FREE ((char *) pcAttr); -} - - -void PEXFreePDAttributes (pdAttr) - -PEXPDAttributes *pdAttr; - -{ - CHECK_AND_FREE ((char *) pdAttr->path.elements); - - CHECK_AND_FREE ((char *) pdAttr); -} - - -void PEXFreePMAttributes (pmAttr) - -PEXPMAttributes *pmAttr; - -{ - CHECK_AND_FREE ((char *) pmAttr->pick_path.elements); - - CHECK_AND_FREE ((char *) pmAttr); -} - - -void PEXFreePickPaths (numPickPaths, pickPaths) - -INPUT unsigned long numPickPaths; -INPUT PEXPickPath *pickPaths; - -{ - int total_size, i; - - - /* - * Note that memory allocation of pick paths is optimized by - * allocating one chunk for all the pick paths in the list, instead - * of allocating a seperate buffer for each pick path. - */ - - if (pickPaths == PEXPickCache) - { - /* - * Make the pick cache available again. - */ - - PEXPickCacheInUse = 0; - } - else if (PEXPickCacheInUse) - { - /* - * The pick cache is in use, so we must free this pick path. - */ - - Xfree ((char *) pickPaths); - } - else - { - /* - * Calculate the size of the pick path being freed. - */ - - total_size = numPickPaths * sizeof (PEXPickPath); - for (i = 0; i < numPickPaths; i++) - total_size += (pickPaths[i].count * sizeof (PEXPickElementRef)); - - - /* - * If the size is smaller than the pick cache size or bigger than - * the max size, free the pick path. Otherwise, make this path the - * new pick cache buffer. - */ - - if (total_size <= PEXPickCacheSize || total_size > MAX_PICK_CACHE_SIZE) - Xfree ((char *) pickPaths); - else - { - if (PEXPickCache) - Xfree ((char *) PEXPickCache); - PEXPickCache = pickPaths; - PEXPickCacheSize = total_size; - } - } -} - - -void PEXFreeRendererAttributes (rdrAttr) - -INPUT PEXRendererAttributes *rdrAttr; - -{ - CHECK_AND_FREE ((char *) rdrAttr->current_path.elements); - CHECK_AND_FREE ((char *) rdrAttr->clip_list.rectangles); - CHECK_AND_FREE ((char *) rdrAttr->pick_start_path.elements); - - CHECK_AND_FREE ((char *) rdrAttr); -} - - -void PEXFreeSCAttributes (scAttr) - -PEXSCAttributes *scAttr; - -{ - CHECK_AND_FREE ((char *) scAttr->start_path.elements); - CHECK_AND_FREE ((char *) scAttr->normal.pairs); - CHECK_AND_FREE ((char *) scAttr->inverted.pairs); - - CHECK_AND_FREE ((char *) scAttr); -} - - -void PEXFreeStructurePaths (numPaths, paths) - -INPUT unsigned long numPaths; -INPUT PEXStructurePath *paths; - -{ - int i; - - - for (i = 0; i < numPaths; i++) - CHECK_AND_FREE ((char *) paths[i].elements); - - CHECK_AND_FREE ((char *) paths); -} - - -void PEXFreeTableEntries (tableType, numTableEntries, tableEntries) - -INPUT int tableType; -INPUT unsigned int numTableEntries; -INPUT PEXPointer tableEntries; - -{ - int i; - - - switch (tableType) - { - case PEXLUTPattern: - { - PEXPatternEntry *entries = (PEXPatternEntry *) tableEntries; - - for (i = 0; i < numTableEntries; i++) - CHECK_AND_FREE ((char *) entries[i].colors.indexed); - break; - } - - case PEXLUTTextFont: - { - PEXTextFontEntry *entries = (PEXTextFontEntry *) tableEntries; - - for (i = 0; i < numTableEntries; i++) - CHECK_AND_FREE ((char *) entries[i].fonts); - break; - } - - case PEXLUTLineBundle: - case PEXLUTMarkerBundle: - case PEXLUTTextBundle: - case PEXLUTInteriorBundle: - case PEXLUTEdgeBundle: - case PEXLUTColor: - case PEXLUTView: - case PEXLUTLight: - case PEXLUTDepthCue: - case PEXLUTColorApprox: - break; - } -} - - -void PEXFreeWorkstationAttributes (wksAttr) - -INPUT PEXWorkstationAttributes *wksAttr; - -{ - CHECK_AND_FREE ((char *) wksAttr->defined_views.views); - CHECK_AND_FREE ((char *) wksAttr->posted_structures.structures); - - CHECK_AND_FREE ((char *) wksAttr); -} - - -void PEXFreeOCData (count, oc_data) - -INPUT unsigned long count; -INPUT PEXOCData *oc_data; - -{ - PEXOCData *oc = oc_data; - PEXEncodedTextData *encText; - PEXListOfVertex *plset; - PEXListOfCoord *fillset; - PEXListOfCoord2D *fillset2D; - PEXListOfVertex *fillsetdata; - PEXConnectivityData *pCon; - PEXListOfTrimCurve *pTrim; - int i, j, k; - - - for (i = 0; i < count; i++, oc++) - { - switch (oc->oc_type) - { - case PEXOCModelClipVolume: - - CHECK_AND_FREE ((char *) oc->data.SetModelClipVolume.half_spaces); - break; - - case PEXOCModelClipVolume2D: - - CHECK_AND_FREE ((char *) oc->data.SetModelClipVolume2D.half_spaces); - break; - - case PEXOCLightSourceState: - - CHECK_AND_FREE ((char *) oc->data.SetLightSourceState.enable); - CHECK_AND_FREE ((char *) oc->data.SetLightSourceState.disable); - break; - - case PEXOCParaSurfCharacteristics: - - if (oc->data.SetParaSurfCharacteristics.psc_type == - PEXPSCMCLevelCurves || - oc->data.SetParaSurfCharacteristics.psc_type == - PEXPSCWCLevelCurves) - CHECK_AND_FREE ((char *) oc->data.SetParaSurfCharacteristics.characteristics.level_curves.parameters); - break; - - case PEXOCAddToNameSet: - - CHECK_AND_FREE ((char *) oc->data.AddToNameSet.names); - break; - - case PEXOCRemoveFromNameSet: - - CHECK_AND_FREE ((char *) oc->data.RemoveFromNameSet.names); - break; - - case PEXOCApplicationData: - - CHECK_AND_FREE ((char *) oc->data.ApplicationData.data); - break; - - case PEXOCGSE: - - CHECK_AND_FREE ((char *) oc->data.GSE.data); - break; - - case PEXOCMarkers: - - CHECK_AND_FREE ((char *) oc->data.Markers.points); - break; - - case PEXOCMarkers2D: - - CHECK_AND_FREE ((char *) oc->data.Markers2D.points); - break; - - case PEXOCPolyline: - - CHECK_AND_FREE ((char *) oc->data.Polyline.points); - break; - - case PEXOCPolyline2D: - - CHECK_AND_FREE ((char *) oc->data.Polyline2D.points); - break; - - case PEXOCText: - - encText = oc->data.EncodedText.encoded_text; - for (j = 0; j < oc->data.EncodedText.count; j++, encText++) - CHECK_AND_FREE ((char *) encText->ch); - CHECK_AND_FREE ((char *) oc->data.EncodedText.encoded_text); - break; - - case PEXOCText2D: - - encText = oc->data.EncodedText2D.encoded_text; - for (j = 0; j < oc->data.EncodedText2D.count; j++, encText++) - CHECK_AND_FREE ((char *) encText->ch); - CHECK_AND_FREE ((char *) oc->data.EncodedText2D.encoded_text); - break; - - case PEXOCAnnotationText: - - encText = oc->data.EncodedAnnoText.encoded_text; - for (j = 0; j < oc->data.EncodedAnnoText.count; j++, encText++) - CHECK_AND_FREE ((char *) encText->ch); - CHECK_AND_FREE ((char *) oc->data.EncodedAnnoText.encoded_text); - break; - - case PEXOCAnnotationText2D: - - encText = oc->data.EncodedAnnoText2D.encoded_text; - for (j = 0; j < oc->data.EncodedAnnoText2D.count; j++, encText++) - CHECK_AND_FREE ((char *) encText->ch); - CHECK_AND_FREE ((char *) oc->data.EncodedAnnoText2D.encoded_text); - break; - - case PEXOCPolylineSetWithData: - - plset = oc->data.PolylineSetWithData.vertex_lists; - for (j = 0; j < oc->data.PolylineSetWithData.count; j++, plset++) - { - CHECK_AND_FREE ((char *) plset->vertices.no_data); - } - CHECK_AND_FREE ((char *) oc->data.PolylineSetWithData.vertex_lists); - break; - - case PEXOCNURBCurve: - - CHECK_AND_FREE ((char *) oc->data.NURBCurve.knots); - CHECK_AND_FREE ((char *) oc->data.NURBCurve.points.point); - break; - - case PEXOCFillArea: - - CHECK_AND_FREE ((char *) oc->data.FillArea.points); - break; - - case PEXOCFillArea2D: - - CHECK_AND_FREE ((char *) oc->data.FillArea2D.points); - break; - - case PEXOCFillAreaWithData: - - CHECK_AND_FREE ((char *) - oc->data.FillAreaWithData.vertices.no_data); - break; - - case PEXOCFillAreaSet: - - fillset = oc->data.FillAreaSet.point_lists; - for (j = 0; j < oc->data.FillAreaSet.count; j++, fillset++) - { - CHECK_AND_FREE ((char *) fillset->points); - } - CHECK_AND_FREE ((char *) oc->data.FillAreaSet.point_lists); - break; - - case PEXOCFillAreaSet2D: - - fillset2D = oc->data.FillAreaSet2D.point_lists; - for (j = 0; j < oc->data.FillAreaSet2D.count; j++, fillset2D++) - { - CHECK_AND_FREE ((char *) fillset2D->points); - } - CHECK_AND_FREE ((char *) oc->data.FillAreaSet2D.point_lists); - break; - - case PEXOCFillAreaSetWithData: - - fillsetdata = oc->data.FillAreaSetWithData.vertex_lists; - for (j = 0; j < oc->data.FillAreaSetWithData.count; - j++, fillsetdata++) - { - CHECK_AND_FREE ((char *) fillsetdata->vertices.no_data); - } - CHECK_AND_FREE ((char *) oc->data.FillAreaSetWithData.vertex_lists); - break; - - case PEXOCTriangleStrip: - - CHECK_AND_FREE ((char *) oc->data.TriangleStrip.facet_data.index); - CHECK_AND_FREE ((char *) oc-> data.TriangleStrip.vertices.no_data); - break; - - case PEXOCQuadrilateralMesh: - - CHECK_AND_FREE ((char *) - oc->data.QuadrilateralMesh.facet_data.index); - CHECK_AND_FREE ((char *) - oc->data.QuadrilateralMesh.vertices.no_data); - break; - - case PEXOCSetOfFillAreaSets: - - CHECK_AND_FREE ((char *) - oc->data.SetOfFillAreaSets.facet_data.index); - CHECK_AND_FREE ((char *) - oc->data.SetOfFillAreaSets.vertices.no_data); - CHECK_AND_FREE ((char *) oc->data.SetOfFillAreaSets.edge_flags); - - pCon = oc->data.SetOfFillAreaSets.connectivity; - for (j = 0; j < oc->data.SetOfFillAreaSets.set_count; j++, pCon++) - { - for (k = 0; k < (int) pCon->count; k++) - CHECK_AND_FREE ((char *) pCon->lists[k].shorts); - CHECK_AND_FREE ((char *) pCon->lists); - } - CHECK_AND_FREE ((char *) oc->data.SetOfFillAreaSets.connectivity); - break; - - case PEXOCNURBSurface: - - CHECK_AND_FREE ((char *) oc->data.NURBSurface.uknots); - CHECK_AND_FREE ((char *) oc->data.NURBSurface.vknots); - CHECK_AND_FREE ((char *) oc->data.NURBSurface.points.point); - - pTrim = oc->data.NURBSurface.trim_curves; - for (j = 0; j < oc->data.NURBSurface.curve_count; j++, pTrim++) - { - for (k = 0; k < (int) pTrim->count; k++) - { - CHECK_AND_FREE ((char *) pTrim->curves[k].knots.floats); - CHECK_AND_FREE ((char *) - pTrim->curves[k].control_points.point); - } - CHECK_AND_FREE ((char *) pTrim->curves); - } - CHECK_AND_FREE ((char *) oc->data.NURBSurface.trim_curves); - break; - - case PEXOCCellArray: - - CHECK_AND_FREE ((char *) oc->data.CellArray.color_indices); - break; - - case PEXOCCellArray2D: - - CHECK_AND_FREE ((char *) oc->data.CellArray2D.color_indices); - break; - - case PEXOCExtendedCellArray: - - CHECK_AND_FREE ((char *) oc->data.ExtendedCellArray.colors.indexed); - break; - - default: - break; - } - } - - CHECK_AND_FREE ((char *) oc_data); -} |