Beispiel #1
0
int XMIResource::processText(xmlTextReaderPtr reader)
{
    int ret;

    switch (parent)
    {
        case e_nzcross:
            // nzcross is a Block property
            ret = loadIntArray(reader, NZCROSS, processed.back());
            break;
        case e_nmode:
            // nmode is a Block property
            ret = loadIntArray(reader, NMODE, processed.back());
            break;
        case e_rpar:
            // rpar is a Block property
            ret = loadDoubleArray(reader, RPAR, processed.back());
            break;
        case e_ipar:
            // ipar is a Block property
            ret = loadIntArray(reader, IPAR, processed.back());
            break;
        case e_state:
            // state is a Block property
            ret = loadDoubleArray(reader, RPAR, processed.back());
            break;
        case e_dstate:
            // dstate is a Block property
            ret = loadDoubleArray(reader, RPAR, processed.back());
            break;
        case e_expression:
            // expression is a Block property
            ret = loadStringArray(reader, EXPRS, processed.back());
            break;
        case e_context:
            // context is a Layer property
            ret = loadStringArray(reader, DIAGRAM_CONTEXT, processed.back());
            break;
        case e_datatype:
            // datatype is a port property
            ret = loadIntArray(reader, DATATYPE, processed.back());
            break;
        default:
            sciprint("Unable to decode text value at line %d\n", xmlTextReaderGetParserLineNumber(reader) - 1);
            ret = -1;
            break;
    }

    return ret;
}
void GeometricRepresentation::loadVersion1(std::ifstream& fin) {
    int plane_num = (int)planes.size();
    fin.read((char*)(&plane_num), sizeof(int));

    // these numbers are for future use
    int place_holder = 0;
    for (int i = 0; i < 15; ++i)
        fin.read((char*)(&place_holder), sizeof(int));

    planes.resize(plane_num);
    for (size_t i = 0, i_end = planes.size(); i < i_end; ++i) {
        Plane& plane = planes[i];
        fin.read((char*)(&(plane.id)), sizeof(int));
        loadVec3(fin, plane.normal);
        loadVec3(fin, plane.centroid);
        loadVec3(fin, plane.bbox_corner);
        loadVec3(fin, plane.bbox_width);
        loadVec3(fin, plane.bbox_height);
        loadVec3Array(fin, plane.concave_hull);
        loadVec3Array(fin, plane.convex_hull);
        loadIntArray(fin, plane.point_indices);
        for (int i = 0; i < 4; ++i)
            fin.read((char*)(&place_holder), sizeof(int));
    }

    return;
}