コード例 #1
0
ファイル: main.cpp プロジェクト: gatgui/gto
void filterData(const std::string& filterExpr, Reader& reader)
{
    Gto::Reader::Properties& properties = reader.properties();
    Gto::Reader::Objects& objects = reader.objects();

    for (size_t i=0; i < properties.size(); i++)
    {
        Gto::Reader::PropertyInfo&  p = properties[i];
        const Gto::Reader::ComponentInfo* c = p.component;
        const Gto::Reader::ObjectInfo*    o = c->object;

        string name;
        name = reader.stringFromId(o->name);
        name += ".";
        name += reader.stringFromId(c->name);
        name += ".";
        name += reader.stringFromId(p.name);

        if (!fnmatch(filterExpr.c_str(), name.c_str(), 0))
        {
            filteredProperties.insert(&p);
            filteredObjects.insert(o);
        }
    }

    for (size_t i=0; i < objects.size(); i++)
    {
        Gto::Reader::ObjectInfo* p = &objects[i];

        if (filteredObjects.find(p) != filteredObjects.end())
        {
            reader.accessObject(*p);
        }
    }
}