/*! * \file src/mymem.h * * \brief Prototypes for memory routines. * *
* *

Copyright.

\n * * PCB, interactive printed circuit board design * * Copyright (C) 1994,1995,1996 Thomas Nau * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Contact addresses for paper mail and Email: * * Thomas Nau, Schlehenweg 15, 88471 Baustetten, Germany * * Thomas.Nau@rz.uni-ulm.de */ #ifndef PCB_MYMEM_H #define PCB_MYMEM_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "global.h" /* --------------------------------------------------------------------------- * number of additional objects that are allocated with one system call */ #define STEP_ELEMENT 50 #define STEP_DRILL 30 #define STEP_POINT 100 #define STEP_SYMBOLLINE 10 #define STEP_SELECTORENTRY 128 #define STEP_REMOVELIST 500 #define STEP_UNDOLIST 500 #define STEP_POLYGONPOINT 10 #define STEP_POLYGONHOLEINDEX 10 #define STEP_LIBRARYMENU 10 #define STEP_LIBRARYENTRY 20 #define STEP_RUBBERBAND 100 #define STRDUP(x) (((x) != NULL) ? strdup (x) : NULL) /*! * \brief Dynamic string type. */ typedef struct { size_t MaxLength; char *Data; } DynamicStringType; RubberbandType * GetRubberbandMemory (void); PinType * GetPinMemory (ElementType *); PadType * GetPadMemory (ElementType *); PinType * GetViaMemory (DataType *); LineType * GetLineMemory (LayerType *); ArcType * GetArcMemory (LayerType *); RatType * GetRatMemory (DataType *); TextType * GetTextMemory (LayerType *); PolygonType * GetPolygonMemory (LayerType *); PointType * GetPointMemoryInPolygon (PolygonType *); Cardinal *GetHoleIndexMemoryInPolygon (PolygonType *); ElementType * GetElementMemory (DataType *); BoxType * GetBoxMemory (BoxListType *); ConnectionType * GetConnectionMemory (NetType *); NetType * GetNetMemory (NetListType *); NetListType * GetNetListMemory (NetListListType *); LibraryMenuType * GetLibraryMenuMemory (LibraryType *); LibraryEntryType * GetLibraryEntryMemory (LibraryMenuType *); ElementType **GetDrillElementMemory (DrillType *); PinType ** GetDrillPinMemory (DrillType *); DrillType * GetDrillInfoDrillMemory (DrillInfoType *); void **GetPointerMemory (PointerListType *); void FreePolygonMemory (PolygonType *); void FreeElementMemory (ElementType *); void FreePCBMemory (PCBType *); void FreeBoxListMemory (BoxListType *); void FreeNetListListMemory (NetListListType *); void FreeNetListMemory (NetListType *); void FreeNetMemory (NetType *); void FreeDataMemory (DataType *); void FreeLibraryMemory (LibraryType *); void FreePointerListMemory (PointerListType *); void DSAddCharacter (DynamicStringType *, char); void DSAddString (DynamicStringType *, const char *); void DSClearString (DynamicStringType *); char *StripWhiteSpaceAndDup (const char *); #ifdef NEED_STRDUP char *strdup (const char *); #endif #ifndef HAVE_LIBDMALLOC #define malloc(x) calloc(1,(x)) #endif #endif