/** @brief callback function called when no default case is defined in an union * for which not all possible label values are specified * * Generate code for the following IDL construct: * @verbatim union <union-name> switch(<switch-type>) { case label1.1; .. case label1.n; <union-case-1>; case label2.1; .. case label2.n; ... ... case labeln.1; .. case labeln.n; <union-case-n>; }; @endverbatim * * @param scope Current scope (the union the union case is defined in) * @param labelVal Default value for the label case (lowest possible not used index) * @param typeSpec Specifies the type of the union switch */ static void idl_artificialDefaultLabelOpenClose( idl_scope scope, idl_labelVal labelVal, idl_typeSpec typeSpec, void *userData) { char *labelImage; idl_fileOutPrintf(idl_fileCur(), " public void __default ()\n"); idl_fileOutPrintf(idl_fileCur(), " {\n"); idl_fileOutPrintf(idl_fileCur(), " _d = (%s)%s;\n", unionSwitchType, idl_valueFromLabelVal(labelVal)); idl_fileOutPrintf(idl_fileCur(), " }\n\n"); idl_fileOutPrintf(idl_fileCur(), " public void __default (%s d)\n", idl_corbaJavaTypeFromTypeSpec (typeSpec)); idl_fileOutPrintf(idl_fileCur(), " {\n"); if(os_iterLength(labelsUsedIter)) { labelImage = os_iterTakeFirst(labelsUsedIter); idl_fileOutPrintf(idl_fileCur(), " if (d == (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst(labelsUsedIter); while (labelImage) { idl_fileOutPrintf(idl_fileCur(), " ||\n d == (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst(labelsUsedIter); } idl_fileOutPrintf(idl_fileCur(), ") {\n"); idl_fileOutPrintf(idl_fileCur(), " throw Utilities.createException(Utilities.EXCEPTION_TYPE_BAD_OPERATION, null);\n"); idl_fileOutPrintf(idl_fileCur(), " }\n"); } idl_fileOutPrintf(idl_fileCur(), " _d = d;\n"); idl_fileOutPrintf(idl_fileCur(), " }\n\n"); }
os_result os_procDeleteTaskVar( os_int32 taskid, char *executable_file, os_procContextData process_procContextData) { os_int32 status = os_resultSuccess; os_procGlobalVar procGlobalVar; /* delete context variable for the task */ procGlobalVar = os_iterTakeFirst(process_procContextData->procGlobalVarList); while (procGlobalVar!= NULL){ if (deleteTLSVar(taskid, (int *)procGlobalVar->procVarAddr) != OK) { OS_REPORT(OS_WARNING, "os_procDeleteTaskVar", 1, "os_procDeleteTaskVar user failed with error %d (%s, %s)", os_getErrno(), executable_file, process_procContextData->procName); status = os_resultInvalid; os_procSetExitStatus(process_procContextData, -1); } os_free(procGlobalVar); procGlobalVar = os_iterTakeFirst(process_procContextData->procGlobalVarList); } if (deleteTLSVar(taskid, (int *)&procContextData) != OK) { OS_REPORT(OS_WARNING, "os_procDeleteTaskVar", 1, "os_procDeleteTaskVar failed with error %d (%s, %s)", os_getErrno(), executable_file, process_procContextData->procName); status = os_resultInvalid; os_procSetExitStatus(process_procContextData, -1); } return(status); }
void ut_macroSetClear( const ut_macroSet macroSet) { ut_macro macro; macro = os_iterTakeFirst(macroSet->macroSet); while (macro != NULL) { ut_macroFree(macro); macro = os_iterTakeFirst(macroSet->macroSet); } }
static void os_procCallbacks( void) { void (*function)(void); os_procContextData currentProcContext = (os_procContextData)readTLSVarSelf(procContextData); function = (void *) os_iterTakeFirst(currentProcContext->procCallbackList); while (function != (void *)NULL) { function(); function = (void *) os_iterTakeFirst(currentProcContext->procCallbackList); } }
os_result os_procRemoveThreads( os_procContextData process_procContextData) { os_result rv = os_resultSuccess; os_threadContextData list_threadId; list_threadId = os_iterTakeFirst(process_procContextData->procThreadList); while (list_threadId!= NULL){ os_threadDispose(list_threadId); list_threadId = os_iterTakeFirst(process_procContextData->procThreadList); } return (rv); }
static void idl_fileClose( void *userData) { idl_meta meta; meta = os_iterTakeFirst(idlpp_metaList); while (meta) { idl_genMeta(meta); idl_scopeFree(meta->scope); os_free(meta->name); os_free(meta->actual_name); meta = os_iterTakeFirst(idlpp_metaList); } }
static void os_procAwaitThreads() { os_threadContextData threadContextData; os_procContextData currentProcContext = (os_procContextData)readTLSVarSelf(procContextData); threadContextData = (void *) os_iterTakeFirst(currentProcContext->procThreadList); while ((threadContextData != (void *)NULL) && (threadContextData->threadValidity == thread_ValRunning)) { os_threadAwaitTermination(threadContextData); #ifdef DEL while (taskIdVerify(threadContextData->threadTaskId) == OK) { taskDelay (10); /* To do trigger */ } #endif threadContextData = (void *) os_iterTakeFirst (currentProcContext->procThreadList); } }
void idl_genJavaHelperFreePackageRedirects ( void) { idl_packageRedirect redirect; os_iter redirects; void *object; redirects = idl_genJavaHelperPackageRedirects; if (redirects != NULL) { for (object = os_iterTakeFirst (redirects); object != NULL; object = os_iterTakeFirst (redirects)) { redirect = idl_packageRedirect (object); os_free (redirect->module); os_free (redirect->package); os_free (redirect); } os_iterFree (redirects); } idl_genJavaHelperPackageRedirects = NULL; }
void * os_iterReadAction ( os_iter iter, os_iterAction condition, os_iterActionArg arg) { os_iterNode *p; if (iter == NULL) { return NULL; } if (condition == NULL) { return os_iterTakeFirst(iter); } p = &iter->head; while (*p != NULL) { if (condition((*p)->object,arg)) { return (*p)->object; } p = &((*p)->next); } return NULL; }
void * os_iterTakeAction ( os_iter iter, os_iterAction condition, os_iterActionArg arg) { os_iterNode *p, p2; void *object; if (iter == NULL) { return NULL; } if (condition == NULL) { return os_iterTakeFirst(iter); } p = &iter->head; while (*p != NULL) { if (condition((*p)->object,arg)) { if((*p)->next == NULL){ if(*p == iter->head){ iter->tail = NULL; } else { iter->tail = *p; } } object = (*p)->object; p2 = *p; *p = (*p)->next; os_free(p2); iter->length--; return object; } p = &((*p)->next); } return NULL; }
/** @brief callback function called on definition of a union case in the IDL input file. * * Generate code for the following IDL construct: * @verbatim union <union-name> switch(<switch-type>) { case label1.1; .. case label1.n; => <union-case-1>; case label2.1; .. case label2.n; => ... ... case labeln.1; .. case labeln.n; => <union-case-n>; default: => <union-case-m>; }; @endverbatim * * @param scope Current scope (the union the union case is defined in) * @param name Name of the union case * @param typeSpec Specifies the type of the union case */ static void idl_unionCaseOpenClose( idl_scope scope, const char *name, idl_typeSpec typeSpec, void *userData) { char *labelImage; long nrElements, i; /* store type-name and field-name in iterator (append) */ idl_mapAdd(map, idl_javaId(name), typeSpec); /* Obtain name of first label and total number of labels. */ nrElements = os_iterLength(labelIter); labelImage = os_iterObject(labelIter, 0); /* Save the 1st case label for usage with the default constructor. */ if (!union1stCaseValue) { union1stCaseValue = os_iterObject(labelIter, 0); } idl_fileOutPrintf( idl_fileCur(), " private %s __%s;\n\n", idl_unionCaseTypeFromTypeSpec(typeSpec), idl_javaId(name)); idl_fileOutPrintf( idl_fileCur(), " public %s %s ()\n", idl_unionCaseTypeFromTypeSpec (typeSpec), idl_javaId(name)); idl_fileOutPrintf(idl_fileCur(), " {\n"); if (caseIsDefault == FALSE) { idl_fileOutPrintf(idl_fileCur(), " if (_d != %s", labelImage); for (i = 1; i < nrElements; i++) { labelImage = os_iterObject(labelIter, i); idl_fileOutPrintf(idl_fileCur(), " &&\n _d != %s", labelImage); } idl_fileOutPrintf(idl_fileCur(), ") {\n"); idl_fileOutPrintf(idl_fileCur(), " throw Utilities.createException(Utilities.EXCEPTION_TYPE_BAD_OPERATION, null);\n"); idl_fileOutPrintf(idl_fileCur(), " }\n"); } else { if(os_iterLength(labelsUsedIter)) { labelImage = os_iterObject(labelsUsedIter, 0); idl_fileOutPrintf(idl_fileCur(), " if (_d == %s", labelImage); nrElements = os_iterLength(labelsUsedIter); for (i = 1; i < nrElements; i++) { labelImage = os_iterObject(labelsUsedIter, i); idl_fileOutPrintf(idl_fileCur(), " ||\n _d == %s", labelImage); } idl_fileOutPrintf(idl_fileCur(), ") {\n"); idl_fileOutPrintf(idl_fileCur(), " throw Utilities.createException(Utilities.EXCEPTION_TYPE_BAD_OPERATION, null);\n"); idl_fileOutPrintf(idl_fileCur(), " }\n"); } } idl_fileOutPrintf(idl_fileCur(), " return __%s;\n", idl_javaId(name)); idl_fileOutPrintf(idl_fileCur(), " }\n\n"); idl_fileOutPrintf( idl_fileCur(), " public void %s (%s val)\n", idl_javaId(name), idl_unionCaseTypeFromTypeSpec(typeSpec)); idl_fileOutPrintf(idl_fileCur(), " {\n"); idl_fileOutPrintf(idl_fileCur(), " __%s = val;\n", idl_javaId(name)); labelImage = os_iterObject(labelIter, 0); if (labelImage) { idl_fileOutPrintf(idl_fileCur(), " _d = (%s)%s;\n", unionSwitchType, labelImage); } else { /* Theoretically this branch should never be reached: also the code underneath doesn't make any sense. That's why an assert has now been substituted. labelImage = os_iterObject(labelsUsedIter, 0); idl_fileOutPrintf(idl_fileCur(), " _d = (%s)%s;\n", unionSwitchType, labelImage); */ assert(FALSE); } idl_fileOutPrintf(idl_fileCur(), " }\n\n"); idl_fileOutPrintf( idl_fileCur(), " public void %s (%s d, %s val)\n", idl_javaId(name), unionSwitchType, idl_unionCaseTypeFromTypeSpec (typeSpec)); idl_fileOutPrintf(idl_fileCur(), " {\n"); if (caseIsDefault == FALSE) { labelImage = os_iterTakeFirst(labelIter); idl_fileOutPrintf(idl_fileCur(), " if (d != (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst(labelIter); while (labelImage) { idl_fileOutPrintf(idl_fileCur(), " &&\n d != (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst (labelIter); } idl_fileOutPrintf(idl_fileCur(), ") {\n"); idl_fileOutPrintf(idl_fileCur(), " throw Utilities.createException(Utilities.EXCEPTION_TYPE_BAD_OPERATION, null);\n"); idl_fileOutPrintf(idl_fileCur(), " }\n"); } else { if(os_iterLength(labelsUsedIter)) { labelImage = os_iterTakeFirst(labelsUsedIter); idl_fileOutPrintf(idl_fileCur(), " if (d == (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst(labelsUsedIter); while (labelImage) { idl_fileOutPrintf(idl_fileCur(), " ||\n d == (%s)%s", unionSwitchType, labelImage); labelImage = os_iterTakeFirst(labelsUsedIter); } idl_fileOutPrintf(idl_fileCur(), ") {\n"); idl_fileOutPrintf(idl_fileCur(), " throw Utilities.createException(Utilities.EXCEPTION_TYPE_BAD_OPERATION, null);\n"); idl_fileOutPrintf(idl_fileCur(), " }\n"); } } idl_fileOutPrintf(idl_fileCur(), " __%s = val;\n", idl_javaId(name)); idl_fileOutPrintf(idl_fileCur(), " _d = d;\n"); idl_fileOutPrintf(idl_fileCur(), " }\n\n"); }