├── libcxx ├── __init__.py └── v1 │ └── __init__.py ├── libstdcxx ├── __init__.py ├── __init__py ├── __pycache__ │ └── __init__.cpython-37.pyc └── v6 │ ├── __pycache__ │ ├── __init__.cpython-37.pyc │ └── printers.cpython-37.pyc │ └── __init__.py ├── boost └── share │ └── boost-gdb-printers │ └── boost │ ├── __init__.py │ ├── v1_44 │ ├── lib │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── unordered.cpython-37.pyc │ │ └── unordered.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── optional.cpython-37.pyc │ │ ├── smart_ptr.cpython-37.pyc │ │ ├── unordered.cpython-37.pyc │ │ └── ptr_container.cpython-37.pyc │ ├── __init__.py │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ └── ptr_container.py │ ├── v1_48 │ ├── lib │ │ ├── __init__.py │ │ └── unordered.py │ ├── optional.py │ ├── smart_ptr.py │ ├── __init__.py │ ├── unordered.py │ └── ptr_container.py │ ├── v1_52 │ ├── lib │ │ ├── __init__.py │ │ └── unordered.py │ ├── optional.py │ ├── smart_ptr.py │ ├── __init__.py │ ├── unordered.py │ └── ptr_container.py │ ├── v1_56 │ ├── lib │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── unordered.cpython-37.pyc │ │ └── unordered.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── optional.cpython-37.pyc │ │ ├── smart_ptr.cpython-37.pyc │ │ ├── unordered.cpython-37.pyc │ │ └── ptr_container.cpython-37.pyc │ ├── optional.py │ ├── smart_ptr.py │ ├── __init__.py │ ├── unordered.py │ └── ptr_container.py │ ├── util │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── printing.cpython-37.pyc │ │ └── compatibility.cpython-37.pyc │ ├── compatibility.py │ └── printing.py │ ├── __pycache__ │ └── __init__.cpython-37.pyc │ ├── v1_57 │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── optional.cpython-37.pyc │ │ ├── smart_ptr.cpython-37.pyc │ │ ├── unordered.cpython-37.pyc │ │ └── ptr_container.cpython-37.pyc │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_45 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_46 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_47 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_49 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_50 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_51 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_53 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_54 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_55 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_58 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_59 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_60 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_61 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ ├── v1_62 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py │ └── v1_63 │ ├── optional.py │ ├── smart_ptr.py │ ├── unordered.py │ ├── ptr_container.py │ └── __init__.py ├── clickhouse ├── ColumnArray.py ├── IColumn.py ├── IDataType.py ├── IAST.py ├── PODArray.py ├── ASTSelectQuery.py ├── ASTSelectWithUnionQuery.py └── printers.py ├── gdbinit └── README.md /libcxx/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libcxx/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libstdcxx/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libstdcxx/__init__py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/lib/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/lib/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/lib/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/lib/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libstdcxx/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/libstdcxx/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /libstdcxx/v6/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/libstdcxx/v6/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /libstdcxx/v6/__pycache__/printers.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/libstdcxx/v6/__pycache__/printers.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | 3 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 4 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/util/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/__pycache__/printing.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/util/__pycache__/printing.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__pycache__/optional.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/__pycache__/optional.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__pycache__/optional.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/__pycache__/optional.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_57/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__pycache__/optional.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_57/__pycache__/optional.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__pycache__/smart_ptr.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/__pycache__/smart_ptr.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__pycache__/unordered.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/__pycache__/unordered.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__pycache__/smart_ptr.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/__pycache__/smart_ptr.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__pycache__/unordered.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/__pycache__/unordered.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__pycache__/smart_ptr.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_57/__pycache__/smart_ptr.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__pycache__/unordered.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_57/__pycache__/unordered.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/__pycache__/compatibility.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/util/__pycache__/compatibility.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__pycache__/ptr_container.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/__pycache__/ptr_container.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/lib/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/lib/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/lib/__pycache__/unordered.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_44/lib/__pycache__/unordered.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__pycache__/ptr_container.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/__pycache__/ptr_container.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/lib/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/lib/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/lib/__pycache__/unordered.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_56/lib/__pycache__/unordered.cpython-37.pyc -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__pycache__/ptr_container.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexiaoting/ClickHouse-pretty-printer/HEAD/boost/share/boost-gdb-printers/boost/v1_57/__pycache__/ptr_container.cpython-37.pyc -------------------------------------------------------------------------------- /clickhouse/ColumnArray.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class ColumnArrayPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "(*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+")).size()" 10 | size=gdb.parse_and_eval(eval_string); 11 | return "ColumnArray size={}".format(size) 12 | 13 | def display_hint(self) -> str: 14 | return "array" 15 | -------------------------------------------------------------------------------- /libstdcxx/v6/__init__.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | 3 | # Load the xmethods if GDB supports them. 4 | def gdb_has_xmethods(): 5 | try: 6 | import gdb.xmethod 7 | return True 8 | except ImportError: 9 | return False 10 | 11 | def register_libstdcxx_printers(obj): 12 | # Load the pretty-printers. 13 | from .printers import register_libstdcxx_printers 14 | register_libstdcxx_printers(obj) 15 | 16 | if gdb_has_xmethods(): 17 | from .xmethods import register_libstdcxx_xmethods 18 | register_libstdcxx_xmethods(obj) 19 | -------------------------------------------------------------------------------- /clickhouse/IColumn.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class IColumnPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "(*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+")).getName()" 10 | #print(eval_string) 11 | type_name=gdb.parse_and_eval(eval_string) 12 | #print(type_name) 13 | eval_size_string= "(*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+")).size()" 14 | size=gdb.parse_and_eval(eval_size_string) 15 | 16 | return "type={}, size={}.".format(type_name,size) 17 | 18 | def display_hint(self) -> str: 19 | return "IColumn" 20 | -------------------------------------------------------------------------------- /clickhouse/IDataType.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class IDataTypePrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "(*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+")).getName()" 10 | # print(eval_string) 11 | type_name=gdb.parse_and_eval(eval_string) 12 | #eval_string = "info vtbl (*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+"))" 13 | #type_name=gdb.execute(eval_string, to_string=True).split('\n')[1].split("::")[1] 14 | 15 | return "IDataType = {}".format(type_name) 16 | 17 | def display_hint(self) -> str: 18 | return "IDataType" 19 | -------------------------------------------------------------------------------- /clickhouse/IAST.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class IASTPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "info vtbl (*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+"))" 10 | #example: "info vtbl (*(DB::IAST *)(0x7fff472e9b18))" 11 | type_name=gdb.execute(eval_string, to_string=True).split('\n')[1].split("::")[1] 12 | 13 | #eval_string = "DB::queryToString(*("+str(self.val.type).strip('&')+"*)("+str(self.val.address)+"))" 14 | eval_string = "DB::serializeAST(*(DB::"+type_name+" *)("+str(self.val.address)+"), true)" 15 | sql_string=gdb.parse_and_eval(eval_string); 16 | 17 | return "type={}, sql={} ".format(type_name, sql_string) 18 | 19 | def display_hint(self) -> str: 20 | return "IAST" 21 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_45/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_45/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_45/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_46/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_46/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_46/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_47/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_47/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_47/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_49/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_49/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_49/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_50/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_50/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_50/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_51/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_51/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_51/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_53/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_53/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_53/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_54/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_54/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_54/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_55/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_55/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_55/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_58/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_58/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_58/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_59/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_59/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_59/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_60/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_60/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_60/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_61/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_61/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_61/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_62/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_62/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_62/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_63/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.optional import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_63/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.smart_ptr import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_63/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.unordered import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_45/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_46/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_47/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_44.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_49/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_50/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_51/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_48.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_53/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_54/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_55/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_52.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_58/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_59/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_60/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_61/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_62/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_63/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from boost.v1_56.ptr_container import register_pretty_printers 20 | 21 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 22 | -------------------------------------------------------------------------------- /gdbinit: -------------------------------------------------------------------------------- 1 | handle SIGUSR1 noprint nostop 2 | 3 | python 4 | import sys 5 | # ClickHouse-pretty-printer-dir is the directory of this repo 6 | # libcxx 7 | #sys.path.insert(0, '{ClickHouse-pretty-printer-dir}') 8 | sys.path.insert(0, '/home/hewenting/workspace/gdb/ClickHouse-pretty-printer/libcxx/v2') 9 | from libcxx_printers_new import register_libcxx_printer_loader 10 | register_libcxx_printer_loader() 11 | 12 | 13 | # clickhouse pretty printer 14 | #sys.path.insert(0, '{ClickHouse-pretty-printer-dir}/clickhouse') 15 | sys.path.insert(0, '/home/hewenting/workspace/gdb/ClickHouse-pretty-printer/clickhouse') 16 | from printers import register_ch_printers 17 | register_ch_printers() 18 | 19 | # boost 20 | #sys.path.insert(0, '{ClickHouse-pretty-printer-dir}/boost/share/boost-gdb-printers') 21 | sys.path.insert(0, '/home/hewenting/workspace/gdb/ClickHouse-pretty-printer/boost/share/boost-gdb-printers') 22 | import boost.v1_57 as boost 23 | boost.register_pretty_printers(gdb) 24 | end 25 | 26 | ## libstdcpp 27 | #from libstdcxx.v6.printers import register_libstdcxx_printers 28 | #register_libstdcxx_printers (None) 29 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/compatibility.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Compatibility with older versions of GDB. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | 20 | import gdb 21 | 22 | use_gdb_printing = True 23 | try: 24 | import gdb.printing 25 | except ImportError: 26 | use_gdb_printing = False 27 | 28 | use_lazy_string = hasattr(gdb.Value, 'lazy_string') 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.44. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_44.optional 20 | import boost.v1_44.ptr_container 21 | import boost.v1_44.smart_ptr 22 | import boost.v1_44.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_44.optional.register_pretty_printers(obj) 26 | boost.v1_44.ptr_container.register_pretty_printers(obj) 27 | boost.v1_44.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_44.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_45/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.45. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_45.optional 20 | import boost.v1_45.ptr_container 21 | import boost.v1_45.smart_ptr 22 | import boost.v1_45.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_45.optional.register_pretty_printers(obj) 26 | boost.v1_45.ptr_container.register_pretty_printers(obj) 27 | boost.v1_45.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_45.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_46/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.46. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_46.optional 20 | import boost.v1_46.ptr_container 21 | import boost.v1_46.smart_ptr 22 | import boost.v1_46.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_46.optional.register_pretty_printers(obj) 26 | boost.v1_46.ptr_container.register_pretty_printers(obj) 27 | boost.v1_46.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_46.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_47/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.47. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_47.optional 20 | import boost.v1_47.ptr_container 21 | import boost.v1_47.smart_ptr 22 | import boost.v1_47.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_47.optional.register_pretty_printers(obj) 26 | boost.v1_47.ptr_container.register_pretty_printers(obj) 27 | boost.v1_47.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_47.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.48. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_48.optional 20 | import boost.v1_48.ptr_container 21 | import boost.v1_48.smart_ptr 22 | import boost.v1_48.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_48.optional.register_pretty_printers(obj) 26 | boost.v1_48.ptr_container.register_pretty_printers(obj) 27 | boost.v1_48.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_48.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_49/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.49. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_49.optional 20 | import boost.v1_49.ptr_container 21 | import boost.v1_49.smart_ptr 22 | import boost.v1_49.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_49.optional.register_pretty_printers(obj) 26 | boost.v1_49.ptr_container.register_pretty_printers(obj) 27 | boost.v1_49.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_49.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_50/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.50. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_50.optional 20 | import boost.v1_50.ptr_container 21 | import boost.v1_50.smart_ptr 22 | import boost.v1_50.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_50.optional.register_pretty_printers(obj) 26 | boost.v1_50.ptr_container.register_pretty_printers(obj) 27 | boost.v1_50.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_50.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_51/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.51. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_51.optional 20 | import boost.v1_51.ptr_container 21 | import boost.v1_51.smart_ptr 22 | import boost.v1_51.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_51.optional.register_pretty_printers(obj) 26 | boost.v1_51.ptr_container.register_pretty_printers(obj) 27 | boost.v1_51.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_51.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.52. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_52.optional 20 | import boost.v1_52.ptr_container 21 | import boost.v1_52.smart_ptr 22 | import boost.v1_52.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_52.optional.register_pretty_printers(obj) 26 | boost.v1_52.ptr_container.register_pretty_printers(obj) 27 | boost.v1_52.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_52.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_53/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.53. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_53.optional 20 | import boost.v1_53.ptr_container 21 | import boost.v1_53.smart_ptr 22 | import boost.v1_53.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_53.optional.register_pretty_printers(obj) 26 | boost.v1_53.ptr_container.register_pretty_printers(obj) 27 | boost.v1_53.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_53.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_54/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.54. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_54.optional 20 | import boost.v1_54.ptr_container 21 | import boost.v1_54.smart_ptr 22 | import boost.v1_54.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_54.optional.register_pretty_printers(obj) 26 | boost.v1_54.ptr_container.register_pretty_printers(obj) 27 | boost.v1_54.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_54.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_55/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.55. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_55.optional 20 | import boost.v1_55.ptr_container 21 | import boost.v1_55.smart_ptr 22 | import boost.v1_55.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_55.optional.register_pretty_printers(obj) 26 | boost.v1_55.ptr_container.register_pretty_printers(obj) 27 | boost.v1_55.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_55.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.55. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_56.optional 20 | import boost.v1_56.ptr_container 21 | import boost.v1_56.smart_ptr 22 | import boost.v1_56.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_56.optional.register_pretty_printers(obj) 26 | boost.v1_56.ptr_container.register_pretty_printers(obj) 27 | boost.v1_56.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_56.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_57/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.55. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_57.optional 20 | import boost.v1_57.ptr_container 21 | import boost.v1_57.smart_ptr 22 | import boost.v1_57.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_57.optional.register_pretty_printers(obj) 26 | boost.v1_57.ptr_container.register_pretty_printers(obj) 27 | boost.v1_57.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_57.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_58/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.58. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_58.optional 20 | import boost.v1_58.ptr_container 21 | import boost.v1_58.smart_ptr 22 | import boost.v1_58.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_58.optional.register_pretty_printers(obj) 26 | boost.v1_58.ptr_container.register_pretty_printers(obj) 27 | boost.v1_58.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_58.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_59/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.59. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_59.optional 20 | import boost.v1_59.ptr_container 21 | import boost.v1_59.smart_ptr 22 | import boost.v1_59.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_59.optional.register_pretty_printers(obj) 26 | boost.v1_59.ptr_container.register_pretty_printers(obj) 27 | boost.v1_59.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_59.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_60/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.60. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_60.optional 20 | import boost.v1_60.ptr_container 21 | import boost.v1_60.smart_ptr 22 | import boost.v1_60.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_60.optional.register_pretty_printers(obj) 26 | boost.v1_60.ptr_container.register_pretty_printers(obj) 27 | boost.v1_60.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_60.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_61/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.61. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_61.optional 20 | import boost.v1_61.ptr_container 21 | import boost.v1_61.smart_ptr 22 | import boost.v1_61.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_61.optional.register_pretty_printers(obj) 26 | boost.v1_61.ptr_container.register_pretty_printers(obj) 27 | boost.v1_61.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_61.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_62/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.62. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_62.optional 20 | import boost.v1_62.ptr_container 21 | import boost.v1_62.smart_ptr 22 | import boost.v1_62.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_62.optional.register_pretty_printers(obj) 26 | boost.v1_62.ptr_container.register_pretty_printers(obj) 27 | boost.v1_62.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_62.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_63/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost 1.63. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import boost.v1_63.optional 20 | import boost.v1_63.ptr_container 21 | import boost.v1_63.smart_ptr 22 | import boost.v1_63.unordered 23 | 24 | def register_pretty_printers(obj): 25 | boost.v1_63.optional.register_pretty_printers(obj) 26 | boost.v1_63.ptr_container.register_pretty_printers(obj) 27 | boost.v1_63.smart_ptr.register_pretty_printers(obj) 28 | boost.v1_63.unordered.register_pretty_printers(obj) 29 | 30 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 31 | -------------------------------------------------------------------------------- /clickhouse/PODArray.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class PODArrayPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | class CHIterator: 9 | def __init__(self, start: gdb.Value, finish: gdb.Value) -> None: 10 | self.item: gdb.Value = start 11 | self.finish: gdb.Value = finish 12 | self.count: int = 0 13 | 14 | def __iter__(self): 15 | return self 16 | 17 | def __next__(self): 18 | count: int = self.count 19 | self.count += 1 20 | 21 | if self.item == self.finish: 22 | raise StopIteration 23 | 24 | elt = self.item.dereference() 25 | self.item += 1 26 | 27 | return ('[%d]'.format(count), elt) 28 | 29 | def get_bounds(self) -> Tuple[int, int, int]: 30 | return self.val['c_start'], self.val['c_end'], self.val['c_end_of_storage'] 31 | 32 | def to_string(self) -> str: 33 | start, finish, end = self.get_bounds() 34 | 35 | return ('{} of length {}, capacity {}'.format( 36 | self.val.type, 37 | int(finish - start), 38 | int(end - start))) 39 | 40 | def children(self) -> CHIterator: 41 | return self.CHIterator( 42 | self.val['c_start'], 43 | self.val['c_end']) 44 | 45 | def display_hint(self) -> str: 46 | return "array" 47 | -------------------------------------------------------------------------------- /clickhouse/ASTSelectQuery.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class ASTSelectQueryPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "info vtbl (*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+"))" 10 | #example: "info vtbl (*(DB::IAST *)(0x7fff472e9b18))" 11 | type_name=gdb.execute(eval_string, to_string=True).split('\n')[1].split("::")[1] 12 | 13 | #eval_string = "DB::queryToString(*("+str(self.val.type).strip('&')+"*)("+str(self.val.address)+"))" 14 | eval_string = "DB::serializeAST(*(DB::"+type_name+" *)("+str(self.val.address)+"), true)" 15 | sql_string=gdb.parse_and_eval(eval_string) 16 | 17 | distinct=self.val["distinct"] 18 | group_by_with_totals=self.val["group_by_with_totals"] 19 | group_by_with_rollup=self.val["group_by_with_rollup"] 20 | group_by_with_cube=self.val["group_by_with_cube"] 21 | limit_with_ties=self.val["limit_with_ties"] 22 | positions=self.val["positions"] 23 | 24 | #return "type={}, sql={}".format(type_name, sql_string) 25 | return "type={}, sql={}, distinct={}, group_by_with_totals={}, group_by_with_rollup={}, group_by_with_cube={}, limit_with_tie={}, positions={}".format(type_name, sql_string,distinct,group_by_with_totals,group_by_with_rollup,group_by_with_cube,limit_with_ties,positions) 26 | 27 | def display_hint(self) -> str: 28 | return "ASTSelectQuery" 29 | -------------------------------------------------------------------------------- /clickhouse/ASTSelectWithUnionQuery.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple 2 | import gdb 3 | 4 | class ASTSelectWithUnionQueryPrinter: 5 | def __init__(self, val: gdb.Value) -> None: 6 | self.val: gdb.Value = val 7 | 8 | def to_string(self) -> str: 9 | eval_string = "info vtbl (*("+str(self.val.type).strip('&')+" *)("+str(self.val.address)+"))" 10 | #example: "info vtbl (*(DB::IAST *)(0x7fff472e9b18))" 11 | type_name=gdb.execute(eval_string, to_string=True).split('\n')[1].split("::")[1] 12 | 13 | #eval_string = "DB::queryToString(*("+str(self.val.type).strip('&')+"*)("+str(self.val.address)+"))" 14 | eval_string = "DB::serializeAST(*(DB::"+type_name+" *)("+str(self.val.address)+"), true)" 15 | sql_string=gdb.parse_and_eval(eval_string) 16 | 17 | union_mode=self.val["union_mode"] 18 | is_normalized=self.val["is_normalized"] 19 | out_file=self.val["out_file"] 20 | format_ast=self.val["format"] 21 | settings_ast=self.val["settings_ast"] 22 | list_of_modes=self.val["list_of_modes"] 23 | list_of_selects=self.val["list_of_selects"] 24 | 25 | #return "type={}, sql={}".format(type_name, sql_string) 26 | return "type={}, sql={}, union_mode={}, is_normalized={}, out_file={}, format={}, settings_ast={}, list_of_modes={}, list_of_select={}".format(type_name, sql_string, union_mode, is_normalized, out_file, format_ast, settings_ast, list_of_modes, list_of_selects) 27 | 28 | def display_hint(self) -> str: 29 | return "ASTSelectWithUnionQuery" 30 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/optional.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Optional. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | 21 | import boost.util.printing as printing 22 | 23 | class OptionalPrinter: 24 | 25 | def __init__(self, typename, value): 26 | self.typename = typename 27 | self.value = value 28 | 29 | def to_string(self): 30 | if self.value['m_initialized']: 31 | data = self.value['m_storage']['dummy_']['data'] 32 | ptr_type = self.value.type.template_argument(0).pointer() 33 | return "%s %s" % (self.typename, data.cast(ptr_type).dereference()) 34 | else: 35 | return "empty " + self.typename 36 | 37 | printer = None 38 | 39 | def build_pretty_printers(): 40 | global printer 41 | 42 | if printer != None: 43 | return 44 | 45 | printer = printing.Printer("boost.optional") 46 | 47 | printer.add('boost::optional', OptionalPrinter) 48 | 49 | def register_pretty_printers(obj): 50 | printing.register_pretty_printer(printer, obj) 51 | 52 | build_pretty_printers() 53 | 54 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 55 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/smart_ptr.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Smart Ptr. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | 21 | import boost.util.printing as printing 22 | 23 | 24 | class SmartPtrPrinter: 25 | """Prints smart pointers based on Boost.SmartPtr""" 26 | 27 | def __init__(self, typename, value): 28 | self.typename = typename 29 | self.value = value 30 | 31 | def to_string(self): 32 | if self.value['px']: 33 | return "%s %s" % (self.typename, self.value['px'].dereference()) 34 | else: 35 | return "empty %s" % (self.typename,) 36 | 37 | 38 | printer = None 39 | 40 | def build_pretty_printers(): 41 | global printer 42 | 43 | if printer != None: 44 | return 45 | 46 | printer = printing.Printer("boost.smart_ptr") 47 | 48 | printer.add('boost::shared_ptr', SmartPtrPrinter) 49 | # printer.add('boost::shared_array', SmartPtrPrinter) 50 | printer.add('boost::weak_ptr', SmartPtrPrinter) 51 | printer.add('boost::scoped_ptr', SmartPtrPrinter) 52 | # printer.add('boost::scoped_array', SmartPtrPrinter) 53 | 54 | def register_pretty_printers(obj): 55 | printing.register_pretty_printer(printer, obj) 56 | 57 | build_pretty_printers() 58 | 59 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 60 | -------------------------------------------------------------------------------- /clickhouse/printers.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | import gdb.printing 3 | from typing import List, Dict, Tuple 4 | 5 | from PODArray import PODArrayPrinter 6 | from ColumnArray import ColumnArrayPrinter 7 | from ASTSelectQuery import ASTSelectQueryPrinter 8 | from ASTSelectWithUnionQuery import ASTSelectWithUnionQueryPrinter 9 | from IAST import IASTPrinter 10 | from IColumn import IColumnPrinter 11 | from IDataType import IDataTypePrinter 12 | 13 | 14 | def print_icolumn_type(col: gdb.Value) -> str: 15 | obj_type: gdb.Type = col.dynamic_type 16 | obj_casted: gdb.Value = col.cast(obj_type) 17 | 18 | if obj_type == t_col_array: 19 | offsets: gdb.Value = gdb.dereference(obj_casted["offsets"]).cast(t_col_offsets)["data"] 20 | 21 | start, end, _= get_podarray_bounds(offsets) 22 | 23 | nested_printed: str = print_icolumn_type(gdb.dereference(obj_casted["data"])) 24 | 25 | return "ColumnArray[size: {}, {}]".format(end - start, nested_printed) 26 | elif obj_type == t_col_const: 27 | data: gdb.Value = gdb.dereference(obj_casted["data"]) 28 | nested_printed: str = print_icolumn_type(data) 29 | 30 | return "ColumnConst[size: {}, {}]".format(obj_casted["s"], nested_printed) 31 | elif obj_type == t_col_lc: 32 | dictionary: gdb.Value = obj_casted["dictionary"] 33 | index: gdb.Value = obj_casted["idx"] 34 | 35 | size_of_index_type: int = int(index["size_of_type"]) 36 | 37 | index_type: str = "UInt8" 38 | 39 | if size_of_index_type == t_uint16.sizeof: 40 | index_type = "UInt16" 41 | elif size_of_index_type == t_uint32.sizeof: 42 | index_type = "UInt32" 43 | else: 44 | index_type = "UInt64" 45 | 46 | nested_col: gdb.Value = gdb.dereference( 47 | gdb.dereference(dictionary["column_unique"])["column_holder"]) 48 | 49 | nested_printed: str = print_icolumn_type(nested_col) 50 | 51 | return "ColumnLowCardinality[index: {}, {}]".format(index_type, nested_printed) 52 | elif obj_type == t_col_nullable: 53 | col_nested: gdb.Value = gdb.dereference(obj_casted["nested_column"]) 54 | nested_printed: str = print_icolumn_type(col_nested) 55 | 56 | return "ColumnNullable[{}]".format(nested_printed) 57 | elif obj_type == t_col_vector: 58 | nested_type = obj_casted.template_argument(0) 59 | start, end, _ = get_podarray_bounds(obj_casted["data"]) 60 | 61 | return "ColumnArray[size: {}, {}]".format(nested_type, end - start) 62 | else: 63 | return "NI {}".format(obj_type) 64 | 65 | def build_pretty_printers(): 66 | pp = gdb.printing.RegexpCollectionPrettyPrinter("clickhouse") 67 | 68 | pp.add_printer('PODArray', '^DB::PODArray<.*>$', PODArrayPrinter) 69 | pp.add_printer('PaddedPODArray', '^DB::PaddedPODArray<.*>$', PODArrayPrinter) 70 | 71 | pp.add_printer('ColumnArray', '^DB::ColumnArray$', ColumnArrayPrinter) 72 | pp.add_printer('ASTSelectQuery', '^DB::ASTSelectQuery$', ASTSelectQueryPrinter) 73 | pp.add_printer('ASTSelectWithUnionQuery', '^DB::ASTSelectWithUnionQuery$', ASTSelectWithUnionQueryPrinter) 74 | pp.add_printer('IAST', '^DB::IAST$', IASTPrinter) 75 | pp.add_printer('IColumn', '^DB::IColumn$', IColumnPrinter) 76 | pp.add_printer('IDataType', '^DB::IDataType$', IDataTypePrinter) 77 | 78 | return pp 79 | 80 | def register_ch_printers(): 81 | gdb.printing.register_pretty_printer( 82 | gdb.current_progspace(), 83 | #gdb.current_objfile(), 84 | build_pretty_printers()) 85 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_44.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | class PrinterBase(object): 27 | '''Contains common functionality for printing Boost.Unordered types''' 28 | 29 | def __init__(self, typename, value, container, iterator): 30 | self.typename = typename 31 | self.impl = container(value) 32 | self.iterator = iterator 33 | 34 | def to_string(self): 35 | if self.impl.empty(): 36 | return "empty " + self.typename 37 | else: 38 | return "%s with %s elements" % (self.typename, len(self.impl)) 39 | 40 | def children(self): 41 | return self.iterator(iter(self.impl)) 42 | 43 | class UnorderedMapPrinter(PrinterBase): 44 | 45 | def __init__(self, typename, value): 46 | super(UnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator) 47 | 48 | def display_hint(self): 49 | return 'map' 50 | 51 | class _iterator(six.Iterator): 52 | 53 | def __init__(self, impl): 54 | self.impl = impl 55 | self.value = None 56 | self.step = True 57 | 58 | def __iter__(self): 59 | return self 60 | 61 | def __next__(self): 62 | if self.step: 63 | self.value = six.next(self.impl) 64 | value = self.value[0] 65 | else: 66 | value = self.value[1] 67 | self.step = not self.step 68 | return ("", value) 69 | 70 | class UnorderedSetPrinter(PrinterBase): 71 | 72 | def __init__(self, typename, value): 73 | super(UnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator) 74 | 75 | def display_hint(self): 76 | return 'array' 77 | 78 | class _iterator(six.Iterator): 79 | 80 | def __init__(self, impl): 81 | self.impl = impl 82 | 83 | def __iter__(self): 84 | return self 85 | 86 | def __next__(self): 87 | return ("", six.next(self.impl)[1]) 88 | 89 | printer = None 90 | 91 | def build_pretty_printers(): 92 | global printer 93 | 94 | if printer != None: 95 | return 96 | 97 | printer = printing.Printer("boost.unordered") 98 | 99 | printer.add('boost::unordered_map', UnorderedMapPrinter) 100 | printer.add('boost::unordered_multimap', UnorderedMapPrinter) 101 | printer.add('boost::unordered_multiset', UnorderedSetPrinter) 102 | printer.add('boost::unordered_set', UnorderedSetPrinter) 103 | 104 | def register_pretty_printers(obj): 105 | printing.register_pretty_printer(printer, obj) 106 | 107 | build_pretty_printers() 108 | 109 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 110 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_48.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | class PrinterBase(object): 27 | '''Contains common functionality for printing Boost.Unordered types''' 28 | 29 | def __init__(self, typename, value, container, iterator): 30 | self.typename = typename 31 | self.impl = container(value) 32 | self.iterator = iterator 33 | 34 | def to_string(self): 35 | if self.impl.empty(): 36 | return "empty " + self.typename 37 | else: 38 | return "%s with %s elements" % (self.typename, len(self.impl)) 39 | 40 | def children(self): 41 | return self.iterator(iter(self.impl)) 42 | 43 | class UnorderedMapPrinter(PrinterBase): 44 | 45 | def __init__(self, typename, value): 46 | super(UnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator) 47 | 48 | def display_hint(self): 49 | return 'map' 50 | 51 | class _iterator(six.Iterator): 52 | 53 | def __init__(self, impl): 54 | self.impl = impl 55 | self.value = None 56 | self.step = True 57 | 58 | def __iter__(self): 59 | return self 60 | 61 | def __next__(self): 62 | if self.step: 63 | self.value = six.next(self.impl) 64 | value = self.value[0] 65 | else: 66 | value = self.value[1] 67 | self.step = not self.step 68 | return ("", value) 69 | 70 | class UnorderedSetPrinter(PrinterBase): 71 | 72 | def __init__(self, typename, value): 73 | super(UnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator) 74 | 75 | def display_hint(self): 76 | return 'array' 77 | 78 | class _iterator(six.Iterator): 79 | 80 | def __init__(self, impl): 81 | self.impl = impl 82 | 83 | def __iter__(self): 84 | return self 85 | 86 | def __next__(self): 87 | return ("", six.next(self.impl)[1]) 88 | 89 | printer = None 90 | 91 | def build_pretty_printers(): 92 | global printer 93 | 94 | if printer != None: 95 | return 96 | 97 | printer = printing.Printer("boost.unordered") 98 | 99 | printer.add('boost::unordered::unordered_map', UnorderedMapPrinter) 100 | printer.add('boost::unordered::unordered_multimap', UnorderedMapPrinter) 101 | printer.add('boost::unordered::unordered_multiset', UnorderedSetPrinter) 102 | printer.add('boost::unordered::unordered_set', UnorderedSetPrinter) 103 | 104 | def register_pretty_printers(obj): 105 | printing.register_pretty_printer(printer, obj) 106 | 107 | build_pretty_printers() 108 | 109 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 110 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_52.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | class PrinterBase(object): 27 | '''Contains common functionality for printing Boost.Unordered types''' 28 | 29 | def __init__(self, typename, value, container, iterator): 30 | self.typename = typename 31 | self.impl = container(value) 32 | self.iterator = iterator 33 | 34 | def to_string(self): 35 | if self.impl.empty(): 36 | return "empty " + self.typename 37 | else: 38 | return "%s with %s elements" % (self.typename, len(self.impl)) 39 | 40 | def children(self): 41 | return self.iterator(iter(self.impl)) 42 | 43 | class UnorderedMapPrinter(PrinterBase): 44 | 45 | def __init__(self, typename, value): 46 | super(UnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator) 47 | 48 | def display_hint(self): 49 | return 'map' 50 | 51 | class _iterator(six.Iterator): 52 | 53 | def __init__(self, impl): 54 | self.impl = impl 55 | self.value = None 56 | self.step = True 57 | 58 | def __iter__(self): 59 | return self 60 | 61 | def __next__(self): 62 | if self.step: 63 | self.value = six.next(self.impl) 64 | value = self.value[0] 65 | else: 66 | value = self.value[1] 67 | self.step = not self.step 68 | return ("", value) 69 | 70 | class UnorderedSetPrinter(PrinterBase): 71 | 72 | def __init__(self, typename, value): 73 | super(UnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator) 74 | 75 | def display_hint(self): 76 | return 'array' 77 | 78 | class _iterator(six.Iterator): 79 | 80 | def __init__(self, impl): 81 | self.impl = impl 82 | 83 | def __iter__(self): 84 | return self 85 | 86 | def __next__(self): 87 | return ("", six.next(self.impl)[1]) 88 | 89 | printer = None 90 | 91 | def build_pretty_printers(): 92 | global printer 93 | 94 | if printer != None: 95 | return 96 | 97 | printer = printing.Printer("boost.unordered") 98 | 99 | printer.add('boost::unordered::unordered_map', UnorderedMapPrinter) 100 | printer.add('boost::unordered::unordered_multimap', UnorderedMapPrinter) 101 | printer.add('boost::unordered::unordered_multiset', UnorderedSetPrinter) 102 | printer.add('boost::unordered::unordered_set', UnorderedSetPrinter) 103 | 104 | def register_pretty_printers(obj): 105 | printing.register_pretty_printer(printer, obj) 106 | 107 | build_pretty_printers() 108 | 109 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 110 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_56.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | class PrinterBase(object): 27 | '''Contains common functionality for printing Boost.Unordered types''' 28 | 29 | def __init__(self, typename, value, container, iterator): 30 | self.typename = typename 31 | self.impl = container(value) 32 | self.iterator = iterator 33 | 34 | def to_string(self): 35 | if self.impl.empty(): 36 | return "empty " + self.typename 37 | else: 38 | return "%s with %s elements" % (self.typename, len(self.impl)) 39 | 40 | def children(self): 41 | return self.iterator(iter(self.impl)) 42 | 43 | class UnorderedMapPrinter(PrinterBase): 44 | 45 | def __init__(self, typename, value): 46 | super(UnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator) 47 | 48 | def display_hint(self): 49 | return 'map' 50 | 51 | class _iterator(six.Iterator): 52 | 53 | def __init__(self, impl): 54 | self.impl = impl 55 | self.value = None 56 | self.step = True 57 | 58 | def __iter__(self): 59 | return self 60 | 61 | def __next__(self): 62 | if self.step: 63 | self.value = six.next(self.impl) 64 | value = self.value[0] 65 | else: 66 | value = self.value[1] 67 | self.step = not self.step 68 | return ("", value) 69 | 70 | class UnorderedSetPrinter(PrinterBase): 71 | 72 | def __init__(self, typename, value): 73 | super(UnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator) 74 | 75 | def display_hint(self): 76 | return 'array' 77 | 78 | class _iterator(six.Iterator): 79 | 80 | def __init__(self, impl): 81 | self.impl = impl 82 | 83 | def __iter__(self): 84 | return self 85 | 86 | def __next__(self): 87 | return ("", six.next(self.impl)[1]) 88 | 89 | printer = None 90 | 91 | def build_pretty_printers(): 92 | global printer 93 | 94 | if printer != None: 95 | return 96 | 97 | printer = printing.Printer("boost.unordered") 98 | 99 | printer.add('boost::unordered::unordered_map', UnorderedMapPrinter) 100 | printer.add('boost::unordered::unordered_multimap', UnorderedMapPrinter) 101 | printer.add('boost::unordered::unordered_multiset', UnorderedSetPrinter) 102 | printer.add('boost::unordered::unordered_set', UnorderedSetPrinter) 103 | 104 | def register_pretty_printers(obj): 105 | printing.register_pretty_printer(printer, obj) 106 | 107 | build_pretty_printers() 108 | 109 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 110 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/util/printing.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Printer interface adaptor. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | from collections import Mapping 20 | import gdb 21 | import re 22 | import six 23 | 24 | from boost.util.compatibility import use_gdb_printing 25 | 26 | class SimplePrinter(object): 27 | 28 | def __init__(self, name, function): 29 | self.name = name 30 | self.function = function 31 | self.enabled = True 32 | 33 | def invoke(self, val): 34 | if not self.enabled: 35 | return None 36 | return self.function(self.name, val) 37 | 38 | class NameLookup(Mapping): 39 | 40 | def __init__(self): 41 | self.map = {} 42 | self.name_regex = re.compile('^([\w:]+)(<.*>)?') 43 | 44 | def add(self, name, printer): 45 | self.map[name] = printer 46 | 47 | def __len__(self): 48 | return len(self.map) 49 | 50 | def __getitem__(self, type): 51 | typename = self._basic_type(type) 52 | if typename and typename in self.map: 53 | return self.map[typename] 54 | return None 55 | 56 | def __iter__(self): 57 | return self.map 58 | 59 | def _basic_type(self, type): 60 | basic_type = self.basic_type(type) 61 | if basic_type: 62 | match = self.name_regex.match(basic_type) 63 | if match: 64 | return match.group(1) 65 | return None 66 | 67 | @staticmethod 68 | def basic_type(type): 69 | if type.code == gdb.TYPE_CODE_REF: 70 | type = type.target() 71 | type = type.unqualified().strip_typedefs() 72 | return type.tag 73 | 74 | class FunctionLookup(Mapping): 75 | 76 | def __init__(self): 77 | self.map = {} 78 | 79 | def add(self, test, printer): 80 | self.map[test] = printer 81 | 82 | def __len__(self): 83 | return len(self.map) 84 | 85 | def __getitem__(self, type): 86 | for (test, printer) in six.iteritems(self.map): 87 | if test(type): 88 | return printer 89 | return None 90 | 91 | def __iter__(self): 92 | return self.map 93 | 94 | class Printer(object): 95 | 96 | def __init__(self, name): 97 | self.name = name 98 | self.subprinters = [] 99 | self.name_lookup = NameLookup() 100 | self.func_lookup = FunctionLookup() 101 | self.enabled = True 102 | 103 | def add(self, name, function, lookup = None): 104 | printer = SimplePrinter(name, function) 105 | self.subprinters.append(printer) 106 | if not lookup: 107 | self.name_lookup.add(name, printer) 108 | else: 109 | self.func_lookup.add(lookup, printer) 110 | 111 | 112 | def __call__(self, val): 113 | printer = self.name_lookup[val.type] 114 | if not printer: 115 | printer = self.func_lookup[val.type] 116 | 117 | if printer: 118 | return printer.invoke(val) 119 | return None 120 | 121 | def register_pretty_printer(printer, obj): 122 | '''Registers printer with objfile''' 123 | 124 | if use_gdb_printing: 125 | gdb.printing.register_pretty_printer(obj, printer) 126 | else: 127 | if obj is None: 128 | obj = gdb 129 | obj.pretty_printers.append(printer) 130 | 131 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 132 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/lib/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Helper classes for working with Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | class Unordered(object): 23 | '''Common representation of Boost.Unordered types''' 24 | 25 | def __init__(self, value, extractor): 26 | self.value = value 27 | self.extractor = extractor 28 | self.node_type = None 29 | self.value_type = None 30 | self.extra_node = False 31 | self._init() 32 | 33 | def __len__(self): 34 | table = self.value['table_'] 35 | if table['buckets_']: 36 | return int(table['size_']) 37 | else: 38 | return 0 39 | 40 | def __iter__(self): 41 | table = self.value['table_'] 42 | buckets = table['buckets_'] 43 | if buckets: 44 | start_bucket = buckets + table['bucket_count_'] 45 | start_node = start_bucket.dereference()['next_'] 46 | if self.extra_node: 47 | start_node = start_node.dereference()['next_'] 48 | return self._iterator(start_node, self.node_type, self.value_type, self.extractor) 49 | else: 50 | return iter([]) 51 | 52 | def empty(self): 53 | return not self.value['table_']['buckets_'] 54 | 55 | def _init(self): 56 | table = self.value['table_'].type.fields()[0] 57 | assert table.is_base_class 58 | buckets = table.type.fields()[0] 59 | assert buckets.is_base_class 60 | 61 | alloc_type = buckets.type.template_argument(0) 62 | self.value_type = alloc_type.template_argument(0) 63 | 64 | bucket_type = buckets.type.template_argument(1).strip_typedefs() 65 | self.extra_node = (str(bucket_type) == 'boost::unordered::detail::bucket') 66 | 67 | self.node_type = buckets.type.template_argument(2) 68 | 69 | class _iterator(six.Iterator): 70 | '''Iterator for Boost.Unordered types''' 71 | 72 | def __init__(self, start_node, node_type, value_type, extractor): 73 | assert start_node 74 | self.node = None 75 | self.next_node = start_node 76 | self.node_type = node_type 77 | self.value_type = value_type 78 | self.extractor = extractor 79 | 80 | def __iter__(self): 81 | return self 82 | 83 | def __next__(self): 84 | # sorry, no next node available 85 | if not self.next_node or self.next_node == self.node: 86 | raise StopIteration() 87 | 88 | # fetch next node 89 | self.node = self.next_node 90 | self.next_node = self.node.dereference()['next_'] 91 | 92 | mapped = self._value() 93 | return (self.extractor.key(mapped), self.extractor.value(mapped)) 94 | 95 | def _value(self): 96 | assert self.node 97 | node = self.node.dereference().cast(self.node_type) 98 | return node['data_'].cast(self.value_type) 99 | 100 | class Map(Unordered): 101 | 102 | def __init__(self, value): 103 | super(Map, self).__init__(value, self._extractor()) 104 | 105 | class _extractor(object): 106 | 107 | def key(self, node): 108 | return node['first'] 109 | 110 | def value(self, node): 111 | return node['second'] 112 | 113 | class Set(Unordered): 114 | 115 | def __init__(self, value): 116 | super(Set, self).__init__(value, self._extractor()) 117 | 118 | class _extractor(object): 119 | 120 | def key(self, node): 121 | return None 122 | 123 | def value(self, node): 124 | return node 125 | 126 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 127 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/lib/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Helper classes for working with Boost.Unordered. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | class Unordered(object): 23 | '''Common representation of Boost.Unordered types''' 24 | 25 | def __init__(self, value, extractor): 26 | self.value = value 27 | self.extractor = extractor 28 | self.node_type = self._node_type() 29 | 30 | def __len__(self): 31 | table = self.value['table_'] 32 | if table['buckets_']: 33 | return int(table['size_']) 34 | else: 35 | return 0 36 | 37 | def __iter__(self): 38 | table = self.value['table_'] 39 | buckets = table['buckets_'] 40 | if buckets: 41 | first = table['cached_begin_bucket_'] 42 | last = buckets + table['bucket_count_'] 43 | else: 44 | first = last = None 45 | return self._iterator(first, last, self.node_type, self.extractor) 46 | 47 | def empty(self): 48 | return not self.value['table_']['buckets_'] 49 | 50 | def _node_type(self): 51 | hash_table = self.value['table_'].type.fields()[0] 52 | assert hash_table.is_base_class 53 | hash_buckets = hash_table.type.fields()[0] 54 | assert hash_buckets.is_base_class 55 | node_type = gdb.lookup_type("%s::node" % hash_buckets.type) 56 | assert node_type != None 57 | return node_type 58 | 59 | class _iterator(six.Iterator): 60 | '''Iterator for Boost.Unordered types''' 61 | 62 | def __init__(self, first_bucket, last_bucket, node_type, extractor): 63 | self.bucket = first_bucket 64 | self.last_bucket = last_bucket 65 | self.node = self.bucket 66 | self.node_type = node_type 67 | self.value_type = self._value_type() 68 | self.extractor = extractor 69 | 70 | def __iter__(self): 71 | return self 72 | 73 | def __next__(self): 74 | if self.node: 75 | self.node = self.node.dereference()['next_'] 76 | 77 | # we finished the current bucket: go on to the next non-empty one 78 | if not self.node: 79 | while not self.node and self.bucket != self.last_bucket: 80 | self.bucket += 1 81 | self.node = self.bucket.dereference()['next_'] 82 | 83 | # sorry, no node available 84 | if not self.node or self.node == self.bucket: 85 | raise StopIteration() 86 | 87 | mapped = self._value() 88 | return (self.extractor.key(mapped), self.extractor.value(mapped)) 89 | 90 | def _value(self): 91 | assert self.node != self.bucket # bucket node has no value 92 | assert self.node != None 93 | node = self.node.dereference().cast(self.node_type) 94 | return node['data_'].cast(self.value_type) 95 | 96 | def _value_type(self): 97 | value_base = self.node_type.fields()[1] 98 | assert value_base.is_base_class 99 | return value_base.type.template_argument(0) 100 | 101 | class Map(Unordered): 102 | 103 | def __init__(self, value): 104 | super(Map, self).__init__(value, self._extractor()) 105 | 106 | class _extractor(object): 107 | 108 | def key(self, node): 109 | return node['first'] 110 | 111 | def value(self, node): 112 | return node['second'] 113 | 114 | class Set(Unordered): 115 | 116 | def __init__(self, value): 117 | super(Set, self).__init__(value, self._extractor()) 118 | 119 | class _extractor(object): 120 | 121 | def key(self, node): 122 | return None 123 | 124 | def value(self, node): 125 | return node 126 | 127 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 128 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/lib/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Helper classes for working with Boost.Unordered 1.56. 3 | # 4 | # 5 | # This program is free software; you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation; either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | import gdb 19 | import six 20 | 21 | class Unordered(object): 22 | '''Common representation of Boost.Unordered types in Boost 1.56.''' 23 | 24 | def __init__(self, value, extractor): 25 | self.value = value 26 | self.extractor = extractor 27 | self.node_type = None 28 | self.value_type = None 29 | self.extra_node = False 30 | self._init_types() 31 | 32 | def __len__(self): 33 | table = self.value['table_'] 34 | if table['buckets_']: 35 | return int(table['size_']) 36 | else: 37 | return 0 38 | 39 | def __iter__(self): 40 | table = self.value['table_'] 41 | buckets = table['buckets_'] 42 | if buckets: 43 | start_bucket = buckets + table['bucket_count_'] 44 | start_node = start_bucket.dereference()['next_'] 45 | if self.extra_node: 46 | start_node = start_node.dereference()['next_'] 47 | return self._iterator(start_node, self.node_type, self.value_type, self.extractor) 48 | else: 49 | return iter([]) 50 | 51 | def empty(self): 52 | return not self.value['table_']['buckets_'] 53 | 54 | def _init_types(self): 55 | key_type = self.value.type.template_argument(0) 56 | value_type = self.value.type.template_argument(1) 57 | self.value_type = self.extractor.make_type(key_type, value_type) 58 | 59 | table = self.value['table_'].type.fields()[0] 60 | assert table.is_base_class 61 | allocators = table.type['allocators_'] 62 | assert allocators 63 | 64 | self.node_type = allocators.type.template_argument(1).template_argument(0) 65 | bucket_type = allocators.type.template_argument(0).template_argument(0).strip_typedefs() 66 | 67 | self.extra_node = (str(bucket_type) == 'boost::unordered::detail::bucket') 68 | 69 | class _iterator(six.Iterator): 70 | '''Iterator for Boost.Unordered types''' 71 | 72 | def __init__(self, start_node, node_type, value_type, extractor): 73 | assert start_node 74 | self.node = None 75 | self.next_node = start_node 76 | self.node_type = node_type 77 | self.value_type = value_type 78 | self.extractor = extractor 79 | 80 | def __iter__(self): 81 | return self 82 | 83 | def __next__(self): 84 | # sorry, no next node available 85 | if not self.next_node or self.next_node == self.node: 86 | raise StopIteration() 87 | 88 | # fetch next node 89 | self.node = self.next_node 90 | self.next_node = self.node.dereference()['next_'] 91 | 92 | mapped = self._value() 93 | return (self.extractor.key(mapped), self.extractor.value(mapped)) 94 | 95 | def _value(self): 96 | assert self.node 97 | node = self.node.dereference().cast(self.node_type) 98 | return node['value_base_']['data_'].cast(self.value_type) 99 | 100 | class Map(Unordered): 101 | 102 | def __init__(self, value): 103 | super(Map, self).__init__(value, self._extractor()) 104 | 105 | class _extractor(object): 106 | 107 | def key(self, node): 108 | return node['first'] 109 | 110 | def value(self, node): 111 | return node['second'] 112 | 113 | def make_type(self, key, value): 114 | return gdb.lookup_type('std::pair<%s const, %s>' % (key, value)) 115 | 116 | class Set(Unordered): 117 | 118 | def __init__(self, value): 119 | super(Set, self).__init__(value, self._extractor()) 120 | 121 | class _extractor(object): 122 | 123 | def key(self, node): 124 | return None 125 | 126 | def value(self, node): 127 | return node 128 | 129 | def make_type(self, key, value): 130 | return key 131 | 132 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 133 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/lib/unordered.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # Helper classes for working with Boost.Unordered 1.52. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | class Unordered(object): 23 | '''Common representation of Boost.Unordered types in Boost 1.52.''' 24 | 25 | def __init__(self, value, extractor): 26 | self.value = value 27 | self.extractor = extractor 28 | self.node_type = None 29 | self.value_type = None 30 | self.extra_node = False 31 | self._init_types() 32 | 33 | def __len__(self): 34 | table = self.value['table_'] 35 | if table['buckets_']: 36 | return int(table['size_']) 37 | else: 38 | return 0 39 | 40 | def __iter__(self): 41 | table = self.value['table_'] 42 | buckets = table['buckets_'] 43 | if buckets: 44 | start_bucket = buckets + table['bucket_count_'] 45 | start_node = start_bucket.dereference()['next_'] 46 | if self.extra_node: 47 | start_node = start_node.dereference()['next_'] 48 | return self._iterator(start_node, self.node_type, self.value_type, self.extractor) 49 | else: 50 | return iter([]) 51 | 52 | def empty(self): 53 | return not self.value['table_']['buckets_'] 54 | 55 | def _init_types(self): 56 | key_type = self.value.type.template_argument(0) 57 | value_type = self.value.type.template_argument(1) 58 | self.value_type = self.extractor.make_type(key_type, value_type) 59 | 60 | table = self.value['table_'].type.fields()[0] 61 | assert table.is_base_class 62 | allocators = table.type['allocators_'] 63 | assert allocators 64 | 65 | self.node_type = allocators.type.template_argument(1).template_argument(0) 66 | bucket_type = allocators.type.template_argument(0).template_argument(0).strip_typedefs() 67 | 68 | self.extra_node = (str(bucket_type) == 'boost::unordered::detail::bucket') 69 | 70 | class _iterator(six.Iterator): 71 | '''Iterator for Boost.Unordered types''' 72 | 73 | def __init__(self, start_node, node_type, value_type, extractor): 74 | assert start_node 75 | self.node = None 76 | self.next_node = start_node 77 | self.node_type = node_type 78 | self.value_type = value_type 79 | self.extractor = extractor 80 | 81 | def __iter__(self): 82 | return self 83 | 84 | def __next__(self): 85 | # sorry, no next node available 86 | if not self.next_node or self.next_node == self.node: 87 | raise StopIteration() 88 | 89 | # fetch next node 90 | self.node = self.next_node 91 | self.next_node = self.node.dereference()['next_'] 92 | 93 | mapped = self._value() 94 | return (self.extractor.key(mapped), self.extractor.value(mapped)) 95 | 96 | def _value(self): 97 | assert self.node 98 | node = self.node.dereference().cast(self.node_type) 99 | return node['data_'].cast(self.value_type) 100 | 101 | class Map(Unordered): 102 | 103 | def __init__(self, value): 104 | super(Map, self).__init__(value, self._extractor()) 105 | 106 | class _extractor(object): 107 | 108 | def key(self, node): 109 | return node['first'] 110 | 111 | def value(self, node): 112 | return node['second'] 113 | 114 | def make_type(self, key, value): 115 | return gdb.lookup_type('std::pair<%s, %s>' % (key.const(), value)) 116 | 117 | class Set(Unordered): 118 | 119 | def __init__(self, value): 120 | super(Set, self).__init__(value, self._extractor()) 121 | 122 | class _extractor(object): 123 | 124 | def key(self, node): 125 | return None 126 | 127 | def value(self, node): 128 | return node 129 | 130 | def make_type(self, key, value): 131 | return key 132 | 133 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 134 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_44/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_44.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | std = None 27 | 28 | class PtrStdPrinterBase(object): 29 | 30 | def __init__(self, typename, value, seq_tag): 31 | self._import_std() 32 | self.typename = typename 33 | self.value = value 34 | 35 | # (try to) init printer of underlying std sequence and get elements 36 | printer = self._get_sequence_printer(seq_tag) 37 | if printer: 38 | seq = value['c_'] 39 | if str(seq.type.strip_typedefs()).startswith('std::__debug::'): 40 | seq_typename = 'std::__debug::%s' % seq_tag 41 | else: 42 | seq_typename = 'std::%s' % seq_tag 43 | self.sequence = list(printer(seq_typename, seq).children()) 44 | else: 45 | self.sequence = None 46 | 47 | def to_string(self): 48 | if self.sequence != None: 49 | length = len(self.sequence) 50 | if length: 51 | return "%s %s" % (self.typename, self.print_size(length)) 52 | else: 53 | return "empty %s" % self.typename 54 | else: 55 | return "opaque %s" % self.typename 56 | 57 | def children(self): 58 | return self._iterator(self.sequence, self.value.type.template_argument(0)) 59 | 60 | class _iterator(six.Iterator): 61 | 62 | def __init__(self, sequence, type): 63 | self.impl = iter(sequence) 64 | self.type = type.pointer() 65 | 66 | def __iter__(self): 67 | return self 68 | 69 | def __next__(self): 70 | (index, value) = six.next(self.impl) 71 | return (index, value.cast(self.type).dereference()) 72 | 73 | def _import_std(self): 74 | global std 75 | if not std: 76 | try: 77 | import libstdcxx.v6.printers 78 | std = libstdcxx.v6.printers 79 | except: 80 | pass 81 | 82 | def _get_sequence_printer(self, typename): 83 | if typename == "deque": 84 | return std.StdDequePrinter 85 | if typename == "list": 86 | return std.StdListPrinter 87 | if typename == "map": 88 | return std.StdMapPrinter 89 | if typename == "set": 90 | return std.StdSetPrinter 91 | if typename == "vector": 92 | return std.StdVectorPrinter 93 | 94 | class PtrSequencePrinter(PtrStdPrinterBase): 95 | 96 | def __init__(self, typename, value, seq_tag): 97 | super(PtrSequencePrinter, self).__init__(typename, value, seq_tag) 98 | 99 | def print_size(self, size): 100 | return "of length %s" % size 101 | 102 | def display_hint(self): 103 | return 'array' 104 | 105 | class PtrSetPrinter(PtrStdPrinterBase): 106 | 107 | def __init__(self, typename, value): 108 | super(PtrSetPrinter, self).__init__(typename, value, 'set') 109 | 110 | def print_size(self, size): 111 | return "with %s elements" % size 112 | 113 | def display_hint(self): 114 | return 'array' 115 | 116 | class PtrMapPrinter(PtrStdPrinterBase): 117 | 118 | def __init__(self, typename, value): 119 | super(PtrMapPrinter, self).__init__(typename, value, 'map') 120 | 121 | def children(self): 122 | type = self.value.type 123 | return self._iterator(self.sequence, type.template_argument(0), type.template_argument(1)) 124 | 125 | class _iterator(six.Iterator): 126 | 127 | def __init__(self, sequence, key_type, value_type): 128 | self.impl = iter(sequence) 129 | self.key_type = key_type 130 | self.value_type = value_type.pointer() 131 | self.key = True 132 | 133 | def __iter__(self): 134 | return self 135 | 136 | def __next__(self): 137 | (index, value) = six.next(self.impl) 138 | if self.key: 139 | value = value.cast(self.key_type) 140 | else: 141 | value = value.cast(self.value_type).dereference() 142 | self.key = not self.key 143 | return (index, value) 144 | 145 | def display_hint(self): 146 | return 'map' 147 | 148 | def print_size(self, size): 149 | return "with %d elements" % int(size / 2) 150 | 151 | class PtrBoostPrinterBase(object): 152 | 153 | def __init__(self, typename, value, container, iterator, value_type): 154 | self.typename = typename 155 | self.impl = container(value['c_']) 156 | self.iterator = iterator 157 | self.value_type = value_type.pointer() 158 | 159 | def to_string(self): 160 | if self.impl.empty(): 161 | return "empty " + self.typename 162 | else: 163 | return "%s with %s elements" % (self.typename, len(self.impl)) 164 | 165 | def children(self): 166 | return self.iterator(iter(self.impl), self.value_type) 167 | 168 | class PtrUnorderedMapPrinter(PtrBoostPrinterBase): 169 | 170 | def __init__(self, typename, value): 171 | super(PtrUnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator, 172 | value.type.template_argument(1)) 173 | 174 | def display_hint(self): 175 | return 'map' 176 | 177 | class _iterator(six.Iterator): 178 | 179 | def __init__(self, impl, value_type): 180 | self.impl = impl 181 | self.step = True 182 | self.value = None 183 | self.value_type = value_type 184 | 185 | def __iter__(self): 186 | return self 187 | 188 | def __next__(self): 189 | if self.step: 190 | self.value = six.next(self.impl) 191 | value = self.value[0] 192 | else: 193 | value = self.value[1].cast(self.value_type).dereference() 194 | self.step = not self.step 195 | return ("", value) 196 | 197 | class PtrUnorderedSetPrinter(PtrBoostPrinterBase): 198 | 199 | def __init__(self, typename, value): 200 | super(PtrUnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator, 201 | value.type.template_argument(0)) 202 | 203 | def display_hint(self): 204 | return 'array' 205 | 206 | class _iterator(six.Iterator): 207 | 208 | def __init__(self, impl, value_type): 209 | self.impl = impl 210 | self.value_type = value_type 211 | 212 | def __iter__(self): 213 | return self 214 | 215 | def __next__(self): 216 | return ("", six.next(self.impl)[1].cast(self.value_type).dereference()) 217 | 218 | printer = None 219 | 220 | def build_pretty_printers(): 221 | global printer 222 | 223 | if printer != None: 224 | return 225 | 226 | printer = printing.Printer("boost.ptr_container") 227 | 228 | printer.add('boost::ptr_deque', (lambda t, v: PtrSequencePrinter(t, v, "deque"))) 229 | printer.add('boost::ptr_list', (lambda t, v: PtrSequencePrinter(t, v, "list"))) 230 | printer.add('boost::ptr_map', PtrMapPrinter) 231 | printer.add('boost::ptr_multimap', PtrMapPrinter) 232 | printer.add('boost::ptr_multiset', PtrSetPrinter) 233 | printer.add('boost::ptr_set', PtrSetPrinter) 234 | printer.add('boost::ptr_unordered_map', PtrUnorderedMapPrinter) 235 | printer.add('boost::ptr_unordered_multimap', PtrUnorderedMapPrinter) 236 | printer.add('boost::ptr_unordered_multiset', PtrUnorderedSetPrinter) 237 | printer.add('boost::ptr_unordered_set', PtrUnorderedSetPrinter) 238 | printer.add('boost::ptr_vector', (lambda t, v: PtrSequencePrinter(t, v, "vector"))) 239 | 240 | def register_pretty_printers(obj): 241 | printing.register_pretty_printer(printer, obj) 242 | 243 | build_pretty_printers() 244 | 245 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 246 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_48/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_48.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | std = None 27 | 28 | class PtrStdPrinterBase(object): 29 | 30 | def __init__(self, typename, value, seq_tag): 31 | self._import_std() 32 | self.typename = typename 33 | self.value = value 34 | 35 | # (try to) init printer of underlying std sequence and get elements 36 | printer = self._get_sequence_printer(seq_tag) 37 | if printer: 38 | seq = value['c_'] 39 | if str(seq.type.strip_typedefs()).startswith('std::__debug::'): 40 | seq_typename = 'std::__debug::%s' % seq_tag 41 | else: 42 | seq_typename = 'std::%s' % seq_tag 43 | self.sequence = list(printer(seq_typename, seq).children()) 44 | else: 45 | self.sequence = None 46 | 47 | def to_string(self): 48 | if self.sequence != None: 49 | length = len(self.sequence) 50 | if length: 51 | return "%s %s" % (self.typename, self.print_size(length)) 52 | else: 53 | return "empty %s" % self.typename 54 | else: 55 | return "opaque %s" % self.typename 56 | 57 | def children(self): 58 | return self._iterator(self.sequence, self.value.type.template_argument(0)) 59 | 60 | class _iterator(six.Iterator): 61 | 62 | def __init__(self, sequence, type): 63 | self.impl = iter(sequence) 64 | self.type = type.pointer() 65 | 66 | def __iter__(self): 67 | return self 68 | 69 | def __next__(self): 70 | (index, value) = six.next(self.impl) 71 | return (index, value.cast(self.type).dereference()) 72 | 73 | def _import_std(self): 74 | global std 75 | if not std: 76 | try: 77 | import libstdcxx.v6.printers 78 | std = libstdcxx.v6.printers 79 | except: 80 | pass 81 | 82 | def _get_sequence_printer(self, typename): 83 | if typename == "deque": 84 | return std.StdDequePrinter 85 | if typename == "list": 86 | return std.StdListPrinter 87 | if typename == "map": 88 | return std.StdMapPrinter 89 | if typename == "set": 90 | return std.StdSetPrinter 91 | if typename == "vector": 92 | return std.StdVectorPrinter 93 | 94 | class PtrSequencePrinter(PtrStdPrinterBase): 95 | 96 | def __init__(self, typename, value, seq_tag): 97 | super(PtrSequencePrinter, self).__init__(typename, value, seq_tag) 98 | 99 | def print_size(self, size): 100 | return "of length %s" % size 101 | 102 | def display_hint(self): 103 | return 'array' 104 | 105 | class PtrSetPrinter(PtrStdPrinterBase): 106 | 107 | def __init__(self, typename, value): 108 | super(PtrSetPrinter, self).__init__(typename, value, 'set') 109 | 110 | def print_size(self, size): 111 | return "with %s elements" % size 112 | 113 | def display_hint(self): 114 | return 'array' 115 | 116 | class PtrMapPrinter(PtrStdPrinterBase): 117 | 118 | def __init__(self, typename, value): 119 | super(PtrMapPrinter, self).__init__(typename, value, 'map') 120 | 121 | def children(self): 122 | type = self.value.type 123 | return self._iterator(self.sequence, type.template_argument(0), type.template_argument(1)) 124 | 125 | class _iterator(six.Iterator): 126 | 127 | def __init__(self, sequence, key_type, value_type): 128 | self.impl = iter(sequence) 129 | self.key_type = key_type 130 | self.value_type = value_type.pointer() 131 | self.key = True 132 | 133 | def __iter__(self): 134 | return self 135 | 136 | def __next__(self): 137 | (index, value) = six.next(self.impl) 138 | if self.key: 139 | value = value.cast(self.key_type) 140 | else: 141 | value = value.cast(self.value_type).dereference() 142 | self.key = not self.key 143 | return (index, value) 144 | 145 | def display_hint(self): 146 | return 'map' 147 | 148 | def print_size(self, size): 149 | return "with %d elements" % int(size / 2) 150 | 151 | class PtrBoostPrinterBase(object): 152 | 153 | def __init__(self, typename, value, container, iterator, value_type): 154 | self.typename = typename 155 | self.impl = container(value['c_']) 156 | self.iterator = iterator 157 | self.value_type = value_type.pointer() 158 | 159 | def to_string(self): 160 | if self.impl.empty(): 161 | return "empty " + self.typename 162 | else: 163 | return "%s with %s elements" % (self.typename, len(self.impl)) 164 | 165 | def children(self): 166 | return self.iterator(iter(self.impl), self.value_type) 167 | 168 | class PtrUnorderedMapPrinter(PtrBoostPrinterBase): 169 | 170 | def __init__(self, typename, value): 171 | super(PtrUnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator, 172 | value.type.template_argument(1)) 173 | 174 | def display_hint(self): 175 | return 'map' 176 | 177 | class _iterator(six.Iterator): 178 | 179 | def __init__(self, impl, value_type): 180 | self.impl = impl 181 | self.step = True 182 | self.value = None 183 | self.value_type = value_type 184 | 185 | def __iter__(self): 186 | return self 187 | 188 | def __next__(self): 189 | if self.step: 190 | self.value = six.next(self.impl) 191 | value = self.value[0] 192 | else: 193 | value = self.value[1].cast(self.value_type).dereference() 194 | self.step = not self.step 195 | return ("", value) 196 | 197 | class PtrUnorderedSetPrinter(PtrBoostPrinterBase): 198 | 199 | def __init__(self, typename, value): 200 | super(PtrUnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator, 201 | value.type.template_argument(0)) 202 | 203 | def display_hint(self): 204 | return 'array' 205 | 206 | class _iterator(six.Iterator): 207 | 208 | def __init__(self, impl, value_type): 209 | self.impl = impl 210 | self.value_type = value_type 211 | 212 | def __iter__(self): 213 | return self 214 | 215 | def __next__(self): 216 | return ("", six.next(self.impl)[1].cast(self.value_type).dereference()) 217 | 218 | printer = None 219 | 220 | def build_pretty_printers(): 221 | global printer 222 | 223 | if printer != None: 224 | return 225 | 226 | printer = printing.Printer("boost.ptr_container") 227 | 228 | printer.add('boost::ptr_deque', (lambda t, v: PtrSequencePrinter(t, v, "deque"))) 229 | printer.add('boost::ptr_list', (lambda t, v: PtrSequencePrinter(t, v, "list"))) 230 | printer.add('boost::ptr_map', PtrMapPrinter) 231 | printer.add('boost::ptr_multimap', PtrMapPrinter) 232 | printer.add('boost::ptr_multiset', PtrSetPrinter) 233 | printer.add('boost::ptr_set', PtrSetPrinter) 234 | printer.add('boost::ptr_unordered_map', PtrUnorderedMapPrinter) 235 | printer.add('boost::ptr_unordered_multimap', PtrUnorderedMapPrinter) 236 | printer.add('boost::ptr_unordered_multiset', PtrUnorderedSetPrinter) 237 | printer.add('boost::ptr_unordered_set', PtrUnorderedSetPrinter) 238 | printer.add('boost::ptr_vector', (lambda t, v: PtrSequencePrinter(t, v, "vector"))) 239 | 240 | def register_pretty_printers(obj): 241 | printing.register_pretty_printer(printer, obj) 242 | 243 | build_pretty_printers() 244 | 245 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 246 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_52/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_52.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | std = None 27 | 28 | class PtrStdPrinterBase(object): 29 | 30 | def __init__(self, typename, value, seq_tag): 31 | self._import_std() 32 | self.typename = typename 33 | self.value = value 34 | 35 | # (try to) init printer of underlying std sequence and get elements 36 | printer = self._get_sequence_printer(seq_tag) 37 | if printer: 38 | seq = value['c_'] 39 | if str(seq.type.strip_typedefs()).startswith('std::__debug::'): 40 | seq_typename = 'std::__debug::%s' % seq_tag 41 | else: 42 | seq_typename = 'std::%s' % seq_tag 43 | self.sequence = list(printer(seq_typename, seq).children()) 44 | else: 45 | self.sequence = None 46 | 47 | def to_string(self): 48 | if self.sequence != None: 49 | length = len(self.sequence) 50 | if length: 51 | return "%s %s" % (self.typename, self.print_size(length)) 52 | else: 53 | return "empty %s" % self.typename 54 | else: 55 | return "opaque %s" % self.typename 56 | 57 | def children(self): 58 | return self._iterator(self.sequence, self.value.type.template_argument(0)) 59 | 60 | class _iterator(six.Iterator): 61 | 62 | def __init__(self, sequence, type): 63 | self.impl = iter(sequence) 64 | self.type = type.pointer() 65 | 66 | def __iter__(self): 67 | return self 68 | 69 | def __next__(self): 70 | (index, value) = six.next(self.impl) 71 | return (index, value.cast(self.type).dereference()) 72 | 73 | def _import_std(self): 74 | global std 75 | if not std: 76 | try: 77 | import libstdcxx.v6.printers 78 | std = libstdcxx.v6.printers 79 | except: 80 | pass 81 | 82 | def _get_sequence_printer(self, typename): 83 | if typename == "deque": 84 | return std.StdDequePrinter 85 | if typename == "list": 86 | return std.StdListPrinter 87 | if typename == "map": 88 | return std.StdMapPrinter 89 | if typename == "set": 90 | return std.StdSetPrinter 91 | if typename == "vector": 92 | return std.StdVectorPrinter 93 | 94 | class PtrSequencePrinter(PtrStdPrinterBase): 95 | 96 | def __init__(self, typename, value, seq_tag): 97 | super(PtrSequencePrinter, self).__init__(typename, value, seq_tag) 98 | 99 | def print_size(self, size): 100 | return "of length %s" % size 101 | 102 | def display_hint(self): 103 | return 'array' 104 | 105 | class PtrSetPrinter(PtrStdPrinterBase): 106 | 107 | def __init__(self, typename, value): 108 | super(PtrSetPrinter, self).__init__(typename, value, 'set') 109 | 110 | def print_size(self, size): 111 | return "with %s elements" % size 112 | 113 | def display_hint(self): 114 | return 'array' 115 | 116 | class PtrMapPrinter(PtrStdPrinterBase): 117 | 118 | def __init__(self, typename, value): 119 | super(PtrMapPrinter, self).__init__(typename, value, 'map') 120 | 121 | def children(self): 122 | type = self.value.type 123 | return self._iterator(self.sequence, type.template_argument(0), type.template_argument(1)) 124 | 125 | class _iterator(six.Iterator): 126 | 127 | def __init__(self, sequence, key_type, value_type): 128 | self.impl = iter(sequence) 129 | self.key_type = key_type 130 | self.value_type = value_type.pointer() 131 | self.key = True 132 | 133 | def __iter__(self): 134 | return self 135 | 136 | def __next__(self): 137 | (index, value) = six.next(self.impl) 138 | if self.key: 139 | value = value.cast(self.key_type) 140 | else: 141 | value = value.cast(self.value_type).dereference() 142 | self.key = not self.key 143 | return (index, value) 144 | 145 | def display_hint(self): 146 | return 'map' 147 | 148 | def print_size(self, size): 149 | return "with %d elements" % int(size / 2) 150 | 151 | class PtrBoostPrinterBase(object): 152 | 153 | def __init__(self, typename, value, container, iterator, value_type): 154 | self.typename = typename 155 | self.impl = container(value['c_']) 156 | self.iterator = iterator 157 | self.value_type = value_type.pointer() 158 | 159 | def to_string(self): 160 | if self.impl.empty(): 161 | return "empty " + self.typename 162 | else: 163 | return "%s with %s elements" % (self.typename, len(self.impl)) 164 | 165 | def children(self): 166 | return self.iterator(iter(self.impl), self.value_type) 167 | 168 | class PtrUnorderedMapPrinter(PtrBoostPrinterBase): 169 | 170 | def __init__(self, typename, value): 171 | super(PtrUnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator, 172 | value.type.template_argument(1)) 173 | 174 | def display_hint(self): 175 | return 'map' 176 | 177 | class _iterator(six.Iterator): 178 | 179 | def __init__(self, impl, value_type): 180 | self.impl = impl 181 | self.step = True 182 | self.value = None 183 | self.value_type = value_type 184 | 185 | def __iter__(self): 186 | return self 187 | 188 | def __next__(self): 189 | if self.step: 190 | self.value = six.next(self.impl) 191 | value = self.value[0] 192 | else: 193 | value = self.value[1].cast(self.value_type).dereference() 194 | self.step = not self.step 195 | return ("", value) 196 | 197 | class PtrUnorderedSetPrinter(PtrBoostPrinterBase): 198 | 199 | def __init__(self, typename, value): 200 | super(PtrUnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator, 201 | value.type.template_argument(0)) 202 | 203 | def display_hint(self): 204 | return 'array' 205 | 206 | class _iterator(six.Iterator): 207 | 208 | def __init__(self, impl, value_type): 209 | self.impl = impl 210 | self.value_type = value_type 211 | 212 | def __iter__(self): 213 | return self 214 | 215 | def __next__(self): 216 | return ("", six.next(self.impl)[1].cast(self.value_type).dereference()) 217 | 218 | printer = None 219 | 220 | def build_pretty_printers(): 221 | global printer 222 | 223 | if printer != None: 224 | return 225 | 226 | printer = printing.Printer("boost.ptr_container") 227 | 228 | printer.add('boost::ptr_deque', (lambda t, v: PtrSequencePrinter(t, v, "deque"))) 229 | printer.add('boost::ptr_list', (lambda t, v: PtrSequencePrinter(t, v, "list"))) 230 | printer.add('boost::ptr_map', PtrMapPrinter) 231 | printer.add('boost::ptr_multimap', PtrMapPrinter) 232 | printer.add('boost::ptr_multiset', PtrSetPrinter) 233 | printer.add('boost::ptr_set', PtrSetPrinter) 234 | printer.add('boost::ptr_unordered_map', PtrUnorderedMapPrinter) 235 | printer.add('boost::ptr_unordered_multimap', PtrUnorderedMapPrinter) 236 | printer.add('boost::ptr_unordered_multiset', PtrUnorderedSetPrinter) 237 | printer.add('boost::ptr_unordered_set', PtrUnorderedSetPrinter) 238 | printer.add('boost::ptr_vector', (lambda t, v: PtrSequencePrinter(t, v, "vector"))) 239 | 240 | def register_pretty_printers(obj): 241 | printing.register_pretty_printer(printer, obj) 242 | 243 | build_pretty_printers() 244 | 245 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 246 | -------------------------------------------------------------------------------- /boost/share/boost-gdb-printers/boost/v1_56/ptr_container.py: -------------------------------------------------------------------------------- 1 | # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- 2 | # GDB pretty printers for Boost.Pointer Container. 3 | # 4 | # This file is part of boost-gdb-printers. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | import gdb 20 | import six 21 | 22 | from boost.v1_56.lib.unordered import Map, Set 23 | 24 | import boost.util.printing as printing 25 | 26 | std = None 27 | 28 | class PtrStdPrinterBase(object): 29 | 30 | def __init__(self, typename, value, seq_tag): 31 | self._import_std() 32 | self.typename = typename 33 | self.value = value 34 | 35 | # (try to) init printer of underlying std sequence and get elements 36 | printer = self._get_sequence_printer(seq_tag) 37 | if printer: 38 | seq = value['c_'] 39 | if str(seq.type.strip_typedefs()).startswith('std::__debug::'): 40 | seq_typename = 'std::__debug::%s' % seq_tag 41 | else: 42 | seq_typename = 'std::%s' % seq_tag 43 | self.sequence = list(printer(seq_typename, seq).children()) 44 | else: 45 | self.sequence = None 46 | 47 | def to_string(self): 48 | if self.sequence != None: 49 | length = len(self.sequence) 50 | if length: 51 | return "%s %s" % (self.typename, self.print_size(length)) 52 | else: 53 | return "empty %s" % self.typename 54 | else: 55 | return "opaque %s" % self.typename 56 | 57 | def children(self): 58 | return self._iterator(self.sequence, self.value.type.template_argument(0)) 59 | 60 | class _iterator(six.Iterator): 61 | 62 | def __init__(self, sequence, type): 63 | self.impl = iter(sequence) 64 | self.type = type.pointer() 65 | 66 | def __iter__(self): 67 | return self 68 | 69 | def __next__(self): 70 | (index, value) = six.next(self.impl) 71 | return (index, value.cast(self.type).dereference()) 72 | 73 | def _import_std(self): 74 | global std 75 | if not std: 76 | try: 77 | import libstdcxx.v6.printers 78 | std = libstdcxx.v6.printers 79 | except: 80 | pass 81 | 82 | def _get_sequence_printer(self, typename): 83 | if typename == "deque": 84 | return std.StdDequePrinter 85 | if typename == "list": 86 | return std.StdListPrinter 87 | if typename == "map": 88 | return std.StdMapPrinter 89 | if typename == "set": 90 | return std.StdSetPrinter 91 | if typename == "vector": 92 | return std.StdVectorPrinter 93 | 94 | class PtrSequencePrinter(PtrStdPrinterBase): 95 | 96 | def __init__(self, typename, value, seq_tag): 97 | super(PtrSequencePrinter, self).__init__(typename, value, seq_tag) 98 | 99 | def print_size(self, size): 100 | return "of length %s" % size 101 | 102 | def display_hint(self): 103 | return 'array' 104 | 105 | class PtrSetPrinter(PtrStdPrinterBase): 106 | 107 | def __init__(self, typename, value): 108 | super(PtrSetPrinter, self).__init__(typename, value, 'set') 109 | 110 | def print_size(self, size): 111 | return "with %s elements" % size 112 | 113 | def display_hint(self): 114 | return 'array' 115 | 116 | class PtrMapPrinter(PtrStdPrinterBase): 117 | 118 | def __init__(self, typename, value): 119 | super(PtrMapPrinter, self).__init__(typename, value, 'map') 120 | 121 | def children(self): 122 | type = self.value.type 123 | return self._iterator(self.sequence, type.template_argument(0), type.template_argument(1)) 124 | 125 | class _iterator(six.Iterator): 126 | 127 | def __init__(self, sequence, key_type, value_type): 128 | self.impl = iter(sequence) 129 | self.key_type = key_type 130 | self.value_type = value_type.pointer() 131 | self.key = True 132 | 133 | def __iter__(self): 134 | return self 135 | 136 | def __next__(self): 137 | (index, value) = six.next(self.impl) 138 | if self.key: 139 | value = value.cast(self.key_type) 140 | else: 141 | value = value.cast(self.value_type).dereference() 142 | self.key = not self.key 143 | return (index, value) 144 | 145 | def display_hint(self): 146 | return 'map' 147 | 148 | def print_size(self, size): 149 | return "with %d elements" % int(size / 2) 150 | 151 | class PtrBoostPrinterBase(object): 152 | 153 | def __init__(self, typename, value, container, iterator, value_type): 154 | self.typename = typename 155 | self.impl = container(value['c_']) 156 | self.iterator = iterator 157 | self.value_type = value_type.pointer() 158 | 159 | def to_string(self): 160 | if self.impl.empty(): 161 | return "empty " + self.typename 162 | else: 163 | return "%s with %s elements" % (self.typename, len(self.impl)) 164 | 165 | def children(self): 166 | return self.iterator(iter(self.impl), self.value_type) 167 | 168 | class PtrUnorderedMapPrinter(PtrBoostPrinterBase): 169 | 170 | def __init__(self, typename, value): 171 | super(PtrUnorderedMapPrinter, self).__init__(typename, value, Map, self._iterator, 172 | value.type.template_argument(1)) 173 | 174 | def display_hint(self): 175 | return 'map' 176 | 177 | class _iterator(six.Iterator): 178 | 179 | def __init__(self, impl, value_type): 180 | self.impl = impl 181 | self.step = True 182 | self.value = None 183 | self.value_type = value_type 184 | 185 | def __iter__(self): 186 | return self 187 | 188 | def __next__(self): 189 | if self.step: 190 | self.value = six.next(self.impl) 191 | value = self.value[0] 192 | else: 193 | value = self.value[1].cast(self.value_type).dereference() 194 | self.step = not self.step 195 | return ("", value) 196 | 197 | class PtrUnorderedSetPrinter(PtrBoostPrinterBase): 198 | 199 | def __init__(self, typename, value): 200 | super(PtrUnorderedSetPrinter, self).__init__(typename, value, Set, self._iterator, 201 | value.type.template_argument(0)) 202 | 203 | def display_hint(self): 204 | return 'array' 205 | 206 | class _iterator(six.Iterator): 207 | 208 | def __init__(self, impl, value_type): 209 | self.impl = impl 210 | self.value_type = value_type 211 | 212 | def __iter__(self): 213 | return self 214 | 215 | def __next__(self): 216 | return ("", six.next(self.impl)[1].cast(self.value_type).dereference()) 217 | 218 | printer = None 219 | 220 | def build_pretty_printers(): 221 | global printer 222 | 223 | if printer != None: 224 | return 225 | 226 | printer = printing.Printer("boost.ptr_container") 227 | 228 | printer.add('boost::ptr_deque', (lambda t, v: PtrSequencePrinter(t, v, "deque"))) 229 | printer.add('boost::ptr_list', (lambda t, v: PtrSequencePrinter(t, v, "list"))) 230 | printer.add('boost::ptr_map', PtrMapPrinter) 231 | printer.add('boost::ptr_multimap', PtrMapPrinter) 232 | printer.add('boost::ptr_multiset', PtrSetPrinter) 233 | printer.add('boost::ptr_set', PtrSetPrinter) 234 | printer.add('boost::ptr_unordered_map', PtrUnorderedMapPrinter) 235 | printer.add('boost::ptr_unordered_multimap', PtrUnorderedMapPrinter) 236 | printer.add('boost::ptr_unordered_multiset', PtrUnorderedSetPrinter) 237 | printer.add('boost::ptr_unordered_set', PtrUnorderedSetPrinter) 238 | printer.add('boost::ptr_vector', (lambda t, v: PtrSequencePrinter(t, v, "vector"))) 239 | 240 | def register_pretty_printers(obj): 241 | printing.register_pretty_printer(printer, obj) 242 | 243 | build_pretty_printers() 244 | 245 | # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: 246 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Support pretty print STL and variables in ClickHouse 2 | 3 | # 0. Prerequisite 4 | To generate full debug info using clang, we should add option `-fno-limit-debug-info`. And to get full valid .gdb_index section, we should add option `-ggnu-pubnames`. My cmake command: 5 | ``` 6 | $ git clone --recursive https://github.com/ClickHouse/ClickHouse.git 7 | $ cd ClickHouse 8 | $ mkdir build 9 | $ cd build 10 | $ cmake ../src/ -DENABLE_TESTS=0 -DCLICKHOUSE_SPLIT_BINARY=1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-ggnu-pubnames -fno-limit-debug-info" -DCMAKE_CXX_COMPILER=clang++-10 -DCMAKE_C_COMPILER=clang-10 -DCMAKE_EXE_LINKER_FLAGS="-Wl,--dynamic-linker,/lib64/ld-linux-x86-64.so.2" 11 | ``` 12 | otherwise when gdb print types defined in Clickhouse shows: 13 | ``` 14 | (gdb) p col_array 15 | $1 = (const DB::ColumnArray *) 0x7fff0527e100 16 | (gdb) p *col_array 17 | $2 = 18 | ``` 19 | 20 | # 1. How to use it? 21 | 1. Install gdb and verify that it supports Python scripting (invoke `gdb --version` and check for `--with-python=...` lines). 22 | 2. `mv gdbinit ~/.gdbinit` 23 | 24 | Note: the .gdbinit file will make gdb register libcxx pretty printer, libcxx pretty printer and ClickHouse pretty printer when gdb started. 25 | 26 | 3. Run gdb and type `info pretty-printer`. You should see something like that: 27 | 28 | ``` 29 | (gdb) info pretty-printer 30 | global pretty-printers: 31 | ... 32 | clickhouse 33 | PODArray 34 | ... 35 | libstdc++-v6 36 | ... 37 | ``` 38 | 39 |
40 | 41 | 42 | # 2. What does it do? 43 | 44 | Adds some nice representation of ClickHouse's internal data structures in GDB. 45 | 46 | ## 2.1 IAST 47 | For example, when printing the `DB::IAST`'s contents, you can get the type of ast and the sql: 48 | ``` 49 | (gdb) p *ast │ q 50 | type=ASTSelectWithUnionQuery, sql="SELECT 1" 51 | ``` 52 | ## 2.2 IColumn 53 | When printing the `DB::Columnxxx`'s contents, instead of 54 | ``` 55 | (gdb) p *col_map 56 | $10 = {> = { = {> = {> = {m_ref_counter = { 57 | value_ = {> = {> = {__a_ = {> = {__a_value = 9}, }, 58 | static is_always_lock_free = }, }, }}}, }, _vptr$IColumn = 0x9f8fcd8 }, }, nested = { 59 | value = {> = {px = 0x7fff30e9c200}, }}} 60 | (gdb) p keys_data 61 | $8 = (const DB::IColumn &) @0x7fff2985af30: {> = {> = {m_ref_counter = { 62 | value_ = {> = {> = {__a_ = {> = {__a_value = 1}, }, 63 | static is_always_lock_free = }, }, }}}, }, _vptr$IColumn = 0x9f925d0 +16>} 64 | (gdb) p nested_column 65 | $9 = (const DB::ColumnArray &) @0x7fff30e9c200: {> = { = {> = {> = { 66 | m_ref_counter = {value_ = {> = {> = {__a_ = {> = {__a_value = 1}, }, 67 | static is_always_lock_free = }, }, }}}, }, _vptr$IColumn = 0x9f8b230 }, }, data = { 68 | value = {> = {px = 0x7fff2d3148e0}, }}, offsets = {value = {> = {px = 0x7fff30e745c0}, }}} 69 | (gdb) 70 | ``` 71 | you would see this: 72 | ``` 73 | (gdb) p *col_map 74 | $5 = {> = { = type="Map(UInt8, Int32)", size=0., }, nested = {value = {> = {px = 0x7fff30e9c200}, }}} 75 | 76 | (gdb) p nested_column 77 | $6 = ColumnArray size=0 78 | (gdb) p keys_data 79 | $7 = type="UInt8", size=0. 80 | ``` 81 | 82 | ## 2.3 IDataType 83 | When printing the `DB::DataTypexxx`'s contents, instead of 84 | ``` 85 | (gdb) p map_type 86 | $1 = (const DB::DataTypeMap *) 0x7fff1a40d018 87 | (gdb) p *map_type 88 | $2 = { = { = { = { = {}, }, 89 | _vptr$IDataType = 0x9f50740 , custom_name = {__ptr_ = {> = {__value_ = 90 | 0x0}, , 1, true>> = {> = {}, }, }}, 91 | custom_text_serialization = {__ptr_ = {> = { 92 | __value_ = 0x0}, , 1, true>> = {> = {}, }, }}, custom_streams = {__ptr_ = {> = { 93 | __value_ = 0x0}, , 1, true>> = {> = {}, }, }}}, }, key_type = {__ptr_ = 0x7ffff6477218, __cntrl_ = 0x7ffff6477200}, value_type = {__ptr_ = 0x7ffff6477258, __cntrl_ = 0x7ffff6477240}, nested = {__ptr_ = 0x7ffff61a7758, __cntrl_ = 0x7ffff61a7740}, 94 | static is_parametric = true} 95 | (gdb) 96 | ``` 97 | you would see this: 98 | ``` 99 | (gdb) source /home/hewenting/workspace/gdb/ClickHouse-pretty-printer/gdbinit 100 | (gdb) p *map_type 101 | $3 = { = { = IDataType = "Map(UInt8,Int32)", }, key_type = std::shared_ptr (count 4, weak 0) = 0x7ffff6477218 => IDataType = "UInt8", value_type = 102 | std::shared_ptr (count 4, weak 0) = 0x7ffff6477258 => IDataType = "Int32", nested = std::shared_ptr (count 1, weak 0) = 0x7ffff61a7758 => IDataType = "Array(Tuple(keys UInt8, values Int32))", static is_parametric = true} 103 | (gdb) 104 | ``` 105 | 106 | ## 2.4 PaddedPODArray 107 | when printing the `DB::PaddedPODArray`'s contents, instead of 108 | 109 | ``` 110 | $1 = (DB::PaddedPODArray::ResultType> &) @0x7ffff7847030: {, 15, 16>> = { 112 | = { = {}, }, 113 | > = {stat713 ic clear_memory = false, static mmap_flags = 34}, static pad_right = 15, 114 | static pad_left = 16, static null = , c_start = 0x7ffff78a5c10 "", 115 | c_end = 0x7ffff78a5c42 '\245' , 'Z' , "\202\031", 116 | c_end_of_storage= 0x7ffff78a5c71 '\245' , 'Z' , "\202\031", 117 | mprotected = false}, } 118 | ``` 119 | you would see this: 120 | 121 | ``` 122 | $1 = DB::PaddedPODArray of length 50, capacity 97 = 124 | {0 '\000', 0 '\000', 0 125 | '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000 126 | ', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 127 | '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000 128 | ', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 129 | '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000 130 | ', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 131 | '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000 132 | ', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 133 | '\000', 0 '\000', 0 '\000', 0 '\000'} 134 | ``` 135 | 136 | 137 | Note: 138 | * You can write your own pretty printer for some clickhouse classes, If there is some difficuties, let me know(create an issue), I will help you. 139 | 140 | 141 |
142 | 143 | # 3. Gdb useful commands related 144 | 145 | ``` 146 | (gdb) info pretty-printer 147 | ........... 148 | (gdb) python 149 | >import gdb 150 | >sn=gdb.selected_frame() 151 | >symbol_table_adn_line=sn.find_sal() 152 | >symtab=symbol_table_adn_line.symtab 153 | >print(symtab.filename, symtab.objfile) 154 | >global_block=symtab.global_block() 155 | >super_block=global_block.superblock 156 | >print(global_block, super_block, global_block.is_global) 157 | > 158 | >### get each symbol in the block 159 | >for sym in global_block: 160 | > if "ColumnArray" in sym.name: 161 | > print(sym.name, " ########## " , sym.symtab) 162 | >end 163 | 164 | (gdb) info vtbl ast 165 | vtable for 'DB::IAST' @ 0xbecac50 (subobject @ 0x7fff30ea5458): 166 | [0]: 0x1a3d5840 167 | [1]: 0x1daecb70 168 | [2]: 0x18fd17f0 169 | [3]: 0x18fd18f0 170 | [4]: 0x18fd19f0 171 | [5]: 0x18fd1a20 172 | [6]: 0x18fd1a50 , std::__1::allocator > const&)> 173 | [7]: 0x1daecbb0 174 | [8]: 0x1daec170 175 | [9]: 0x1db2bf50 176 | [10]: 0x18fd1b40 , std::__1::allocator >, std::__1::less, std::__1::allocator > >, std::__1::allocator, std::__1::allocator > > >&) const> 177 | [11]: 0x1dade2c0 178 | (gdb) 179 | ``` 180 | 181 |
182 | 183 | # 4. links: 184 | * https://github.com/ClickHouse/ClickHouse/issues/13601 185 | * https://github.com/myrrc/clickhouse-devtools.git 186 | * https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html 187 | * https://bugs.llvm.org/show_bug.cgi?id=34820 (related to compile with `-ggnu-pubnames` option and use lld with `-Wl,--gdb-index` to generate full valid .gdb_index section in ELF) 188 | --------------------------------------------------------------------------------