Exemple #1
0
/** @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");
}
Exemple #2
0
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);
}
Exemple #3
0
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);
    }
}
Exemple #4
0
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);
    }

}
Exemple #5
0
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);
    }
}
Exemple #7
0
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);
    }
}
Exemple #8
0
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;
}
Exemple #9
0
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;
}
Exemple #10
0
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;
}
Exemple #11
0
/** @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");
}