| 1902 | } |
| 1903 | |
| 1904 | int main(int argc, char * argv[]) { |
| 1905 | if (argc != 2) { |
| 1906 | std::cout << "Parser <filename.blf>" << std::endl; |
| 1907 | return -1; |
| 1908 | } |
| 1909 | |
| 1910 | Vector::BLF::File file; |
| 1911 | file.open(argv[1]); |
| 1912 | if (!file.is_open()) { |
| 1913 | std::cout << "Unable to open file" << std::endl; |
| 1914 | return -1; |
| 1915 | } |
| 1916 | |
| 1917 | show(&file.fileStatistics); |
| 1918 | |
| 1919 | uint32_t objectsRead = 0; |
| 1920 | while (file.good()) { |
| 1921 | Vector::BLF::ObjectHeaderBase * ohb = nullptr; |
| 1922 | |
| 1923 | /* read and capture exceptions, e.g. unfinished files */ |
| 1924 | try { |
| 1925 | ohb = file.read(); |
| 1926 | } catch (std::runtime_error & e) { |
| 1927 | std::cout << "Exception: " << e.what() << std::endl; |
| 1928 | } |
| 1929 | if (ohb == nullptr) |
| 1930 | break; |
| 1931 | |
| 1932 | /* show objects read */ |
| 1933 | objectsRead++; |
| 1934 | std::cout << "(nr=" << std::dec << objectsRead << ") "; |
| 1935 | |
| 1936 | /* ObjectHeader */ |
| 1937 | auto * oh = dynamic_cast<Vector::BLF::ObjectHeader *>(ohb); |
| 1938 | if (oh != nullptr) { |
| 1939 | std::cout << std::dec << oh->objectTimeStamp; |
| 1940 | switch (oh->objectFlags) { |
| 1941 | case Vector::BLF::ObjectHeader::ObjectFlags::TimeTenMics: |
| 1942 | std::cout << "0 ms: "; |
| 1943 | break; |
| 1944 | case Vector::BLF::ObjectHeader::ObjectFlags::TimeOneNans: |
| 1945 | std::cout << " ns: "; |
| 1946 | break; |
| 1947 | } |
| 1948 | } |
| 1949 | |
| 1950 | /* ObjectHeader2 */ |
| 1951 | auto * oh2 = dynamic_cast<Vector::BLF::ObjectHeader2 *>(ohb); |
| 1952 | if (oh2 != nullptr) { |
| 1953 | std::cout << std::dec << oh2->objectTimeStamp; |
| 1954 | switch (oh2->objectFlags) { |
| 1955 | case Vector::BLF::ObjectHeader2::ObjectFlags::TimeTenMics: |
| 1956 | std::cout << "0 ms: "; |
| 1957 | break; |
| 1958 | case Vector::BLF::ObjectHeader2::ObjectFlags::TimeOneNans: |
| 1959 | std::cout << " ns: "; |
| 1960 | break; |
| 1961 | } |