当前位置: 首页>>代码示例>>C++>>正文


C++ XIBObject::AddMember方法代码示例

本文整理汇总了C++中XIBObject::AddMember方法的典型用法代码示例。如果您正苦于以下问题:C++ XIBObject::AddMember方法的具体用法?C++ XIBObject::AddMember怎么用?C++ XIBObject::AddMember使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XIBObject的用法示例。


在下文中一共展示了XIBObject::AddMember方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ConvertXIBToNib

void ConvertXIBToNib(FILE* fpOut, pugi::xml_document& doc) {
    pugi::xml_node dataNode = doc.first_element_by_path("/archive/data");

    XIBObject* root = new XIBObject();
    root->ScanXIBNode(dataNode);
    XIBObject::ParseAllXIBMembers();

    XIBObject* Objects = root->FindMember("IBDocument.Objects");
    XIBObject* objectRecords = Objects->FindMember("objectRecords");
    XIBDictionary* properties = (XIBDictionary*)Objects->FindMember("flattenedProperties");

    XIBObject* orderedObjects = objectRecords->FindMember("orderedObjects");

    //  Go through each ordered object to find replacements
    for (memberList::iterator cur = orderedObjects->_members.begin(); cur != orderedObjects->_members.end(); cur++) {
        XIBMember* curMember = *cur;
        XIBObject* curObject = curMember->_obj;

        if (strcmp(curObject->ClassName(), "IBObjectRecord") == 0) {
            XIBObject* obj = curObject->FindMember("object");

            if (obj) {
                XIBObject* objectId = curObject->FindMember("objectID");
                if (!objectId) {
                    objectId = curObject->FindMember("id");
                }
                int objId = objectId->intValue();

                //  Attempt to find any associated custom class name
                char szPropName[255];
                sprintf(szPropName, "%d.CustomClassName", objId);
                const char* pClassName = obj->ClassName();

                XIBObject* customName = properties->ObjectForKey(szPropName);
                if (customName) {
                    const char* pCustomName = customName->stringValue();
                    obj->SetSwappedClassName(pCustomName);
                }

                for (memberList::iterator prop = properties->_members.begin(); prop != properties->_members.end(); prop++) {
                    char szMeta[255];
                    sprintf(szMeta, "%d.", objId);
                    if (strncmp(szMeta, (*prop)->_name, strlen(szMeta)) == 0) {
                        obj->AddMember(&(*prop)->_name[strlen(szMeta)], (*prop)->_obj);
                    }
                }
            }
        }
    }

    //  Create connections list
    XIBArray* connections = new XIBArray();
    XIBObject* connectionrecords = Objects->FindMember("connectionRecords");

    for (memberList::iterator cur = connectionrecords->_members.begin(); cur != connectionrecords->_members.end(); cur++) {
        XIBMember* curMember = *cur;
        XIBObject* curObject = curMember->_obj;

        if (strcmp(curObject->ClassName(), "IBConnectionRecord") == 0) {
            XIBObject* obj = curObject->FindMember("connection");

            if (obj) {
                connections->AddMember(NULL, obj);
            }
        }
    }

    //  Sort connection records alphabetically using stable, uh, bubble sort
    for (;;) {
        bool didSwap = false;

        for (memberList::iterator cur = connections->_members.begin(); cur != connections->_members.end(); cur++) {
            if ((cur + 1) == connections->_members.end())
                break;
            XIBMember* curMember = (*cur);
            XIBMember* nextMember = (*(cur + 1));

            if (curMember->_name != NULL)
                continue;

            //  Event connections first
            if (strcmp(curMember->_obj->_className, "IBCocoaTouchOutletConnection") == 0 &&
                strcmp(nextMember->_obj->_className, "IBCocoaTouchEventConnection") == 0) {
                *cur = nextMember;
                *(cur + 1) = curMember;
                didSwap = true;
                continue;
            }

            if (strcmp(curMember->_obj->_className, nextMember->_obj->_className) == 0) {
                const char* label1 = curMember->_obj->FindMember("label")->stringValue();
                const char* label2 = nextMember->_obj->FindMember("label")->stringValue();

                if (strcmp(label1, label2) > 0) {
                    *cur = nextMember;
                    *(cur + 1) = curMember;
                    didSwap = true;
                }
            }
        }
//.........这里部分代码省略.........
开发者ID:GoogleInternetAuthorityG2SUNGHAN,项目名称:WinObjC,代码行数:101,代码来源:xib2nib.cpp

示例2: WriteObjects

void NIBWriter::WriteObjects()
{
    XIBObject *nibRoot = new XIBArray();

    nibRoot->_className = "NSObject";
    nibRoot->_members.clear();
    nibRoot->AddMember("UINibTopLevelObjectsKey", _topObjects);
    nibRoot->AddMember("UINibObjectsKey", _allUIObjects);
    nibRoot->AddMember("UINibConnectionsKey", _connections);
    nibRoot->AddMember("UINibVisibleWindowsKey", _visibleWindows);
    nibRoot->AddMember("UINibAccessibilityConfigurationsKey", _accessibilityObjects);
    nibRoot->AddMember("UINibKeyValuePairsKey", new XIBArray());

    AddOutputObject(nibRoot);
    //  Sort connection records alphabetically using stable, uh, bubble sort
    for ( ;; ) {
        bool didSwap = false;

        for ( memberList::iterator cur = _connections->_outputMembers.begin(); cur != _connections->_outputMembers.end(); cur ++ ) {
            if ( (cur + 1) == _connections->_outputMembers.end() ) break;
            XIBMember *curMember = (*cur);
            XIBMember *nextMember = (*(cur + 1));

            if ( strcmp(curMember->_name, "UINibEncoderEmptyKey") != 0 ) continue;

            //  Event connections first
            if ( strcmp(curMember->_obj->_className, "UIRuntimeOutletConnection") == 0 &&
                 strcmp(nextMember->_obj->_className, "UIRuntimeEventConnection") == 0 ) {
                *cur = nextMember;
                *(cur + 1) = curMember;
                didSwap = true;
                continue;
            }

            if ( strcmp(curMember->_obj->_className, nextMember->_obj->_className) == 0 ) {
                const char *label1, *label2;

                if ( strcmp(curMember->_obj->_className, "UIRuntimeEventConnection") == 0 ) {
                    UIRuntimeEventConnection *conn1 = (UIRuntimeEventConnection *) curMember->_obj;
                    UIRuntimeEventConnection *conn2 = (UIRuntimeEventConnection *) nextMember->_obj;

                    label1 = conn1->_label;
                    label2 = conn2->_label;
                } else {
                    UIRuntimeOutletConnection *conn1 = (UIRuntimeOutletConnection *) curMember->_obj;
                    UIRuntimeOutletConnection *conn2 = (UIRuntimeOutletConnection *) nextMember->_obj;

                    label1 = conn1->_label;
                    label2 = conn2->_label;
                }

                if ( strcmp(label1, label2) > 0 ) {
                    *cur = nextMember;
                    *(cur + 1) = curMember;
                    didSwap = true;
                }
            }
        }

        if ( !didSwap ) break;
    }

    WriteData();
}
开发者ID:netroby,项目名称:WinObjC,代码行数:64,代码来源:NIBWriter.cpp


注:本文中的XIBObject::AddMember方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。