/// HIFN Deallocates a generic DAQLabModule void discard_DAQLabModule (DAQLabModule_type** mod) { if (!*mod) return; OKfree((*mod)->className); OKfree((*mod)->instanceName); ListDispose((*mod)->taskControllers); ListDispose((*mod)->VChans); if ((*mod)->cfgPanHndl) DiscardPanel((*mod)->cfgPanHndl); OKfree(*mod); }
/* * copy is only as large as necessary */ list_t ListCopy (list_t originalList) { list_t tempList = NULL; int numItems; if (!originalList) return NULL; tempList = ListCreate ((*originalList)->itemSize); if (tempList) { numItems = ListNumItems (originalList); if (!SetHandleSize ((Handle) tempList, sizeof (ListStruct) + numItems * (*tempList)->itemSize)) { ListDispose (tempList); return NULL; } (*tempList)->numItems = (*originalList)->numItems; (*tempList)->listSize = (*originalList)->numItems; (*tempList)->itemSize = (*originalList)->itemSize; (*tempList)->percentIncrease = (*originalList)->percentIncrease; (*tempList)->minNumItemsIncrease = (*originalList)->minNumItemsIncrease; memcpy (ITEMPTR (tempList, 0), ITEMPTR (originalList, 0), numItems * (*tempList)->itemSize); } return tempList; }
/// HIFN Deletes the given parser. /// HIPAR parser/The parser to be deleted. void DeleteParser(const SymbolParser *parser) { AssertMsg(parser, "parser was null"); if (parser->module) { FreeLibrary(parser->module); } if (parser->exports) { ListDispose(parser->exports); } free(parser); }
/// HIFN Allocates memory and initializes a generic DAQLabModule DAQLabModule_type* initalloc_DAQLabModule (DAQLabModule_type* mod, char className[], char instanceName[], int workspacePanHndl) { if (!mod) { mod = malloc (sizeof(DAQLabModule_type)); if (!mod) return NULL; } // DATA mod->className = StrDup(className); mod->instanceName = StrDup(instanceName); mod->cfgPanHndl = 0; mod->workspacePanHndl = workspacePanHndl; //init mod->taskControllers = 0; mod->VChans = 0; if ( !(mod->taskControllers = ListCreate(sizeof(TaskControl_type*))) ) goto Error; if ( !(mod->VChans = ListCreate(sizeof(VChan_type*))) ) goto Error; // METHODS mod->Discard = discard_DAQLabModule; mod->Load = NULL; mod->LoadCfg = NULL; mod->SaveCfg = NULL; mod->DisplayPanels = NULL; return mod; Error: OKfree(mod->className); OKfree(mod->instanceName); if (mod->taskControllers) ListDispose(mod->taskControllers); if (mod->VChans) ListDispose(mod->VChans); OKfree(mod); return NULL; }
void ListDisposePtrList (list_t list) { int index; int numItems; if (list) { numItems = ListNumItems (list); for (index = 1; index <= numItems; index++) free (*(void **) ListGetPtrToItem (list, index)); ListDispose (list); } }
static void discard_SourceVChan_type (SourceVChan_type** srcVChanPtr) { SourceVChan_type* srcVChan = *srcVChanPtr; if (!srcVChan) return; // disconnect source from its sinks if there are any VChan_Disconnect((VChan_type*)srcVChan); // discard Source VChan specific data ListDispose(srcVChan->sinkVChans); // discard base VChan data OKfree(srcVChan->baseClass.name); OKfree(*srcVChanPtr); }
void DAQLabModule_empty (ListType* modules) { DAQLabModule_type** modPtrPtr; size_t nummodules = ListNumItems(*modules); if (!(*modules)) return; for (size_t i = 1; i <= nummodules; i++) { modPtrPtr = ListGetPtrToItem(*modules, i); // call discard method specific to each module (*(*modPtrPtr)->Discard)(modPtrPtr); } ListDispose(*modules); *modules = 0; }
int devices_done (void) { ListDispose (devlist); return 0; }