Ejemplo n.º 1
0
/// 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);
}
Ejemplo n.º 2
0
/*
 * 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;
}
Ejemplo n.º 3
0
/// 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);
}
Ejemplo n.º 4
0
/// 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;
}
Ejemplo n.º 5
0
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);
	}
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
int devices_done (void)
{
	ListDispose (devlist);

	return 0;
}