Exemple #1
0
void embPolygonObject_free(EmbPolygonObject* pointer)
{
    embPointList_free(pointer->pointList);
    pointer->pointList = 0;
    free(pointer);
    pointer = 0;
}
void embPolylineObjectList_free(EmbPolylineObjectList* pointer)
{
    EmbPolylineObjectList* tempPointer = pointer;
    EmbPolylineObjectList* nextPointer = 0;
    while(tempPointer)
    {
        nextPointer = tempPointer->next;
        embPointList_free(tempPointer->polylineObj->pointList);
        free(tempPointer);
        tempPointer = nextPointer;
    }
    pointer = 0;
}
/* Frees all memory allocated in the pattern. */
void embPattern_free(EmbPattern* p)
{
    EmbThreadList* thisThreadList = 0;
    EmbThreadList* nextThreadList = 0;
    EmbStitchList* thisStitchList = 0;
    EmbStitchList* nextStitchList = 0;

    EmbArcObjectList* thisArcObjList = 0;
    EmbArcObjectList* nextArcObjList = 0;
    EmbCircleObjectList* thisCircleObjList = 0;
    EmbCircleObjectList* nextCircleObjList = 0;
    EmbEllipseObjectList* thisEllipseObjList = 0;
    EmbEllipseObjectList* nextEllipseObjList = 0;
    EmbLineObjectList* thisLineObjList = 0;
    EmbLineObjectList* nextLineObjList = 0;
    EmbPathObjectList* thisPathObjList = 0;
    EmbPathObjectList* nextPathObjList = 0;
    EmbPathObject* thisPathObj = 0;
    EmbPathObject* nextPathObj = 0;
    EmbPointObjectList* thisPointObjList = 0;
    EmbPointObjectList* nextPointObjList = 0;
    EmbPolygonObjectList* thisPolygonObjList = 0;
    EmbPolygonObjectList* nextPolygonObjList = 0;
    EmbPolylineObjectList* thisPolylineObjList = 0;
    EmbPolylineObjectList* nextPolylineObjList = 0;
    EmbRectObjectList* thisRectObjList = 0;
    EmbRectObjectList* nextRectObjList = 0;
    EmbSplineObjectList* thisSplineObjList = 0;
    EmbSplineObjectList* nextSplineObjList = 0;

    if(!p) return;
    thisStitchList = p->stitchList;
    while(thisStitchList)
    {
        nextStitchList = thisStitchList->next;
        free(thisStitchList);
        thisStitchList = nextStitchList;
    }
    thisThreadList = p->threadList;
    while(thisThreadList)
    {
        nextThreadList = thisThreadList->next;
        free(thisThreadList);
        thisThreadList = nextThreadList;
    }

    thisArcObjList = p->arcObjList;
    while(thisArcObjList)
    {
        nextArcObjList = thisArcObjList->next;
        free(thisArcObjList);
        thisArcObjList = nextArcObjList;
    }
    thisCircleObjList = p->circleObjList;
    while(thisCircleObjList)
    {
        nextCircleObjList = thisCircleObjList->next;
        free(thisCircleObjList);
        thisCircleObjList = nextCircleObjList;
    }
    thisEllipseObjList = p->ellipseObjList;
    while(thisEllipseObjList)
    {
        nextEllipseObjList = thisEllipseObjList->next;
        free(thisEllipseObjList);
        thisEllipseObjList = nextEllipseObjList;
    }
    thisLineObjList = p->lineObjList;
    while(thisLineObjList)
    {
        nextLineObjList = thisLineObjList->next;
        free(thisLineObjList);
        thisLineObjList = nextLineObjList;
    }

    /*
    thisPathObjList = p->pathObjList;
    while(thisPathObjList)
    {


        thisPathObj = &thisPathObjList->pathObj;
        while(thisPathObj)
        {
            nextPathObj = thisPathObj->next;
            free(thisPathObj);
            thisPathObj = nextPathObj;
        }





        nextPathObjList = thisPathObjList->next;
        free(thisPathObjList);
        thisPathObjList = nextPathObjList;
    }
    */

    thisPointObjList = p->pointObjList;
    while(thisPointObjList)
    {
        nextPointObjList = thisPointObjList->next;
        free(thisPointObjList);
        thisPointObjList = nextPointObjList;
    }
    thisPolygonObjList = p->polygonObjList;
    while(thisPolygonObjList)
    {
        nextPolygonObjList = thisPolygonObjList->next;
        embPointList_free(thisPolygonObjList->polygonObj->pointList);
        free(thisPolygonObjList);
        thisPolygonObjList = nextPolygonObjList;
    }
    thisPolylineObjList = p->polylineObjList;
    while(thisPolylineObjList)
    {
        nextPolylineObjList = thisPolylineObjList->next;
        embPointList_free(thisPolylineObjList->polylineObj->pointList);
        free(thisPolylineObjList);
        thisPolylineObjList = nextPolylineObjList;
    }
    thisRectObjList = p->rectObjList;
    while(thisRectObjList)
    {
        nextRectObjList = thisRectObjList->next;
        free(thisRectObjList);
        thisRectObjList = nextRectObjList;
    }
    thisSplineObjList = p->splineObjList;
    while(thisSplineObjList)
    {
        nextSplineObjList = thisSplineObjList->next;
        free(thisSplineObjList);
        thisSplineObjList = nextSplineObjList;
    }
    free(p);
    p = 0;
}