Itk - the [incr Tk] extension

Check-in [3ba627cdac]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:The Itk_ConfigOptionPartProc "Itk_PropagatePublicVar" can only work on a scalar variable, so screen out array variables from having an ArchOptionPart created.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | itk-3-branch
Files: files | file ages | folders
SHA1: 3ba627cdac0b53599ea45cf5d8be42dcf6f3ae03
User & Date: dgp 2016-02-11 20:15:49.562
Context
2016-02-11
20:49
TEA update check-in: 6024d057db user: dgp tags: itk-3-branch
20:15
The Itk_ConfigOptionPartProc "Itk_PropagatePublicVar" can only work on a scalar variable, so screen out array variables from having an ArchOptionPart created. check-in: 3ba627cdac user: dgp tags: itk-3-branch
2015-12-10
18:50
Make version demand in testing to avoid worst testing errors. check-in: 802488c6f5 user: dgp tags: itk-3-branch
Changes
Unified Diff Ignore Whitespace Patch
Changes to generic/itk_archetype.c.
1742
1743
1744
1745
1746
1747
1748

1749


1750
1751
1752
1753










1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782

    /*
     *  Integrate all public variables for the current class
     *  context into the composite option list.
     */
    Itcl_InitHierIter(&hier, contextClass);
    while ((cdefn=Itcl_AdvanceHierIter(&hier)) != NULL) {

        entry = Tcl_FirstHashEntry(&cdefn->variables, &place);


        while (entry) {
            vdefn = (ItclVarDefn*)Tcl_GetHashValue(entry);

            if (vdefn->member->protection == ITCL_PUBLIC) {










                optPart = Itk_FindArchOptionPart(info,
                    vdefn->member->name, (ClientData)vdefn);

                if (!optPart) {
                    optPart = Itk_CreateOptionPart(interp, (ClientData)vdefn,
                        Itk_PropagatePublicVar, (Tcl_CmdDeleteProc*)NULL,
                        (ClientData)vdefn);

                    val = Itcl_GetInstanceVar(interp, vdefn->member->fullname,
                        contextObj, contextObj->classDefn);

                    result = Itk_AddOptionPart(interp, info,
                        vdefn->member->name, (char*)NULL, (char*)NULL,
                        val, (char*)NULL, optPart, &archOpt);

                    if (result != TCL_OK) {
                        Itk_DelOptionPart(optPart);
                        return TCL_ERROR;
                    }
                }
            }
            entry = Tcl_NextHashEntry(&place);
        }
    }
    Itcl_DeleteHierIter(&hier);

    /*
     *  Integrate all class-based options for the current class
     *  context into the composite option list.







>
|
>
>
|


|
>
>
>
>
>
>
>
>
>
>




















<
<







1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786


1787
1788
1789
1790
1791
1792
1793

    /*
     *  Integrate all public variables for the current class
     *  context into the composite option list.
     */
    Itcl_InitHierIter(&hier, contextClass);
    while ((cdefn=Itcl_AdvanceHierIter(&hier)) != NULL) {

	for (entry = Tcl_FirstHashEntry(&cdefn->variables, &place);
		entry; entry = Tcl_NextHashEntry(&place)) {
	    Var *arrayPtr, *varPtr = NULL;

            vdefn = (ItclVarDefn*)Tcl_GetHashValue(entry);

            if (vdefn->member->protection != ITCL_PUBLIC) {
		continue;
	    }

	    varPtr = TclLookupVar(interp, vdefn->member->fullname, NULL, 0,
		    NULL, 0, 0, &arrayPtr);

	    if (varPtr && TclIsVarArray(varPtr)) {
		continue;
	    }

                optPart = Itk_FindArchOptionPart(info,
                    vdefn->member->name, (ClientData)vdefn);

                if (!optPart) {
                    optPart = Itk_CreateOptionPart(interp, (ClientData)vdefn,
                        Itk_PropagatePublicVar, (Tcl_CmdDeleteProc*)NULL,
                        (ClientData)vdefn);

                    val = Itcl_GetInstanceVar(interp, vdefn->member->fullname,
                        contextObj, contextObj->classDefn);

                    result = Itk_AddOptionPart(interp, info,
                        vdefn->member->name, (char*)NULL, (char*)NULL,
                        val, (char*)NULL, optPart, &archOpt);

                    if (result != TCL_OK) {
                        Itk_DelOptionPart(optPart);
                        return TCL_ERROR;
                    }
                }


        }
    }
    Itcl_DeleteHierIter(&hier);

    /*
     *  Integrate all class-based options for the current class
     *  context into the composite option list.