private void processPageMetadata()

in src/main/java/com/epam/parso/impl/SasFileParser.java [461:491]


    private void processPageMetadata(int bitOffset, List<SubheaderPointer> subheaderPointers)
            throws IOException {
        subheaderPointers.clear();
        for (int subheaderPointerIndex = 0; subheaderPointerIndex < currentPageSubheadersCount;
             subheaderPointerIndex++) {
            try {
                SubheaderPointer currentSubheaderPointer = processSubheaderPointers((long) bitOffset
                        + SUBHEADER_POINTERS_OFFSET, subheaderPointerIndex);
                subheaderPointers.add(currentSubheaderPointer);
                if (currentSubheaderPointer.compression != TRUNCATED_SUBHEADER_ID) {
                    long subheaderSignature = readSubheaderSignature(currentSubheaderPointer.offset);
                    SubheaderIndexes subheaderIndex = chooseSubheaderClass(subheaderSignature,
                            currentSubheaderPointer.compression, currentSubheaderPointer.type);
                    if (subheaderIndex != null) {
                        if (subheaderIndex != SubheaderIndexes.DATA_SUBHEADER_INDEX) {
                            LOGGER.debug(SUBHEADER_PROCESS_FUNCTION_NAME, subheaderIndex);
                            subheaderIndexToClass.get(subheaderIndex).processSubheader(
                                    subheaderPointers.get(subheaderPointerIndex).offset,
                                    subheaderPointers.get(subheaderPointerIndex).length);
                        } else {
                            currentPageDataSubheaderPointers.add(subheaderPointers.get(subheaderPointerIndex));
                        }
                    } else {
                        LOGGER.debug(UNKNOWN_SUBHEADER_SIGNATURE);
                    }
                }
            } catch (Exception e) {
                LOGGER.warn("Encountered broken page metadata. Skipping subheader.");
            }
        }
    }